package Ġio . expo . sdk Ċ Ċ import Ġio . expo . sdk . model .* Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Assertions .* Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . mock server . client . server . Mock Server Client Ċ import Ġorg . mock server . integration . Client And Server Ċ import Ġorg . mock server . model . HttpRequest Ċ import Ġorg . mock server . model . HttpResponse Ċ import Ġjava . util .* Ċ Ċ internal Ġclass ĠPush Gateway Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġport Ġ= Ġrandom From () ĊĠĠĠ Ġvar Ġmock Server : ĠMock Server Client Ġ= ĠMock Server Client (" localhost ", Ġport ) ĊĠĠĠ Ġval Ġurl Ġ= Ġ" http :// localhost :$ port " ĊĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġprepare () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server Ġ= ĠClient And Server . start Client And Server ( port ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test ĠAndroid Ġpush Ġnotification `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprepare Push Endpoint () ĊĊĠĠĠĠĠĠĠ ĠPush Gateway ( expo Push Endpoint Url Ġ= Ġ"$ url / push ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush Messages Ġ= Ġarray ListOf ( Push Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= ĠlistOf (" expo - client - token "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠPair (" test ", Ġ" test - data "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ Ġ" test - title ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġ Ġ" The Ġbody Ġof Ġthe Ġmessage ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġttl Ġ= Ġ 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpiration Ġ= ĠĠ 1 0 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= ĠPriority . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Id Ġ= Ġ" test - channel " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġassert Push Response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test ĠIOS Ġpush Ġnotification `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprepare Push Endpoint () ĊĊĠĠĠĠĠĠĠ ĠPush Gateway ( expo Push Endpoint Url Ġ= Ġ"$ url / push ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush Messages Ġ= Ġarray ListOf ( Push Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= ĠlistOf (" expo - client - token "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠPair (" test ", Ġ" test - data "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ Ġ" test - title ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġ Ġ" The Ġbody Ġof Ġthe Ġmessage ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġttl Ġ= Ġ 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpiration Ġ= ĠĠ 1 0 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= ĠPriority . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbadge Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound Ġ= Ġ" bo ing " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġassert Push Response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test Ġhttp Ġ 4 0 0 Ġbad Ġrequest Ġon Ġpush Ġnotification `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprepare Error Endpoint ( 4 0 0 , Ġ"/ push ") ĊĊĠĠĠĠĠĠĠ ĠPush Gateway ( expo Push Endpoint Url Ġ= Ġ"$ url / push ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush Messages Ġ= Ġarray ListOf ( Push Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= ĠlistOf (" expo - client - token "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠPair (" test ", Ġ" test - data "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ Ġ" test - title ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġ Ġ" The Ġbody Ġof Ġthe Ġmessage ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġttl Ġ= Ġ 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpiration Ġ= ĠĠ 1 0 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= ĠPriority . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbadge Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound Ġ= Ġ" bo ing " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġassert 4 0 0 Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test Ġhttp Ġ 5 0 0 Ġerror Ġrequest Ġon Ġpush Ġnotification `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprepare Error Endpoint ( 5 0 0 , Ġ"/ push ") ĊĊĠĠĠĠĠĠĠ ĠPush Gateway ( expo Push Endpoint Url Ġ= Ġ"$ url / push ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpush Messages Ġ= Ġarray ListOf ( Push Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġ= ĠlistOf (" expo - client - token "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠPair (" test ", Ġ" test - data "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ Ġ" test - title ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ= Ġ Ġ" The Ġbody Ġof Ġthe Ġmessage ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġttl Ġ= Ġ 1 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpiration Ġ= ĠĠ 1 0 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= ĠPriority . HIGH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbadge Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsound Ġ= Ġ" bo ing " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġassert 5 0 0 error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test Ġreceipt Ġresponse Ġwhen Ġarray Ġof Ġids Ġis Ġpassed Ġas Ġargument `() Ġ{ ĊĠĠĠĠĠĠĠ Ġprepare Receipt s Endpoint () ĊĊĠĠĠĠĠĠĠ ĠPush Gateway ( expo Receipt s Endpoint Url Ġ= Ġ"$ url / receipt s ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. receipt s ( listOf (" id 1 ", Ġ" id 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġassert Receipt Response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test Ġreceipt Ġresponse Ġwhen ĠPush Response Ġinstance Ġis Ġpassed Ġas Ġargument `() Ġ{ ĊĠĠĠĠĠĠĠ Ġprepare Receipt s Endpoint () ĊĊĠĠĠĠĠĠĠ Ġval Ġpush Response Ġ= ĠPush Response ( array ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Item ( status Ġ= ĠResponse Status . OK , Ġid Ġ= Ġ" 1 2 3 4 5 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Item ( status Ġ= ĠResponse Status . OK , Ġid Ġ= Ġ" 6 7 8 9 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse Item ( status Ġ= ĠResponse Status . ERROR , Ġmessage Ġ= Ġ" some Ġerror ") ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ ĠPush Gateway ( expo Receipt s Endpoint Url Ġ= Ġ"$ url / receipt s ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. receipt s ( push Response , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġassert Receipt Response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test Ġhttp Ġ 4 0 0 Ġbad Ġrequest Ġon Ġreceipt s Ġnotification `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprepare Error Endpoint ( 4 0 0 , Ġ"/ receipt s ") ĊĊĠĠĠĠĠĠĠ ĠPush Gateway ( expo Receipt s Endpoint Url Ġ= Ġ"$ url / receipt s ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. receipt s ( listOf (" id 1 ", Ġ" id 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġassert 4 0 0 Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test Ġhttp Ġ 5 0 0 Ġerror Ġrequest Ġon Ġreceipt s Ġnotification `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprepare Error Endpoint ( 5 0 0 , Ġ"/ receipt s ") ĊĊĠĠĠĠĠĠĠ ĠPush Gateway ( expo Receipt s Endpoint Url Ġ= Ġ"$ url / receipt s ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. receipt s ( listOf (" id 1 ", Ġ" id 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġassert 5 0 0 error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test Ġwhen Ġpush Ġexception Ġis Ġthrown `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpRequest . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" POST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ receipt s ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application - json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body (" Force Ġparse Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertThrows ( Exception :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPush Gateway ( expo Receipt s Endpoint Url Ġ= Ġ"$ url / receipt s ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. receipt s ( listOf (" id 1 ", Ġ" id 2 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ org . junit . jupiter . api . Test ĊĠĠĠ Ġfun Ġ` test Ġwhen Ġunknown Ġresponse Ġpayload Ġis Ġreturned `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpRequest . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" POST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ receipt s ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 3 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application - json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body (" This Ġis Ġunknown Ġstatus Ġand Ġpayload ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠPush Gateway ( expo Receipt s Endpoint Url Ġ= Ġ"$ url / receipt s ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. receipt s ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf (" id 1 ", Ġ" id 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ResponseStatus . ERROR , Ġit . status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( it . errors . first ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" UNKNOWN ", Ġcode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" This Ġis Ġunknown Ġstatus Ġand Ġpayload ", Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Push Response (): Ġ( Push Response ) Ġ-> ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . elementAt ( 0 ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ResponseStatus . ERROR , Ġit . status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ("\" Exponent Push Token [ xxxxxxxxxxxxxxxx xxxx xx ] \" Ġis Ġnot Ġa Ġregistered Ġpush Ġnotification Ġrecipient ", Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Error Detail . DEVICE _ NOT _ REG IST RED , Ġit . details ?. error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . elementAt ( 1 ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ResponseStatus . OK , Ġit . status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" XXXXXXXX - XXXX - XXXX - XXXX - XXXXXXXX XXXX ", Ġit . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠreadFile ( path : ĠString ): ĠString Ġ= Ġthis . java Class :: class . java . getResource ( path ). read Text () ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Push Endpoint () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpRequest . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" POST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ push ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application - json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( readFile ("/ responses / push _ mixed _ response . json ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Receipt s Endpoint () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpRequest . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" POST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ("/ receipt s ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application - json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( readFile ("/ responses / receipt s _ mixed _ response . json ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Error Endpoint ( errorCode : ĠInt , Ġpath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server .` when `( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpRequest . request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Method (" POST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Path ( path ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHttpResponse . response () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with StatusCode ( errorCode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Header (" Content - Type ", Ġ" application - json ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Body ( readFile ("/ responses / http _${ errorCode }_ error . json ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Receipt Response (): Ġ( Receipt Response ) Ġ-> ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" XXXXXXXX - XXXX - XXXX - XXXX - XXXXXXXX XXXX "] ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ResponseStatus . ERROR , Ġit . status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" The ĠApple ĠPush ĠNotification Ġservice Ġfailed Ġto Ġsend Ġthe Ġnotification ", Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Error Detail . DEVICE _ NOT _ REG IST RED , Ġit . details ?. error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata [" YYYY YYYY - YYYY - YYYY - YYYY - YYYY YYYY YYYY "] ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ResponseStatus . OK , Ġit . status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert 4 0 0 Error (): Ġ( ErrorResponse ) Ġ-> ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response . errors ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ResponseStatus . ERROR , Ġresponse . status ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" NOT _ FOUND ", Ġresponse . errors . first (). code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Not Ġfound .", Ġresponse . errors . first (). message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert 5 0 0 error (): Ġ( ErrorResponse ) Ġ-> ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response . errors ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ResponseStatus . ERROR , Ġresponse . status ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" INTERNAL _ SERVER _ ERROR ", Ġresponse . errors . first (). code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" An Ġunknown Ġerror Ġoccurred .", Ġresponse . errors . first (). message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ val Ġrandom Ġ= ĠRandom () Ċ internal Ġfun Ġrandom From ( from : ĠInt Ġ= Ġ 1 0 2 4 , Ġto : ĠInt Ġ= Ġ 6 5 5 3 5 ) Ġ: ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġrandom . nextInt ( to Ġ- Ġfrom ) Ġ+ Ġfrom Ċ } ĊĊ