Skip to content

Commit 3531cc9

Browse files
author
Rob Winch
committed
JSON tests ObjectMapper Cleanup
* Move to @setup * Consistently extend from AbstractMixinTests and reuse ObjectMapper Issue gh-3736
1 parent bd92531 commit 3531cc9

14 files changed

+72
-117
lines changed

cas/src/test/java/org/springframework/security/cas/jackson2/CasAuthenticationTokenMixinTests.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.jasig.cas.client.validation.Assertion;
2828
import org.jasig.cas.client.validation.AssertionImpl;
2929
import org.json.JSONException;
30+
import org.junit.Before;
3031
import org.junit.Test;
3132
import org.skyscreamer.jsonassert.JSONAssert;
3233

@@ -96,30 +97,39 @@ public class CasAuthenticationTokenMixinTests {
9697

9798
private static final String CAS_TOKEN_CLEARED_JSON = CAS_TOKEN_JSON.replaceFirst(PASSWORD, "null");
9899

100+
protected ObjectMapper mapper;
101+
102+
@Before
103+
public void setup() {
104+
mapper = new ObjectMapper();
105+
ClassLoader loader = getClass().getClassLoader();
106+
mapper.registerModules(SecurityJacksonModules.getModules(loader));
107+
}
108+
99109
@Test
100110
public void serializeCasAuthenticationTest() throws JsonProcessingException, JSONException {
101111
CasAuthenticationToken token = createCasAuthenticationToken();
102-
String actualJson = buildObjectMapper().writeValueAsString(token);
112+
String actualJson = mapper.writeValueAsString(token);
103113
JSONAssert.assertEquals(CAS_TOKEN_JSON, actualJson, true);
104114
}
105115

106116
@Test
107117
public void serializeCasAuthenticationTestAfterEraseCredentialInvoked() throws JsonProcessingException, JSONException {
108118
CasAuthenticationToken token = createCasAuthenticationToken();
109119
token.eraseCredentials();
110-
String actualJson = buildObjectMapper().writeValueAsString(token);
120+
String actualJson = mapper.writeValueAsString(token);
111121
JSONAssert.assertEquals(CAS_TOKEN_CLEARED_JSON, actualJson, true);
112122
}
113123

114124
@Test
115125
public void deserializeCasAuthenticationTestAfterEraseCredentialInvoked() throws Exception {
116-
CasAuthenticationToken token = buildObjectMapper().readValue(CAS_TOKEN_CLEARED_JSON, CasAuthenticationToken.class);
126+
CasAuthenticationToken token = mapper.readValue(CAS_TOKEN_CLEARED_JSON, CasAuthenticationToken.class);
117127
assertThat(((UserDetails)token.getPrincipal()).getPassword()).isNull();
118128
}
119129

120130
@Test
121131
public void deserializeCasAuthenticationTest() throws IOException, JSONException {
122-
CasAuthenticationToken token = buildObjectMapper().readValue(CAS_TOKEN_JSON, CasAuthenticationToken.class);
132+
CasAuthenticationToken token = mapper.readValue(CAS_TOKEN_JSON, CasAuthenticationToken.class);
123133
assertThat(token).isNotNull();
124134
assertThat(token.getPrincipal()).isNotNull().isInstanceOf(User.class);
125135
assertThat(((User) token.getPrincipal()).getUsername()).isEqualTo("admin");
@@ -142,11 +152,4 @@ private CasAuthenticationToken createCasAuthenticationToken() {
142152
return new CasAuthenticationToken(KEY, principal, principal.getPassword(), authorities,
143153
new User("admin", "1234", authorities), assertion);
144154
}
145-
146-
ObjectMapper buildObjectMapper() {
147-
ClassLoader loader = getClass().getClassLoader();
148-
ObjectMapper mapper = new ObjectMapper();
149-
mapper.registerModules(SecurityJacksonModules.getModules(loader));
150-
return mapper;
151-
}
152155
}

core/src/test/java/org/springframework/security/jackson2/AbstractMixinTests.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,23 @@
1717
package org.springframework.security.jackson2;
1818

1919
import com.fasterxml.jackson.databind.ObjectMapper;
20+
import org.junit.Before;
2021

2122
import org.springframework.security.core.authority.AuthorityUtils;
2223
import org.springframework.security.core.userdetails.User;
23-
import org.springframework.util.ObjectUtils;
2424

2525
/**
2626
* @author Jitenra Singh
2727
* @since 4.2
2828
*/
2929
public abstract class AbstractMixinTests {
30+
protected ObjectMapper mapper;
3031

31-
ObjectMapper mapper;
32-
33-
protected ObjectMapper buildObjectMapper() {
34-
if (ObjectUtils.isEmpty(mapper)) {
35-
mapper = new ObjectMapper();
36-
ClassLoader loader = getClass().getClassLoader();
37-
mapper.registerModules(SecurityJacksonModules.getModules(loader));
38-
}
39-
return mapper;
32+
@Before
33+
public void setup() {
34+
mapper = new ObjectMapper();
35+
ClassLoader loader = getClass().getClassLoader();
36+
mapper.registerModules(SecurityJacksonModules.getModules(loader));
4037
}
4138

4239
User createDefaultUser() {

core/src/test/java/org/springframework/security/jackson2/AnonymousAuthenticationTokenMixinTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,13 +56,13 @@ public void serializeAnonymousAuthenticationTokenTest() throws JsonProcessingExc
5656
AnonymousAuthenticationToken token = new AnonymousAuthenticationToken(
5757
HASH_KEY, user, user.getAuthorities()
5858
);
59-
String actualJson = buildObjectMapper().writeValueAsString(token);
59+
String actualJson = mapper.writeValueAsString(token);
6060
JSONAssert.assertEquals(ANONYMOUS_JSON, actualJson, true);
6161
}
6262

6363
@Test
6464
public void deserializeAnonymousAuthenticationTokenTest() throws IOException {
65-
AnonymousAuthenticationToken token = buildObjectMapper()
65+
AnonymousAuthenticationToken token = mapper
6666
.readValue(ANONYMOUS_JSON, AnonymousAuthenticationToken.class);
6767
assertThat(token).isNotNull();
6868
assertThat(token.getKeyHash()).isEqualTo(HASH_KEY.hashCode());
@@ -74,7 +74,7 @@ public void deserializeAnonymousAuthenticationTokenWithoutAuthoritiesTest() thro
7474
String jsonString = "{\"@class\": \"org.springframework.security.authentication.AnonymousAuthenticationToken\", \"details\": null," +
7575
"\"principal\": \"user\", \"authenticated\": true, \"keyHash\": " + HASH_KEY.hashCode() + "," +
7676
"\"authorities\": [\"java.util.ArrayList\", []]}";
77-
buildObjectMapper().readValue(jsonString, AnonymousAuthenticationToken.class);
77+
mapper.readValue(jsonString, AnonymousAuthenticationToken.class);
7878
}
7979

8080
@Test
@@ -84,7 +84,7 @@ public void serializeAnonymousAuthenticationTokenMixinAfterEraseCredentialTest()
8484
HASH_KEY, user, user.getAuthorities()
8585
);
8686
token.eraseCredentials();
87-
String actualJson = buildObjectMapper().writeValueAsString(token);
87+
String actualJson = mapper.writeValueAsString(token);
8888
JSONAssert.assertEquals(ANONYMOUS_JSON.replace(UserDeserializerTests.USER_PASSWORD, "null"), actualJson, true);
8989
}
9090
}

