package Ġno . nav . sy fo . client Ċ Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Feature Ċ import Ġcom . fasterxml . jackson . databind . Serialization Feature Ċ import Ġcom . fasterxml . jackson . datatype . js r 3 1 0 . Java Time Module Ċ import Ġcom . fasterxml . jackson . module . kotlin . register Kotlin Module Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . application . install Ċ import Ġio . ktor . client . HttpClient Ċ import Ġio . ktor . client . engine . apache . Apache Ċ import Ġio . ktor . client . features . json . Jack son Serializer Ċ import Ġio . ktor . client . features . json . Json Feature Ċ import Ġio . ktor . features . Content Neg otiation Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . jackson . jackson Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . routing . get Ċ import Ġio . ktor . routing . routing Ċ import Ġio . ktor . server . engine . embedded Server Ċ import Ġio . ktor . server . netty . Net ty Ċ import Ġio . ktor . util . K tor Experimental API Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġno . nav . sy fo . NAV _ OP P FOL GING _ UT LAND _ K ONT OR _ NR Ċ import Ġno . nav . sy fo . util . Logging Meta Ċ import Ġorg . am sh ove . k lu ent . shouldBe EqualTo Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ import Ġjava . net . Server Socket Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ K tor Experimental API Ċ object ĠN org 2 Client Test Ġ: ĠSpe k ({ ĊĠĠĠ Ġval Ġlogging Meta Ġ= ĠLogging Meta (" mot tak id ", Ġ" org nr ", Ġ" msgid ", Ġ" sy k meld ing id ") ĊĠĠĠ Ġval ĠhttpClient Ġ= ĠHttpClient ( Apache ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstall ( Json Feature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠJack son Serializer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Kotlin Module () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregister Module ( Java Time Module ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure ( Serialization Feature . WRITE _ DAT ES _ AS _ TIMESTAMP S , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure ( Deserialization Feature . FAIL _ ON _ UNKNOWN _ PROPERTIES , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmock HttpServer Port Ġ= ĠServer Socket ( 0 ). use Ġ{ Ġit . local Port Ġ} ĊĠĠĠ Ġval Ġmock HttpServer Url Ġ= Ġ" http :// localhost :$ mock HttpServer Port " ĊĠĠĠ Ġval Ġmock Server Ġ= Ġembedded Server ( Net ty , Ġmock HttpServer Port ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinstall ( Content Neg otiation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj ack son Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrouting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ n org 2 / en het / nav kont or / 1 4 1 1 ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( En het (" 1 4 0 0 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ n org 2 / en het / nav kont or / POL ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. start () ĊĊĠĠĠ Ġval Ġn org 2 Client Ġ= ĠN org 2 Client ( httpClient , Ġ"$ mock HttpServer Url / n org 2 ") ĊĊĠĠĠ Ġafter Group Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server . stop ( TimeUnit . SECONDS . to Millis ( 1 ), ĠTimeUnit . SECONDS . to Millis ( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" N org 2 Client ") Ġ{ ĊĠĠĠĠĠĠĠ Ġit (" Return er er Ġri kt ig ĠNAV - kont or ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn org 2 Client . getLocal NAV Office (" 1 4 1 1 ", Ġnull , Ġlogging Meta ) ĠshouldBe EqualTo ĠEn het (" 1 4 0 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" Return er er ĠNAV ĠU tl and Ġh vis Ġvi Ġik ke Ġf inner Ġlok alk ont or ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn org 2 Client . getLocal NAV Office (" POL ", Ġnull , Ġlogging Meta ) ĠshouldBe EqualTo ĠEn het ( NAV _ OP P FOL GING _ UT LAND _ K ONT OR _ NR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