package Ġio . github . hell or in . mongo ql . db . var iety Ċ Ċ import Ġio . github . hell or in . mongo ql . db . MongoDB Params Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Assertions . fail Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito . times Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ import Ġjava . lang . IllegalArgumentException ĊĊ Ċ internal Ġclass ĠMongo Var iety Shell Executor Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġwith Ġno Ġparameters `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" os . name ", Ġ" windows :") ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" java . io . tmpdir ", Ġ" folder ") ĊĊĠĠĠĠĠĠĠ Ġval Ġmongo DB Params Ġ= ĠMongoDB Params . Builder (" db ", Ġ" col "). build () ĊĊĠĠĠĠĠĠĠ Ġval Ġprocess Starter Ġ= Ġget Process ( listOf (" var iety . cmd ", Ġ" db / col ", Ġ"-- quiet ", Ġ"-- output Format = json ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ ĠMongo Var iety Shell Executor (). execute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmongo DB Params , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Starter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` test Ġwith Ġall Ġparameters `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" os . name ", Ġ" windows :") ĊĠĠĠĠĠĠĠ ĠSystem . setProperty (" java . io . tmpdir ", Ġ" folder ") ĊĊĠĠĠĠĠĠĠ Ġval Ġmongo DB Params Ġ= ĠMongoDB Params . Builder (" db ", Ġ" col ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. username ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" user " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). password ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). is Using TLS ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). authentication Me chanism ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SCR AM " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). authentication Database ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" admin " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). host ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" localhost " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). build () ĊĊĠĠĠĠĠĠĠ Ġval Ġprocess Starter Ġ= Ġget Process ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" var iety . cmd ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" db / col ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- quiet ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- output Format = json ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- host = localhost ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- ssl ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- authentication Database = admin ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- authentication Me chanism = SCR AM ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- username = user ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- password = password ")) Ġ// NO SON AR Ġthis Ġisn 't Ġa Ġhardcoded Ġpassword ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen / Then ĊĠĠĠĠĠĠĠ ĠMongo Var iety Shell Executor (). execute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmongo DB Params , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Starter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Process ( expected List Ġ: ĠList < String >) Ġ: ĠProcess Starter Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠProcess Starter () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġstart And WaitFor ( parameters : ĠList < String >): ĠProcess Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parameters Ġ!= Ġexpected List ) Ġthrow ĠIllegalArgumentException () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠProcess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () Ġ// ĠNot Ġneeded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexit Value (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () Ġ// ĠNot Ġneeded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠwaitFor (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () Ġ// ĠNot Ġneeded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget OutputStream (): ĠOutputStream Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () Ġ// ĠNot Ġneeded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Error Stream (): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () Ġ// ĠNot Ġneeded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget InputStream (): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError () Ġ// ĠNot Ġneeded ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }