Skip to content

Commit 25d029b

Browse files
committed
Fix test gh-7873
1 parent 04f3fe8 commit 25d029b

File tree

5 files changed

+31
-29
lines changed

5 files changed

+31
-29
lines changed

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/jackson2/OAuth2AccessTokenMixin.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,10 @@
1717

1818
import com.fasterxml.jackson.annotation.JsonAutoDetect;
1919
import com.fasterxml.jackson.annotation.JsonCreator;
20-
import com.fasterxml.jackson.annotation.JsonFormat;
2120
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2221
import com.fasterxml.jackson.annotation.JsonProperty;
2322
import com.fasterxml.jackson.annotation.JsonTypeInfo;
2423
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
25-
import com.fasterxml.jackson.databind.util.StdDateFormat;
2624
import org.springframework.security.oauth2.core.OAuth2AccessToken;
2725

2826
import java.time.Instant;
@@ -46,8 +44,8 @@ abstract class OAuth2AccessTokenMixin {
4644
OAuth2AccessTokenMixin(
4745
@JsonProperty("tokenType") @JsonDeserialize(converter = StdConverters.AccessTokenTypeConverter.class) OAuth2AccessToken.TokenType tokenType,
4846
@JsonProperty("tokenValue") String tokenValue,
49-
@JsonProperty("issuedAt") @JsonFormat(pattern = StdDateFormat.DATE_FORMAT_STR_ISO8601, timezone = "UTC") Instant issuedAt,
50-
@JsonProperty("expiresAt") @JsonFormat(pattern = StdDateFormat.DATE_FORMAT_STR_ISO8601, timezone = "UTC") Instant expiresAt,
47+
@JsonProperty("issuedAt") Instant issuedAt,
48+
@JsonProperty("expiresAt") Instant expiresAt,
5149
@JsonProperty("scopes") Set<String> scopes) {
5250
}
5351
}

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/jackson2/OAuth2RefreshTokenMixin.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@
1717

1818
import com.fasterxml.jackson.annotation.JsonAutoDetect;
1919
import com.fasterxml.jackson.annotation.JsonCreator;
20-
import com.fasterxml.jackson.annotation.JsonFormat;
2120
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2221
import com.fasterxml.jackson.annotation.JsonProperty;
2322
import com.fasterxml.jackson.annotation.JsonTypeInfo;
24-
import com.fasterxml.jackson.databind.util.StdDateFormat;
2523
import org.springframework.security.oauth2.core.OAuth2RefreshToken;
2624

2725
import java.time.Instant;
@@ -43,6 +41,6 @@ abstract class OAuth2RefreshTokenMixin {
4341
@JsonCreator
4442
OAuth2RefreshTokenMixin(
4543
@JsonProperty("tokenValue") String tokenValue,
46-
@JsonProperty("issuedAt") @JsonFormat(pattern = StdDateFormat.DATE_FORMAT_STR_ISO8601, timezone = "UTC") Instant issuedAt) {
44+
@JsonProperty("issuedAt") Instant issuedAt) {
4745
}
4846
}

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/jackson2/OidcIdTokenMixin.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@
1717

1818
import com.fasterxml.jackson.annotation.JsonAutoDetect;
1919
import com.fasterxml.jackson.annotation.JsonCreator;
20-
import com.fasterxml.jackson.annotation.JsonFormat;
2120
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
2221
import com.fasterxml.jackson.annotation.JsonProperty;
2322
import com.fasterxml.jackson.annotation.JsonTypeInfo;
24-
import com.fasterxml.jackson.databind.util.StdDateFormat;
2523
import org.springframework.security.oauth2.core.oidc.OidcIdToken;
2624

