/* Ċ * ĠCopyright ĠÂ© Ġ 2 0 2 0 ĠVMware , ĠInc . ĠAll ĠRights ĠReserved . Ċ * ĠSPDX - License - Identifier : ĠBSD - 2 - Clause Ċ */ Ċ Ċ package Ġcom . vmware . connectors . ms Planner Ċ Ċ import Ġcom . jay way . json path . Configuration Ċ import Ġcom . jay way . json path . Document Context Ċ import Ġcom . jay way . json path . Json Path Ċ import Ġcom . jay way . json path . Option Ċ import Ġcom . jay way . json path . spi . json . Jack son JsonNode Json Provider Ċ import Ġcom . vmware . connectors . ms Planner . config . Endpoints Ċ import Ġcom . vmware . connectors . ms Planner . config . MESSAGE _ ROUT ING _ PREFIX Ċ import Ġcom . vmware . connectors . ms Planner . dto . Task Ċ import Ġcom . vmware . connectors . ms Planner . utils .* Ċ import Ġcom . vmware . connectors . test . Controller Tests Base Ċ import Ġcom . vmware . connectors . utils . Ignored Fields Re placer Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Value Source Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . core . io . Class Path Resource Ċ import Ġorg . springframework . core . io . Resource Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . HttpMethod Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . test . web . client . Expected Count Ċ import Ġorg . springframework . test . web . client . match . Mock Rest Request Matchers Ċ import Ġorg . springframework . test . web . client . response . Mock Rest Response Creators Ċ import Ġorg . springframework . test . web . reactive . server . expect Body Ċ import Ġorg . springframework . test . web . reactive . server . return Result Ċ import Ġorg . springframework . util . Linked Multi Value Map Ċ import Ġorg . springframework . util . MimeType Utils Ċ import Ġorg . springframework . web . reactive . function . Body Inser ters Ċ import Ġuk . co . dat umed ge . hamcrest . json . Same JSON As Ċ import Ġjava . util . stream . Collectors ĊĊ Ċ const Ġval ĠROUT ING _ PREFIX _ URL Ġ= Ġ" https :// hero / connectors / ms _ planner /" Ċ const Ġval ĠtaskId Ġ= Ġ" 1 2 3 4 " Ċ Ċ class ĠC ards Controller Test Ġ: ĠController Tests Base () Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġget Authorization Token ( uri : ĠString ) Ġ= Ġ" Bearer Ġ" Ġ+ ĠaccessToken ( uri ) ĊĠĠĠ Ġprivate Ġval Ġauthorization Ġ= Ġ" Bearer Ġabc " ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Value Source ( strings Ġ= Ġ[ ĊĠĠĠĠĠĠĠ Ġ"/ planner / type / dismiss ", ĊĠĠĠĠĠĠĠ Ġ"/ cards / requests " ĊĠĠĠ Ġ]) ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġtest Protected Resource ( uri : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Protected Resource ( HttpMethod . POST , Ġuri ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun ĠtestGet Image (@ Value (" classpath : static / images / connector . png ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon : ĠResource ) Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ images / connector . png ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). contentType ( MimeType Utils . IMAGE _ PNG _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body < ByteArray >(). isEqualTo ( icon . read As ByteArray ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmissing Authorization () Ġ{ ĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ cards / requests ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Unauthorized ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠDis miss ĠTask `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task 1 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / user . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġmock Backend . url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( user . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval ĠformData Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠ ĠformData . add (" task ", Ġtask . read AsString ()) ĊĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ planner / user / dismiss ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ FORM _ URL ENCODE D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , Ġget Authorization Token ("/ planner / user / dismiss ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ AUTH _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ BASE _ URL _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Body Inser ters . from FormData ( formData )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is 2 xx Successful ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Parameterized Test ĊĠĠĠ Ġ@ Value Source ( strings Ġ= Ġ[ ĊĠĠĠĠĠĠĠ Ġ"/ planner / user / dismiss ", ĊĠĠĠĠĠĠĠ Ġ"/ planner / tasks / taskId / comment ", ĊĠĠĠĠĠĠĠ Ġ"/ planner / tasks / taskId / mark / completed " ĊĠĠĠ Ġ]) ĊĠĠĠ Ġfun Ġ` Test ĠAuth ĠFail ĠFor ĠActions `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task 1 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġmock Backend . url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Unauthorized Request (). body (" invalid Ġsession Ġid ")) ĊĊĠĠĠĠĠĠĠ Ġval ĠformData Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠ ĠformData . add (" task ", Ġtask . read AsString ()) ĊĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ FORM _ URL ENCODE D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , Ġget Authorization Token ( uri )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ AUTH _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ BASE _ URL _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Body Inser ters . from FormData ( formData )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). value Equals (" x - backend - status ", Ġ" 4 0 1 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠAdd ĠComment ĠTo ĠTask ĠAction `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task 1 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Resource : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / user . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / conversation Thread / conversation Thread . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconversation Thread : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( user . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( user . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġtask String Ġ= Ġtask Resource . read AsString () ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠJson Parser . deserialize < Task >( task String ) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . get Task ById Url ("", Ġtask . id ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( task String , ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getNew Conversation Thread Url ("", Ġtask . groupId ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( conversation Thread . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . update Task Url ("", Ġtask . id ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . PATCH )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . IF _ MATCH , Ġtask . e Tag )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ()) ĊĊĠĠĠĠĠĠĠ ĠlistOf ( null , Ġ" testing "). map Ġ{ Ġcomment Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠformData Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠĠĠĠĠ ĠformData . add (" task ", Ġtask String ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠformData . add (" comments ", Ġcomment ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ("/ planner / tasks /$ taskId / comment ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ FORM _ URL ENCODE D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , Ġget Authorization Token ("/ planner / tasks /$ taskId / comment ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ AUTH _ HEADER , Ġauthorization ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ BASE _ URL _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Body Inser ters . from FormData ( formData )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is 2 xx Successful ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠComplete ĠTask ĠAction `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task with conversation Id . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / user . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠtaskId Ġ= Ġ" 4 A Os Pl 6 8 BU 2 5 9 Ie _ 5 y OD Wm Q AP Xo 9 " ĊĠĠĠĠĠĠĠ Ġval ĠgroupId Ġ= Ġ" c 7 a 5 3 2 9 b - 0 4 0 b - 4 1 d 2 - 9 1 2 6 - d 5 0 8 4 a 4 b 5 1 4 8 " ĊĠĠĠĠĠĠĠ Ġval Ġthread Id Ġ= Ġ" AA Qk ADV l ZT cw OT Y 4 LT Zj MT Mt NG Vi YS 0 5 OT Q 5 LW Y 5 Y 2 U 2 Nm M 1 Nj Qz NA Mk AB AA Y hu Kl Gd TK U _ s 0 cap HW Z EL R AA Y hu Kl Gd TK U _ s 0 cap HW Z EL Q ==" ĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Expected Count . many Times (), ĠMock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġmock Backend . url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( user . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Expected Count . many Times (), ĠMock Rest Request Matchers . request To ( Endpoints . reply To Task Url ("", ĠgroupId , Ġthread Id ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġmock Backend . url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ()) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . update Task Url ("", ĠtaskId ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . PATCH )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġmock Backend . url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ()) ĊĊĠĠĠĠĠĠĠ Ġval ĠformData Ġ= ĠLinked Multi Value Map < String , ĠString >() ĊĠĠĠĠĠĠĠ ĠformData . add (" comments ", Ġ" testing ") ĊĠĠĠĠĠĠĠ ĠformData . add (" task ", Ġtask . read AsString ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ"/ planner / tasks / 1 2 3 4 / mark / completed " ĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ FORM _ URL ENCODE D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , Ġget Authorization Token ( url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ AUTH _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ BASE _ URL _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ( Body Inser ters . from FormData ( formData )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is 2 xx Successful ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransform Cards Response ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdue Date : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask : ĠString ĊĠĠĠ Ġ): ĠList < Map < String , ĠAny >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJson Parser . deserialize ( response . read AsString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getList OrDefault < Map < String , ĠAny >> (" objects ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġobject 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġobject 1 . getMap OrDefault < String , ĠAny >(" body ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactions Ġ= Ġobject 1 . getList OrDefault < Map < String , ĠAny >> (" actions ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġbody . getList OrDefault < Map < String , ĠAny >> (" fields ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject 1 . plus (" body " Ġto Ġbody . plus (" fields " Ġto Ġfields . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġit . getString OrDefault (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( title Ġ== Ġ" Due ĠDate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . plus (" description " Ġto Ġdue Date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})). plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" actions " Ġto Ġactions . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġit . getMap Or Exception < String , ĠAny >(" request ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request [" task "] Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . plus (" request " Ġto Ġrequest . plus (" task " Ġto Ġtask )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Cards Response (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġ"/ cards / requests " ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , Ġget Authorization Token ( uri )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ AUTH _ HEADER , Ġauthorization ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ BASE _ URL _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( MESSAGE _ ROUT ING _ PREFIX , ĠROUT ING _ PREFIX _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status (). is Ok ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). contentType Compatible With ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. return Result < String >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. response Body ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( Collectors . join ing ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( this :: normalize Cards ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. block () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . replace ( Regex (" http :// localhost :\\ d +/ "), Ġ"/") ĊĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= ĠConfiguration . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Provider ( Jack son JsonNode Json Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġcontext : ĠDocument Context Ġ= ĠJson Path . using ( configuration ). parse ( data ) ĊĊĠĠĠĠĠĠĠ Ġval Ġuuid Pattern Ġ= Ġ"\\ b [ 0 - 9 a - f ]{ 8 }\\ b -[ 0 - 9 a - f ]{ 4 }- [ 0 - 9 a - f ]{ 4 }- [ 0 - 9 a - f ]{ 4 }- \\ b [ 0 - 9 a - f ]{ 1 2 }\\ b " ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . set (" $. objects [ ? (@ . hash Ġ=~ Ġ/ " Ġ+ Ġuuid Pattern Ġ+ Ġ"/ )]. hash ", ĠIgnore d Fields Re placer . D UMMY _ UUID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set (" $. objects [ ? (@ . backend _ id Ġ=~ Ġ/ " Ġ+ Ġuuid Pattern Ġ+ Ġ"/ )]. backend _ id ", ĠIgnore d Fields Re placer . D UMMY _ UUID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. json String () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠEmpty ĠC ards ĠRequest ĠAnd ĠNo ĠTime Zone ĠConfig ured `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / user . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / group Responses / groups 1 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroups : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / plan Responses / plans 1 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplans : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / bucket Responses / buckets 1 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuckets : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / empty Task Responses . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / timezone . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimezone : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / user details . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser details : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / response . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / plan Responses / plan Details . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplan Details : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplan Id Ġ= Ġ" BO Dd 5 2 9 VL k 6 cw Ge F 3 5 O 4 L 2 Q AH S 4 b " ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Expected Count . many Times (), ĠMock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( user . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUser TimeZone Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with No Content ()) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getGroup Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( groups . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( plans . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( plans . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Expected Count . many Times (), ĠMock Rest Request Matchers . request To ( Endpoints . getLabel Categories Url ("", Ġplan Id ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( plan Details . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( buckets . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( buckets . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( tasks . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( tasks . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġresponse . read AsString () ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġget Cards Response () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertThat < String >( data , ĠSame JSON As . same JSON As ( json Response )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest Success For Cards Request With Different Cases ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Details : ĠResource Ġ= ĠClass Path Resource (" service / tasks / task Details . json "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource Ġ= ĠClass Path Resource (" service / response 1 . json "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Comment : ĠResource Ġ= ĠClass Path Resource (" service / Latest Comment / Latest Comment 1 . json "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpl anner Task : ĠResource Ġ= ĠClass Path Resource (" service / tasks / task 3 . json "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks : ĠResource Ġ= ĠClass Path Resource (" service / tasks / task 2 . json ") ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠClass Path Resource (" service / user / user . json ") ĊĠĠĠĠĠĠĠ Ġval Ġgroups Ġ= ĠClass Path Resource (" service / group Responses / groups . json ") ĊĠĠĠĠĠĠĠ Ġval Ġplans Ġ= ĠClass Path Resource (" service / plan Responses / plans . json ") ĊĠĠĠĠĠĠĠ Ġval Ġplan Details Ġ= ĠClass Path Resource (" service / plan Responses / plan Details . json ") ĊĠĠĠĠĠĠĠ Ġval Ġbuckets Ġ= ĠClass Path Resource (" service / bucket Responses / buckets . json ") ĊĠĠĠĠĠĠĠ Ġval Ġtimezone Ġ= ĠClass Path Resource (" service / user / timezone . json ") ĊĠĠĠĠĠĠĠ Ġval Ġempty Tasks Response Ġ= ĠClass Path Resource (" service / tasks / task Responses . json ") ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠgetCurrent Utc Time () ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġ" 3 fca 3 5 7 8 - eee 3 - 4 f 5 d - b 6 2 d - 4 7 d 1 7 f 3 cce 3 a " ĊĠĠĠĠĠĠĠ Ġval ĠtaskId Ġ= Ġ" ev Cy 5 UX M rk C rl Vu 3 g 4 wx 2 m QA FC 9 -" ĊĠĠĠĠĠĠĠ Ġval Ġplan Id Ġ= Ġ" BO Dd 5 2 9 VL k 6 cw Ge F 3 5 O 4 L 2 Q AH S 4 b " ĊĠĠĠĠĠĠĠ Ġval ĠgroupId Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠ Ġval Ġthread Id Ġ= Ġ" thread 1 2 3 " ĊĠĠĠĠĠĠĠ Ġval Ġnew Resp Ġ= ĠJson Parser . deserialize ( tasks . read AsString ()). getList OrDefault < Map < String , ĠAny >> (" responses "). map Ġ{ Ġresp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbatch Body Ġ= Ġresp . getMap OrDefault < String , ĠAny >(" body ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġbatch Body . getList OrDefault < Map < String , ĠAny >> (" value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresp Ġ+ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" body " Ġto Ġmap Of (" value " Ġto Ġvalue . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . plus (" due DateTime " Ġto Ġdate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Expected Count . many Times (), ĠMock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( user . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Expected Count . many Times (), ĠMock Rest Request Matchers . request To ( Endpoints . get Task Details Url ("", ĠtaskId ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( task Details . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Response Ġ= ĠJson Parser . serialize ( map Of (" responses " Ġto Ġnew Resp )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUser TimeZone Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( timezone . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getGroup Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( groups . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( plans . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getLabel Categories Url ("", Ġplan Id ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( plan Details . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( buckets . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( empty Tasks Response . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( task Response , ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . get Latest Comment On Task Url ("", ĠgroupId , Ġthread Id ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( latest Comment . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠJson Parser . serialize ( Json Parser . deserialize < Task >( planner Task . read AsString ()). copy ( due DateTime Ġ= Ġdate , ĠuserId Ġ= ĠuserId )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdue Date Ġ= ĠgetUser Due Date In User TimeZone ( date , Ġ" In dia ĠStandard ĠTime ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtransformed Obj Ġ= Ġtransform Cards Response ( response , Ġdue Date , Ġtask ) ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= ĠJson Parser . serialize ( map Of (" objects " Ġto Ġtransformed Obj )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġget Cards Response () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertThat < String >( data , ĠSame JSON As . same JSON As ( json Response )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠC ards ĠRequest ĠWith ĠComments `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / Latest Comment / Latest Comment . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Comment : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Success For Cards Request With Different Cases ( latest Comment Ġ= Ġlatest Comment ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠC ards ĠRequest ĠWith ĠMany ĠComments `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / Latest Comment / Latest Comment 2 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Comment : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / response 7 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Success For Cards Request With Different Cases ( latest Comment Ġ= Ġlatest Comment , Ġresponse Ġ= Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠC ards ĠRequest ĠFor ĠTask ĠWith ĠPriority ĠWith ĠU rg ent `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / tasks 1 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task 4 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpl anner Task : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / Latest Comment / Latest Comment . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Comment : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / response 2 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Success For Cards Request With Different Cases ( tasks Ġ= Ġtasks , Ġpl anner Task Ġ= Ġpl anner Task , Ġlatest Comment Ġ= Ġlatest Comment , Ġresponse Ġ= Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠC ards ĠRequest ĠFor ĠTask ĠWith ĠPriority ĠWith ĠLow `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / tasks 2 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task 5 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpl anner Task : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / Latest Comment / Latest Comment . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Comment : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / response 3 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Success For Cards Request With Different Cases ( tasks Ġ= Ġtasks , Ġpl anner Task Ġ= Ġpl anner Task , Ġlatest Comment Ġ= Ġlatest Comment , Ġresponse Ġ= Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠC ards ĠRequest ĠFor ĠTask ĠWith ĠPriority ĠWith ĠImport ant `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / tasks 3 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task 6 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpl anner Task : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / Latest Comment / Latest Comment . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Comment : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / response 4 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Success For Cards Request With Different Cases ( tasks Ġ= Ġtasks , Ġpl anner Task Ġ= Ġpl anner Task , Ġlatest Comment Ġ= Ġlatest Comment , Ġresponse Ġ= Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠC ards ĠRequest ĠWith ĠEmpty ĠTask ĠDetails `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task Details 1 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Details : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / response 5 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource ĊĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Success For Cards Request With Different Cases ( task Details , Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠC ards ĠRequest ĠWith ĠBad ĠTask ĠDetails ĠResponse `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task Details 2 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Details : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / response 6 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource ĊĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Success For Cards Request With Different Cases ( task Details , Ġresponse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠSuccess ĠFor ĠC ards ĠRequest ĠFor ĠTask ĠWithout ĠCon versation ĠThread `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / user . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / tasks 4 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtasks : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task 7 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask 1 : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task Details . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Details : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / group Responses / groups . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroups : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / plan Responses / plans . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplans : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / plan Responses / plan Details . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplan Details : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / bucket Responses / buckets . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuckets : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / timezone . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimezone : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / user details . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser details : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / tasks / task Responses . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty tasks Response : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / response 8 . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource ĊĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠgetCurrent Utc Time () ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġ" 3 fca 3 5 7 8 - eee 3 - 4 f 5 d - b 6 2 d - 4 7 d 1 7 f 3 cce 3 a " ĊĠĠĠĠĠĠĠ Ġval ĠtaskId Ġ= Ġ" ev Cy 5 UX M rk C rl Vu 3 g 4 wx 2 m QA FC 9 -" ĊĠĠĠĠĠĠĠ Ġval Ġplan Id Ġ= Ġ" BO Dd 5 2 9 VL k 6 cw Ge F 3 5 O 4 L 2 Q AH S 4 b " ĊĠĠĠĠĠĠĠ Ġval Ġnew Resp Ġ= ĠJson Parser . deserialize ( tasks . read AsString ()). getList OrDefault < Map < String , ĠAny >> (" responses "). map Ġ{ Ġresp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbatch Body Ġ= Ġresp . getMap OrDefault < String , ĠAny >(" body ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġbatch Body . getList OrDefault < Map < String , ĠAny >> (" value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresp Ġ+ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" body " Ġto Ġmap Of (" value " Ġto Ġvalue . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . plus (" due DateTime " Ġto Ġdate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Expected Count . many Times (), ĠMock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( user . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Expected Count . many Times (), ĠMock Rest Request Matchers . request To ( Endpoints . get Task Details Url ("", ĠtaskId ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( task Details . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Response Ġ= ĠJson Parser . serialize ( map Of (" responses " Ġto Ġnew Resp )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUser TimeZone Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( timezone . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getGroup Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( groups . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( plans . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getLabel Categories Url ("", Ġplan Id ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( plan Details . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( buckets . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( empty tasks Response . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getAll Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . CONTENT _ TYPE , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . ACCEPT , ĠMediaType . APPLICATION _ JSON _ VALUE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( task Response , ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠJson Parser . serialize ( Json Parser . deserialize < Task >( task 1 . read AsString ()). copy ( due DateTime Ġ= Ġdate , ĠuserId Ġ= ĠuserId )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdue Date Ġ= ĠgetUser Due Date In User TimeZone ( date , Ġ" In dia ĠStandard ĠTime ") ĊĊĠĠĠĠĠĠĠ Ġval Ġtransformed Obj Ġ= Ġtransform Cards Response ( response , Ġdue Date , Ġtask ) ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= ĠJson Parser . serialize ( map Of (" objects " Ġto Ġtransformed Obj )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġget Cards Response () ĊĊĠĠĠĠĠĠĠ ĠAssert . assertThat < String >( data , ĠSame JSON As . same JSON As ( json Response )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠAuth ĠFail ĠFor ĠGetting ĠUser TimeZone `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : connector / responses / invalid _ connector _ token . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / user . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( user . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUser TimeZone Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Unauthorized Request ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġresponse . read AsString () ĊĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġ"/ cards / requests " ĊĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , Ġget Authorization Token ( uri )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ AUTH _ HEADER , Ġauthorization ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ BASE _ URL _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( MESSAGE _ ROUT ING _ PREFIX , ĠROUT ING _ PREFIX _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). value Equals (" x - backend - status ", Ġ" 4 0 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). contentType Compatible With ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( json Response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test ĠAuth ĠFail ĠFor ĠGetting ĠUser Group Ids `( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : connector / responses / invalid _ connector _ token . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / user . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser : ĠResource , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Value (" classpath : service / user / timezone . json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimezone : ĠResource ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Expected Count . many Times (), ĠMock Rest Request Matchers . request To ( Endpoints . getUserId Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( user . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getUser TimeZone Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . GET )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Success ( timezone . read AsString (), ĠMediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġmock Backend . expect ( Mock Rest Request Matchers . request To ( Endpoints . getGroup Ids Url (" "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . method ( HttpMethod . POST )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( Mock Rest Request Matchers . header ( HttpHeaders . AUTHORIZATION , Ġauthorization )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and Respond ( Mock Rest Response Creators . with Unauthorized Request ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Response Ġ= Ġresponse . read AsString () ĊĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġ"/ cards / requests " ĊĊĠĠĠĠĠĠĠ Ġweb Client . post () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. uri ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , Ġget Authorization Token ( uri )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ AUTH _ HEADER , Ġauthorization ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( X _ BASE _ URL _ HEADER , Ġmock Backend . url ("")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( MESSAGE _ ROUT ING _ PREFIX , ĠROUT ING _ PREFIX _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. contentType ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. exchange () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Status () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is BadRequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). value Equals (" x - backend - status ", Ġ" 4 0 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Header (). contentType Compatible With ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Body (). json ( json Response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmis cellaneous () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of (" string " Ġto Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġresp Ġ= Ġmap . getList OrDefault (" s ", ĠlistOf ( 1 , Ġ 2 )) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( listOf ( 1 , Ġ 2 ), Ġresp ) ĊĠĠĠĠĠĠĠ Ġval Ġmap Resp Ġ= Ġmap . getMap OrDefault (" s ", Ġmap Of (" sample " Ġto Ġ 1 )) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( map Of (" sample " Ġto Ġ 1 ), Ġmap Resp ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( null , Ġmap . getMap OrNull < String , ĠAny >(" j ")) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals (" default ", Ġmap . getString OrDefault (" try ", Ġ" default ")) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . getList Or Exception < String >(" f ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( null , Ġe . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . getMap Or Exception < String , ĠAny >(" f ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals ( null , Ġe . localized Message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠuserName From Token Ġ= ĠVm ware Utils . getUser Email From Token (" token Ġs . bn V sb A ==" ) ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( null , ĠuserName From Token ) ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġnull . to Base 6 4 Decoded String () ĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( null , Ġd ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnormalize Cards ( body : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfiguration Ġ= ĠConfiguration . builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. options ( Option . SUP PRESS _ EXCEPTION S ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. json Provider ( Jack son JsonNode Json Provider ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠJson Path . using ( configuration ). parse ( body ) ĊĠĠĠĠĠĠĠ Ġcontext . set (" $. objects [* ]. id ", Ġ" 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0 0 0 0 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠ Ġcontext . set (" $. objects [* ]. creation _ date ", Ġ" 1 9 7 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 Z ") ĊĠĠĠĠĠĠĠ Ġcontext . set (" $. objects [* ]. expiration _ date ", Ġ" 1 9 7 0 - 0 1 - 0 1 T 0 0 : 0 0 : 0 0 Z ") ĊĠĠĠĠĠĠĠ Ġcontext . set (" $. objects [* ]. actions [* ]. id ", Ġ" 0 0 0 0 0 0 0 0 - 0 0 0 0 - 0 0 0 0 - 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 ") ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . json String () ĊĠĠĠ Ġ} Ċ } ĊĊ