package Ġeu . t ib . ork g . prototype Ċ Ċ import Ġjava . util . stream . Stream Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . extension . Extension Context Ċ import Ġorg . junit . jupiter . params . Parameterized Test Ċ import Ġorg . junit . jupiter . params . provider . Arguments Ċ import Ġorg . junit . jupiter . params . provider . Arguments Provider Ċ import Ġorg . junit . jupiter . params . provider . Arguments Source Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġorg . springframework . security . test . web . servlet . setup . Security MockMvc Configur ers . spring Security Ċ import Ġorg . springframework . test . web . servlet . MockMvc Ċ import Ġorg . springframework . test . web . servlet . Result Matcher Ċ import Ġorg . springframework . test . web . servlet . request . MockMvc Request Builders . options Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . header Ċ import Ġorg . springframework . test . web . servlet . result . MockMvc Result Matchers . status Ċ import Ġorg . springframework . test . web . servlet . setup . Default MockMvc Builder Ċ import Ġorg . springframework . test . web . servlet . setup . MockMvc Builders Ċ import Ġorg . springframework . web . context . Web ApplicationContext Ċ Ċ @ SpringBootTest Ċ class ĠC ors Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Mvc : ĠMock Mvc ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠWeb ApplicationContext ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Mvc Ġ= ĠMock Mvc Builders . web AppContext Setup ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply < Default MockMvc Builder >( spring Security ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. dispatch Options < Default MockMvc Builder >( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ DisplayName (" C ORS ĠPre - flight Ġrequests Ġshould Ġpass Ġwith Ġ` 2 0 0 ĠOK ` ") ĊĠĠĠ Ġ@ Parameterized Test ( name Ġ= Ġ" to Ġendpoint Ġ{ 0 } Ġrequesting Ġmethod Ġ{ 1 }") ĊĠĠĠ Ġ@ Arguments Source ( Request Arguments Provider :: class ) ĊĠĠĠ Ġfun Ġpref light Request To Oauth Endpoint Works From Any Origin ( endpoint : ĠString , Ġmethod : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Mvc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions ( endpoint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Origin ", Ġ" http :// example . com ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Access - Control - Request - Method ", Ġmethod ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( status (). is Ok ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( all Orig ins Allowed ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. andExpect ( all Allowed Methods Present ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠRequest Arguments Provider Ġ: ĠArguments Provider Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprovide Arguments ( context : ĠExtension Context ?): ĠStream < out ĠArguments > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStream . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAPI Ġendpoints ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("/ api / resources /", Ġ" POST "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAuthorization Server Ġendpoints ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("/ oauth / token ", Ġ" POST "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("/ oauth / token _ key ", Ġ" POST "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArguments . of ("/ oauth / check _ token ", Ġ" POST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġall Orig ins Allowed (): ĠResult Matcher Ġ= ĊĠĠĠĠĠĠĠ Ġheader (). string (" Access - Control - Allow - Origin ", Ġ"* ") ĊĊĠĠĠ Ġprivate Ġfun Ġall Allowed Methods Present (): ĠResult Matcher Ġ= ĊĠĠĠĠĠĠĠ Ġheader (). string (" Access - Control - Allow - Methods ", Ġ" OPTIONS , GET , HEAD , POST , PUT , DELETE ") Ċ } Ċ