|
15 | 15 | */
|
16 | 16 | package org.springframework.security.test.web.reactive.server;
|
17 | 17 |
|
| 18 | +import java.time.Instant; |
18 | 19 | import java.util.Arrays;
|
19 | 20 | import java.util.List;
|
| 21 | +import java.util.Map; |
| 22 | +import java.util.HashMap; |
| 23 | +import java.util.Collections; |
20 | 24 |
|
21 | 25 | import org.junit.Test;
|
22 | 26 | import org.junit.runner.RunWith;
|
|
29 | 33 | import org.springframework.security.core.GrantedAuthority;
|
30 | 34 | import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
31 | 35 | import org.springframework.security.core.context.SecurityContext;
|
| 36 | +import org.springframework.security.oauth2.core.oidc.IdTokenClaimNames; |
| 37 | +import org.springframework.security.oauth2.jwt.Jwt; |
32 | 38 | import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
|
33 | 39 | import org.springframework.security.web.reactive.result.method.annotation.CurrentSecurityContextArgumentResolver;
|
34 | 40 | import org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter;
|
@@ -136,4 +142,25 @@ public void mockJwtWhenProvidingGrantedAuthoritiesThenProducesJwtAuthentication(
|
136 | 142 | assertThat((List<GrantedAuthority>) context.getAuthentication().getAuthorities())
|
137 | 143 | .containsOnly(this.authority1);
|
138 | 144 | }
|
| 145 | + |
| 146 | + @Test |
| 147 | + public void mockJwtWhenProvidingPreparedJwtThenProducesJwtAuthentication() { |
| 148 | + Map<String, Object> claims = new HashMap<>(); |
| 149 | + claims.put(IdTokenClaimNames.SUB, "some_user"); |
| 150 | + Jwt originalToken = new Jwt("token123", Instant.now(), Instant.now().plusSeconds(3600), |
| 151 | + Collections.singletonMap("header1", "value1"), claims); |
| 152 | + client |
| 153 | + .mutateWith(mockJwt(originalToken)) |
| 154 | + .get() |
| 155 | + .exchange() |
| 156 | + .expectStatus().isOk(); |
| 157 | + |
| 158 | + SecurityContext context = securityContextController.removeSecurityContext(); |
| 159 | + assertThat(context.getAuthentication()).isInstanceOf( |
| 160 | + JwtAuthenticationToken.class); |
| 161 | + JwtAuthenticationToken retrievedToken = (JwtAuthenticationToken) context.getAuthentication(); |
| 162 | + assertThat(retrievedToken.getToken().getSubject()).isEqualTo("some_user"); |
| 163 | + assertThat(retrievedToken.getToken().getTokenValue()).isEqualTo("token123"); |
| 164 | + assertThat(retrievedToken.getToken().getHeaders().get("header1")).isEqualTo("value1"); |
| 165 | + } |
139 | 166 | }
|
0 commit comments