2725
import java.time.Instant;
@@ -44,8 +42,8 @@ abstract class OidcIdTokenMixin {
4442
@JsonCreator
4543
OidcIdTokenMixin(
4644
@JsonProperty("tokenValue") String tokenValue,
47-
@JsonProperty("issuedAt") @JsonFormat(pattern = StdDateFormat.DATE_FORMAT_STR_ISO8601, timezone = "UTC") Instant issuedAt,
48-
@JsonProperty("expiresAt") @JsonFormat(pattern = StdDateFormat.DATE_FORMAT_STR_ISO8601, timezone = "UTC") Instant expiresAt,
45+
@JsonProperty("issuedAt") Instant issuedAt,
46+
@JsonProperty("expiresAt") Instant expiresAt,
4947
@JsonProperty("claims") Map<String, Object> claims) {
5048
}
5149
}

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/jackson2/OAuth2AuthenticationTokenMixinTests.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import com.fasterxml.jackson.core.JsonProcessingException;
1919
import com.fasterxml.jackson.databind.ObjectMapper;
20-
import com.fasterxml.jackson.databind.SerializationFeature;
20+
import com.fasterxml.jackson.datatype.jsr310.DecimalUtils;
2121
import org.junit.Before;
2222
import org.junit.Test;
2323
import org.skyscreamer.jsonassert.JSONAssert;
@@ -37,11 +37,10 @@
3737
import org.springframework.util.CollectionUtils;
3838
import org.springframework.util.StringUtils;
3939

40-
import java.text.DateFormat;
40+
import java.time.Instant;
4141
import java.util.ArrayList;
4242
import java.util.Collection;
4343
import java.util.Collections;
44-
import java.util.Date;
4544
import java.util.List;
4645
import java.util.stream.Collectors;
4746

