package Ġfi . v au ht ij u ok su . v au ht ij u ok su api . server Ċ Ċ import Ġcom . google . inject . Abstract Module Ċ import Ġcom . google . inject . Gu ice Ċ import Ġcom . google . inject . Type Literal Ċ import Ġfi . v au ht ij u ok su . v au ht ij u ok su api . database . api . Singleton Database Ċ import Ġfi . v au ht ij u ok su . v au ht ij u ok su api . database . api . V au ht ij u ok su Database Ċ import Ġfi . v au ht ij u ok su . v au ht ij u ok su api . models . Don ation Ċ import Ġfi . v au ht ij u ok su . v au ht ij u ok su api . models . Game Data Ċ import Ġfi . v au ht ij u ok su . v au ht ij u ok su api . models . Stream Metadata Ċ import Ġfi . v au ht ij u ok su . v au ht ij u ok su api . server . configuration . Server Configuration Ċ import Ġio . vertx . core . Vert x Ċ import Ġio . vertx . ext . web . client . Web Client Ċ import Ġio . vertx . ext . web . client . Web Client Options Ċ import Ġio . vertx . junit 5 . Vert x Extension Ċ import Ġio . vertx . junit 5 . Vert x TestContext Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ import Ġorg . junit . jupiter . api . io . TempDir Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . junit . jupiter . Mockito Extension Ċ import Ġjava . io . Buffered Writer Ċ import Ġjava . io . File Ċ import Ġjava . io . FileWriter Ċ import Ġjava . net . Server Socket Ċ Ċ @ Extend With ( Mockito Extension :: class ) Ċ @ Extend With ( Vert x Extension :: class ) Ċ open Ġclass ĠServer TestBase Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvert x : ĠVert x ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġserver : ĠServer ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġclient : ĠWeb Client ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġgame Data Db : ĠV au ht ij u ok su Database < Game Data > ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġdon ation Db : ĠV au ht ij u ok su Database < Don ation > ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprotected Ġlateinit Ġvar Ġstream Metadata Db : ĠSingleton Database < Stream Metadata > ĊĊĠĠĠ Ġ@ TempDir ĊĠĠĠ Ġlateinit Ġvar Ġtmp Dir : ĠFile ĊĊĠĠĠ Ġprotected Ġval Ġusername Ġ= Ġ" v au ht ij u ok su " ĊĠĠĠ Ġprotected Ġval Ġpassword Ġ= Ġ" v au ht ij u ok su " ĊĊĠĠĠ Ġprotected Ġval Ġcors Header Url Ġ= Ġ" https :// v au ht ij u ok su . fi " ĊĊĠĠĠ Ġ// ĠMockito Ġreturns Ġnull Ġwith Ġany (). ĠThis Ġfails Ġon Ġnon - nullable Ġparameters ĊĠĠĠ Ġ// ĠStack overflow Ġta ught Ġme Ġa Ġworkaround Ġhttps :// stackoverflow . com / questions / 3 0 3 0 5 2 1 7 / is - it - possible - to - use - mockito - in - kotlin ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġun initialized (): ĠT Ġ= Ġnull Ġas ĠT ĊĊĠĠĠ Ġprotected Ġfun Ġ< T > Ġany (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito . any < T >() ĊĠĠĠĠĠĠĠ Ġreturn Ġun initialized () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Free Port (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsock Ġ= ĠServer Socket ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġport Ġ= Ġsock . local Port ĊĠĠĠĠĠĠĠ Ġsock . close () ĊĠĠĠĠĠĠĠ Ġreturn Ġport ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠbeforeEach () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġht passwd File Ġ= Ġ"${ tmp Dir . path }/. ht passwd " ĊĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠBuffered Writer ( FileWriter ( File ( ht passwd File ))) ĊĠĠĠĠĠĠĠ Ġ// ĠPre - generated Ġcredentials Ġv au ht ij u ok su Ġ/ Ġv au ht ij u ok su ĊĠĠĠĠĠĠĠ Ġwriter . write (" v au ht ij u ok su :{ SHA } I ih 8 i Fr D 8 j Pk j 1 e YE w 6 t Jm Tb H rg =") ĊĠĠĠĠĠĠĠ Ġwriter . close () ĊĊĠĠĠĠĠĠĠ Ġval Ġserver Port Ġ= Ġget Free Port () ĊĠĠĠĠĠĠĠ Ġval Ġinjector Ġ= ĠGu ice . create Injector ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApi Module (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠAbstract Module () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconfigure () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( object Ġ: ĠType Literal < V au ht ij u ok su Database < Game Data >>() Ġ{}). to Instance ( game Data Db ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( object Ġ: ĠType Literal < V au ht ij u ok su Database < Don ation >>() Ġ{}). to Instance ( don ation Db ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( object Ġ: ĠType Literal < Singleton Database < Stream Metadata >>() Ġ{}). to Instance ( stream Metadata Db ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind ( Server Configuration :: class . java ). to Instance ( Server Configuration ( server Port , Ġht passwd File , Ġcors Header Url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġvert x Ġ= Ġinjector . getInstance ( Vert x :: class . java ) ĊĠĠĠĠĠĠĠ Ġserver Ġ= Ġinjector . getInstance ( Server :: class . java ) ĊĠĠĠĠĠĠĠ Ġserver . start () ĊĠĠĠĠĠĠĠ Ġ// ĠVert x Ġis Ġtoo Ġh asty Ġto Ġclaim Ġit 's Ġlistening ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 1 5 ) ĊĠĠĠĠĠĠĠ Ġclient Ġ= ĠWeb Client . create ( vertx , ĠWeb Client Options (). setDefault Port ( server Port )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun ĠafterEach ( test Context : ĠVert x TestContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġserver . stop () ĊĠĠĠĠĠĠĠ Ġclient . close () ĊĠĠĠĠĠĠĠ Ġvert x . close Ġ{ Ġtest Context . complete Now () Ġ} ĊĠĠĠ Ġ} Ċ } Ċ