package Ġcom . lab ij ie . infra . oauth 2 . testing Ċ Ċ import Ġcom . lab ij ie . infra . json . Jack son Helper Ċ import Ġcom . lab ij ie . infra . oauth 2 . Constants . DEFAULT _ J WK _ SET _ ENDPOINT _ PATH Ċ import Ġcom . lab ij ie . infra . oauth 2 . Constants . DEFAULT _ J WS _ INT ROS PECT _ ENDPOINT _ PATH Ċ import Ġcom . lab ij ie . infra . oauth 2 . testing . ab straction . OAuth 2 Tester Ċ import Ġcom . lab ij ie . infra . oauth 2 . testing . component . OAuth 2 Testing Utils Ċ import Ġcom . lab ij ie . infra . oauth 2 . testing . component . OAuth 2 Testing Utils . read ToMap Ċ import Ġcom . lab ij ie . infra . oauth 2 . testing . configuration . Event Test Subscription Ċ import Ġcom . lab ij ie . infra . oauth 2 . testing . configuration . OAuth 2 Test Server Auto Configuration Ċ import Ġcom . lab ij ie . infra . utils . Short Id Ċ import Ġcom . lab ij ie . infra . utils . logger Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . autoconfigure . Import Auto Configuration Ċ import Ġorg . springframework . boot . autoconfigure . security . servlet . Security Filter Auto Configuration Ċ import Ġorg . springframework . boot . test . autoconfigure . web . servlet . Web Mvc Test Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . MediaType Ċ import Ġorg . springframework . security . oauth 2 . core . OAuth 2 ErrorCode s Ċ import Ġorg . springframework . test . context . Context Configuration Ċ import Ġorg . springframework . test . web . servlet . MockMvc Ċ import Ġorg . springframework . test . web . servlet . request . MockMvc Request Builders . get Ċ import Ġorg . springframework . test . web . servlet . request . MockMvc Request Builders . post Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . content Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . status Ċ import Ġorg . springframework . util . Base 6 4 Utils Ċ import Ġorg . springframework . util . Linked Multi Value Map Ċ import Ġorg . springframework . util . Multi Value Map Ċ import Ġjava . util .* Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals ĊĊ Ċ @ Context Configuration ( classes Ġ= Ġ[ OAuth 2 Test Server Auto Configuration :: class ]) Ċ @ Web Mvc Test Ċ @ Import Auto Configuration ( classes Ġ= [ Security Filter Auto Configuration :: class ]) Ċ class ĠOAuth 2 Server Tester Ġ: ĠOAuth 2 Tester () Ġ{ ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġoverride Ġlateinit Ġvar Ġmock Mvc : ĠMock Mvc ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Correct Password Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġthis . obtain AccessToken () ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( token . isNull Or Blank ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Bad Password Login () Ġ{ ĊĠĠĠĠĠĠĠ ĠEvent Test Subscription ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġthis . perform Token Action ( password Ġ= Ġ"! @ # @ $ ### GD ") ĊĠĠĠĠĠĠĠ Ġr . andExpect ( status (). is 4 xx Client Error ) ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġr . read ToMap () ĊĠĠĠĠĠĠĠ ĠassertEquals ( json [" error "], ĠOAuth 2 ErrorCode s . INVALID _ GRANT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Bad Client Secret Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġthis . perform Token Action ( client Secret Ġ= Ġ" abcdef g ") ĊĠĠĠĠĠĠĠ Ġr . andExpect ( status (). is 4 xx Client Error ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Bad RefreshToken (){ ĊĠĠĠĠĠĠĠ Ġval Ġparams : ĠMulti Value Map < String , ĠString > Ġ= ĠLinked Multi Value Map () ĊĠĠĠĠĠĠĠ Ġparams . add (" grant _ type ", Ġ" refresh _ token ") ĊĠĠĠĠĠĠĠ Ġ// params . add (" scope ", Ġ" api ") ĊĠĠĠĠĠĠĠ Ġparams . add (" refresh _ token ", ĠUUID . randomUUID (). toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmock Mvc . perform ( post ("/ oauth / token ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. params ( params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Basic Ġ" Ġ+ ĠBase 6 4 Utils . encode ToString ("${ OAuth 2 Testing Utils . Test ClientId }:${ OAuth 2 Testing Utils . Test Client Secret }". toByteArray ( Charsets . UTF _ 8 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is 4 xx Client Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( content (). contentType Compatible With ( MediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġresult . read ToMap () ĊĠĠĠĠĠĠĠ Ġval ĠerrorCode Ġ= Ġmap [" error "] ?. toString () ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( OAuth 2 ErrorCode s . INVALID _ GRANT , ĠerrorCode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest RefreshToken (){ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Result Ġ= Ġthis . perform Token Action (). read ToMap () ĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( token Result . containsKey (" refresh _ token ")) ĊĠĠĠĠĠĠĠ Ġval Ġparams : ĠMulti Value Map < String , ĠString > Ġ= ĠLinked Multi Value Map () ĊĠĠĠĠĠĠĠ Ġparams . add (" grant _ type ", Ġ" refresh _ token ") ĊĠĠĠĠĠĠĠ Ġ// params . add (" scope ", Ġ" api ") ĊĠĠĠĠĠĠĠ Ġparams . add (" refresh _ token ", Ġtoken Result [" refresh _ token "] ?. toString ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmock Mvc . perform ( post ("/ oauth / token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. params ( params ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Basic Ġ" Ġ+ ĠBase 6 4 Utils . encode ToString ("${ OAuth 2 Testing Utils . Test ClientId }:${ OAuth 2 Testing Utils . Test Client Secret }". toByteArray ( Charsets . UTF _ 8 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( content (). contentType Compatible With ( MediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġresult . read ToMap () ĊĠĠĠĠĠĠĠ Ġval Ġref reshed Token Ġ= Ġmap [" access _ token "] ?. toString () ĊĠĠĠĠĠĠĠ ĠAssertions . assertFalse ( ref reshed Token . isNull Or Blank ()) ĊĊĠĠĠĠĠĠĠ Ġdo Check Token ( map [" access _ token "] !!. toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Check Token (){ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Result Ġ= Ġthis . perform Token Action (). read ToMap () ĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( token Result . containsKey (" access _ token ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken Value Ġ= Ġtoken Result [" access _ token "] ?. toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġdo Check Token ( token Value ) ĊĊĠĠĠĠĠĠĠ Ġlogger . debug ( Jack son Helper . default ObjectMapper . writer WithDefault PrettyPrinter (). writeValue AsString ( map )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Check Token ( token Value : ĠString ?): ĠMap < String , ĠAny > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmock Mvc . perform ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ("/ oauth / check _ token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. param (" token ", Ġtoken Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( content (). contentType Compatible With ( MediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġresult . read ToMap () ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( map [" active "] ?. toString (), Ġ" true ") ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Check Bad Token (){ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmock Mvc . perform ( post ("/ oauth / check _ token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. param (" token ", ĠShort Id . new Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). ` is `( 2 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( content (). contentType Compatible With ( MediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġresult . read ToMap () ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( map [" active "] ?. toString (), Ġ" false ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Int rospect Endpoint (){ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Result Ġ= Ġthis . perform Token Action (). read ToMap () ĊĠĠĠĠĠĠĠ ĠAssertions . assertTrue ( token Result . containsKey (" access _ token ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken Value Ġ= Ġtoken Result [" access _ token "] ?. toString () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmock Mvc . perform ( post ( DEFAULT _ J WS _ INT ROS PECT _ ENDPOINT _ PATH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. param (" token ", Ġtoken Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header ( HttpHeaders . AUTHORIZATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Basic Ġ" Ġ+ ĠBase 6 4 Utils . encode ToString ("${ OAuth 2 Testing Utils . Test ClientId }:${ OAuth 2 Testing Utils . Test Client Secret }". toByteArray ( Charsets . UTF _ 8 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( content (). contentType Compatible With ( MediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġresult . read ToMap () ĊĠĠĠĠĠĠĠ Ġ// Assertions . assertEquals ( map [" active "] ?. toString (), Ġ" true ") ĊĊĠĠĠĠĠĠĠ Ġlogger . debug ( Jack son Helper . default ObjectMapper . writer WithDefault PrettyPrinter (). writeValue AsString ( map )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest J wk Set Endpoint (){ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmock Mvc . perform ( get ( DEFAULT _ J WK _ SET _ ENDPOINT _ PATH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accept ( MediaType . APPLICATION _ JSON )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( content (). contentType Compatible With ( MediaType . APPLICATION _ JSON )) ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġresult . read ToMap () ĊĠĠĠĠĠĠĠ Ġ// Assertions . assertEquals ( map [" active "] ?. toString (), Ġ" true ") ĊĊĠĠĠĠĠĠĠ Ġlogger . debug ( Jack son Helper . default ObjectMapper . writer WithDefault PrettyPrinter (). writeValue AsString ( map )) ĊĠĠĠ Ġ} Ċ Ċ }