core/src/test/java/org/springframework/security/jackson2/RememberMeAuthenticationTokenMixinTests.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,15 @@ public void testWithNullKey() throws JsonProcessingException, JSONException {
7272
@Test
7373
public void serializeRememberMeAuthenticationToken() throws JsonProcessingException, JSONException {
7474
RememberMeAuthenticationToken token = new RememberMeAuthenticationToken(REMEMBERME_KEY, "admin", Collections.singleton(new SimpleGrantedAuthority("ROLE_USER")));
75-
String actualJson = buildObjectMapper().writeValueAsString(token);
75+
String actualJson = mapper.writeValueAsString(token);
7676
JSONAssert.assertEquals(REMEMBERME_AUTH_STRINGPRINCIPAL_JSON, actualJson, true);
7777
}
7878

7979
@Test
8080
public void serializeRememberMeAuthenticationWithUserToken() throws JsonProcessingException, JSONException {
8181
User user = createDefaultUser();
8282
RememberMeAuthenticationToken token = new RememberMeAuthenticationToken(REMEMBERME_KEY, user, user.getAuthorities());
83-
String actualJson = buildObjectMapper().writeValueAsString(token);
83+
String actualJson = mapper.writeValueAsString(token);
8484
JSONAssert.assertEquals(String.format(REMEMBERME_AUTH_JSON, "\"password\""), actualJson, true);
8585
}
8686

@@ -89,21 +89,21 @@ public void serializeRememberMeAuthenticationWithUserTokenAfterEraseCredential()
8989
User user = createDefaultUser();
9090
RememberMeAuthenticationToken token = new RememberMeAuthenticationToken(REMEMBERME_KEY, user, user.getAuthorities());
9191
token.eraseCredentials();
92-
String actualJson = buildObjectMapper().writeValueAsString(token);
92+
String actualJson = mapper.writeValueAsString(token);
9393
JSONAssert.assertEquals(REMEMBERME_AUTH_JSON.replace(UserDeserializerTests.USER_PASSWORD, "null"), actualJson, true);
9494
}
9595

