package Ġorg . and coe . adf Ċ Ċ import Ġio . ktor . http . HttpMethod Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . server . testing . handle Request Ċ import Ġio . ktor . server . testing . with Test Application Ċ import Ġorg . and coe . adf . core . A db Output . Companion . DEVICE _ PIXEL Ċ import Ġorg . and coe . adf . core . A db Output . Companion . DEVICE _ SAM SUN G Ċ import Ġorg . and coe . adf . devices .* Ċ import Ġorg . and coe . adf . lease s .* Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Test Ċ import Ġutil . Json Assertion . Companion . assertThat Json Ċ Ċ class ĠDevices Api Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturns Empty Json () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdevices Store Ġ= Ġmutable Map Of < DeviceId , ĠDevice >() ĊĠĠĠĠĠĠĠ Ġval Ġdevice Dao Ġ= ĠDevices Dao ( devices Store ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Service Ġ= ĠDevices Service ( device Dao ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Resource Ġ= ĠDevices Resource ( device Service ) ĊĊĠĠĠĠĠĠĠ Ġval Ġle ases Store Ġ= Ġmutable Map Of < Lease Id , ĠLe ase >() ĊĠĠĠĠĠĠĠ Ġval Ġlease Dao Ġ= ĠLe ases Dao ( lease s Store ) ĊĠĠĠĠĠĠĠ Ġval Ġlease Service Ġ= ĠLe ases Service ( device Service , Ġlease Dao ) ĊĠĠĠĠĠĠĠ Ġval Ġle ases Resource Ġ= ĠLe ases Resource ( lease Service ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Module Ġ= ĠApp Module ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices Resource Ġ= Ġdevice Resource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġle ases Resource Ġ= Ġle ases Resource ĊĠĠĠĠĠĠĠ Ġ). module () ĊĊĠĠĠĠĠĠĠ Ġwith Test Application ( app Module ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( handle Request ( HttpMethod . Get , Ġ"/ devices ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( response . status ()). isEqualTo ( HttpStatusCode . OK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( response . content ). isEqualTo (" [] ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturns Devices Json () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdevices Store Ġ= Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEVICE _ PIXEL . deviceId Ġto ĠDEVICE _ PIXEL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEVICE _ SAM SUN G . deviceId Ġto ĠDEVICE _ SAM SUN G ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Dao Ġ= ĠDevices Dao ( devices Store ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Service Ġ= ĠDevices Service ( device Dao ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Resource Ġ= ĠDevices Resource ( device Service ) ĊĊĠĠĠĠĠĠĠ Ġval Ġle ases Store Ġ= Ġmutable Map Of < Lease Id , ĠLe ase >() ĊĠĠĠĠĠĠĠ Ġval Ġlease Dao Ġ= ĠLe ases Dao ( lease s Store ) ĊĠĠĠĠĠĠĠ Ġval Ġlease Service Ġ= ĠLe ases Service ( device Service , Ġlease Dao ) ĊĠĠĠĠĠĠĠ Ġval Ġle ases Resource Ġ= ĠLe ases Resource ( lease Service ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Module Ġ= ĠApp Module ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices Resource Ġ= Ġdevice Resource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġle ases Resource Ġ= Ġle ases Resource ĊĠĠĠĠĠĠĠ Ġ). module () ĊĊĠĠĠĠĠĠĠ Ġwith Test Application ( app Module ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( handle Request ( HttpMethod . Get , Ġ"/ devices ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( response . status ()). isEqualTo ( HttpStatusCode . OK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat Json ( response . content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" [ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" deviceId ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ" PIXEL " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" model ": Ġ" Pixel ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" manufacturer ": Ġ" Google ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" android Version ": Ġ" 9 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" api Level ": Ġ" 2 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" port ": Ġ" 7 7 7 7 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" deviceId ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ" SAM SUN G " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" model ": Ġ" S 9 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" manufacturer ": Ġ" S amsung ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" android Version ": Ġ" 8 . 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" api Level ": Ġ" 2 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" port ": Ġ" 7 7 7 8 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ] """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturns Device ById Json () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdevices Store Ġ= Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEVICE _ PIXEL . deviceId Ġto ĠDEVICE _ PIXEL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEVICE _ SAM SUN G . deviceId Ġto ĠDEVICE _ SAM SUN G ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Dao Ġ= ĠDevices Dao ( devices Store ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Service Ġ= ĠDevices Service ( device Dao ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Resource Ġ= ĠDevices Resource ( device Service ) ĊĊĠĠĠĠĠĠĠ Ġval Ġle ases Store Ġ= Ġmutable Map Of < Lease Id , ĠLe ase >() ĊĠĠĠĠĠĠĠ Ġval Ġlease Dao Ġ= ĠLe ases Dao ( lease s Store ) ĊĠĠĠĠĠĠĠ Ġval Ġlease Service Ġ= ĠLe ases Service ( device Service , Ġlease Dao ) ĊĠĠĠĠĠĠĠ Ġval Ġle ases Resource Ġ= ĠLe ases Resource ( lease Service ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Module Ġ= ĠApp Module ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices Resource Ġ= Ġdevice Resource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġle ases Resource Ġ= Ġle ases Resource ĊĠĠĠĠĠĠĠ Ġ). module () ĊĊĠĠĠĠĠĠĠ Ġwith Test Application ( app Module ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( handle Request ( HttpMethod . Get , Ġ"/ devices / PIXEL ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( response . status ()). isEqualTo ( HttpStatusCode . OK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat Json ( response . content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" deviceId ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ" PIXEL " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" model ": Ġ" Pixel ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" manufacturer ": Ġ" Google ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" android Version ": Ġ" 9 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" api Level ": Ġ" 2 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" port ": Ġ" 7 7 7 7 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreturns Device ById And Handles NotFound () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdevices Store Ġ= Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEVICE _ PIXEL . deviceId Ġto ĠDEVICE _ PIXEL , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEVICE _ SAM SUN G . deviceId Ġto ĠDEVICE _ SAM SUN G ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Dao Ġ= ĠDevices Dao ( devices Store ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Service Ġ= ĠDevices Service ( device Dao ) ĊĠĠĠĠĠĠĠ Ġval Ġdevice Resource Ġ= ĠDevices Resource ( device Service ) ĊĊĠĠĠĠĠĠĠ Ġval Ġle ases Store Ġ= Ġmutable Map Of < Lease Id , ĠLe ase >() ĊĠĠĠĠĠĠĠ Ġval Ġlease Dao Ġ= ĠLe ases Dao ( lease s Store ) ĊĠĠĠĠĠĠĠ Ġval Ġlease Service Ġ= ĠLe ases Service ( device Service , Ġlease Dao ) ĊĠĠĠĠĠĠĠ Ġval Ġle ases Resource Ġ= ĠLe ases Resource ( lease Service ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Module Ġ= ĠApp Module ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevices Resource Ġ= Ġdevice Resource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġle ases Resource Ġ= Ġle ases Resource ĊĠĠĠĠĠĠĠ Ġ). module () ĊĊĠĠĠĠĠĠĠ Ġwith Test Application ( app Module ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( handle Request ( HttpMethod . Get , Ġ"/ devices / some - random - device - id ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( response . status ()). isEqualTo ( HttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( response . content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo (""" {" error ":" Device Ġwith Ġid : Ġ' some - random - device - id ' Ġnot Ġfound ." } """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }