package Ġorg . ost el co . prime . client . api . auth Ċ Ċ import Ġio . drop wizard . client . J ersey Client Builder Ċ import Ġio . drop wizard . testing . Config Override Ċ import Ġio . drop wizard . testing . Resource Helpers Ċ import Ġio . drop wizard . testing . junit . Drop wizard App Rule Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . assertj . core . api . Assertions . fail Ċ import Ġorg . glass fish . j ersey . client . Client Properties Ċ import Ġorg . junit . BeforeClass Ċ import Ġorg . junit . Class Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . ost el co . prime . client . api . auth . helpers . Test App Ċ import Ġorg . ost el co . prime . client . api . util . AccessToken Ċ import Ġjavax . ws . rs . client . Client Ċ import Ġjavax . ws . rs . core . MediaType Ċ import Ġjavax . ws . rs . core . Response Ċ Ċ /** Ċ Ġ* ĠTests ĠOAuth 2 Ġcallback Ġto Ġ' ... / userinfo " Ġendpoint . Ċ Ġ* Ċ Ġ*/ Ċ class ĠGet UserInfo Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġemail Ġ= Ġ" boat y @ internet . org " ĊĊĠĠĠ Ġprivate Ġval Ġaudience Ġ= ĠlistOf (" http :// k mm test ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// localhost :${ RULE . local Port }/ userinfo ") ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġget Profile NotFound () Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠXXX ĠRace Ġcondition Ġmakes Ġtest Ġfail Ġsometimes . ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġan Ġab om ini ation Ġ:-) ĠBut Ġit 's Ġwh ats Ġnecessary Ġto Ġconsistently Ġpass Ġthis ĊĠĠĠĠĠĠĠ Ġ// Ġtest Ġon Ġmy Ġwork station . ĊĊĠĠĠĠĠĠĠ ĠwaitFor Server () ĊĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient !!. target ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// localhost :${ RULE . local Port }/ profile ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. property ( Client Properties . CONNECT _ TIMEOUT , Ġ 3 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. property ( Client Properties . READ _ TIMEOUT , Ġ 3 0 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Authorization ", Ġ" Bearer Ġ${ AccessToken . with Email ( email , Ġaudience )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Response :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠassertThat ( response . status ). isEqualTo ( Response . Status . NOT _ FOUND . statusCode ) ĊĠĠĠĠĠĠĠ ĠassertThat ( response . media Type . toString ()). startsWith ( MediaType . APPLICATION _ JSON ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠwaitFor Server () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcounter Ġ= Ġ 4 0 Ġ Ġ// ĠMax Ġwait Ġtime , Ġten Ġseconds . ĊĠĠĠĠĠĠĠ Ġwhile Ġ( counter Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġclient !!. target ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" http :// localhost :${ RULE . admin Port }/ health check ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get ( Response :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r . status Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Connected ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ca ught Ġthrowable Ġ Ġ$ t ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( 2 5 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( counter Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Couldn 't Ġconnect Ġto ĠRULE Ġserver ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġkey Ġ= Ġ" secret " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġclient : ĠClient ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġ@ Class Rule ĊĠĠĠĠĠĠĠ Ġval ĠRULE Ġ= ĠDrop wizard App Rule ( Test App :: class . java , ĠResource Helpers . resource FilePath (" test . yaml "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfig Override . config (" secret ", Ġkey )) ĊĊĠĠĠĠĠĠĠ Ġ@ BeforeClass ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun ĠsetUp Client () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient Ġ= ĠJ ersey Client Builder ( RULE . environment ). build (" test Ġclient "); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