9696
@Test
9797
public void deserializeRememberMeAuthenticationToken() throws IOException {
98-
RememberMeAuthenticationToken token = buildObjectMapper().readValue(REMEMBERME_AUTH_STRINGPRINCIPAL_JSON, RememberMeAuthenticationToken.class);
98+
RememberMeAuthenticationToken token = mapper.readValue(REMEMBERME_AUTH_STRINGPRINCIPAL_JSON, RememberMeAuthenticationToken.class);
9999
assertThat(token).isNotNull();
100100
assertThat(token.getPrincipal()).isNotNull().isEqualTo("admin").isEqualTo(token.getName());
101101
assertThat(token.getAuthorities()).hasSize(1).contains(new SimpleGrantedAuthority("ROLE_USER"));
102102
}
103103

104104
@Test
105105
public void deserializeRememberMeAuthenticationTokenWithUserTest() throws IOException {
106-
RememberMeAuthenticationToken token = buildObjectMapper()
106+
RememberMeAuthenticationToken token = mapper
107107
.readValue(String.format(REMEMBERME_AUTH_JSON, "\"password\""), RememberMeAuthenticationToken.class);
108108
assertThat(token).isNotNull();
109109
assertThat(token.getPrincipal()).isNotNull().isInstanceOf(User.class);

core/src/test/java/org/springframework/security/jackson2/SecurityContextMixinTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ public class SecurityContextMixinTests extends AbstractMixinTests {
4747
public void securityContextSerializeTest() throws JsonProcessingException, JSONException {
4848
SecurityContext context = new SecurityContextImpl();
4949
context.setAuthentication(new UsernamePasswordAuthenticationToken("admin", "1234", Collections.singleton(new SimpleGrantedAuthority("ROLE_USER"))));
50-
String actualJson = buildObjectMapper().writeValueAsString(context);
50+
String actualJson = mapper.writeValueAsString(context);
5151
JSONAssert.assertEquals(SECURITY_CONTEXT_JSON, actualJson, true);
5252
}
5353

5454
@Test
5555
public void securityContextDeserializeTest() throws IOException {
56-
SecurityContext context = buildObjectMapper().readValue(SECURITY_CONTEXT_JSON, SecurityContextImpl.class);
56+
SecurityContext context = mapper.readValue(SECURITY_CONTEXT_JSON, SecurityContextImpl.class);
5757
assertThat(context).isNotNull();
5858
assertThat(context.getAuthentication()).isNotNull().isInstanceOf(UsernamePasswordAuthenticationToken.class);
5959
assertThat(context.getAuthentication().getPrincipal()).isEqualTo("admin");

core/src/test/java/org/springframework/security/jackson2/SimpleGrantedAuthorityMixinTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,20 @@ public class SimpleGrantedAuthorityMixinTests extends AbstractMixinTests {
4848
@Test
4949
public void serializeSimpleGrantedAuthorityTest() throws JsonProcessingException, JSONException {
5050
SimpleGrantedAuthority authority = new SimpleGrantedAuthority("ROLE_USER");
51-
String serializeJson = buildObjectMapper().writeValueAsString(authority);
51+
String serializeJson = mapper.writeValueAsString(authority);
5252
JSONAssert.assertEquals(AUTHORITY_JSON, serializeJson, true);
5353
}
5454

5555
@Test
5656
public void deserializeGrantedAuthorityTest() throws IOException {
57-
SimpleGrantedAuthority authority = buildObjectMapper().readValue(AUTHORITY_JSON, SimpleGrantedAuthority.class);
57+
SimpleGrantedAuthority authority = mapper.readValue(AUTHORITY_JSON, SimpleGrantedAuthority.class);
5858
assertThat(authority).isNotNull();
5959
assertThat(authority.getAuthority()).isNotNull().isEqualTo("ROLE_USER");
6060
}
6161

6262
@Test(expected = JsonMappingException.class)
6363
public void deserializeGrantedAuthorityWithoutRoleTest() throws IOException {
6464
String json = "{\"@class\": \"org.springframework.security.core.authority.SimpleGrantedAuthority\"}";
65-
buildObjectMapper().readValue(json, SimpleGrantedAuthority.class);
65+
mapper.readValue(json, SimpleGrantedAuthority.class);
6666
}
6767
}

core/src/test/java/org/springframework/security/jackson2/UserDeserializerTests.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,13 @@ public class UserDeserializerTests extends AbstractMixinTests {
5555

5656
@Test
5757
public void serializeUserTest() throws JsonProcessingException, JSONException {
58-
ObjectMapper mapper = buildObjectMapper();
5958
User user = createDefaultUser();
6059
String userJson = mapper.writeValueAsString(user);
6160
JSONAssert.assertEquals(userWithPasswordJson(user.getPassword()), userJson, true);
6261
}
6362

6463
@Test
6564
public void serializeUserWithoutAuthority() throws JsonProcessingException, JSONException {
66-
ObjectMapper mapper = buildObjectMapper();
6765
User user = new User("admin", "1234", Collections.<GrantedAuthority>emptyList());
6866
String userJson = mapper.writeValueAsString(user);
6967
JSONAssert.assertEquals(userWithNoAuthoritiesJson(), userJson, true);
@@ -73,14 +71,11 @@ public void serializeUserWithoutAuthority() throws JsonProcessingException, JSON
7371
public void deserializeUserWithNullPasswordEmptyAuthorityTest() throws IOException {
7472
String userJsonWithoutPasswordString = USER_JSON.replace(SimpleGrantedAuthorityMixinTests.AUTHORITIES_SET_JSON, "[]");
7573

76-
ObjectMapper mapper = buildObjectMapper();
7774
mapper.readValue(userJsonWithoutPasswordString, User.class);
7875
}
7976

8077
@Test
8178
public void deserializeUserWithNullPasswordNoAuthorityTest() throws Exception {
82-
ObjectMapper mapper = buildObjectMapper();
83-
8479
String userJsonWithoutPasswordString = removeNode(userWithNoAuthoritiesJson(), mapper, "password");
8580

8681
User user = mapper.readValue(userJsonWithoutPasswordString, User.class);
@@ -93,14 +88,13 @@ public void deserializeUserWithNullPasswordNoAuthorityTest() throws Exception {
9388

9489
@Test(expected = IllegalArgumentException.class)
9590
public void deserializeUserWithNoClassIdInAuthoritiesTest() throws Exception {
96-
ObjectMapper mapper = buildObjectMapper();
9791
String userJson = USER_JSON.replace(SimpleGrantedAuthorityMixinTests.AUTHORITIES_SET_JSON, "[{\"authority\": \"ROLE_USER\"}]");
9892
mapper.readValue(userJson, User.class);
9993
}
10094

10195
@Test
10296
public void deserializeUserWithClassIdInAuthoritiesTest() throws IOException {
103-
User user = buildObjectMapper().readValue(userJson(), User.class);
97+
User user = mapper.readValue(userJson(), User.class);
10498
assertThat(user).isNotNull();
10599
assertThat(user.getUsername()).isEqualTo("admin");
106100
assertThat(user.getPassword()).isEqualTo("1234");

core/src/test/java/org/springframework/security/jackson2/UsernamePasswordAuthenticationTokenMixinTests.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.io.IOException;
2020

2121
import com.fasterxml.jackson.core.JsonProcessingException;
22-
import com.fasterxml.jackson.databind.ObjectMapper;
2322
import org.json.JSONException;
2423
import org.junit.Test;
2524
import org.skyscreamer.jsonassert.JSONAssert;
@@ -59,21 +58,21 @@ public class UsernamePasswordAuthenticationTokenMixinTests extends AbstractMixin
5958
@Test
6059
public void serializeUnauthenticatedUsernamePasswordAuthenticationTokenMixinTest() throws JsonProcessingException, JSONException {
6160
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("admin", "1234");
62-
String serializedJson = buildObjectMapper().writeValueAsString(token);
61+
String serializedJson = mapper.writeValueAsString(token);
6362
JSONAssert.assertEquals(UNAUTHENTICATED_STRINGPRINCIPAL_JSON, serializedJson, true);
6463
}
6564

6665
@Test
6766
public void serializeAuthenticatedUsernamePasswordAuthenticationTokenMixinTest() throws JsonProcessingException, JSONException {
6867
User user = createDefaultUser();
6968
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword(), user.getAuthorities());
70-
String serializedJson = buildObjectMapper().writeValueAsString(token);
69+
String serializedJson = mapper.writeValueAsString(token);
7170
JSONAssert.assertEquals(AUTHENTICATED_STRINGPRINCIPAL_JSON, serializedJson, true);
7271
}
7372

7473
@Test
7574
public void deserializeUnauthenticatedUsernamePasswordAuthenticationTokenMixinTest() throws IOException, JSONException {
76-
UsernamePasswordAuthenticationToken token = buildObjectMapper()
75+
UsernamePasswordAuthenticationToken token = mapper
7776
.readValue(UNAUTHENTICATED_STRINGPRINCIPAL_JSON, UsernamePasswordAuthenticationToken.class);
7877
assertThat(token).isNotNull();
7978
assertThat(token.isAuthenticated()).isEqualTo(false);
@@ -83,7 +82,7 @@ public void deserializeUnauthenticatedUsernamePasswordAuthenticationTokenMixinTe
8382
@Test
8483
public void deserializeAuthenticatedUsernamePasswordAuthenticationTokenMixinTest() throws IOException {
8584
UsernamePasswordAuthenticationToken expectedToken = createToken();
86-
UsernamePasswordAuthenticationToken token = buildObjectMapper()
85+
UsernamePasswordAuthenticationToken token = mapper
8786
.readValue(AUTHENTICATED_STRINGPRINCIPAL_JSON, UsernamePasswordAuthenticationToken.class);
8887
assertThat(token).isNotNull();
8988
assertThat(token.isAuthenticated()).isTrue();
@@ -93,13 +92,12 @@ public void deserializeAuthenticatedUsernamePasswordAuthenticationTokenMixinTest
9392
@Test
9493
public void serializeAuthenticatedUsernamePasswordAuthenticationTokenMixinWithUserTest() throws JsonProcessingException, JSONException {
9594
UsernamePasswordAuthenticationToken token = createToken();
96-
String actualJson = buildObjectMapper().writeValueAsString(token);
95+
String actualJson = mapper.writeValueAsString(token);
9796
JSONAssert.assertEquals(AUTHENTICATED_JSON, actualJson, true);
9897
}
9998

10099
@Test
101100
public void deserializeAuthenticatedUsernamePasswordAuthenticationTokenWithUserTest() throws IOException {
102-
ObjectMapper mapper = buildObjectMapper();
103101
UsernamePasswordAuthenticationToken token = mapper
104102
.readValue(AUTHENTICATED_JSON, UsernamePasswordAuthenticationToken.class);
105103
assertThat(token).isNotNull();
@@ -113,7 +111,7 @@ public void deserializeAuthenticatedUsernamePasswordAuthenticationTokenWithUserT
113111
public void serializeAuthenticatedUsernamePasswordAuthenticationTokenMixinAfterEraseCredentialInvoked() throws JsonProcessingException, JSONException {
114112
UsernamePasswordAuthenticationToken token = createToken();
115113
token.eraseCredentials();
116-
String actualJson = buildObjectMapper().writeValueAsString(token);
114+
String actualJson = mapper.writeValueAsString(token);
117115
JSONAssert.assertEquals(AUTHENTICATED_JSON.replaceAll(UserDeserializerTests.USER_PASSWORD, "null"), actualJson, true);
118116
}
119117

web/src/test/java/org/springframework/security/web/jackson2/AbstractMixinTests.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,22 @@
1717
package org.springframework.security.web.jackson2;
1818

1919
import com.fasterxml.jackson.databind.ObjectMapper;
20+
import org.junit.Before;
2021

2122
import org.springframework.security.jackson2.SecurityJacksonModules;
22-
import org.springframework.util.ObjectUtils;
2323

2424
/**
2525
* @author Jitenra Singh
2626
* @since 4.2
2727
*/
2828
public abstract class AbstractMixinTests {
2929

30-
ObjectMapper mapper;
30+
protected ObjectMapper mapper;
3131

32-
protected ObjectMapper buildObjectMapper() {
33-
if (ObjectUtils.isEmpty(mapper)) {
34-
mapper = new ObjectMapper();
35-
ClassLoader loader = getClass().getClassLoader();
36-
mapper.registerModules(SecurityJacksonModules.getModules(loader));
37-
}
38-
return mapper;
32+
@Before
33+
public void setup() {
34+
mapper = new ObjectMapper();
35+
ClassLoader loader = getClass().getClassLoader();
36+
mapper.registerModules(SecurityJacksonModules.getModules(loader));
3937
}
4038
}

0 commit comments

Comments
 (0)