@@ -55,16 +54,13 @@
5554
* @author Joe Grandja
5655
*/
5756
public class OAuth2AuthenticationTokenMixinTests {
58-
private static DateFormat dateFormatter;
5957
private ObjectMapper mapper;
6058

6159
@Before
6260
public void setup() {
6361
ClassLoader loader = getClass().getClassLoader();
6462
this.mapper = new ObjectMapper();
6563
this.mapper.registerModules(SecurityJackson2Modules.getModules(loader));
66-
this.mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
67-
dateFormatter = this.mapper.getDateFormat();
6864
}
6965

7066
@Test
@@ -309,17 +305,17 @@ private static String asJson(OidcIdToken idToken) {
309305
return "{\n" +
310306
" \"@class\": \"org.springframework.security.oauth2.core.oidc.OidcIdToken\",\n" +
311307
" \"tokenValue\": \"" + idToken.getTokenValue() + "\",\n" +
312-
" \"issuedAt\": \"" + dateFormatter.format(Date.from(idToken.getIssuedAt())) + "\",\n" +
313-
" \"expiresAt\": \"" + dateFormatter.format(Date.from(idToken.getExpiresAt())) + "\",\n" +
308+
" \"issuedAt\": " + toString(idToken.getIssuedAt()) + ",\n" +
309+
" \"expiresAt\": " + toString(idToken.getExpiresAt()) + ",\n" +
314310
" \"claims\": {\n" +
315311
" \"@class\": \"java.util.Collections$UnmodifiableMap\",\n" +
316312
" \"iat\": [\n" +
317313
" \"java.time.Instant\",\n" +
318-
" \"" + idToken.getIssuedAt().toString() + "\"\n" +
314+
" " + toString(idToken.getIssuedAt()) + "\n" +
319315
" ],\n" +
320316
" \"exp\": [\n" +
321317
" \"java.time.Instant\",\n" +
322-
" \"" + idToken.getExpiresAt().toString() + "\"\n" +
318+
" " + toString(idToken.getExpiresAt()) + "\n" +
323319
" ],\n" +
324320
" \"sub\": \"" + idToken.getSubject() + "\",\n" +
325321
" \"iss\": \"" + idToken.getIssuer() + "\",\n" +
@@ -348,4 +344,11 @@ private static String asJson(OidcUserInfo userInfo) {
348344
" }";
349345
// @formatter:on
350346
}
347+
348+
private static String toString(Instant instant) {
349+
if (instant == null) {
350+
return null;
351+
}
352+
return DecimalUtils.toBigDecimal(instant.getEpochSecond(), instant.getNano()).toString();
353+
}
351354
}

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/jackson2/OAuth2AuthorizedClientMixinTests.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import com.fasterxml.jackson.core.JsonProcessingException;
1919
import com.fasterxml.jackson.databind.ObjectMapper;
20+
import com.fasterxml.jackson.datatype.jsr310.DecimalUtils;
2021
import org.junit.Before;
2122
import org.junit.Test;
2223
import org.skyscreamer.jsonassert.JSONAssert;
@@ -31,8 +32,7 @@
3132
import org.springframework.util.CollectionUtils;
3233
import org.springframework.util.StringUtils;
3334

34-
import java.text.DateFormat;
35-
import java.util.Date;
35+
import java.time.Instant;
3636
import java.util.LinkedHashMap;
3737
import java.util.Map;
3838
import java.util.stream.Collectors;
@@ -46,7 +46,6 @@
4646
* @author Joe Grandja
4747
*/
4848
public class OAuth2AuthorizedClientMixinTests {
49-
private static DateFormat dateFormatter;
5049
private ObjectMapper mapper;
5150
private ClientRegistration.Builder clientRegistrationBuilder;
5251
private OAuth2AccessToken accessToken;
@@ -58,7 +57,6 @@ public void setup() {
5857
ClassLoader loader = getClass().getClassLoader();
5958
this.mapper = new ObjectMapper();
6059
this.mapper.registerModules(SecurityJackson2Modules.getModules(loader));
61-
dateFormatter = this.mapper.getDateFormat();
6260
Map<String, Object> providerConfigurationMetadata = new LinkedHashMap<>();
6361
providerConfigurationMetadata.put("config1", "value1");
6462
providerConfigurationMetadata.put("config2", "value2");
@@ -299,8 +297,8 @@ private static String asJson(OAuth2AccessToken accessToken) {
299297
" \"value\": \"" + accessToken.getTokenType().getValue() + "\"\n" +
300298
" },\n" +
301299
" \"tokenValue\": \"" + accessToken.getTokenValue() + "\",\n" +
302-
" \"issuedAt\": \"" + dateFormatter.format(Date.from(accessToken.getIssuedAt())) + "\",\n" +
303-
" \"expiresAt\": \"" + dateFormatter.format(Date.from(accessToken.getExpiresAt())) + "\",\n" +
300+
" \"issuedAt\": " + toString(accessToken.getIssuedAt()) + ",\n" +
301+
" \"expiresAt\": " + toString(accessToken.getExpiresAt()) + ",\n" +
304302
" \"scopes\": [\n" +
305303
" \"java.util.Collections$UnmodifiableSet\",\n" +
306304
" [" + scopes + "]\n" +
@@ -317,9 +315,16 @@ private static String asJson(OAuth2RefreshToken refreshToken) {
317315
return "{\n" +
318316
" \"@class\": \"org.springframework.security.oauth2.core.OAuth2RefreshToken\",\n" +
319317
" \"tokenValue\": \"" + refreshToken.getTokenValue() + "\",\n" +
320-
" \"issuedAt\": \"" + dateFormatter.format(Date.from(refreshToken.getIssuedAt())) + "\",\n" +
321-
" \"expiresAt\": " + (refreshToken.getExpiresAt() != null ? "\"" + dateFormatter.format(Date.from(refreshToken.getExpiresAt())) + "\"" : null) + "\n" +
318+
" \"issuedAt\": " + toString(refreshToken.getIssuedAt()) + ",\n" +
319+
" \"expiresAt\": " + toString(refreshToken.getExpiresAt()) + "\n" +
322320
"}";
323321
// @formatter:on
324322
}
323+
324+
private static String toString(Instant instant) {
325+
if (instant == null) {
326+
return null;
327+
}
328+
return DecimalUtils.toBigDecimal(instant.getEpochSecond(), instant.getNano()).toString();
329+
}
325330
}

0 commit comments

Comments
 (0)