diff --git a/acl/src/test/java/org/springframework/security/acls/AclFormattingUtilsTests.java b/acl/src/test/java/org/springframework/security/acls/AclFormattingUtilsTests.java
index 268beeef5a..6f09d71890 100644
--- a/acl/src/test/java/org/springframework/security/acls/AclFormattingUtilsTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/AclFormattingUtilsTests.java
@@ -39,21 +39,18 @@ public class AclFormattingUtilsTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
AclFormattingUtils.demergePatterns("SOME STRING", null);
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
AclFormattingUtils.demergePatterns("SOME STRING", "LONGER SOME STRING");
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
AclFormattingUtils.demergePatterns("SOME STRING", "SAME LENGTH");
}
@@ -68,7 +65,6 @@ public class AclFormattingUtilsTests {
String removeBits = "...............................R";
assertThat(AclFormattingUtils.demergePatterns(original, removeBits))
.isEqualTo("...........................A....");
-
assertThat(AclFormattingUtils.demergePatterns("ABCDEF", "......")).isEqualTo("ABCDEF");
assertThat(AclFormattingUtils.demergePatterns("ABCDEF", "GHIJKL")).isEqualTo("......");
}
@@ -81,21 +77,18 @@ public class AclFormattingUtilsTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
AclFormattingUtils.mergePatterns("SOME STRING", null);
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
AclFormattingUtils.mergePatterns("SOME STRING", "LONGER SOME STRING");
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
AclFormattingUtils.mergePatterns("SOME STRING", "SAME LENGTH");
}
@@ -108,7 +101,6 @@ public class AclFormattingUtilsTests {
String original = "...............................R";
String extraBits = "...........................A....";
assertThat(AclFormattingUtils.mergePatterns(original, extraBits)).isEqualTo("...........................A...R");
-
assertThat(AclFormattingUtils.mergePatterns("ABCDEF", "......")).isEqualTo("ABCDEF");
assertThat(AclFormattingUtils.mergePatterns("ABCDEF", "GHIJKL")).isEqualTo("GHIJKL");
}
@@ -116,21 +108,18 @@ public class AclFormattingUtilsTests {
@Test
public final void testBinaryPrints() {
assertThat(AclFormattingUtils.printBinary(15)).isEqualTo("............................****");
-
try {
AclFormattingUtils.printBinary(15, Permission.RESERVED_ON);
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException notExpected) {
}
-
try {
AclFormattingUtils.printBinary(15, Permission.RESERVED_OFF);
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException notExpected) {
}
-
assertThat(AclFormattingUtils.printBinary(15, 'x')).isEqualTo("............................xxxx");
}
diff --git a/acl/src/test/java/org/springframework/security/acls/AclPermissionCacheOptimizerTests.java b/acl/src/test/java/org/springframework/security/acls/AclPermissionCacheOptimizerTests.java
index 968cf92093..844a2d4d86 100644
--- a/acl/src/test/java/org/springframework/security/acls/AclPermissionCacheOptimizerTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/AclPermissionCacheOptimizerTests.java
@@ -54,9 +54,7 @@ public class AclPermissionCacheOptimizerTests {
ObjectIdentity[] oids = { new ObjectIdentityImpl("A", "1"), new ObjectIdentityImpl("A", "2") };
given(oidStrat.getObjectIdentity(dos[0])).willReturn(oids[0]);
given(oidStrat.getObjectIdentity(dos[2])).willReturn(oids[1]);
-
pco.cachePermissionsFor(mock(Authentication.class), Arrays.asList(dos));
-
// AclService should be invoked with the list of required Oids
verify(service).readAclsById(eq(Arrays.asList(oids)), any(List.class));
}
@@ -69,9 +67,7 @@ public class AclPermissionCacheOptimizerTests {
SidRetrievalStrategy sids = mock(SidRetrievalStrategy.class);
pco.setObjectIdentityRetrievalStrategy(oids);
pco.setSidRetrievalStrategy(sids);
-
pco.cachePermissionsFor(mock(Authentication.class), Collections.emptyList());
-
verifyZeroInteractions(service, sids, oids);
}
diff --git a/acl/src/test/java/org/springframework/security/acls/AclPermissionEvaluatorTests.java b/acl/src/test/java/org/springframework/security/acls/AclPermissionEvaluatorTests.java
index 5bdc6a5446..a29c3ab3be 100644
--- a/acl/src/test/java/org/springframework/security/acls/AclPermissionEvaluatorTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/AclPermissionEvaluatorTests.java
@@ -50,10 +50,8 @@ public class AclPermissionEvaluatorTests {
pe.setObjectIdentityRetrievalStrategy(oidStrategy);
pe.setSidRetrievalStrategy(mock(SidRetrievalStrategy.class));
Acl acl = mock(Acl.class);
-
given(service.readAclById(any(ObjectIdentity.class), anyList())).willReturn(acl);
given(acl.isGranted(anyList(), anyList(), eq(false))).willReturn(true);
-
assertThat(pe.hasPermission(mock(Authentication.class), new Object(), "READ")).isTrue();
}
@@ -61,7 +59,6 @@ public class AclPermissionEvaluatorTests {
public void resolvePermissionNonEnglishLocale() {
Locale systemLocale = Locale.getDefault();
Locale.setDefault(new Locale("tr"));
-
AclService service = mock(AclService.class);
AclPermissionEvaluator pe = new AclPermissionEvaluator(service);
ObjectIdentity oid = mock(ObjectIdentity.class);
@@ -70,12 +67,9 @@ public class AclPermissionEvaluatorTests {
pe.setObjectIdentityRetrievalStrategy(oidStrategy);
pe.setSidRetrievalStrategy(mock(SidRetrievalStrategy.class));
Acl acl = mock(Acl.class);
-
given(service.readAclById(any(ObjectIdentity.class), anyList())).willReturn(acl);
given(acl.isGranted(anyList(), anyList(), eq(false))).willReturn(true);
-
assertThat(pe.hasPermission(mock(Authentication.class), new Object(), "write")).isTrue();
-
Locale.setDefault(systemLocale);
}
diff --git a/acl/src/test/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationCollectionFilteringProviderTests.java b/acl/src/test/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationCollectionFilteringProviderTests.java
index 55800137e0..296e306d5f 100644
--- a/acl/src/test/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationCollectionFilteringProviderTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationCollectionFilteringProviderTests.java
@@ -58,7 +58,6 @@ public class AclEntryAfterInvocationCollectionFilteringProviderTests {
provider.setObjectIdentityRetrievalStrategy(mock(ObjectIdentityRetrievalStrategy.class));
provider.setProcessDomainObjectClass(Object.class);
provider.setSidRetrievalStrategy(mock(SidRetrievalStrategy.class));
-
Object returned = provider.decide(mock(Authentication.class), new Object(),
SecurityConfig.createList("AFTER_ACL_COLLECTION_READ"),
new ArrayList(Arrays.asList(new Object(), new Object())));
@@ -76,7 +75,6 @@ public class AclEntryAfterInvocationCollectionFilteringProviderTests {
AclEntryAfterInvocationCollectionFilteringProvider provider = new AclEntryAfterInvocationCollectionFilteringProvider(
mock(AclService.class), Arrays.asList(mock(Permission.class)));
Object returned = new Object();
-
assertThat(returned).isSameAs(provider.decide(mock(Authentication.class), new Object(),
Collections.emptyList(), returned));
}
@@ -86,7 +84,6 @@ public class AclEntryAfterInvocationCollectionFilteringProviderTests {
AclService service = mock(AclService.class);
AclEntryAfterInvocationCollectionFilteringProvider provider = new AclEntryAfterInvocationCollectionFilteringProvider(
service, Arrays.asList(mock(Permission.class)));
-
assertThat(provider.decide(mock(Authentication.class), new Object(),
SecurityConfig.createList("AFTER_ACL_COLLECTION_READ"), null)).isNull();
verify(service, never()).readAclById(any(ObjectIdentity.class), any(List.class));
diff --git a/acl/src/test/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationProviderTests.java b/acl/src/test/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationProviderTests.java
index 5e8bb47953..b044f89c3a 100644
--- a/acl/src/test/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationProviderTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationProviderTests.java
@@ -74,7 +74,6 @@ public class AclEntryAfterInvocationProviderTests {
provider.setProcessDomainObjectClass(Object.class);
provider.setSidRetrievalStrategy(mock(SidRetrievalStrategy.class));
Object returned = new Object();
-
assertThat(returned).isSameAs(provider.decide(mock(Authentication.class), new Object(),
SecurityConfig.createList("AFTER_ACL_READ"), returned));
}
@@ -84,7 +83,6 @@ public class AclEntryAfterInvocationProviderTests {
AclEntryAfterInvocationProvider provider = new AclEntryAfterInvocationProvider(mock(AclService.class),
Arrays.asList(mock(Permission.class)));
Object returned = new Object();
-
assertThat(returned).isSameAs(provider.decide(mock(Authentication.class), new Object(),
Collections.emptyList(), returned));
}
@@ -96,7 +94,6 @@ public class AclEntryAfterInvocationProviderTests {
provider.setProcessDomainObjectClass(String.class);
// Not a String
Object returned = new Object();
-
assertThat(returned).isSameAs(provider.decide(mock(Authentication.class), new Object(),
SecurityConfig.createList("AFTER_ACL_READ"), returned));
}
@@ -133,7 +130,6 @@ public class AclEntryAfterInvocationProviderTests {
AclService service = mock(AclService.class);
AclEntryAfterInvocationProvider provider = new AclEntryAfterInvocationProvider(service,
Arrays.asList(mock(Permission.class)));
-
assertThat(provider.decide(mock(Authentication.class), new Object(),
SecurityConfig.createList("AFTER_ACL_COLLECTION_READ"), null)).isNull();
verify(service, never()).readAclById(any(ObjectIdentity.class), any(List.class));
diff --git a/acl/src/test/java/org/springframework/security/acls/domain/AccessControlImplEntryTests.java b/acl/src/test/java/org/springframework/security/acls/domain/AccessControlImplEntryTests.java
index c51bc86701..743f8ee3b8 100644
--- a/acl/src/test/java/org/springframework/security/acls/domain/AccessControlImplEntryTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/domain/AccessControlImplEntryTests.java
@@ -46,7 +46,6 @@ public class AccessControlImplEntryTests {
}
catch (IllegalArgumentException expected) {
}
-
// Check Sid field is present
try {
new AccessControlEntryImpl(null, mock(Acl.class), null, BasePermission.ADMINISTRATION, true, true, true);
@@ -54,7 +53,6 @@ public class AccessControlImplEntryTests {
}
catch (IllegalArgumentException expected) {
}
-
// Check Permission field is present
try {
new AccessControlEntryImpl(null, mock(Acl.class), new PrincipalSid("johndoe"), null, true, true, true);
@@ -68,11 +66,9 @@ public class AccessControlImplEntryTests {
public void testAccessControlEntryImplGetters() {
Acl mockAcl = mock(Acl.class);
Sid sid = new PrincipalSid("johndoe");
-
// Create a sample entry
AccessControlEntry ace = new AccessControlEntryImpl(1L, mockAcl, sid, BasePermission.ADMINISTRATION, true, true,
true);
-
// and check every get() method
assertThat(ace.getId()).isEqualTo(1L);
assertThat(ace.getAcl()).isEqualTo(mockAcl);
@@ -87,13 +83,10 @@ public class AccessControlImplEntryTests {
public void testEquals() {
final Acl mockAcl = mock(Acl.class);
final ObjectIdentity oid = mock(ObjectIdentity.class);
-
given(mockAcl.getObjectIdentity()).willReturn(oid);
Sid sid = new PrincipalSid("johndoe");
-
AccessControlEntry ace = new AccessControlEntryImpl(1L, mockAcl, sid, BasePermission.ADMINISTRATION, true, true,
true);
-
assertThat(ace).isNotNull();
assertThat(ace).isNotEqualTo(100L);
assertThat(ace).isEqualTo(ace);
diff --git a/acl/src/test/java/org/springframework/security/acls/domain/AclImplTests.java b/acl/src/test/java/org/springframework/security/acls/domain/AclImplTests.java
index 7427916de8..c86776a9c7 100644
--- a/acl/src/test/java/org/springframework/security/acls/domain/AclImplTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/domain/AclImplTests.java
@@ -156,7 +156,6 @@ public class AclImplTests {
MutableAcl acl = new AclImpl(this.objectIdentity, 1, this.authzStrategy, this.pgs, null, null, true,
new PrincipalSid("joe"));
MockAclService service = new MockAclService();
-
// Insert one permission
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST1"), true);
service.updateAcl(acl);
@@ -165,7 +164,6 @@ public class AclImplTests {
assertThat(acl).isEqualTo(acl.getEntries().get(0).getAcl());
assertThat(BasePermission.READ).isEqualTo(acl.getEntries().get(0).getPermission());
assertThat(acl.getEntries().get(0).getSid()).isEqualTo(new GrantedAuthoritySid("ROLE_TEST1"));
-
// Add a second permission
acl.insertAce(1, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST2"), true);
service.updateAcl(acl);
@@ -174,7 +172,6 @@ public class AclImplTests {
assertThat(acl).isEqualTo(acl.getEntries().get(1).getAcl());
assertThat(BasePermission.READ).isEqualTo(acl.getEntries().get(1).getPermission());
assertThat(acl.getEntries().get(1).getSid()).isEqualTo(new GrantedAuthoritySid("ROLE_TEST2"));
-
// Add a third permission, after the first one
acl.insertAce(1, BasePermission.WRITE, new GrantedAuthoritySid("ROLE_TEST3"), false);
service.updateAcl(acl);
@@ -193,11 +190,9 @@ public class AclImplTests {
MutableAcl acl = new AclImpl(this.objectIdentity, 1, this.authzStrategy, this.pgs, null, null, true,
new PrincipalSid("joe"));
MockAclService service = new MockAclService();
-
// Insert one permission
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST1"), true);
service.updateAcl(acl);
-
acl.insertAce(55, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST2"), true);
}
@@ -206,20 +201,17 @@ public class AclImplTests {
MutableAcl acl = new AclImpl(this.objectIdentity, 1, this.authzStrategy, this.pgs, null, null, true,
new PrincipalSid("joe"));
MockAclService service = new MockAclService();
-
// Add several permissions
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST1"), true);
acl.insertAce(1, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST2"), true);
acl.insertAce(2, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST3"), true);
service.updateAcl(acl);
-
// Delete first permission and check the order of the remaining permissions is
// kept
acl.deleteAce(0);
assertThat(acl.getEntries()).hasSize(2);
assertThat(acl.getEntries().get(0).getSid()).isEqualTo(new GrantedAuthoritySid("ROLE_TEST2"));
assertThat(acl.getEntries().get(1).getSid()).isEqualTo(new GrantedAuthoritySid("ROLE_TEST3"));
-
// Add one more permission and remove the permission in the middle
acl.insertAce(2, BasePermission.READ, new GrantedAuthoritySid("ROLE_TEST4"), true);
service.updateAcl(acl);
@@ -227,7 +219,6 @@ public class AclImplTests {
assertThat(acl.getEntries()).hasSize(2);
assertThat(acl.getEntries().get(0).getSid()).isEqualTo(new GrantedAuthoritySid("ROLE_TEST2"));
assertThat(acl.getEntries().get(1).getSid()).isEqualTo(new GrantedAuthoritySid("ROLE_TEST4"));
-
// Remove remaining permissions
acl.deleteAce(1);
acl.deleteAce(0);
@@ -274,17 +265,14 @@ public class AclImplTests {
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);
ObjectIdentity rootOid = new ObjectIdentityImpl(TARGET_CLASS, 100);
-
// Create an ACL which owner is not the authenticated principal
MutableAcl rootAcl = new AclImpl(rootOid, 1, this.authzStrategy, this.pgs, null, null, false,
new PrincipalSid("joe"));
-
// Grant some permissions
rootAcl.insertAce(0, BasePermission.READ, new PrincipalSid("ben"), false);
rootAcl.insertAce(1, BasePermission.WRITE, new PrincipalSid("scott"), true);
rootAcl.insertAce(2, BasePermission.WRITE, new PrincipalSid("rod"), false);
rootAcl.insertAce(3, BasePermission.WRITE, new GrantedAuthoritySid("WRITE_ACCESS_ROLE"), true);
-
// Check permissions granting
List permissions = Arrays.asList(BasePermission.READ, BasePermission.CREATE);
List sids = Arrays.asList(new PrincipalSid("ben"), new GrantedAuthoritySid("ROLE_GUEST"));
@@ -320,7 +308,6 @@ public class AclImplTests {
ObjectIdentity parentOid2 = new ObjectIdentityImpl(TARGET_CLASS, 102);
ObjectIdentity childOid1 = new ObjectIdentityImpl(TARGET_CLASS, 103);
ObjectIdentity childOid2 = new ObjectIdentityImpl(TARGET_CLASS, 104);
-
// Create ACLs
PrincipalSid joe = new PrincipalSid("joe");
MutableAcl grandParentAcl = new AclImpl(grandParentOid, 1, this.authzStrategy, this.pgs, null, null, false,
@@ -329,13 +316,11 @@ public class AclImplTests {
MutableAcl parentAcl2 = new AclImpl(parentOid2, 3, this.authzStrategy, this.pgs, null, null, true, joe);
MutableAcl childAcl1 = new AclImpl(childOid1, 4, this.authzStrategy, this.pgs, null, null, true, joe);
MutableAcl childAcl2 = new AclImpl(childOid2, 4, this.authzStrategy, this.pgs, null, null, false, joe);
-
// Create hierarchies
childAcl2.setParent(childAcl1);
childAcl1.setParent(parentAcl1);
parentAcl2.setParent(grandParentAcl);
parentAcl1.setParent(grandParentAcl);
-
// Add some permissions
grandParentAcl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_USER_READ"), true);
grandParentAcl.insertAce(1, BasePermission.WRITE, new PrincipalSid("ben"), true);
@@ -345,7 +330,6 @@ public class AclImplTests {
parentAcl1.insertAce(1, BasePermission.DELETE, new PrincipalSid("scott"), false);
parentAcl2.insertAce(0, BasePermission.CREATE, new PrincipalSid("ben"), true);
childAcl1.insertAce(0, BasePermission.CREATE, new PrincipalSid("scott"), true);
-
// Check granting process for parent1
assertThat(parentAcl1.isGranted(READ, SCOTT, false)).isTrue();
assertThat(parentAcl1.isGranted(READ, Arrays.asList((Sid) new GrantedAuthoritySid("ROLE_USER_READ")), false))
@@ -353,18 +337,15 @@ public class AclImplTests {
assertThat(parentAcl1.isGranted(WRITE, BEN, false)).isTrue();
assertThat(parentAcl1.isGranted(DELETE, BEN, false)).isFalse();
assertThat(parentAcl1.isGranted(DELETE, SCOTT, false)).isFalse();
-
// Check granting process for parent2
assertThat(parentAcl2.isGranted(CREATE, BEN, false)).isTrue();
assertThat(parentAcl2.isGranted(WRITE, BEN, false)).isTrue();
assertThat(parentAcl2.isGranted(DELETE, BEN, false)).isFalse();
-
// Check granting process for child1
assertThat(childAcl1.isGranted(CREATE, SCOTT, false)).isTrue();
assertThat(childAcl1.isGranted(READ, Arrays.asList((Sid) new GrantedAuthoritySid("ROLE_USER_READ")), false))
.isTrue();
assertThat(childAcl1.isGranted(DELETE, BEN, false)).isFalse();
-
// Check granting process for child2 (doesn't inherit the permissions from its
// parent)
try {
@@ -389,21 +370,17 @@ public class AclImplTests {
MutableAcl acl = new AclImpl(this.objectIdentity, 1, this.authzStrategy, this.pgs, null, null, false,
new PrincipalSid("joe"));
MockAclService service = new MockAclService();
-
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_USER_READ"), true);
acl.insertAce(1, BasePermission.WRITE, new GrantedAuthoritySid("ROLE_USER_READ"), true);
acl.insertAce(2, BasePermission.CREATE, new PrincipalSid("ben"), true);
service.updateAcl(acl);
-
assertThat(BasePermission.READ).isEqualTo(acl.getEntries().get(0).getPermission());
assertThat(BasePermission.WRITE).isEqualTo(acl.getEntries().get(1).getPermission());
assertThat(BasePermission.CREATE).isEqualTo(acl.getEntries().get(2).getPermission());
-
// Change each permission
acl.updateAce(0, BasePermission.CREATE);
acl.updateAce(1, BasePermission.DELETE);
acl.updateAce(2, BasePermission.READ);
-
// Check the change was successfully made
assertThat(BasePermission.CREATE).isEqualTo(acl.getEntries().get(0).getPermission());
assertThat(BasePermission.DELETE).isEqualTo(acl.getEntries().get(1).getPermission());
@@ -418,20 +395,16 @@ public class AclImplTests {
MutableAcl acl = new AclImpl(this.objectIdentity, 1, this.authzStrategy, this.pgs, null, null, false,
new PrincipalSid("joe"));
MockAclService service = new MockAclService();
-
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_USER_READ"), true);
acl.insertAce(1, BasePermission.WRITE, new GrantedAuthoritySid("ROLE_USER_READ"), true);
service.updateAcl(acl);
-
assertThat(((AuditableAccessControlEntry) acl.getEntries().get(0)).isAuditFailure()).isFalse();
assertThat(((AuditableAccessControlEntry) acl.getEntries().get(1)).isAuditFailure()).isFalse();
assertThat(((AuditableAccessControlEntry) acl.getEntries().get(0)).isAuditSuccess()).isFalse();
assertThat(((AuditableAccessControlEntry) acl.getEntries().get(1)).isAuditSuccess()).isFalse();
-
// Change each permission
((AuditableAcl) acl).updateAuditing(0, true, true);
((AuditableAcl) acl).updateAuditing(1, true, true);
-
// Check the change was successfuly made
assertThat(acl.getEntries()).extracting("auditSuccess").containsOnly(true, true);
assertThat(acl.getEntries()).extracting("auditFailure").containsOnly(true, true);
@@ -452,20 +425,16 @@ public class AclImplTests {
acl.insertAce(0, BasePermission.READ, new GrantedAuthoritySid("ROLE_USER_READ"), true);
acl.insertAce(1, BasePermission.WRITE, new GrantedAuthoritySid("ROLE_USER_READ"), true);
service.updateAcl(acl);
-
assertThat(1).isEqualTo(acl.getId());
assertThat(identity).isEqualTo(acl.getObjectIdentity());
assertThat(new PrincipalSid("joe")).isEqualTo(acl.getOwner());
assertThat(acl.getParentAcl()).isNull();
assertThat(acl.isEntriesInheriting()).isTrue();
assertThat(acl.getEntries()).hasSize(2);
-
acl.setParent(parentAcl);
assertThat(parentAcl).isEqualTo(acl.getParentAcl());
-
acl.setEntriesInheriting(false);
assertThat(acl.isEntriesInheriting()).isFalse();
-
acl.setOwner(new PrincipalSid("ben"));
assertThat(new PrincipalSid("ben")).isEqualTo(acl.getOwner());
}
@@ -475,7 +444,6 @@ public class AclImplTests {
List loadedSids = Arrays.asList(new PrincipalSid("ben"), new GrantedAuthoritySid("ROLE_IGNORED"));
MutableAcl acl = new AclImpl(this.objectIdentity, 1, this.authzStrategy, this.pgs, null, loadedSids, true,
new PrincipalSid("joe"));
-
assertThat(acl.isSidLoaded(loadedSids)).isTrue();
assertThat(acl.isSidLoaded(Arrays.asList(new GrantedAuthoritySid("ROLE_IGNORED"), new PrincipalSid("ben"))))
.isTrue();
@@ -534,7 +502,6 @@ public class AclImplTests {
AclImpl parentAcl = new AclImpl(this.objectIdentity, 1L, this.authzStrategy, this.mockAuditLogger);
AclImpl childAcl = new AclImpl(this.objectIdentity, 2L, this.authzStrategy, this.mockAuditLogger);
AclImpl changeParentAcl = new AclImpl(this.objectIdentity, 3L, this.authzStrategy, this.mockAuditLogger);
-
childAcl.setParent(parentAcl);
childAcl.setParent(changeParentAcl);
}
@@ -562,10 +529,8 @@ public class AclImplTests {
ObjectIdentity oid = new ObjectIdentityImpl("type", 1);
AclAuthorizationStrategy authStrategy = new AclAuthorizationStrategyImpl(new SimpleGrantedAuthority("role"));
PermissionGrantingStrategy grantingStrategy = new DefaultPermissionGrantingStrategy(new ConsoleAuditLogger());
-
AclImpl acl = new AclImpl(oid, 1L, authStrategy, grantingStrategy, null, null, false, sid);
AccessControlEntryImpl ace = new AccessControlEntryImpl(1L, acl, sid, BasePermission.READ, true, true, true);
-
Field fieldAces = FieldUtils.getField(AclImpl.class, "aces");
fieldAces.setAccessible(true);
List aces = (List) fieldAces.get(acl);
@@ -617,7 +582,6 @@ public class AclImplTests {
try {
newAces = (List) acesField.get(acl);
newAces.clear();
-
for (int i = 0; i < oldAces.size(); i++) {
AccessControlEntry ac = oldAces.get(i);
// Just give an ID to all this acl's aces, rest of the fields are just
@@ -630,7 +594,6 @@ public class AclImplTests {
catch (IllegalAccessException ex) {
ex.printStackTrace();
}
-
return acl;
}
diff --git a/acl/src/test/java/org/springframework/security/acls/domain/AclImplementationSecurityCheckTests.java b/acl/src/test/java/org/springframework/security/acls/domain/AclImplementationSecurityCheckTests.java
index b563914901..9a121f71ab 100644
--- a/acl/src/test/java/org/springframework/security/acls/domain/AclImplementationSecurityCheckTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/domain/AclImplementationSecurityCheckTests.java
@@ -58,18 +58,14 @@ public class AclImplementationSecurityCheckTests {
"ROLE_OWNERSHIP");
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);
-
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, 100L);
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
new SimpleGrantedAuthority("ROLE_GENERAL"));
-
Acl acl = new AclImpl(identity, 1L, aclAuthorizationStrategy, new ConsoleAuditLogger());
-
aclAuthorizationStrategy.securityCheck(acl, AclAuthorizationStrategy.CHANGE_GENERAL);
aclAuthorizationStrategy.securityCheck(acl, AclAuthorizationStrategy.CHANGE_AUDITING);
aclAuthorizationStrategy.securityCheck(acl, AclAuthorizationStrategy.CHANGE_OWNERSHIP);
-
// Create another authorization strategy
AclAuthorizationStrategy aclAuthorizationStrategy2 = new AclAuthorizationStrategyImpl(
new SimpleGrantedAuthority("ROLE_ONE"), new SimpleGrantedAuthority("ROLE_TWO"),
@@ -102,21 +98,17 @@ public class AclImplementationSecurityCheckTests {
Authentication auth = new TestingAuthenticationToken("user", "password", "ROLE_GENERAL");
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);
-
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, 100L);
// Authorization strategy will require a different role for each access
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
new SimpleGrantedAuthority("ROLE_GENERAL"));
-
// Let's give the principal the ADMINISTRATION permission, without
// granting access
MutableAcl aclFirstDeny = new AclImpl(identity, 1L, aclAuthorizationStrategy, new ConsoleAuditLogger());
aclFirstDeny.insertAce(0, BasePermission.ADMINISTRATION, new PrincipalSid(auth), false);
-
// The CHANGE_GENERAL test should pass as the principal has ROLE_GENERAL
aclAuthorizationStrategy.securityCheck(aclFirstDeny, AclAuthorizationStrategy.CHANGE_GENERAL);
-
// The CHANGE_AUDITING and CHANGE_OWNERSHIP should fail since the
// principal doesn't have these authorities,
// nor granting access
@@ -132,7 +124,6 @@ public class AclImplementationSecurityCheckTests {
}
catch (AccessDeniedException expected) {
}
-
// Add granting access to this principal
aclFirstDeny.insertAce(1, BasePermission.ADMINISTRATION, new PrincipalSid(auth), true);
// and try again for CHANGE_AUDITING - the first ACE's granting flag
@@ -143,27 +134,21 @@ public class AclImplementationSecurityCheckTests {
}
catch (AccessDeniedException expected) {
}
-
// Create another ACL and give the principal the ADMINISTRATION
// permission, with granting access
MutableAcl aclFirstAllow = new AclImpl(identity, 1L, aclAuthorizationStrategy, new ConsoleAuditLogger());
aclFirstAllow.insertAce(0, BasePermission.ADMINISTRATION, new PrincipalSid(auth), true);
-
// The CHANGE_AUDITING test should pass as there is one ACE with
// granting access
-
aclAuthorizationStrategy.securityCheck(aclFirstAllow, AclAuthorizationStrategy.CHANGE_AUDITING);
-
// Add a deny ACE and test again for CHANGE_AUDITING
aclFirstAllow.insertAce(1, BasePermission.ADMINISTRATION, new PrincipalSid(auth), false);
try {
aclAuthorizationStrategy.securityCheck(aclFirstAllow, AclAuthorizationStrategy.CHANGE_AUDITING);
-
}
catch (AccessDeniedException notExpected) {
fail("It shouldn't have thrown AccessDeniedException");
}
-
// Create an ACL with no ACE
MutableAcl aclNoACE = new AclImpl(identity, 1L, aclAuthorizationStrategy, new ConsoleAuditLogger());
try {
@@ -171,12 +156,10 @@ public class AclImplementationSecurityCheckTests {
fail("It should have thrown NotFoundException");
}
catch (NotFoundException expected) {
-
}
// and still grant access for CHANGE_GENERAL
try {
aclAuthorizationStrategy.securityCheck(aclNoACE, AclAuthorizationStrategy.CHANGE_GENERAL);
-
}
catch (NotFoundException expected) {
fail("It shouldn't have thrown NotFoundException");
@@ -189,19 +172,16 @@ public class AclImplementationSecurityCheckTests {
Authentication auth = new TestingAuthenticationToken("user", "password", "ROLE_GENERAL");
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);
-
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, 100);
// Authorization strategy will require a different role for each access
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
new SimpleGrantedAuthority("ROLE_ONE"), new SimpleGrantedAuthority("ROLE_TWO"),
new SimpleGrantedAuthority("ROLE_GENERAL"));
-
// Let's give the principal an ADMINISTRATION permission, with granting
// access
MutableAcl parentAcl = new AclImpl(identity, 1, aclAuthorizationStrategy, new ConsoleAuditLogger());
parentAcl.insertAce(0, BasePermission.ADMINISTRATION, new PrincipalSid(auth), true);
MutableAcl childAcl = new AclImpl(identity, 2, aclAuthorizationStrategy, new ConsoleAuditLogger());
-
// Check against the 'child' acl, which doesn't offer any authorization
// rights on CHANGE_OWNERSHIP
try {
@@ -209,21 +189,17 @@ public class AclImplementationSecurityCheckTests {
fail("It should have thrown NotFoundException");
}
catch (NotFoundException expected) {
-
}
-
// Link the child with its parent and test again against the
// CHANGE_OWNERSHIP right
childAcl.setParent(parentAcl);
childAcl.setEntriesInheriting(true);
try {
aclAuthorizationStrategy.securityCheck(childAcl, AclAuthorizationStrategy.CHANGE_OWNERSHIP);
-
}
catch (NotFoundException expected) {
fail("It shouldn't have thrown NotFoundException");
}
-
// Create a root parent and link it to the middle parent
MutableAcl rootParentAcl = new AclImpl(identity, 1, aclAuthorizationStrategy, new ConsoleAuditLogger());
parentAcl = new AclImpl(identity, 1, aclAuthorizationStrategy, new ConsoleAuditLogger());
@@ -233,7 +209,6 @@ public class AclImplementationSecurityCheckTests {
childAcl.setParent(parentAcl);
try {
aclAuthorizationStrategy.securityCheck(childAcl, AclAuthorizationStrategy.CHANGE_OWNERSHIP);
-
}
catch (NotFoundException expected) {
fail("It shouldn't have thrown NotFoundException");
@@ -245,12 +220,10 @@ public class AclImplementationSecurityCheckTests {
Authentication auth = new TestingAuthenticationToken("user", "password", "ROLE_ONE");
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);
-
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, 100);
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
new SimpleGrantedAuthority("ROLE_GENERAL"));
-
Acl acl = new AclImpl(identity, 1, aclAuthorizationStrategy,
new DefaultPermissionGrantingStrategy(new ConsoleAuditLogger()), null, null, false,
new PrincipalSid(auth));
diff --git a/acl/src/test/java/org/springframework/security/acls/domain/AuditLoggerTests.java b/acl/src/test/java/org/springframework/security/acls/domain/AuditLoggerTests.java
index 6542c73b59..e2abb35c01 100644
--- a/acl/src/test/java/org/springframework/security/acls/domain/AuditLoggerTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/domain/AuditLoggerTests.java
@@ -76,7 +76,6 @@ public class AuditLoggerTests {
@Test
public void successIsLoggedIfAceRequiresSuccessAudit() {
given(this.ace.isAuditSuccess()).willReturn(true);
-
this.logger.logIfNeeded(true, this.ace);
assertThat(this.bytes.toString()).startsWith("GRANTED due to ACE");
}
diff --git a/acl/src/test/java/org/springframework/security/acls/domain/ObjectIdentityImplTests.java b/acl/src/test/java/org/springframework/security/acls/domain/ObjectIdentityImplTests.java
index f4def65adc..309dc8776f 100644
--- a/acl/src/test/java/org/springframework/security/acls/domain/ObjectIdentityImplTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/domain/ObjectIdentityImplTests.java
@@ -42,7 +42,6 @@ public class ObjectIdentityImplTests {
}
catch (IllegalArgumentException expected) {
}
-
// Check String-Serializable constructor required field
try {
new ObjectIdentityImpl("", 1L);
@@ -50,7 +49,6 @@ public class ObjectIdentityImplTests {
}
catch (IllegalArgumentException expected) {
}
-
// Check Serializable parameter is not null
try {
new ObjectIdentityImpl(DOMAIN_CLASS, null);
@@ -58,7 +56,6 @@ public class ObjectIdentityImplTests {
}
catch (IllegalArgumentException expected) {
}
-
// The correct way of using String-Serializable constructor
try {
new ObjectIdentityImpl(DOMAIN_CLASS, 1L);
@@ -66,7 +63,6 @@ public class ObjectIdentityImplTests {
catch (IllegalArgumentException notExpected) {
fail("It shouldn't have thrown IllegalArgumentException");
}
-
// Check the Class-Serializable constructor
try {
new ObjectIdentityImpl(MockIdDomainObject.class, null);
@@ -91,9 +87,7 @@ public class ObjectIdentityImplTests {
fail("It should have thrown IdentityUnavailableException");
}
catch (IdentityUnavailableException expected) {
-
}
-
// getId() should return a non-null value
MockIdDomainObject mockId = new MockIdDomainObject();
try {
@@ -101,9 +95,7 @@ public class ObjectIdentityImplTests {
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
-
// getId() should return a Serializable object
mockId.setId(new MockIdDomainObject());
try {
@@ -112,7 +104,6 @@ public class ObjectIdentityImplTests {
}
catch (IllegalArgumentException expected) {
}
-
// getId() should return a Serializable object
mockId.setId(100L);
try {
@@ -132,7 +123,6 @@ public class ObjectIdentityImplTests {
ObjectIdentity obj = new ObjectIdentityImpl(DOMAIN_CLASS, 1L);
MockIdDomainObject mockObj = new MockIdDomainObject();
mockObj.setId(1L);
-
String string = "SOME_STRING";
assertThat(string).isNotSameAs(obj);
assertThat(obj).isNotNull();
@@ -155,7 +145,6 @@ public class ObjectIdentityImplTests {
public void longAndIntegerIdsWithSameValueAreEqualAndHaveSameHashcode() {
ObjectIdentity obj = new ObjectIdentityImpl(Object.class, 5L);
ObjectIdentity obj2 = new ObjectIdentityImpl(Object.class, 5);
-
assertThat(obj2).isEqualTo(obj);
assertThat(obj2.hashCode()).isEqualTo(obj.hashCode());
}
diff --git a/acl/src/test/java/org/springframework/security/acls/domain/ObjectIdentityRetrievalStrategyImplTests.java b/acl/src/test/java/org/springframework/security/acls/domain/ObjectIdentityRetrievalStrategyImplTests.java
index ec2c572b95..b6787f893c 100644
--- a/acl/src/test/java/org/springframework/security/acls/domain/ObjectIdentityRetrievalStrategyImplTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/domain/ObjectIdentityRetrievalStrategyImplTests.java
@@ -34,10 +34,8 @@ public class ObjectIdentityRetrievalStrategyImplTests {
public void testObjectIdentityCreation() {
MockIdDomainObject domain = new MockIdDomainObject();
domain.setId(1);
-
ObjectIdentityRetrievalStrategy retStrategy = new ObjectIdentityRetrievalStrategyImpl();
ObjectIdentity identity = retStrategy.getObjectIdentity(domain);
-
assertThat(identity).isNotNull();
assertThat(new ObjectIdentityImpl(domain)).isEqualTo(identity);
}
diff --git a/acl/src/test/java/org/springframework/security/acls/domain/PermissionTests.java b/acl/src/test/java/org/springframework/security/acls/domain/PermissionTests.java
index 1d10aeb66c..5aef8e4c74 100644
--- a/acl/src/test/java/org/springframework/security/acls/domain/PermissionTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/domain/PermissionTests.java
@@ -62,26 +62,19 @@ public class PermissionTests {
@Test
public void stringConversion() {
this.permissionFactory.registerPublicPermissions(SpecialPermission.class);
-
assertThat(BasePermission.READ.toString()).isEqualTo("BasePermission[...............................R=1]");
-
assertThat(BasePermission.ADMINISTRATION.toString())
.isEqualTo("BasePermission[...........................A....=16]");
-
assertThat(new CumulativePermission().set(BasePermission.READ).toString())
.isEqualTo("CumulativePermission[...............................R=1]");
-
assertThat(
new CumulativePermission().set(SpecialPermission.ENTER).set(BasePermission.ADMINISTRATION).toString())
.isEqualTo("CumulativePermission[..........................EA....=48]");
-
assertThat(new CumulativePermission().set(BasePermission.ADMINISTRATION).set(BasePermission.READ).toString())
.isEqualTo("CumulativePermission[...........................A...R=17]");
-
assertThat(new CumulativePermission().set(BasePermission.ADMINISTRATION).set(BasePermission.READ)
.clear(BasePermission.ADMINISTRATION).toString())
.isEqualTo("CumulativePermission[...............................R=1]");
-
assertThat(new CumulativePermission().set(BasePermission.ADMINISTRATION).set(BasePermission.READ)
.clear(BasePermission.ADMINISTRATION).clear(BasePermission.READ).toString())
.isEqualTo("CumulativePermission[................................=0]");
diff --git a/acl/src/test/java/org/springframework/security/acls/jdbc/AbstractBasicLookupStrategyTests.java b/acl/src/test/java/org/springframework/security/acls/jdbc/AbstractBasicLookupStrategyTests.java
index 097be23708..6000bab596 100644
--- a/acl/src/test/java/org/springframework/security/acls/jdbc/AbstractBasicLookupStrategyTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/jdbc/AbstractBasicLookupStrategyTests.java
@@ -147,7 +147,6 @@ public abstract class AbstractBasicLookupStrategyTests {
ObjectIdentity middleParentOid = new ObjectIdentityImpl(TARGET_CLASS, 101L);
// Deliberately use an integer for the child, to reproduce bug report in SEC-819
ObjectIdentity childOid = new ObjectIdentityImpl(TARGET_CLASS, 102);
-
Map map = this.strategy
.readAclsById(Arrays.asList(topParentOid, middleParentOid, childOid), null);
checkEntries(topParentOid, middleParentOid, childOid, map);
@@ -158,15 +157,12 @@ public abstract class AbstractBasicLookupStrategyTests {
ObjectIdentity topParentOid = new ObjectIdentityImpl(TARGET_CLASS, 100);
ObjectIdentity middleParentOid = new ObjectIdentityImpl(TARGET_CLASS, 101L);
ObjectIdentity childOid = new ObjectIdentityImpl(TARGET_CLASS, 102L);
-
// Objects were put in cache
this.strategy.readAclsById(Arrays.asList(topParentOid, middleParentOid, childOid), null);
-
// Let's empty the database to force acls retrieval from cache
emptyDatabase();
Map map = this.strategy
.readAclsById(Arrays.asList(topParentOid, middleParentOid, childOid), null);
-
checkEntries(topParentOid, middleParentOid, childOid, map);
}
@@ -175,7 +171,6 @@ public abstract class AbstractBasicLookupStrategyTests {
ObjectIdentity topParentOid = new ObjectIdentityImpl(TARGET_CLASS, 100L);
ObjectIdentity middleParentOid = new ObjectIdentityImpl(TARGET_CLASS, 101);
ObjectIdentity childOid = new ObjectIdentityImpl(TARGET_CLASS, 102L);
-
// Set a batch size to allow multiple database queries in order to retrieve all
// acls
this.strategy.setBatchSize(1);
@@ -187,31 +182,25 @@ public abstract class AbstractBasicLookupStrategyTests {
private void checkEntries(ObjectIdentity topParentOid, ObjectIdentity middleParentOid, ObjectIdentity childOid,
Map map) {
assertThat(map).hasSize(3);
-
MutableAcl topParent = (MutableAcl) map.get(topParentOid);
MutableAcl middleParent = (MutableAcl) map.get(middleParentOid);
MutableAcl child = (MutableAcl) map.get(childOid);
-
// Check the retrieved versions has IDs
assertThat(topParent.getId()).isNotNull();
assertThat(middleParent.getId()).isNotNull();
assertThat(child.getId()).isNotNull();
-
// Check their parents were correctly retrieved
assertThat(topParent.getParentAcl()).isNull();
assertThat(middleParent.getParentAcl().getObjectIdentity()).isEqualTo(topParentOid);
assertThat(child.getParentAcl().getObjectIdentity()).isEqualTo(middleParentOid);
-
// Check their ACEs were correctly retrieved
assertThat(topParent.getEntries()).hasSize(2);
assertThat(middleParent.getEntries()).hasSize(1);
assertThat(child.getEntries()).hasSize(1);
-
// Check object identities were correctly retrieved
assertThat(topParent.getObjectIdentity()).isEqualTo(topParentOid);
assertThat(middleParent.getObjectIdentity()).isEqualTo(middleParentOid);
assertThat(child.getObjectIdentity()).isEqualTo(childOid);
-
// Check each entry
assertThat(topParent.isEntriesInheriting()).isTrue();
assertThat(Long.valueOf(1)).isEqualTo(topParent.getId());
@@ -222,14 +211,12 @@ public abstract class AbstractBasicLookupStrategyTests {
assertThat(((AuditableAccessControlEntry) topParent.getEntries().get(0)).isAuditFailure()).isFalse();
assertThat(((AuditableAccessControlEntry) topParent.getEntries().get(0)).isAuditSuccess()).isFalse();
assertThat((topParent.getEntries().get(0)).isGranting()).isTrue();
-
assertThat(Long.valueOf(2)).isEqualTo(topParent.getEntries().get(1).getId());
assertThat(topParent.getEntries().get(1).getPermission()).isEqualTo(BasePermission.WRITE);
assertThat(topParent.getEntries().get(1).getSid()).isEqualTo(new PrincipalSid("ben"));
assertThat(((AuditableAccessControlEntry) topParent.getEntries().get(1)).isAuditFailure()).isFalse();
assertThat(((AuditableAccessControlEntry) topParent.getEntries().get(1)).isAuditSuccess()).isFalse();
assertThat(topParent.getEntries().get(1).isGranting()).isFalse();
-
assertThat(middleParent.isEntriesInheriting()).isTrue();
assertThat(Long.valueOf(2)).isEqualTo(middleParent.getId());
assertThat(new PrincipalSid("ben")).isEqualTo(middleParent.getOwner());
@@ -239,7 +226,6 @@ public abstract class AbstractBasicLookupStrategyTests {
assertThat(((AuditableAccessControlEntry) middleParent.getEntries().get(0)).isAuditFailure()).isFalse();
assertThat(((AuditableAccessControlEntry) middleParent.getEntries().get(0)).isAuditSuccess()).isFalse();
assertThat(middleParent.getEntries().get(0).isGranting()).isTrue();
-
assertThat(child.isEntriesInheriting()).isTrue();
assertThat(Long.valueOf(3)).isEqualTo(child.getId());
assertThat(new PrincipalSid("ben")).isEqualTo(child.getOwner());
@@ -255,15 +241,12 @@ public abstract class AbstractBasicLookupStrategyTests {
public void testAllParentsAreRetrievedWhenChildIsLoaded() {
String query = "INSERT INTO acl_object_identity(ID,OBJECT_ID_CLASS,OBJECT_ID_IDENTITY,PARENT_OBJECT,OWNER_SID,ENTRIES_INHERITING) VALUES (6,2,103,1,1,1);";
getJdbcTemplate().execute(query);
-
ObjectIdentity topParentOid = new ObjectIdentityImpl(TARGET_CLASS, 100L);
ObjectIdentity middleParentOid = new ObjectIdentityImpl(TARGET_CLASS, 101L);
ObjectIdentity childOid = new ObjectIdentityImpl(TARGET_CLASS, 102L);
ObjectIdentity middleParent2Oid = new ObjectIdentityImpl(TARGET_CLASS, 103L);
-
// Retrieve the child
Map map = this.strategy.readAclsById(Arrays.asList(childOid), null);
-
// Check that the child and all its parents were retrieved
assertThat(map.get(childOid)).isNotNull();
assertThat(map.get(childOid).getObjectIdentity()).isEqualTo(childOid);
@@ -271,7 +254,6 @@ public abstract class AbstractBasicLookupStrategyTests {
assertThat(map.get(middleParentOid).getObjectIdentity()).isEqualTo(middleParentOid);
assertThat(map.get(topParentOid)).isNotNull();
assertThat(map.get(topParentOid).getObjectIdentity()).isEqualTo(topParentOid);
-
// The second parent shouldn't have been retrieved
assertThat(map.get(middleParent2Oid)).isNull();
}
@@ -287,26 +269,21 @@ public abstract class AbstractBasicLookupStrategyTests {
+ "INSERT INTO acl_object_identity(ID,OBJECT_ID_CLASS,OBJECT_ID_IDENTITY,PARENT_OBJECT,OWNER_SID,ENTRIES_INHERITING) VALUES (9,2,108,7,1,1);"
+ "INSERT INTO acl_entry(ID,ACL_OBJECT_IDENTITY,ACE_ORDER,SID,MASK,GRANTING,AUDIT_SUCCESS,AUDIT_FAILURE) VALUES (7,6,0,1,1,1,0,0)";
getJdbcTemplate().execute(query);
-
ObjectIdentity grandParentOid = new ObjectIdentityImpl(TARGET_CLASS, 104L);
ObjectIdentity parent1Oid = new ObjectIdentityImpl(TARGET_CLASS, 105L);
ObjectIdentity parent2Oid = new ObjectIdentityImpl(TARGET_CLASS, 106);
ObjectIdentity childOid = new ObjectIdentityImpl(TARGET_CLASS, 107);
-
// First lookup only child, thus populating the cache with grandParent,
// parent1
// and child
List checkPermission = Arrays.asList(BasePermission.READ);
List sids = Arrays.asList(BEN_SID);
List childOids = Arrays.asList(childOid);
-
this.strategy.setBatchSize(6);
Map foundAcls = this.strategy.readAclsById(childOids, sids);
-
Acl foundChildAcl = foundAcls.get(childOid);
assertThat(foundChildAcl).isNotNull();
assertThat(foundChildAcl.isGranted(checkPermission, sids, false)).isTrue();
-
// Search for object identities has to be done in the following order:
// last
// element have to be one which
@@ -315,12 +292,10 @@ public abstract class AbstractBasicLookupStrategyTests {
List allOids = Arrays.asList(grandParentOid, parent1Oid, parent2Oid, childOid);
try {
foundAcls = this.strategy.readAclsById(allOids, sids);
-
}
catch (NotFoundException notExpected) {
fail("It shouldn't have thrown NotFoundException");
}
-
Acl foundParent2Acl = foundAcls.get(parent2Oid);
assertThat(foundParent2Acl).isNotNull();
assertThat(foundParent2Acl.isGranted(checkPermission, sids, false)).isTrue();
@@ -329,18 +304,14 @@ public abstract class AbstractBasicLookupStrategyTests {
@Test(expected = IllegalArgumentException.class)
public void nullOwnerIsNotSupported() {
String query = "INSERT INTO acl_object_identity(ID,OBJECT_ID_CLASS,OBJECT_ID_IDENTITY,PARENT_OBJECT,OWNER_SID,ENTRIES_INHERITING) VALUES (6,2,104,null,null,1);";
-
getJdbcTemplate().execute(query);
-
ObjectIdentity oid = new ObjectIdentityImpl(TARGET_CLASS, 104L);
-
this.strategy.readAclsById(Arrays.asList(oid), Arrays.asList(BEN_SID));
}
@Test
public void testCreatePrincipalSid() {
Sid result = this.strategy.createSid(true, "sid");
-
assertThat(result.getClass()).isEqualTo(PrincipalSid.class);
assertThat(((PrincipalSid) result).getPrincipal()).isEqualTo("sid");
}
@@ -348,7 +319,6 @@ public abstract class AbstractBasicLookupStrategyTests {
@Test
public void testCreateGrantedAuthority() {
Sid result = this.strategy.createSid(false, "sid");
-
assertThat(result.getClass()).isEqualTo(GrantedAuthoritySid.class);
assertThat(((GrantedAuthoritySid) result).getGrantedAuthority()).isEqualTo("sid");
}
diff --git a/acl/src/test/java/org/springframework/security/acls/jdbc/BasicLookupStrategyTestsDbHelper.java b/acl/src/test/java/org/springframework/security/acls/jdbc/BasicLookupStrategyTestsDbHelper.java
index 16206dea2b..32a2547351 100644
--- a/acl/src/test/java/org/springframework/security/acls/jdbc/BasicLookupStrategyTestsDbHelper.java
+++ b/acl/src/test/java/org/springframework/security/acls/jdbc/BasicLookupStrategyTestsDbHelper.java
@@ -58,12 +58,10 @@ public class BasicLookupStrategyTestsDbHelper {
else {
connectionUrl = "jdbc:hsqldb:mem:lookupstrategytestWithAclClassIdType";
sqlClassPathResource = ACL_SCHEMA_SQL_FILE_WITH_ACL_CLASS_ID;
-
}
this.dataSource = new SingleConnectionDataSource(connectionUrl, "sa", "", true);
this.dataSource.setDriverClassName("org.hsqldb.jdbcDriver");
this.jdbcTemplate = new JdbcTemplate(this.dataSource);
-
Resource resource = new ClassPathResource(sqlClassPathResource);
String sql = new String(FileCopyUtils.copyToByteArray(resource.getInputStream()));
this.jdbcTemplate.execute(sql);
diff --git a/acl/src/test/java/org/springframework/security/acls/jdbc/DatabaseSeeder.java b/acl/src/test/java/org/springframework/security/acls/jdbc/DatabaseSeeder.java
index 9d2d6c2e5d..eca0b5d635 100644
--- a/acl/src/test/java/org/springframework/security/acls/jdbc/DatabaseSeeder.java
+++ b/acl/src/test/java/org/springframework/security/acls/jdbc/DatabaseSeeder.java
@@ -35,7 +35,6 @@ public class DatabaseSeeder {
public DatabaseSeeder(DataSource dataSource, Resource resource) throws IOException {
Assert.notNull(dataSource, "dataSource required");
Assert.notNull(resource, "resource required");
-
JdbcTemplate template = new JdbcTemplate(dataSource);
String sql = new String(FileCopyUtils.copyToByteArray(resource.getInputStream()));
template.execute(sql);
diff --git a/acl/src/test/java/org/springframework/security/acls/jdbc/EhCacheBasedAclCacheTests.java b/acl/src/test/java/org/springframework/security/acls/jdbc/EhCacheBasedAclCacheTests.java
index 04f496a43b..d293b50084 100644
--- a/acl/src/test/java/org/springframework/security/acls/jdbc/EhCacheBasedAclCacheTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/jdbc/EhCacheBasedAclCacheTests.java
@@ -82,12 +82,10 @@ public class EhCacheBasedAclCacheTests {
this.myCache = new EhCacheBasedAclCache(this.cache,
new DefaultPermissionGrantingStrategy(new ConsoleAuditLogger()),
new AclAuthorizationStrategyImpl(new SimpleGrantedAuthority("ROLE_USER")));
-
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, 100L);
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
new SimpleGrantedAuthority("ROLE_GENERAL"));
-
this.acl = new AclImpl(identity, 1L, aclAuthorizationStrategy, new ConsoleAuditLogger());
}
@@ -111,7 +109,6 @@ public class EhCacheBasedAclCacheTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
ObjectIdentity obj = null;
this.myCache.evictFromCache(obj);
@@ -119,7 +116,6 @@ public class EhCacheBasedAclCacheTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
Serializable id = null;
this.myCache.getFromCache(id);
@@ -127,7 +123,6 @@ public class EhCacheBasedAclCacheTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
ObjectIdentity obj = null;
this.myCache.getFromCache(obj);
@@ -135,7 +130,6 @@ public class EhCacheBasedAclCacheTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
MutableAcl acl = null;
this.myCache.putInCache(acl);
@@ -154,17 +148,13 @@ public class EhCacheBasedAclCacheTests {
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(this.acl);
oos.close();
-
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
MutableAcl retrieved = (MutableAcl) ois.readObject();
ois.close();
-
assertThat(retrieved).isEqualTo(this.acl);
-
Object retrieved1 = FieldUtils.getProtectedFieldValue("aclAuthorizationStrategy", retrieved);
assertThat(retrieved1).isNull();
-
Object retrieved2 = FieldUtils.getProtectedFieldValue("permissionGrantingStrategy", retrieved);
assertThat(retrieved2).isNull();
}
@@ -172,14 +162,12 @@ public class EhCacheBasedAclCacheTests {
@Test
public void clearCache() {
this.myCache.clearCache();
-
verify(this.cache).removeAll();
}
@Test
public void putInCache() {
this.myCache.putInCache(this.acl);
-
verify(this.cache, times(2)).put(this.element.capture());
assertThat(this.element.getValue().getKey()).isEqualTo(this.acl.getId());
assertThat(this.element.getValue().getObjectValue()).isEqualTo(this.acl);
@@ -192,29 +180,21 @@ public class EhCacheBasedAclCacheTests {
Authentication auth = new TestingAuthenticationToken("user", "password", "ROLE_GENERAL");
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);
-
ObjectIdentity identityParent = new ObjectIdentityImpl(TARGET_CLASS, 2L);
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
new SimpleGrantedAuthority("ROLE_GENERAL"));
MutableAcl parentAcl = new AclImpl(identityParent, 2L, aclAuthorizationStrategy, new ConsoleAuditLogger());
this.acl.setParent(parentAcl);
-
this.myCache.putInCache(this.acl);
-
verify(this.cache, times(4)).put(this.element.capture());
-
List allValues = this.element.getAllValues();
-
assertThat(allValues.get(0).getKey()).isEqualTo(parentAcl.getObjectIdentity());
assertThat(allValues.get(0).getObjectValue()).isEqualTo(parentAcl);
-
assertThat(allValues.get(1).getKey()).isEqualTo(parentAcl.getId());
assertThat(allValues.get(1).getObjectValue()).isEqualTo(parentAcl);
-
assertThat(allValues.get(2).getKey()).isEqualTo(this.acl.getObjectIdentity());
assertThat(allValues.get(2).getObjectValue()).isEqualTo(this.acl);
-
assertThat(allValues.get(3).getKey()).isEqualTo(this.acl.getId());
assertThat(allValues.get(3).getObjectValue()).isEqualTo(this.acl);
}
@@ -222,21 +202,16 @@ public class EhCacheBasedAclCacheTests {
@Test
public void getFromCacheSerializable() {
given(this.cache.get(this.acl.getId())).willReturn(new Element(this.acl.getId(), this.acl));
-
assertThat(this.myCache.getFromCache(this.acl.getId())).isEqualTo(this.acl);
}
@Test
public void getFromCacheSerializablePopulatesTransient() {
given(this.cache.get(this.acl.getId())).willReturn(new Element(this.acl.getId(), this.acl));
-
this.myCache.putInCache(this.acl);
-
ReflectionTestUtils.setField(this.acl, "permissionGrantingStrategy", null);
ReflectionTestUtils.setField(this.acl, "aclAuthorizationStrategy", null);
-
MutableAcl fromCache = this.myCache.getFromCache(this.acl.getId());
-
assertThat(ReflectionTestUtils.getField(fromCache, "aclAuthorizationStrategy")).isNotNull();
assertThat(ReflectionTestUtils.getField(fromCache, "permissionGrantingStrategy")).isNotNull();
}
@@ -244,21 +219,16 @@ public class EhCacheBasedAclCacheTests {
@Test
public void getFromCacheObjectIdentity() {
given(this.cache.get(this.acl.getId())).willReturn(new Element(this.acl.getId(), this.acl));
-
assertThat(this.myCache.getFromCache(this.acl.getId())).isEqualTo(this.acl);
}
@Test
public void getFromCacheObjectIdentityPopulatesTransient() {
given(this.cache.get(this.acl.getObjectIdentity())).willReturn(new Element(this.acl.getId(), this.acl));
-
this.myCache.putInCache(this.acl);
-
ReflectionTestUtils.setField(this.acl, "permissionGrantingStrategy", null);
ReflectionTestUtils.setField(this.acl, "aclAuthorizationStrategy", null);
-
MutableAcl fromCache = this.myCache.getFromCache(this.acl.getObjectIdentity());
-
assertThat(ReflectionTestUtils.getField(fromCache, "aclAuthorizationStrategy")).isNotNull();
assertThat(ReflectionTestUtils.getField(fromCache, "permissionGrantingStrategy")).isNotNull();
}
@@ -266,9 +236,7 @@ public class EhCacheBasedAclCacheTests {
@Test
public void evictCacheSerializable() {
given(this.cache.get(this.acl.getObjectIdentity())).willReturn(new Element(this.acl.getId(), this.acl));
-
this.myCache.evictFromCache(this.acl.getObjectIdentity());
-
verify(this.cache).remove(this.acl.getId());
verify(this.cache).remove(this.acl.getObjectIdentity());
}
@@ -276,9 +244,7 @@ public class EhCacheBasedAclCacheTests {
@Test
public void evictCacheObjectIdentity() {
given(this.cache.get(this.acl.getId())).willReturn(new Element(this.acl.getId(), this.acl));
-
this.myCache.evictFromCache(this.acl.getId());
-
verify(this.cache).remove(this.acl.getId());
verify(this.cache).remove(this.acl.getObjectIdentity());
}
diff --git a/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java b/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java
index 3e5e09c2f7..a4ff652ef1 100644
--- a/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcAclServiceTests.java
@@ -97,7 +97,6 @@ public class JdbcAclServiceTests {
given(this.lookupStrategy.readAclsById(anyList(), anyList())).willReturn(result);
ObjectIdentity objectIdentity = new ObjectIdentityImpl(Object.class, 1);
List sids = Arrays.asList(new PrincipalSid("user"));
-
this.aclService.readAclById(objectIdentity, sids);
}
@@ -108,7 +107,6 @@ public class JdbcAclServiceTests {
Object[] args = { "1", "org.springframework.security.acls.jdbc.JdbcAclServiceTests$MockLongIdDomainObject" };
given(this.jdbcOperations.query(anyString(), eq(args), any(RowMapper.class))).willReturn(result);
ObjectIdentity objectIdentity = new ObjectIdentityImpl(MockLongIdDomainObject.class, 1L);
-
List objectIdentities = this.aclService.findChildren(objectIdentity);
assertThat(objectIdentities.size()).isEqualTo(1);
assertThat(objectIdentities.get(0).getIdentifier()).isEqualTo("5577");
@@ -117,7 +115,6 @@ public class JdbcAclServiceTests {
@Test
public void findNoChildren() {
ObjectIdentity objectIdentity = new ObjectIdentityImpl(MockLongIdDomainObject.class, 1L);
-
List objectIdentities = this.aclService.findChildren(objectIdentity);
assertThat(objectIdentities).isNull();
}
@@ -125,7 +122,6 @@ public class JdbcAclServiceTests {
@Test
public void findChildrenWithoutIdType() {
ObjectIdentity objectIdentity = new ObjectIdentityImpl(MockLongIdDomainObject.class, 4711L);
-
List objectIdentities = this.aclServiceIntegration.findChildren(objectIdentity);
assertThat(objectIdentities.size()).isEqualTo(1);
assertThat(objectIdentities.get(0).getType()).isEqualTo(MockUntypedIdDomainObject.class.getName());
@@ -135,7 +131,6 @@ public class JdbcAclServiceTests {
@Test
public void findChildrenForUnknownObject() {
ObjectIdentity objectIdentity = new ObjectIdentityImpl(Object.class, 33);
-
List objectIdentities = this.aclServiceIntegration.findChildren(objectIdentity);
assertThat(objectIdentities).isNull();
}
@@ -143,7 +138,6 @@ public class JdbcAclServiceTests {
@Test
public void findChildrenOfIdTypeLong() {
ObjectIdentity objectIdentity = new ObjectIdentityImpl("location", "US-PAL");
-
List objectIdentities = this.aclServiceIntegration.findChildren(objectIdentity);
assertThat(objectIdentities.size()).isEqualTo(2);
assertThat(objectIdentities.get(0).getType()).isEqualTo(MockLongIdDomainObject.class.getName());
@@ -155,7 +149,6 @@ public class JdbcAclServiceTests {
@Test
public void findChildrenOfIdTypeString() {
ObjectIdentity objectIdentity = new ObjectIdentityImpl("location", "US");
-
this.aclServiceIntegration.setAclClassIdSupported(true);
List objectIdentities = this.aclServiceIntegration.findChildren(objectIdentity);
assertThat(objectIdentities.size()).isEqualTo(1);
@@ -166,7 +159,6 @@ public class JdbcAclServiceTests {
@Test
public void findChildrenOfIdTypeUUID() {
ObjectIdentity objectIdentity = new ObjectIdentityImpl(MockUntypedIdDomainObject.class, 5000L);
-
this.aclServiceIntegration.setAclClassIdSupported(true);
List objectIdentities = this.aclServiceIntegration.findChildren(objectIdentity);
assertThat(objectIdentities.size()).isEqualTo(1);
diff --git a/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcMutableAclServiceTests.java b/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcMutableAclServiceTests.java
index 9d70049f1a..fe44732540 100644
--- a/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcMutableAclServiceTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcMutableAclServiceTests.java
@@ -142,123 +142,97 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
@Transactional
public void testLifecycle() {
SecurityContextHolder.getContext().setAuthentication(this.auth);
-
MutableAcl topParent = this.jdbcMutableAclService.createAcl(getTopParentOid());
MutableAcl middleParent = this.jdbcMutableAclService.createAcl(getMiddleParentOid());
MutableAcl child = this.jdbcMutableAclService.createAcl(getChildOid());
-
// Specify the inheritance hierarchy
middleParent.setParent(topParent);
child.setParent(middleParent);
-
// Now let's add a couple of permissions
topParent.insertAce(0, BasePermission.READ, new PrincipalSid(this.auth), true);
topParent.insertAce(1, BasePermission.WRITE, new PrincipalSid(this.auth), false);
middleParent.insertAce(0, BasePermission.DELETE, new PrincipalSid(this.auth), true);
child.insertAce(0, BasePermission.DELETE, new PrincipalSid(this.auth), false);
-
// Explicitly save the changed ACL
this.jdbcMutableAclService.updateAcl(topParent);
this.jdbcMutableAclService.updateAcl(middleParent);
this.jdbcMutableAclService.updateAcl(child);
-
// Let's check if we can read them back correctly
Map map = this.jdbcMutableAclService
.readAclsById(Arrays.asList(getTopParentOid(), getMiddleParentOid(), getChildOid()));
assertThat(map).hasSize(3);
-
// Replace our current objects with their retrieved versions
topParent = (MutableAcl) map.get(getTopParentOid());
middleParent = (MutableAcl) map.get(getMiddleParentOid());
child = (MutableAcl) map.get(getChildOid());
-
// Check the retrieved versions has IDs
assertThat(topParent.getId()).isNotNull();
assertThat(middleParent.getId()).isNotNull();
assertThat(child.getId()).isNotNull();
-
// Check their parents were correctly persisted
assertThat(topParent.getParentAcl()).isNull();
assertThat(middleParent.getParentAcl().getObjectIdentity()).isEqualTo(getTopParentOid());
assertThat(child.getParentAcl().getObjectIdentity()).isEqualTo(getMiddleParentOid());
-
// Check their ACEs were correctly persisted
assertThat(topParent.getEntries()).hasSize(2);
assertThat(middleParent.getEntries()).hasSize(1);
assertThat(child.getEntries()).hasSize(1);
-
// Check the retrieved rights are correct
List read = Arrays.asList(BasePermission.READ);
List write = Arrays.asList(BasePermission.WRITE);
List delete = Arrays.asList(BasePermission.DELETE);
List pSid = Arrays.asList((Sid) new PrincipalSid(this.auth));
-
assertThat(topParent.isGranted(read, pSid, false)).isTrue();
assertThat(topParent.isGranted(write, pSid, false)).isFalse();
assertThat(middleParent.isGranted(delete, pSid, false)).isTrue();
assertThat(child.isGranted(delete, pSid, false)).isFalse();
-
try {
child.isGranted(Arrays.asList(BasePermission.ADMINISTRATION), pSid, false);
fail("Should have thrown NotFoundException");
}
catch (NotFoundException expected) {
-
}
-
// Now check the inherited rights (when not explicitly overridden) also look OK
assertThat(child.isGranted(read, pSid, false)).isTrue();
assertThat(child.isGranted(write, pSid, false)).isFalse();
assertThat(child.isGranted(delete, pSid, false)).isFalse();
-
// Next change the child so it doesn't inherit permissions from above
child.setEntriesInheriting(false);
this.jdbcMutableAclService.updateAcl(child);
child = (MutableAcl) this.jdbcMutableAclService.readAclById(getChildOid());
assertThat(child.isEntriesInheriting()).isFalse();
-
// Check the child permissions no longer inherit
assertThat(child.isGranted(delete, pSid, true)).isFalse();
-
try {
child.isGranted(read, pSid, true);
fail("Should have thrown NotFoundException");
}
catch (NotFoundException expected) {
-
}
-
try {
child.isGranted(write, pSid, true);
fail("Should have thrown NotFoundException");
}
catch (NotFoundException expected) {
-
}
-
// Let's add an identical permission to the child, but it'll appear AFTER the
// current permission, so has no impact
child.insertAce(1, BasePermission.DELETE, new PrincipalSid(this.auth), true);
-
// Let's also add another permission to the child
child.insertAce(2, BasePermission.CREATE, new PrincipalSid(this.auth), true);
-
// Save the changed child
this.jdbcMutableAclService.updateAcl(child);
child = (MutableAcl) this.jdbcMutableAclService.readAclById(getChildOid());
assertThat(child.getEntries()).hasSize(3);
-
// Output permissions
for (int i = 0; i < child.getEntries().size(); i++) {
System.out.println(child.getEntries().get(i));
}
-
// Check the permissions are as they should be
assertThat(child.isGranted(delete, pSid, true)).isFalse(); // as earlier
// permission
// overrode
assertThat(child.isGranted(Arrays.asList(BasePermission.CREATE), pSid, true)).isTrue();
-
// Now check the first ACE (index 0) really is DELETE for our Sid and is
// non-granting
AccessControlEntry entry = child.getEntries().get(0);
@@ -266,15 +240,12 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
assertThat(entry.getSid()).isEqualTo(new PrincipalSid(this.auth));
assertThat(entry.isGranting()).isFalse();
assertThat(entry.getId()).isNotNull();
-
// Now delete that first ACE
child.deleteAce(0);
-
// Save and check it worked
child = this.jdbcMutableAclService.updateAcl(child);
assertThat(child.getEntries()).hasSize(2);
assertThat(child.isGranted(delete, pSid, false)).isTrue();
-
SecurityContextHolder.clearContext();
}
@@ -285,7 +256,6 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
@Transactional
public void deleteAclAlsoDeletesChildren() {
SecurityContextHolder.getContext().setAuthentication(this.auth);
-
this.jdbcMutableAclService.createAcl(getTopParentOid());
MutableAcl middleParent = this.jdbcMutableAclService.createAcl(getMiddleParentOid());
MutableAcl child = this.jdbcMutableAclService.createAcl(getChildOid());
@@ -294,27 +264,21 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
this.jdbcMutableAclService.updateAcl(child);
// Check the childOid really is a child of middleParentOid
Acl childAcl = this.jdbcMutableAclService.readAclById(getChildOid());
-
assertThat(childAcl.getParentAcl().getObjectIdentity()).isEqualTo(getMiddleParentOid());
-
// Delete the mid-parent and test if the child was deleted, as well
this.jdbcMutableAclService.deleteAcl(getMiddleParentOid(), true);
-
try {
this.jdbcMutableAclService.readAclById(getMiddleParentOid());
fail("It should have thrown NotFoundException");
}
catch (NotFoundException expected) {
-
}
try {
this.jdbcMutableAclService.readAclById(getChildOid());
fail("It should have thrown NotFoundException");
}
catch (NotFoundException expected) {
-
}
-
Acl acl = this.jdbcMutableAclService.readAclById(getTopParentOid());
assertThat(acl).isNotNull();
assertThat(getTopParentOid()).isEqualTo(acl.getObjectIdentity());
@@ -328,14 +292,12 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
}
catch (IllegalArgumentException expected) {
}
-
try {
new JdbcMutableAclService(this.dataSource, null, this.aclCache);
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
new JdbcMutableAclService(this.dataSource, this.lookupStrategy, null);
fail("It should have thrown IllegalArgumentException");
@@ -386,11 +348,9 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
SecurityContextHolder.getContext().setAuthentication(this.auth);
MutableAcl parent = this.jdbcMutableAclService.createAcl(getTopParentOid());
MutableAcl child = this.jdbcMutableAclService.createAcl(getMiddleParentOid());
-
// Specify the inheritance hierarchy
child.setParent(parent);
this.jdbcMutableAclService.updateAcl(child);
-
try {
this.jdbcMutableAclService.setForeignKeysInDatabase(false); // switch on FK
// checking in the
@@ -413,13 +373,11 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
MutableAcl child = this.jdbcMutableAclService.createAcl(getChildOid());
child.insertAce(0, BasePermission.DELETE, new PrincipalSid(this.auth), false);
this.jdbcMutableAclService.updateAcl(child);
-
// Remove the child and check all related database rows were removed accordingly
this.jdbcMutableAclService.deleteAcl(getChildOid(), false);
assertThat(this.jdbcTemplate.queryForList(SELECT_ALL_CLASSES, new Object[] { getTargetClass() })).hasSize(1);
assertThat(this.jdbcTemplate.queryForList("select * from acl_object_identity")).isEmpty();
assertThat(this.jdbcTemplate.queryForList("select * from acl_entry")).isEmpty();
-
// Check the cache
assertThat(this.aclCache.getFromCache(getChildOid())).isNull();
assertThat(this.aclCache.getFromCache(102L)).isNull();
@@ -432,7 +390,6 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
SecurityContextHolder.getContext().setAuthentication(this.auth);
ObjectIdentity oid = new ObjectIdentityImpl(TARGET_CLASS, 101);
this.jdbcMutableAclService.createAcl(oid);
-
assertThat(this.jdbcMutableAclService.readAclById(new ObjectIdentityImpl(TARGET_CLASS, 101L))).isNotNull();
}
@@ -445,27 +402,20 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
Authentication auth = new TestingAuthenticationToken("ben", "ignored", "ROLE_ADMINISTRATOR");
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);
-
ObjectIdentity parentOid = new ObjectIdentityImpl(TARGET_CLASS, 104L);
ObjectIdentity childOid = new ObjectIdentityImpl(TARGET_CLASS, 105L);
-
MutableAcl parent = this.jdbcMutableAclService.createAcl(parentOid);
MutableAcl child = this.jdbcMutableAclService.createAcl(childOid);
-
child.setParent(parent);
this.jdbcMutableAclService.updateAcl(child);
-
parent = (AclImpl) this.jdbcMutableAclService.readAclById(parentOid);
parent.insertAce(0, BasePermission.READ, new PrincipalSid("ben"), true);
this.jdbcMutableAclService.updateAcl(parent);
-
parent = (AclImpl) this.jdbcMutableAclService.readAclById(parentOid);
parent.insertAce(1, BasePermission.READ, new PrincipalSid("scott"), true);
this.jdbcMutableAclService.updateAcl(parent);
-
child = (MutableAcl) this.jdbcMutableAclService.readAclById(childOid);
parent = (MutableAcl) child.getParentAcl();
-
assertThat(parent.getEntries()).hasSize(2)
.withFailMessage("Fails because child has a stale reference to its parent");
assertThat(parent.getEntries().get(0).getPermission().getMask()).isEqualTo(1);
@@ -483,22 +433,16 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
Authentication auth = new TestingAuthenticationToken("system", "secret", "ROLE_IGNORED");
SecurityContextHolder.getContext().setAuthentication(auth);
ObjectIdentityImpl rootObject = new ObjectIdentityImpl(TARGET_CLASS, 1L);
-
MutableAcl parent = this.jdbcMutableAclService.createAcl(rootObject);
MutableAcl child = this.jdbcMutableAclService.createAcl(new ObjectIdentityImpl(TARGET_CLASS, 2L));
child.setParent(parent);
this.jdbcMutableAclService.updateAcl(child);
-
parent.insertAce(0, BasePermission.ADMINISTRATION, new GrantedAuthoritySid("ROLE_ADMINISTRATOR"), true);
this.jdbcMutableAclService.updateAcl(parent);
-
parent.insertAce(1, BasePermission.DELETE, new PrincipalSid("terry"), true);
this.jdbcMutableAclService.updateAcl(parent);
-
child = (MutableAcl) this.jdbcMutableAclService.readAclById(new ObjectIdentityImpl(TARGET_CLASS, 2L));
-
parent = (MutableAcl) child.getParentAcl();
-
assertThat(parent.getEntries()).hasSize(2);
assertThat(parent.getEntries().get(0).getPermission().getMask()).isEqualTo(16);
assertThat(parent.getEntries().get(0).getSid()).isEqualTo(new GrantedAuthoritySid("ROLE_ADMINISTRATOR"));
@@ -512,24 +456,19 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
Authentication auth = new TestingAuthenticationToken("ben", "ignored", "ROLE_ADMINISTRATOR");
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);
-
ObjectIdentity topParentOid = new ObjectIdentityImpl(TARGET_CLASS, 110L);
MutableAcl topParent = this.jdbcMutableAclService.createAcl(topParentOid);
-
// Add an ACE permission entry
Permission cm = new CumulativePermission().set(BasePermission.READ).set(BasePermission.ADMINISTRATION);
assertThat(cm.getMask()).isEqualTo(17);
Sid benSid = new PrincipalSid(auth);
topParent.insertAce(0, cm, benSid, true);
assertThat(topParent.getEntries()).hasSize(1);
-
// Explicitly save the changed ACL
topParent = this.jdbcMutableAclService.updateAcl(topParent);
-
// Check the mask was retrieved correctly
assertThat(topParent.getEntries().get(0).getPermission().getMask()).isEqualTo(17);
assertThat(topParent.isGranted(Arrays.asList(cm), Arrays.asList(benSid), true)).isTrue();
-
SecurityContextHolder.clearContext();
}
@@ -539,9 +478,7 @@ public class JdbcMutableAclServiceTests extends AbstractTransactionalJUnit4Sprin
new CustomJdbcMutableAclService(this.dataSource, this.lookupStrategy, this.aclCache));
CustomSid customSid = new CustomSid("Custom sid");
given(customJdbcMutableAclService.createOrRetrieveSidPrimaryKey("Custom sid", false, false)).willReturn(1L);
-
Long result = customJdbcMutableAclService.createOrRetrieveSidPrimaryKey(customSid, false);
-
assertThat(new Long(1L)).isEqualTo(result);
}
diff --git a/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcMutableAclServiceTestsWithAclClassId.java b/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcMutableAclServiceTestsWithAclClassId.java
index f912ad7514..ab69977a56 100644
--- a/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcMutableAclServiceTestsWithAclClassId.java
+++ b/acl/src/test/java/org/springframework/security/acls/jdbc/JdbcMutableAclServiceTestsWithAclClassId.java
@@ -75,11 +75,9 @@ public class JdbcMutableAclServiceTestsWithAclClassId extends JdbcMutableAclServ
@Transactional
public void identityWithUuidIdIsSupportedByCreateAcl() {
SecurityContextHolder.getContext().setAuthentication(getAuth());
-
UUID id = UUID.randomUUID();
ObjectIdentity oid = new ObjectIdentityImpl(TARGET_CLASS_WITH_UUID, id);
getJdbcMutableAclService().createAcl(oid);
-
assertThat(getJdbcMutableAclService().readAclById(new ObjectIdentityImpl(TARGET_CLASS_WITH_UUID, id)))
.isNotNull();
}
diff --git a/acl/src/test/java/org/springframework/security/acls/jdbc/SpringCacheBasedAclCacheTests.java b/acl/src/test/java/org/springframework/security/acls/jdbc/SpringCacheBasedAclCacheTests.java
index 3d2a9c7928..9a3bd62400 100644
--- a/acl/src/test/java/org/springframework/security/acls/jdbc/SpringCacheBasedAclCacheTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/jdbc/SpringCacheBasedAclCacheTests.java
@@ -89,37 +89,28 @@ public class SpringCacheBasedAclCacheTests {
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
new SimpleGrantedAuthority("ROLE_GENERAL"));
AuditLogger auditLogger = new ConsoleAuditLogger();
-
PermissionGrantingStrategy permissionGrantingStrategy = new DefaultPermissionGrantingStrategy(auditLogger);
SpringCacheBasedAclCache myCache = new SpringCacheBasedAclCache(cache, permissionGrantingStrategy,
aclAuthorizationStrategy);
MutableAcl acl = new AclImpl(identity, 1L, aclAuthorizationStrategy, auditLogger);
-
assertThat(realCache).isEmpty();
myCache.putInCache(acl);
-
// Check we can get from cache the same objects we put in
assertThat(acl).isEqualTo(myCache.getFromCache(1L));
assertThat(acl).isEqualTo(myCache.getFromCache(identity));
-
// Put another object in cache
ObjectIdentity identity2 = new ObjectIdentityImpl(TARGET_CLASS, 101L);
MutableAcl acl2 = new AclImpl(identity2, 2L, aclAuthorizationStrategy, new ConsoleAuditLogger());
-
myCache.putInCache(acl2);
-
// Try to evict an entry that doesn't exist
myCache.evictFromCache(3L);
myCache.evictFromCache(new ObjectIdentityImpl(TARGET_CLASS, 102L));
assertThat(realCache).hasSize(4);
-
myCache.evictFromCache(1L);
assertThat(realCache).hasSize(2);
-
// Check the second object inserted
assertThat(acl2).isEqualTo(myCache.getFromCache(2L));
assertThat(acl2).isEqualTo(myCache.getFromCache(identity2));
-
myCache.evictFromCache(identity2);
assertThat(realCache).isEmpty();
}
@@ -129,31 +120,24 @@ public class SpringCacheBasedAclCacheTests {
public void cacheOperationsAclWithParent() throws Exception {
Cache cache = getCache();
Map realCache = (Map) cache.getNativeCache();
-
Authentication auth = new TestingAuthenticationToken("user", "password", "ROLE_GENERAL");
auth.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(auth);
-
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, 1L);
ObjectIdentity identityParent = new ObjectIdentityImpl(TARGET_CLASS, 2L);
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
new SimpleGrantedAuthority("ROLE_GENERAL"));
AuditLogger auditLogger = new ConsoleAuditLogger();
-
PermissionGrantingStrategy permissionGrantingStrategy = new DefaultPermissionGrantingStrategy(auditLogger);
SpringCacheBasedAclCache myCache = new SpringCacheBasedAclCache(cache, permissionGrantingStrategy,
aclAuthorizationStrategy);
-
MutableAcl acl = new AclImpl(identity, 1L, aclAuthorizationStrategy, auditLogger);
MutableAcl parentAcl = new AclImpl(identityParent, 2L, aclAuthorizationStrategy, auditLogger);
-
acl.setParent(parentAcl);
-
assertThat(realCache).isEmpty();
myCache.putInCache(acl);
assertThat(4).isEqualTo(realCache.size());
-
// Check we can get from cache the same objects we put in
AclImpl aclFromCache = (AclImpl) myCache.getFromCache(1L);
assertThat(aclFromCache).isEqualTo(acl);
diff --git a/acl/src/test/java/org/springframework/security/acls/sid/SidRetrievalStrategyTests.java b/acl/src/test/java/org/springframework/security/acls/sid/SidRetrievalStrategyTests.java
index 0d5d0617a6..5922f8f670 100644
--- a/acl/src/test/java/org/springframework/security/acls/sid/SidRetrievalStrategyTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/sid/SidRetrievalStrategyTests.java
@@ -50,16 +50,13 @@ public class SidRetrievalStrategyTests {
public void correctSidsAreRetrieved() {
SidRetrievalStrategy retrStrategy = new SidRetrievalStrategyImpl();
List sids = retrStrategy.getSids(this.authentication);
-
assertThat(sids).isNotNull();
assertThat(sids).hasSize(4);
assertThat(sids.get(0)).isNotNull();
assertThat(sids.get(0) instanceof PrincipalSid).isTrue();
-
for (int i = 1; i < sids.size(); i++) {
assertThat(sids.get(i) instanceof GrantedAuthoritySid).isTrue();
}
-
assertThat(((PrincipalSid) sids.get(0)).getPrincipal()).isEqualTo("scott");
assertThat(((GrantedAuthoritySid) sids.get(1)).getGrantedAuthority()).isEqualTo("A");
assertThat(((GrantedAuthoritySid) sids.get(2)).getGrantedAuthority()).isEqualTo("B");
@@ -72,7 +69,6 @@ public class SidRetrievalStrategyTests {
List rhAuthorities = AuthorityUtils.createAuthorityList("D");
given(rh.getReachableGrantedAuthorities(anyCollection())).willReturn(rhAuthorities);
SidRetrievalStrategy strat = new SidRetrievalStrategyImpl(rh);
-
List sids = strat.getSids(this.authentication);
assertThat(sids).hasSize(2);
assertThat(sids.get(0)).isNotNull();
diff --git a/acl/src/test/java/org/springframework/security/acls/sid/SidTests.java b/acl/src/test/java/org/springframework/security/acls/sid/SidTests.java
index c9ae5a238b..3b566e8c92 100644
--- a/acl/src/test/java/org/springframework/security/acls/sid/SidTests.java
+++ b/acl/src/test/java/org/springframework/security/acls/sid/SidTests.java
@@ -46,17 +46,14 @@ public class SidTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
new PrincipalSid("");
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
new PrincipalSid("johndoe");
// throws no exception
-
// Check one Authentication-argument constructor
try {
Authentication authentication = null;
@@ -65,7 +62,6 @@ public class SidTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
Authentication authentication = new TestingAuthenticationToken(null, "password");
new PrincipalSid(authentication);
@@ -73,7 +69,6 @@ public class SidTests {
}
catch (IllegalArgumentException expected) {
}
-
Authentication authentication = new TestingAuthenticationToken("johndoe", "password");
new PrincipalSid(authentication);
// throws no exception
@@ -88,25 +83,19 @@ public class SidTests {
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
-
try {
new GrantedAuthoritySid("");
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
-
try {
new GrantedAuthoritySid("ROLE_TEST");
-
}
catch (IllegalArgumentException notExpected) {
fail("It shouldn't have thrown IllegalArgumentException");
}
-
// Check one GrantedAuthority-argument constructor
try {
GrantedAuthority ga = null;
@@ -114,22 +103,17 @@ public class SidTests {
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
-
try {
GrantedAuthority ga = new SimpleGrantedAuthority(null);
new GrantedAuthoritySid(ga);
fail("It should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
-
try {
GrantedAuthority ga = new SimpleGrantedAuthority("ROLE_TEST");
new GrantedAuthoritySid(ga);
-
}
catch (IllegalArgumentException notExpected) {
fail("It shouldn't have thrown IllegalArgumentException");
@@ -140,7 +124,6 @@ public class SidTests {
public void testPrincipalSidEquals() {
Authentication authentication = new TestingAuthenticationToken("johndoe", "password");
Sid principalSid = new PrincipalSid(authentication);
-
assertThat(principalSid.equals(null)).isFalse();
assertThat(principalSid.equals("DIFFERENT_TYPE_OBJECT")).isFalse();
assertThat(principalSid.equals(principalSid)).isTrue();
@@ -155,7 +138,6 @@ public class SidTests {
public void testGrantedAuthoritySidEquals() {
GrantedAuthority ga = new SimpleGrantedAuthority("ROLE_TEST");
Sid gaSid = new GrantedAuthoritySid(ga);
-
assertThat(gaSid.equals(null)).isFalse();
assertThat(gaSid.equals("DIFFERENT_TYPE_OBJECT")).isFalse();
assertThat(gaSid.equals(gaSid)).isTrue();
@@ -170,7 +152,6 @@ public class SidTests {
public void testPrincipalSidHashCode() {
Authentication authentication = new TestingAuthenticationToken("johndoe", "password");
Sid principalSid = new PrincipalSid(authentication);
-
assertThat(principalSid.hashCode()).isEqualTo("johndoe".hashCode());
assertThat(principalSid.hashCode()).isEqualTo(new PrincipalSid("johndoe").hashCode());
assertThat(principalSid.hashCode()).isNotEqualTo(new PrincipalSid("scott").hashCode());
@@ -182,7 +163,6 @@ public class SidTests {
public void testGrantedAuthoritySidHashCode() {
GrantedAuthority ga = new SimpleGrantedAuthority("ROLE_TEST");
Sid gaSid = new GrantedAuthoritySid(ga);
-
assertThat(gaSid.hashCode()).isEqualTo("ROLE_TEST".hashCode());
assertThat(gaSid.hashCode()).isEqualTo(new GrantedAuthoritySid("ROLE_TEST").hashCode());
assertThat(gaSid.hashCode()).isNotEqualTo(new GrantedAuthoritySid("ROLE_TEST_2").hashCode());
@@ -196,10 +176,8 @@ public class SidTests {
PrincipalSid principalSid = new PrincipalSid(authentication);
GrantedAuthority ga = new SimpleGrantedAuthority("ROLE_TEST");
GrantedAuthoritySid gaSid = new GrantedAuthoritySid(ga);
-
assertThat("johndoe".equals(principalSid.getPrincipal())).isTrue();
assertThat("scott".equals(principalSid.getPrincipal())).isFalse();
-
assertThat("ROLE_TEST".equals(gaSid.getGrantedAuthority())).isTrue();
assertThat("ROLE_TEST2".equals(gaSid.getGrantedAuthority())).isFalse();
}
@@ -209,7 +187,6 @@ public class SidTests {
User user = new User("user", "password", Collections.singletonList(new SimpleGrantedAuthority("ROLE_TEST")));
Authentication authentication = new TestingAuthenticationToken(user, "password");
PrincipalSid principalSid = new PrincipalSid(authentication);
-
assertThat("user").isEqualTo(principalSid.getPrincipal());
}
@@ -217,7 +194,6 @@ public class SidTests {
public void getPrincipalWhenPrincipalNotInstanceOfUserDetailsThenReturnsPrincipalName() {
Authentication authentication = new TestingAuthenticationToken("token", "password");
PrincipalSid principalSid = new PrincipalSid(authentication);
-
assertThat("token").isEqualTo(principalSid.getPrincipal());
}
@@ -225,7 +201,6 @@ public class SidTests {
public void getPrincipalWhenCustomAuthenticationPrincipalThenReturnsPrincipalName() {
Authentication authentication = new CustomAuthenticationToken(new CustomToken("token"), null);
PrincipalSid principalSid = new PrincipalSid(authentication);
-
assertThat("token").isEqualTo(principalSid.getPrincipal());
}
diff --git a/aspects/src/test/java/org/springframework/security/access/intercept/aspectj/aspect/AnnotationSecurityAspectTests.java b/aspects/src/test/java/org/springframework/security/access/intercept/aspectj/aspect/AnnotationSecurityAspectTests.java
index f7d81ac042..9c0923a18a 100644
--- a/aspects/src/test/java/org/springframework/security/access/intercept/aspectj/aspect/AnnotationSecurityAspectTests.java
+++ b/aspects/src/test/java/org/springframework/security/access/intercept/aspectj/aspect/AnnotationSecurityAspectTests.java
@@ -111,7 +111,6 @@ public class AnnotationSecurityAspectTests {
@Test(expected = AccessDeniedException.class)
public void internalPrivateCallIsIntercepted() {
SecurityContextHolder.getContext().setAuthentication(this.anne);
-
try {
this.secured.publicCallsPrivate();
fail("Expected AccessDeniedException");
@@ -124,7 +123,6 @@ public class AnnotationSecurityAspectTests {
@Test(expected = AccessDeniedException.class)
public void protectedMethodIsIntercepted() {
SecurityContextHolder.getContext().setAuthentication(this.anne);
-
this.secured.protectedMethod();
}
diff --git a/cas/src/test/java/org/springframework/security/cas/authentication/AbstractStatelessTicketCacheTests.java b/cas/src/test/java/org/springframework/security/cas/authentication/AbstractStatelessTicketCacheTests.java
index d9248e6eec..7f1233b7d5 100644
--- a/cas/src/test/java/org/springframework/security/cas/authentication/AbstractStatelessTicketCacheTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/authentication/AbstractStatelessTicketCacheTests.java
@@ -35,11 +35,9 @@ public abstract class AbstractStatelessTicketCacheTests {
protected CasAuthenticationToken getToken() {
List proxyList = new ArrayList<>();
proxyList.add("https://localhost/newPortal/login/cas");
-
User user = new User("rod", "password", true, true, true, true,
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"));
final Assertion assertion = new AssertionImpl("rod");
-
return new CasAuthenticationToken("key", user, "ST-0-ER94xMJmn6pha35CQRoZ",
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"), user, assertion);
}
diff --git a/cas/src/test/java/org/springframework/security/cas/authentication/CasAuthenticationProviderTests.java b/cas/src/test/java/org/springframework/security/cas/authentication/CasAuthenticationProviderTests.java
index 1d680d1683..d5bef694f1 100644
--- a/cas/src/test/java/org/springframework/security/cas/authentication/CasAuthenticationProviderTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/authentication/CasAuthenticationProviderTests.java
@@ -71,7 +71,6 @@ public class CasAuthenticationProviderTests {
final ServiceProperties serviceProperties = new ServiceProperties();
serviceProperties.setSendRenew(false);
serviceProperties.setService("http://test.com");
-
return serviceProperties;
}
@@ -80,27 +79,20 @@ public class CasAuthenticationProviderTests {
CasAuthenticationProvider cap = new CasAuthenticationProvider();
cap.setAuthenticationUserDetailsService(new MockAuthoritiesPopulator());
cap.setKey("qwerty");
-
StatelessTicketCache cache = new MockStatelessTicketCache();
cap.setStatelessTicketCache(cache);
cap.setServiceProperties(makeServiceProperties());
-
cap.setTicketValidator(new MockTicketValidator(true));
cap.afterPropertiesSet();
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
CasAuthenticationFilter.CAS_STATEFUL_IDENTIFIER, "ST-123");
token.setDetails("details");
-
Authentication result = cap.authenticate(token);
-
// Confirm ST-123 was NOT added to the cache
assertThat(cache.getByTicketId("ST-456") == null).isTrue();
-
if (!(result instanceof CasAuthenticationToken)) {
fail("Should have returned a CasAuthenticationToken");
}
-
CasAuthenticationToken casResult = (CasAuthenticationToken) result;
assertThat(casResult.getPrincipal()).isEqualTo(makeUserDetailsFromAuthoritiesPopulator());
assertThat(casResult.getCredentials()).isEqualTo("ST-123");
@@ -108,11 +100,9 @@ public class CasAuthenticationProviderTests {
assertThat(casResult.getAuthorities()).contains(new SimpleGrantedAuthority("ROLE_B"));
assertThat(casResult.getKeyHash()).isEqualTo(cap.getKey().hashCode());
assertThat(casResult.getDetails()).isEqualTo("details");
-
// Now confirm the CasAuthenticationToken is automatically re-accepted.
// To ensure TicketValidator not called again, set it to deliver an exception...
cap.setTicketValidator(new MockTicketValidator(false));
-
Authentication laterResult = cap.authenticate(result);
assertThat(laterResult).isEqualTo(result);
}
@@ -122,34 +112,26 @@ public class CasAuthenticationProviderTests {
CasAuthenticationProvider cap = new CasAuthenticationProvider();
cap.setAuthenticationUserDetailsService(new MockAuthoritiesPopulator());
cap.setKey("qwerty");
-
StatelessTicketCache cache = new MockStatelessTicketCache();
cap.setStatelessTicketCache(cache);
cap.setTicketValidator(new MockTicketValidator(true));
cap.setServiceProperties(makeServiceProperties());
cap.afterPropertiesSet();
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
CasAuthenticationFilter.CAS_STATELESS_IDENTIFIER, "ST-456");
token.setDetails("details");
-
Authentication result = cap.authenticate(token);
-
// Confirm ST-456 was added to the cache
assertThat(cache.getByTicketId("ST-456") != null).isTrue();
-
if (!(result instanceof CasAuthenticationToken)) {
fail("Should have returned a CasAuthenticationToken");
}
-
assertThat(result.getPrincipal()).isEqualTo(makeUserDetailsFromAuthoritiesPopulator());
assertThat(result.getCredentials()).isEqualTo("ST-456");
assertThat(result.getDetails()).isEqualTo("details");
-
// Now try to authenticate again. To ensure TicketValidator not
// called again, set it to deliver an exception...
cap.setTicketValidator(new MockTicketValidator(false));
-
// Previously created UsernamePasswordAuthenticationToken is OK
Authentication newResult = cap.authenticate(token);
assertThat(newResult.getPrincipal()).isEqualTo(makeUserDetailsFromAuthoritiesPopulator());
@@ -163,22 +145,17 @@ public class CasAuthenticationProviderTests {
given(details.getServiceUrl()).willReturn(serviceUrl);
TicketValidator validator = mock(TicketValidator.class);
given(validator.validate(any(String.class), any(String.class))).willReturn(new AssertionImpl("rod"));
-
ServiceProperties serviceProperties = makeServiceProperties();
serviceProperties.setAuthenticateAllArtifacts(true);
-
CasAuthenticationProvider cap = new CasAuthenticationProvider();
cap.setAuthenticationUserDetailsService(new MockAuthoritiesPopulator());
cap.setKey("qwerty");
-
cap.setTicketValidator(validator);
cap.setServiceProperties(serviceProperties);
cap.afterPropertiesSet();
-
String ticket = "ST-456";
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
CasAuthenticationFilter.CAS_STATELESS_IDENTIFIER, ticket);
-
Authentication result = cap.authenticate(token);
}
@@ -189,40 +166,31 @@ public class CasAuthenticationProviderTests {
given(details.getServiceUrl()).willReturn(serviceUrl);
TicketValidator validator = mock(TicketValidator.class);
given(validator.validate(any(String.class), any(String.class))).willReturn(new AssertionImpl("rod"));
-
ServiceProperties serviceProperties = makeServiceProperties();
serviceProperties.setAuthenticateAllArtifacts(true);
-
CasAuthenticationProvider cap = new CasAuthenticationProvider();
cap.setAuthenticationUserDetailsService(new MockAuthoritiesPopulator());
cap.setKey("qwerty");
-
cap.setTicketValidator(validator);
cap.setServiceProperties(serviceProperties);
cap.afterPropertiesSet();
-
String ticket = "ST-456";
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
CasAuthenticationFilter.CAS_STATELESS_IDENTIFIER, ticket);
-
Authentication result = cap.authenticate(token);
verify(validator).validate(ticket, serviceProperties.getService());
-
serviceProperties.setAuthenticateAllArtifacts(true);
result = cap.authenticate(token);
verify(validator, times(2)).validate(ticket, serviceProperties.getService());
-
token.setDetails(details);
result = cap.authenticate(token);
verify(validator).validate(ticket, serviceUrl);
-
serviceProperties.setAuthenticateAllArtifacts(false);
serviceProperties.setService(null);
cap.setServiceProperties(serviceProperties);
cap.afterPropertiesSet();
result = cap.authenticate(token);
verify(validator, times(2)).validate(ticket, serviceUrl);
-
token.setDetails(new WebAuthenticationDetails(new MockHttpServletRequest()));
try {
cap.authenticate(token);
@@ -230,7 +198,6 @@ public class CasAuthenticationProviderTests {
}
catch (IllegalStateException success) {
}
-
cap.setServiceProperties(null);
cap.afterPropertiesSet();
try {
@@ -246,16 +213,13 @@ public class CasAuthenticationProviderTests {
CasAuthenticationProvider cap = new CasAuthenticationProvider();
cap.setAuthenticationUserDetailsService(new MockAuthoritiesPopulator());
cap.setKey("qwerty");
-
StatelessTicketCache cache = new MockStatelessTicketCache();
cap.setStatelessTicketCache(cache);
cap.setTicketValidator(new MockTicketValidator(true));
cap.setServiceProperties(makeServiceProperties());
cap.afterPropertiesSet();
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(
CasAuthenticationFilter.CAS_STATEFUL_IDENTIFIER, "");
-
cap.authenticate(token);
}
@@ -265,16 +229,13 @@ public class CasAuthenticationProviderTests {
CasAuthenticationProvider cap = new CasAuthenticationProvider();
cap.setAuthenticationUserDetailsService(new MockAuthoritiesPopulator());
cap.setKey("qwerty");
-
StatelessTicketCache cache = new MockStatelessTicketCache();
cap.setStatelessTicketCache(cache);
cap.setTicketValidator(new MockTicketValidator(true));
cap.setServiceProperties(makeServiceProperties());
cap.afterPropertiesSet();
-
CasAuthenticationToken token = new CasAuthenticationToken("WRONG_KEY", makeUserDetails(), "credentials",
AuthorityUtils.createAuthorityList("XX"), makeUserDetails(), assertion);
-
cap.authenticate(token);
}
@@ -329,7 +290,6 @@ public class CasAuthenticationProviderTests {
cap.setTicketValidator(new MockTicketValidator(true));
cap.setServiceProperties(makeServiceProperties());
cap.afterPropertiesSet();
-
// TODO disabled because why do we need to expose this?
// assertThat(cap.getUserDetailsService() != null).isTrue();
assertThat(cap.getKey()).isEqualTo("qwerty");
@@ -346,10 +306,8 @@ public class CasAuthenticationProviderTests {
cap.setTicketValidator(new MockTicketValidator(true));
cap.setServiceProperties(makeServiceProperties());
cap.afterPropertiesSet();
-
TestingAuthenticationToken token = new TestingAuthenticationToken("user", "password", "ROLE_A");
assertThat(cap.supports(TestingAuthenticationToken.class)).isFalse();
-
// Try it anyway
assertThat(cap.authenticate(token)).isNull();
}
@@ -363,7 +321,6 @@ public class CasAuthenticationProviderTests {
cap.setTicketValidator(new MockTicketValidator(true));
cap.setServiceProperties(makeServiceProperties());
cap.afterPropertiesSet();
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("some_normal_user",
"password", AuthorityUtils.createAuthorityList("ROLE_A"));
assertThat(cap.authenticate(token)).isNull();
diff --git a/cas/src/test/java/org/springframework/security/cas/authentication/CasAuthenticationTokenTests.java b/cas/src/test/java/org/springframework/security/cas/authentication/CasAuthenticationTokenTests.java
index 2de2cc4ea6..21278296c5 100644
--- a/cas/src/test/java/org/springframework/security/cas/authentication/CasAuthenticationTokenTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/authentication/CasAuthenticationTokenTests.java
@@ -59,35 +59,30 @@ public class CasAuthenticationTokenTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
new CasAuthenticationToken("key", null, "Password", this.ROLES, makeUserDetails(), assertion);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
new CasAuthenticationToken("key", makeUserDetails(), null, this.ROLES, makeUserDetails(), assertion);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
new CasAuthenticationToken("key", makeUserDetails(), "Password", this.ROLES, makeUserDetails(), null);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
new CasAuthenticationToken("key", makeUserDetails(), "Password", this.ROLES, null, assertion);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
new CasAuthenticationToken("key", makeUserDetails(), "Password",
AuthorityUtils.createAuthorityList("ROLE_1", null), makeUserDetails(), assertion);
@@ -106,13 +101,10 @@ public class CasAuthenticationTokenTests {
@Test
public void testEqualsWhenEqual() {
final Assertion assertion = new AssertionImpl("test");
-
CasAuthenticationToken token1 = new CasAuthenticationToken("key", makeUserDetails(), "Password", this.ROLES,
makeUserDetails(), assertion);
-
CasAuthenticationToken token2 = new CasAuthenticationToken("key", makeUserDetails(), "Password", this.ROLES,
makeUserDetails(), assertion);
-
assertThat(token2).isEqualTo(token1);
}
@@ -138,30 +130,24 @@ public class CasAuthenticationTokenTests {
fail("Should have thrown NoSuchMethodException");
}
catch (NoSuchMethodException expected) {
-
}
}
@Test
public void testNotEqualsDueToAbstractParentEqualsCheck() {
final Assertion assertion = new AssertionImpl("test");
-
CasAuthenticationToken token1 = new CasAuthenticationToken("key", makeUserDetails(), "Password", this.ROLES,
makeUserDetails(), assertion);
-
CasAuthenticationToken token2 = new CasAuthenticationToken("key", makeUserDetails("OTHER_NAME"), "Password",
this.ROLES, makeUserDetails(), assertion);
-
assertThat(!token1.equals(token2)).isTrue();
}
@Test
public void testNotEqualsDueToDifferentAuthenticationClass() {
final Assertion assertion = new AssertionImpl("test");
-
CasAuthenticationToken token1 = new CasAuthenticationToken("key", makeUserDetails(), "Password", this.ROLES,
makeUserDetails(), assertion);
-
UsernamePasswordAuthenticationToken token2 = new UsernamePasswordAuthenticationToken("Test", "Password",
this.ROLES);
assertThat(!token1.equals(token2)).isTrue();
@@ -170,13 +156,10 @@ public class CasAuthenticationTokenTests {
@Test
public void testNotEqualsDueToKey() {
final Assertion assertion = new AssertionImpl("test");
-
CasAuthenticationToken token1 = new CasAuthenticationToken("key", makeUserDetails(), "Password", this.ROLES,
makeUserDetails(), assertion);
-
CasAuthenticationToken token2 = new CasAuthenticationToken("DIFFERENT_KEY", makeUserDetails(), "Password",
this.ROLES, makeUserDetails(), assertion);
-
assertThat(!token1.equals(token2)).isTrue();
}
@@ -184,13 +167,10 @@ public class CasAuthenticationTokenTests {
public void testNotEqualsDueToAssertion() {
final Assertion assertion = new AssertionImpl("test");
final Assertion assertion2 = new AssertionImpl("test");
-
CasAuthenticationToken token1 = new CasAuthenticationToken("key", makeUserDetails(), "Password", this.ROLES,
makeUserDetails(), assertion);
-
CasAuthenticationToken token2 = new CasAuthenticationToken("key", makeUserDetails(), "Password", this.ROLES,
makeUserDetails(), assertion2);
-
assertThat(!token1.equals(token2)).isTrue();
}
diff --git a/cas/src/test/java/org/springframework/security/cas/authentication/EhCacheBasedTicketCacheTests.java b/cas/src/test/java/org/springframework/security/cas/authentication/EhCacheBasedTicketCacheTests.java
index e571254522..513158a479 100644
--- a/cas/src/test/java/org/springframework/security/cas/authentication/EhCacheBasedTicketCacheTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/authentication/EhCacheBasedTicketCacheTests.java
@@ -52,17 +52,13 @@ public class EhCacheBasedTicketCacheTests extends AbstractStatelessTicketCacheTe
EhCacheBasedTicketCache cache = new EhCacheBasedTicketCache();
cache.setCache(cacheManager.getCache("castickets"));
cache.afterPropertiesSet();
-
final CasAuthenticationToken token = getToken();
-
// Check it gets stored in the cache
cache.putTicketInCache(token);
assertThat(cache.getByTicketId("ST-0-ER94xMJmn6pha35CQRoZ")).isEqualTo(token);
-
// Check it gets removed from the cache
cache.removeTicketFromCache(getToken());
assertThat(cache.getByTicketId("ST-0-ER94xMJmn6pha35CQRoZ")).isNull();
-
// Check it doesn't return values for null or unknown service tickets
assertThat(cache.getByTicketId(null)).isNull();
assertThat(cache.getByTicketId("UNKNOWN_SERVICE_TICKET")).isNull();
@@ -71,15 +67,12 @@ public class EhCacheBasedTicketCacheTests extends AbstractStatelessTicketCacheTe
@Test
public void testStartupDetectsMissingCache() throws Exception {
EhCacheBasedTicketCache cache = new EhCacheBasedTicketCache();
-
try {
cache.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
-
Ehcache myCache = cacheManager.getCache("castickets");
cache.setCache(myCache);
assertThat(cache.getCache()).isEqualTo(myCache);
diff --git a/cas/src/test/java/org/springframework/security/cas/authentication/SpringCacheBasedTicketCacheTests.java b/cas/src/test/java/org/springframework/security/cas/authentication/SpringCacheBasedTicketCacheTests.java
index b9bfffcd51..607ed39260 100644
--- a/cas/src/test/java/org/springframework/security/cas/authentication/SpringCacheBasedTicketCacheTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/authentication/SpringCacheBasedTicketCacheTests.java
@@ -44,17 +44,13 @@ public class SpringCacheBasedTicketCacheTests extends AbstractStatelessTicketCac
@Test
public void testCacheOperation() throws Exception {
SpringCacheBasedTicketCache cache = new SpringCacheBasedTicketCache(cacheManager.getCache("castickets"));
-
final CasAuthenticationToken token = getToken();
-
// Check it gets stored in the cache
cache.putTicketInCache(token);
assertThat(cache.getByTicketId("ST-0-ER94xMJmn6pha35CQRoZ")).isEqualTo(token);
-
// Check it gets removed from the cache
cache.removeTicketFromCache(getToken());
assertThat(cache.getByTicketId("ST-0-ER94xMJmn6pha35CQRoZ")).isNull();
-
// Check it doesn't return values for null or unknown service tickets
assertThat(cache.getByTicketId(null)).isNull();
assertThat(cache.getByTicketId("UNKNOWN_SERVICE_TICKET")).isNull();
diff --git a/cas/src/test/java/org/springframework/security/cas/jackson2/CasAuthenticationTokenMixinTests.java b/cas/src/test/java/org/springframework/security/cas/jackson2/CasAuthenticationTokenMixinTests.java
index 7ed182ccc9..4eed00cbe9 100644
--- a/cas/src/test/java/org/springframework/security/cas/jackson2/CasAuthenticationTokenMixinTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/jackson2/CasAuthenticationTokenMixinTests.java
@@ -74,7 +74,6 @@ public class CasAuthenticationTokenMixinTests {
+ "\"authorities\": " + AUTHORITIES_SET_JSON
+ "}";
// @formatter:on
-
private static final String CAS_TOKEN_JSON = "{"
+ "\"@class\": \"org.springframework.security.cas.authentication.CasAuthenticationToken\", "
+ "\"keyHash\": " + KEY.hashCode() + "," + "\"principal\": " + USER_JSON + ", " + "\"credentials\": "
diff --git a/cas/src/test/java/org/springframework/security/cas/web/CasAuthenticationEntryPointTests.java b/cas/src/test/java/org/springframework/security/cas/web/CasAuthenticationEntryPointTests.java
index 15cb9df2c4..825542cb79 100644
--- a/cas/src/test/java/org/springframework/security/cas/web/CasAuthenticationEntryPointTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/web/CasAuthenticationEntryPointTests.java
@@ -38,7 +38,6 @@ public class CasAuthenticationEntryPointTests {
public void testDetectsMissingLoginFormUrl() throws Exception {
CasAuthenticationEntryPoint ep = new CasAuthenticationEntryPoint();
ep.setServiceProperties(new ServiceProperties());
-
try {
ep.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
@@ -52,7 +51,6 @@ public class CasAuthenticationEntryPointTests {
public void testDetectsMissingServiceProperties() throws Exception {
CasAuthenticationEntryPoint ep = new CasAuthenticationEntryPoint();
ep.setLoginUrl("https://cas/login");
-
try {
ep.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
@@ -67,7 +65,6 @@ public class CasAuthenticationEntryPointTests {
CasAuthenticationEntryPoint ep = new CasAuthenticationEntryPoint();
ep.setLoginUrl("https://cas/login");
assertThat(ep.getLoginUrl()).isEqualTo("https://cas/login");
-
ep.setServiceProperties(new ServiceProperties());
assertThat(ep.getServiceProperties() != null).isTrue();
}
@@ -77,19 +74,14 @@ public class CasAuthenticationEntryPointTests {
ServiceProperties sp = new ServiceProperties();
sp.setSendRenew(false);
sp.setService("https://mycompany.com/bigWebApp/login/cas");
-
CasAuthenticationEntryPoint ep = new CasAuthenticationEntryPoint();
ep.setLoginUrl("https://cas/login");
ep.setServiceProperties(sp);
-
MockHttpServletRequest request = new MockHttpServletRequest();
request.setRequestURI("/some_path");
-
MockHttpServletResponse response = new MockHttpServletResponse();
-
ep.afterPropertiesSet();
ep.commence(request, response, null);
-
assertThat(
"https://cas/login?service=" + URLEncoder.encode("https://mycompany.com/bigWebApp/login/cas", "UTF-8"))
.isEqualTo(response.getRedirectedUrl());
@@ -100,16 +92,12 @@ public class CasAuthenticationEntryPointTests {
ServiceProperties sp = new ServiceProperties();
sp.setSendRenew(true);
sp.setService("https://mycompany.com/bigWebApp/login/cas");
-
CasAuthenticationEntryPoint ep = new CasAuthenticationEntryPoint();
ep.setLoginUrl("https://cas/login");
ep.setServiceProperties(sp);
-
MockHttpServletRequest request = new MockHttpServletRequest();
request.setRequestURI("/some_path");
-
MockHttpServletResponse response = new MockHttpServletResponse();
-
ep.afterPropertiesSet();
ep.commence(request, response, null);
assertThat("https://cas/login?service="
diff --git a/cas/src/test/java/org/springframework/security/cas/web/CasAuthenticationFilterTests.java b/cas/src/test/java/org/springframework/security/cas/web/CasAuthenticationFilterTests.java
index e37c07619f..e704ecd3ff 100644
--- a/cas/src/test/java/org/springframework/security/cas/web/CasAuthenticationFilterTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/web/CasAuthenticationFilterTests.java
@@ -69,12 +69,9 @@ public class CasAuthenticationFilterTests {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setServletPath("/login/cas");
request.addParameter("ticket", "ST-0-ER94xMJmn6pha35CQRoZ");
-
CasAuthenticationFilter filter = new CasAuthenticationFilter();
filter.setAuthenticationManager((a) -> a);
-
assertThat(filter.requiresAuthentication(request, new MockHttpServletResponse())).isTrue();
-
Authentication result = filter.attemptAuthentication(request, new MockHttpServletResponse());
assertThat(result != null).isTrue();
}
@@ -85,7 +82,6 @@ public class CasAuthenticationFilterTests {
filter.setAuthenticationManager((a) -> {
throw new BadCredentialsException("Rejected");
});
-
filter.attemptAuthentication(new MockHttpServletRequest(), new MockHttpServletResponse());
}
@@ -96,7 +92,6 @@ public class CasAuthenticationFilterTests {
filter.setFilterProcessesUrl(url);
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
-
request.setServletPath(url);
assertThat(filter.requiresAuthentication(request, response)).isTrue();
}
@@ -106,7 +101,6 @@ public class CasAuthenticationFilterTests {
CasAuthenticationFilter filter = new CasAuthenticationFilter();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
-
request.setServletPath("/pgtCallback");
assertThat(filter.requiresAuthentication(request, response)).isFalse();
filter.setProxyReceptorUrl(request.getServletPath());
@@ -121,17 +115,14 @@ public class CasAuthenticationFilterTests {
public void testRequiresAuthenticationAuthAll() {
ServiceProperties properties = new ServiceProperties();
properties.setAuthenticateAllArtifacts(true);
-
String url = "/login/cas";
CasAuthenticationFilter filter = new CasAuthenticationFilter();
filter.setFilterProcessesUrl(url);
filter.setServiceProperties(properties);
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
-
request.setServletPath(url);
assertThat(filter.requiresAuthentication(request, response)).isTrue();
-
request.setServletPath("/other");
assertThat(filter.requiresAuthentication(request, response)).isFalse();
request.setParameter(properties.getArtifactParameter(), "value");
@@ -151,7 +142,6 @@ public class CasAuthenticationFilterTests {
CasAuthenticationFilter filter = new CasAuthenticationFilter();
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
-
request.setServletPath("/pgtCallback");
filter.setProxyGrantingTicketStorage(mock(ProxyGrantingTicketStorage.class));
filter.setProxyReceptorUrl(request.getServletPath());
@@ -171,20 +161,17 @@ public class CasAuthenticationFilterTests {
request.setServletPath("/authenticate");
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain chain = mock(FilterChain.class);
-
CasAuthenticationFilter filter = new CasAuthenticationFilter();
filter.setServiceProperties(serviceProperties);
filter.setAuthenticationSuccessHandler(successHandler);
filter.setProxyGrantingTicketStorage(mock(ProxyGrantingTicketStorage.class));
filter.setAuthenticationManager(manager);
filter.afterPropertiesSet();
-
filter.doFilter(request, response, chain);
assertThat(SecurityContextHolder.getContext().getAuthentication()).isNotNull()
.withFailMessage("Authentication should not be null");
verify(chain).doFilter(request, response);
verifyZeroInteractions(successHandler);
-
// validate for when the filterProcessUrl matches
filter.setFilterProcessesUrl(request.getServletPath());
SecurityContextHolder.clearContext();
@@ -200,11 +187,9 @@ public class CasAuthenticationFilterTests {
MockHttpServletRequest request = new MockHttpServletRequest();
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain chain = mock(FilterChain.class);
-
request.setServletPath("/pgtCallback");
filter.setProxyGrantingTicketStorage(mock(ProxyGrantingTicketStorage.class));
filter.setProxyReceptorUrl(request.getServletPath());
-
filter.doFilter(request, response, chain);
verifyZeroInteractions(chain);
}
diff --git a/cas/src/test/java/org/springframework/security/cas/web/ServicePropertiesTests.java b/cas/src/test/java/org/springframework/security/cas/web/ServicePropertiesTests.java
index 47bd7db94b..cc61ac93be 100644
--- a/cas/src/test/java/org/springframework/security/cas/web/ServicePropertiesTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/web/ServicePropertiesTests.java
@@ -68,10 +68,8 @@ public class ServicePropertiesTests {
assertThat(sp.getArtifactParameter()).isEqualTo("notticket");
sp.setServiceParameter("notservice");
assertThat(sp.getServiceParameter()).isEqualTo("notservice");
-
sp.setService("https://mycompany.com/service");
assertThat(sp.getService()).isEqualTo("https://mycompany.com/service");
-
sp.afterPropertiesSet();
}
}
diff --git a/cas/src/test/java/org/springframework/security/cas/web/authentication/DefaultServiceAuthenticationDetailsTests.java b/cas/src/test/java/org/springframework/security/cas/web/authentication/DefaultServiceAuthenticationDetailsTests.java
index a292662cc4..d7d95ea3a7 100644
--- a/cas/src/test/java/org/springframework/security/cas/web/authentication/DefaultServiceAuthenticationDetailsTests.java
+++ b/cas/src/test/java/org/springframework/security/cas/web/authentication/DefaultServiceAuthenticationDetailsTests.java
@@ -55,7 +55,6 @@ public class DefaultServiceAuthenticationDetailsTests {
this.request.setRequestURI("/cas-sample/secure/");
this.artifactPattern = DefaultServiceAuthenticationDetails
.createArtifactPattern(ServiceProperties.DEFAULT_CAS_ARTIFACT_PARAMETER);
-
}
@After
diff --git a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/HelloRSocketITests.java b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/HelloRSocketITests.java
index a6809b8574..7262646c80 100644
--- a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/HelloRSocketITests.java
+++ b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/HelloRSocketITests.java
@@ -86,7 +86,6 @@ public class HelloRSocketITests {
public void retrieveMonoWhenSecureThenDenied() throws Exception {
this.requester = RSocketRequester.builder().rsocketStrategies(this.handler.getRSocketStrategies())
.connectTcp("localhost", this.server.address().getPort()).block();
-
String data = "rob";
assertThatCode(() -> this.requester.route("secure.retrieve-mono").data(data).retrieveMono(String.class).block())
.isNotNull();
@@ -106,7 +105,6 @@ public class HelloRSocketITests {
String hiRob = this.requester.route("secure.retrieve-mono")
.metadata(credentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE).data(data)
.retrieveMono(String.class).block();
-
assertThat(hiRob).isEqualTo("Hi rob");
assertThat(this.controller.payloads).containsOnly(data);
}
diff --git a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/JwtITests.java b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/JwtITests.java
index 12e27e88c9..f8b30d7e51 100644
--- a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/JwtITests.java
+++ b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/JwtITests.java
@@ -102,9 +102,7 @@ public class JwtITests {
this.requester = requester()
.setupMetadata(credentials.getToken(), BearerTokenMetadata.BEARER_AUTHENTICATION_MIME_TYPE)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
String hiRob = this.requester.route("secure.retrieve-mono").data("rob").retrieveMono(String.class).block();
-
assertThat(hiRob).isEqualTo("Hi rob");
}
@@ -112,14 +110,11 @@ public class JwtITests {
public void routeWhenAuthenticationBearerThenAuthorized() {
MimeType authenticationMimeType = MimeTypeUtils
.parseMimeType(WellKnownMimeType.MESSAGE_RSOCKET_AUTHENTICATION.getString());
-
BearerTokenMetadata credentials = new BearerTokenMetadata("token");
given(this.decoder.decode(any())).willReturn(Mono.just(jwt()));
this.requester = requester().setupMetadata(credentials, authenticationMimeType)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
String hiRob = this.requester.route("secure.retrieve-mono").data("rob").retrieveMono(String.class).block();
-
assertThat(hiRob).isEqualTo("Hi rob");
}
diff --git a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/RSocketMessageHandlerConnectionITests.java b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/RSocketMessageHandlerConnectionITests.java
index 1a73888c74..ecacae6b21 100644
--- a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/RSocketMessageHandlerConnectionITests.java
+++ b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/RSocketMessageHandlerConnectionITests.java
@@ -94,9 +94,7 @@ public class RSocketMessageHandlerConnectionITests {
UsernamePasswordMetadata credentials = new UsernamePasswordMetadata("user", "password");
this.requester = requester().setupMetadata(credentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
String hiRob = this.requester.route("secure.retrieve-mono").data("rob").retrieveMono(String.class).block();
-
assertThat(hiRob).isEqualTo("Hi rob");
}
@@ -105,7 +103,6 @@ public class RSocketMessageHandlerConnectionITests {
UsernamePasswordMetadata credentials = new UsernamePasswordMetadata("user", "password");
this.requester = requester().setupMetadata(credentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
assertThatCode(() -> this.requester.route("secure.admin.retrieve-mono").data("data").retrieveMono(String.class)
.block()).isInstanceOf(ApplicationErrorException.class);
}
@@ -116,12 +113,10 @@ public class RSocketMessageHandlerConnectionITests {
this.requester = requester()
.setupMetadata(connectCredentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
String hiRob = this.requester.route("secure.admin.retrieve-mono")
.metadata(new UsernamePasswordMetadata("admin", "password"),
UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.data("rob").retrieveMono(String.class).block();
-
assertThat(hiRob).isEqualTo("Hi rob");
}
@@ -131,12 +126,10 @@ public class RSocketMessageHandlerConnectionITests {
this.requester = requester()
.setupMetadata(connectCredentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
String hiUser = this.requester.route("secure.authority.retrieve-mono")
.metadata(new UsernamePasswordMetadata("admin", "password"),
UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.data("Felipe").retrieveMono(String.class).block();
-
assertThat(hiUser).isEqualTo("Hi Felipe");
}
@@ -144,7 +137,6 @@ public class RSocketMessageHandlerConnectionITests {
public void connectWhenNotAuthenticated() {
this.requester = requester().connectTcp(this.server.address().getHostName(), this.server.address().getPort())
.block();
-
assertThatCode(() -> this.requester.route("retrieve-mono").data("data").retrieveMono(String.class).block())
.isNotNull();
// FIXME: https://github.com/rsocket/rsocket-java/issues/686
@@ -156,7 +148,6 @@ public class RSocketMessageHandlerConnectionITests {
UsernamePasswordMetadata credentials = new UsernamePasswordMetadata("evil", "password");
this.requester = requester().setupMetadata(credentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
assertThatCode(() -> this.requester.route("retrieve-mono").data("data").retrieveMono(String.class).block())
.isNotNull();
// FIXME: https://github.com/rsocket/rsocket-java/issues/686
@@ -168,7 +159,6 @@ public class RSocketMessageHandlerConnectionITests {
UsernamePasswordMetadata credentials = new UsernamePasswordMetadata("user", "password");
this.requester = requester().setupMetadata(credentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
assertThatCode(() -> this.requester.route("prohibit").data("data").retrieveMono(String.class).block())
.isInstanceOf(ApplicationErrorException.class);
}
@@ -178,9 +168,7 @@ public class RSocketMessageHandlerConnectionITests {
UsernamePasswordMetadata credentials = new UsernamePasswordMetadata("user", "password");
this.requester = requester().setupMetadata(credentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
String hiRob = this.requester.route("anyroute").data("rob").retrieveMono(String.class).block();
-
assertThat(hiRob).isEqualTo("Hi rob");
}
@@ -189,9 +177,7 @@ public class RSocketMessageHandlerConnectionITests {
UsernamePasswordMetadata credentials = new UsernamePasswordMetadata("admin", "password");
this.requester = requester().setupMetadata(credentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE)
.connectTcp(this.server.address().getHostName(), this.server.address().getPort()).block();
-
String hiEbert = this.requester.route("management.users").data("admin").retrieveMono(String.class).block();
-
assertThat(hiEbert).isEqualTo("Hi admin");
}
diff --git a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/RSocketMessageHandlerITests.java b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/RSocketMessageHandlerITests.java
index eb22782c00..9b4f37a09d 100644
--- a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/RSocketMessageHandlerITests.java
+++ b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/RSocketMessageHandlerITests.java
@@ -79,7 +79,6 @@ public class RSocketMessageHandlerITests {
this.server = RSocketFactory.receive().frameDecoder(PayloadDecoder.ZERO_COPY)
.addSocketAcceptorPlugin(this.interceptor).acceptor(this.handler.responder())
.transport(TcpServerTransport.create("localhost", 0)).start().block();
-
this.requester = RSocketRequester.builder()
// .rsocketFactory((factory) ->
// factory.addRequesterPlugin(payloadInterceptor))
@@ -99,7 +98,6 @@ public class RSocketMessageHandlerITests {
String data = "rob";
assertThatCode(() -> this.requester.route("secure.retrieve-mono").data(data).retrieveMono(String.class).block())
.isInstanceOf(ApplicationErrorException.class).hasMessageContaining("Access Denied");
-
assertThat(this.controller.payloads).isEmpty();
}
@@ -111,7 +109,6 @@ public class RSocketMessageHandlerITests {
.metadata(credentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE).data(data)
.retrieveMono(String.class).block()).isInstanceOf(ApplicationErrorException.class)
.hasMessageContaining("Invalid Credentials");
-
assertThat(this.controller.payloads).isEmpty();
}
@@ -122,7 +119,6 @@ public class RSocketMessageHandlerITests {
String hiRob = this.requester.route("secure.retrieve-mono")
.metadata(credentials, UsernamePasswordMetadata.BASIC_AUTHENTICATION_MIME_TYPE).data(data)
.retrieveMono(String.class).block();
-
assertThat(hiRob).isEqualTo("Hi rob");
assertThat(this.controller.payloads).containsOnly(data);
}
@@ -131,7 +127,6 @@ public class RSocketMessageHandlerITests {
public void retrieveMonoWhenPublicThenGranted() throws Exception {
String data = "rob";
String hiRob = this.requester.route("retrieve-mono").data(data).retrieveMono(String.class).block();
-
assertThat(hiRob).isEqualTo("Hi rob");
assertThat(this.controller.payloads).containsOnly(data);
}
@@ -142,7 +137,6 @@ public class RSocketMessageHandlerITests {
assertThatCode(() -> this.requester.route("secure.retrieve-flux").data(data, String.class)
.retrieveFlux(String.class).collectList().block()).isInstanceOf(ApplicationErrorException.class)
.hasMessageContaining("Access Denied");
-
assertThat(this.controller.payloads).isEmpty();
}
@@ -151,7 +145,6 @@ public class RSocketMessageHandlerITests {
Flux data = Flux.just("a", "b", "c");
List hi = this.requester.route("retrieve-flux").data(data, String.class).retrieveFlux(String.class)
.collectList().block();
-
assertThat(hi).containsOnly("hello a", "hello b", "hello c");
assertThat(this.controller.payloads).containsOnlyElementsOf(data.collectList().block());
}
@@ -162,7 +155,6 @@ public class RSocketMessageHandlerITests {
assertThatCode(
() -> this.requester.route("secure.hello").data(data).retrieveFlux(String.class).collectList().block())
.isInstanceOf(ApplicationErrorException.class).hasMessageContaining("Access Denied");
-
assertThat(this.controller.payloads).isEmpty();
}
@@ -170,7 +162,6 @@ public class RSocketMessageHandlerITests {
public void sendWhenSecureThenDenied() throws Exception {
String data = "hi";
this.requester.route("secure.send").data(data).send().block();
-
assertThat(this.controller.payloads).isEmpty();
}
@@ -248,7 +239,6 @@ public class RSocketMessageHandlerITests {
@MessageMapping({ "secure.send", "send" })
Mono send(Mono payload) {
return payload.doOnNext(this::add).then(Mono.fromRunnable(() -> doNotifyAll()));
-
}
private synchronized void doNotifyAll() {
diff --git a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/SimpleAuthenticationITests.java b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/SimpleAuthenticationITests.java
index fc3d4e01ed..29f1c3b495 100644
--- a/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/SimpleAuthenticationITests.java
+++ b/config/src/integration-test/java/org/springframework/security/config/annotation/rsocket/SimpleAuthenticationITests.java
@@ -92,7 +92,6 @@ public class SimpleAuthenticationITests {
public void retrieveMonoWhenSecureThenDenied() throws Exception {
this.requester = RSocketRequester.builder().rsocketStrategies(this.handler.getRSocketStrategies())
.connectTcp("localhost", this.server.address().getPort()).block();
-
String data = "rob";
assertThatCode(() -> this.requester.route("secure.retrieve-mono").data(data).retrieveMono(String.class).block())
.isInstanceOf(ApplicationErrorException.class);
@@ -103,7 +102,6 @@ public class SimpleAuthenticationITests {
public void retrieveMonoWhenAuthorizedThenGranted() {
MimeType authenticationMimeType = MimeTypeUtils
.parseMimeType(WellKnownMimeType.MESSAGE_RSOCKET_AUTHENTICATION.getString());
-
UsernamePasswordMetadata credentials = new UsernamePasswordMetadata("rob", "password");
this.requester = RSocketRequester.builder().setupMetadata(credentials, authenticationMimeType)
.rsocketStrategies(this.handler.getRSocketStrategies())
@@ -111,7 +109,6 @@ public class SimpleAuthenticationITests {
String data = "rob";
String hiRob = this.requester.route("secure.retrieve-mono").metadata(credentials, authenticationMimeType)
.data(data).retrieveMono(String.class).block();
-
assertThat(hiRob).isEqualTo("Hi rob");
assertThat(this.controller.payloads).containsOnly(data);
}
diff --git a/config/src/test/java/org/springframework/security/config/DataSourcePopulator.java b/config/src/test/java/org/springframework/security/config/DataSourcePopulator.java
index 53b57df075..103addaebd 100644
--- a/config/src/test/java/org/springframework/security/config/DataSourcePopulator.java
+++ b/config/src/test/java/org/springframework/security/config/DataSourcePopulator.java
@@ -34,13 +34,11 @@ public class DataSourcePopulator implements InitializingBean {
@Override
public void afterPropertiesSet() {
Assert.notNull(this.template, "dataSource required");
-
this.template.execute(
"CREATE TABLE USERS(USERNAME VARCHAR_IGNORECASE(50) NOT NULL PRIMARY KEY,PASSWORD VARCHAR_IGNORECASE(500) NOT NULL,ENABLED BOOLEAN NOT NULL);");
this.template.execute(
"CREATE TABLE AUTHORITIES(USERNAME VARCHAR_IGNORECASE(50) NOT NULL,AUTHORITY VARCHAR_IGNORECASE(50) NOT NULL,CONSTRAINT FK_AUTHORITIES_USERS FOREIGN KEY(USERNAME) REFERENCES USERS(USERNAME));");
this.template.execute("CREATE UNIQUE INDEX IX_AUTH_USERNAME ON AUTHORITIES(USERNAME,AUTHORITY);");
-
/*
* Passwords encoded using MD5, NOT in Base64 format, with null as salt Encoded
* password for rod is "koala" Encoded password for dianne is "emu" Encoded
diff --git a/config/src/test/java/org/springframework/security/config/FilterChainProxyConfigTests.java b/config/src/test/java/org/springframework/security/config/FilterChainProxyConfigTests.java
index 0730702b94..d570897460 100644
--- a/config/src/test/java/org/springframework/security/config/FilterChainProxyConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/FilterChainProxyConfigTests.java
@@ -111,7 +111,6 @@ public class FilterChainProxyConfigTests {
@Test
public void mixingPatternsAndPlaceholdersDoesntCauseOrderingIssues() {
FilterChainProxy fcp = this.appCtx.getBean("sec1235FilterChainProxy", FilterChainProxy.class);
-
List chains = fcp.getFilterChains();
assertThat(getPattern(chains.get(0))).isEqualTo("/login*");
assertThat(getPattern(chains.get(1))).isEqualTo("/logout");
@@ -127,17 +126,14 @@ public class FilterChainProxyConfigTests {
List filters = filterChainProxy.getFilters("/foo/blah;x=1");
assertThat(filters).hasSize(1);
assertThat(filters.get(0) instanceof SecurityContextHolderAwareRequestFilter).isTrue();
-
filters = filterChainProxy.getFilters("/some;x=2,y=3/other/path;z=4/blah");
assertThat(filters).isNotNull();
assertThat(filters).hasSize(3);
assertThat(filters.get(0) instanceof SecurityContextPersistenceFilter).isTrue();
assertThat(filters.get(1) instanceof SecurityContextHolderAwareRequestFilter).isTrue();
assertThat(filters.get(2) instanceof SecurityContextHolderAwareRequestFilter).isTrue();
-
filters = filterChainProxy.getFilters("/do/not/filter;x=7");
assertThat(filters).isEmpty();
-
filters = filterChainProxy.getFilters("/another/nonspecificmatch");
assertThat(filters).hasSize(3);
assertThat(filters.get(0) instanceof SecurityContextPersistenceFilter).isTrue();
@@ -148,13 +144,10 @@ public class FilterChainProxyConfigTests {
private void doNormalOperation(FilterChainProxy filterChainProxy) throws Exception {
MockHttpServletRequest request = new MockHttpServletRequest("GET", "");
request.setServletPath("/foo/secure/super/somefile.html");
-
MockHttpServletResponse response = new MockHttpServletResponse();
FilterChain chain = mock(FilterChain.class);
-
filterChainProxy.doFilter(request, response, chain);
verify(chain).doFilter(any(HttpServletRequest.class), any(HttpServletResponse.class));
-
request.setServletPath("/a/path/which/doesnt/match/any/filter.html");
chain = mock(FilterChain.class);
filterChainProxy.doFilter(request, response, chain);
diff --git a/config/src/test/java/org/springframework/security/config/MockUserServiceBeanPostProcessor.java b/config/src/test/java/org/springframework/security/config/MockUserServiceBeanPostProcessor.java
index 1a08796e61..fdec646a62 100644
--- a/config/src/test/java/org/springframework/security/config/MockUserServiceBeanPostProcessor.java
+++ b/config/src/test/java/org/springframework/security/config/MockUserServiceBeanPostProcessor.java
@@ -37,7 +37,6 @@ public class MockUserServiceBeanPostProcessor implements BeanPostProcessor {
if (bean instanceof PostProcessedMockUserDetailsService) {
((PostProcessedMockUserDetailsService) bean).setPostProcessorWasHere("Hello from the post processor!");
}
-
return bean;
}
diff --git a/config/src/test/java/org/springframework/security/config/SecurityNamespaceHandlerTests.java b/config/src/test/java/org/springframework/security/config/SecurityNamespaceHandlerTests.java
index 9b7ccaf51a..454209e4f0 100644
--- a/config/src/test/java/org/springframework/security/config/SecurityNamespaceHandlerTests.java
+++ b/config/src/test/java/org/springframework/security/config/SecurityNamespaceHandlerTests.java
@@ -90,13 +90,10 @@ public class SecurityNamespaceHandlerTests {
PowerMockito.spy(ClassUtils.class);
PowerMockito.doThrow(new NoClassDefFoundError(className)).when(ClassUtils.class, "forName",
eq(FILTER_CHAIN_PROXY_CLASSNAME), any(ClassLoader.class));
-
Log logger = mock(Log.class);
SecurityNamespaceHandler handler = new SecurityNamespaceHandler();
ReflectionTestUtils.setField(handler, "logger", logger);
-
handler.init();
-
PowerMockito.verifyStatic(ClassUtils.class);
ClassUtils.forName(eq(FILTER_CHAIN_PROXY_CLASSNAME), any(ClassLoader.class));
verifyZeroInteractions(logger);
diff --git a/config/src/test/java/org/springframework/security/config/annotation/SecurityConfigurerAdapterClosureTests.java b/config/src/test/java/org/springframework/security/config/annotation/SecurityConfigurerAdapterClosureTests.java
index c1cf8715e9..b98c51df78 100644
--- a/config/src/test/java/org/springframework/security/config/annotation/SecurityConfigurerAdapterClosureTests.java
+++ b/config/src/test/java/org/springframework/security/config/annotation/SecurityConfigurerAdapterClosureTests.java
@@ -43,10 +43,8 @@ public class SecurityConfigurerAdapterClosureTests {
return l;
}
});
-
this.conf.init(builder);
this.conf.configure(builder);
-
assertThat(this.conf.list).contains("a");
}
diff --git a/config/src/test/java/org/springframework/security/config/annotation/SecurityConfigurerAdapterTests.java b/config/src/test/java/org/springframework/security/config/annotation/SecurityConfigurerAdapterTests.java
index b6e0a5a87b..9e6aeba683 100644
--- a/config/src/test/java/org/springframework/security/config/annotation/SecurityConfigurerAdapterTests.java
+++ b/config/src/test/java/org/springframework/security/config/annotation/SecurityConfigurerAdapterTests.java
@@ -36,7 +36,6 @@ public class SecurityConfigurerAdapterTests {
public void postProcessObjectPostProcessorsAreSorted() {
this.adapter.addObjectPostProcessor(new OrderedObjectPostProcessor(Ordered.LOWEST_PRECEDENCE));
this.adapter.addObjectPostProcessor(new OrderedObjectPostProcessor(Ordered.HIGHEST_PRECEDENCE));
-
assertThat(this.adapter.postProcess("hi"))
.isEqualTo("hi " + Ordered.HIGHEST_PRECEDENCE + " " + Ordered.LOWEST_PRECEDENCE);
}
diff --git a/config/src/test/java/org/springframework/security/config/annotation/authentication/AuthenticationManagerBuilderTests.java b/config/src/test/java/org/springframework/security/config/annotation/authentication/AuthenticationManagerBuilderTests.java
index fd6749db83..2c3a719c01 100644
--- a/config/src/test/java/org/springframework/security/config/annotation/authentication/AuthenticationManagerBuilderTests.java
+++ b/config/src/test/java/org/springframework/security/config/annotation/authentication/AuthenticationManagerBuilderTests.java
@@ -76,11 +76,9 @@ public class AuthenticationManagerBuilderTests {
public void buildWhenAddAuthenticationProviderThenDoesNotPerformRegistration() throws Exception {
ObjectPostProcessor
\n"
+ " \n"
+ " \n" + "\n" + "";
-
this.mvc.perform(get("/login")).andExpect(content().string(expectedContent));
}
@Test
public void getLogoutWhenAutoConfigThenShowsDefaultLogoutPage() throws Exception {
-
this.spring.configLocations(this.xml("AutoConfig")).autowire();
-
this.mvc.perform(get("/logout")).andExpect(content().string(containsString("action=\"/logout\"")));
}
@Test
public void getLoginWhenConfiguredWithCustomAttributesThenLoginPageReflects() throws Exception {
-
this.spring.configLocations(this.xml("WithCustomAttributes")).autowire();
-
String expectedContent = "\n" + "\n" + " \n"
+ " \n"
+ " \n"
@@ -106,17 +99,13 @@ public class FormLoginBeanDefinitionParserTests {
+ " \n"
+ " \n"
+ " \n" + "\n" + "";
-
this.mvc.perform(get("/login")).andExpect(content().string(expectedContent));
-
this.mvc.perform(get("/logout")).andExpect(status().is3xxRedirection());
}
@Test
public void getLoginWhenConfiguredForOpenIdThenLoginPageReflects() throws Exception {
-
this.spring.configLocations(this.xml("WithOpenId")).autowire();
-
String expectedContent = "\n" + "\n" + " \n"
+ " \n"
+ " \n"
@@ -142,15 +131,12 @@ public class FormLoginBeanDefinitionParserTests {
+ " \n"
+ " \n"
+ " \n" + "\n" + "";
-
this.mvc.perform(get("/login")).andExpect(content().string(expectedContent));
}
@Test
public void getLoginWhenConfiguredForOpenIdWithCustomAttributesThenLoginPageReflects() throws Exception {
-
this.spring.configLocations(this.xml("WithOpenIdCustomAttributes")).autowire();
-
String expectedContent = "\n" + "\n" + " \n"
+ " \n"
+ " \n"
@@ -176,15 +162,12 @@ public class FormLoginBeanDefinitionParserTests {
+ " \n"
+ " \n"
+ " \n" + "\n" + "";
-
this.mvc.perform(get("/login")).andExpect(content().string(expectedContent));
}
@Test
public void failedLoginWhenConfiguredWithCustomAuthenticationFailureThenForwardsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("WithAuthenticationFailureForwardUrl")).autowire();
-
this.mvc.perform(post("/login").param("username", "bob").param("password", "invalidpassword"))
.andExpect(status().isOk()).andExpect(forwardedUrl("/failure_forward_url"))
.andExpect(request().attribute(WebAttributes.AUTHENTICATION_EXCEPTION, not(nullValue())));
@@ -192,9 +175,7 @@ public class FormLoginBeanDefinitionParserTests {
@Test
public void successfulLoginWhenConfiguredWithCustomAuthenticationSuccessThenForwardsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("WithAuthenticationSuccessForwardUrl")).autowire();
-
this.mvc.perform(post("/login").param("username", "user").param("password", "password"))
.andExpect(status().isOk()).andExpect(forwardedUrl("/success_forward_url"));
}
diff --git a/config/src/test/java/org/springframework/security/config/http/FormLoginConfigTests.java b/config/src/test/java/org/springframework/security/config/http/FormLoginConfigTests.java
index 7e55dde548..faa60c2bc5 100644
--- a/config/src/test/java/org/springframework/security/config/http/FormLoginConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/FormLoginConfigTests.java
@@ -66,66 +66,51 @@ public class FormLoginConfigTests {
@Test
public void getProtectedPageWhenFormLoginConfiguredThenRedirectsToDefaultLoginPage() throws Exception {
-
this.spring.configLocations(this.xml("WithAntRequestMatcher")).autowire();
-
this.mvc.perform(get("/")).andExpect(redirectedUrl("http://localhost/login"));
}
@Test
public void authenticateWhenDefaultTargetUrlConfiguredThenRedirectsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("WithDefaultTargetUrl")).autowire();
-
this.mvc.perform(post("/login").param("username", "user").param("password", "password").with(csrf()))
.andExpect(redirectedUrl("/default"));
}
@Test
public void authenticateWhenConfiguredWithSpelThenRedirectsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("UsingSpel")).autowire();
-
this.mvc.perform(post("/login").param("username", "user").param("password", "password").with(csrf()))
.andExpect(redirectedUrl(WebConfigUtilsTests.URL + "/default"));
-
this.mvc.perform(post("/login").param("username", "user").param("password", "wrong").with(csrf()))
.andExpect(redirectedUrl(WebConfigUtilsTests.URL + "/failure"));
-
this.mvc.perform(get("/")).andExpect(redirectedUrl("http://localhost" + WebConfigUtilsTests.URL + "/login"));
}
@Test
public void autowireWhenLoginPageIsMisconfiguredThenDetects() {
-
assertThatThrownBy(() -> this.spring.configLocations(this.xml("NoLeadingSlashLoginPage")).autowire())
.isInstanceOf(BeanCreationException.class);
}
@Test
public void autowireWhenDefaultTargetUrlIsMisconfiguredThenDetects() {
-
assertThatThrownBy(() -> this.spring.configLocations(this.xml("NoLeadingSlashDefaultTargetUrl")).autowire())
.isInstanceOf(BeanCreationException.class);
}
@Test
public void authenticateWhenCustomHandlerBeansConfiguredThenInvokesAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("WithSuccessAndFailureHandlers")).autowire();
-
this.mvc.perform(post("/login").param("username", "user").param("password", "password").with(csrf()))
.andExpect(status().isIAmATeapot());
-
this.mvc.perform(post("/login").param("username", "user").param("password", "wrong").with(csrf()))
.andExpect(status().isIAmATeapot());
}
@Test
public void authenticateWhenCustomUsernameAndPasswordParametersThenSucceeds() throws Exception {
-
this.spring.configLocations(this.xml("WithUsernameAndPasswordParameters")).autowire();
-
this.mvc.perform(post("/login").param("xname", "user").param("xpass", "password").with(csrf()))
.andExpect(redirectedUrl("/"));
}
@@ -136,28 +121,21 @@ public class FormLoginConfigTests {
@Test
public void autowireWhenCustomLoginPageIsSlashLoginThenNoDefaultLoginPageGeneratingFilterIsWired()
throws Exception {
-
this.spring.configLocations(this.xml("ForSec2919")).autowire();
-
this.mvc.perform(get("/login")).andExpect(content().string("teapot"));
-
assertThat(getFilter(this.spring.getContext(), DefaultLoginPageGeneratingFilter.class)).isNull();
}
@Test
public void authenticateWhenCsrfIsEnabledThenRequiresToken() throws Exception {
-
this.spring.configLocations(this.xml("WithCsrfEnabled")).autowire();
-
this.mvc.perform(post("/login").param("username", "user").param("password", "password"))
.andExpect(status().isForbidden());
}
@Test
public void authenticateWhenCsrfIsDisabledThenDoesNotRequireToken() throws Exception {
-
this.spring.configLocations(this.xml("WithCsrfDisabled")).autowire();
-
this.mvc.perform(post("/login").param("username", "user").param("password", "password"))
.andExpect(status().isFound());
}
@@ -169,24 +147,19 @@ public class FormLoginConfigTests {
@Test
public void authenticateWhenLoginPageIsSlashLoginAndAuthenticationFailsThenRedirectContainsErrorParameter()
throws Exception {
-
this.spring.configLocations(this.xml("ForSec3147")).autowire();
-
this.mvc.perform(post("/login").param("username", "user").param("password", "wrong").with(csrf()))
.andExpect(redirectedUrl("/login?error"));
}
private Filter getFilter(ApplicationContext context, Class extends Filter> filterClass) {
FilterChainProxy filterChain = context.getBean(BeanIds.FILTER_CHAIN_PROXY, FilterChainProxy.class);
-
List filters = filterChain.getFilters("/any");
-
for (Filter filter : filters) {
if (filter.getClass() == filterClass) {
return filter;
}
}
-
return null;
}
@@ -210,14 +183,12 @@ public class FormLoginConfigTests {
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) {
-
response.setStatus(HttpStatus.I_AM_A_TEAPOT.value());
}
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) {
-
response.setStatus(HttpStatus.I_AM_A_TEAPOT.value());
}
diff --git a/config/src/test/java/org/springframework/security/config/http/HttpConfigTests.java b/config/src/test/java/org/springframework/security/config/http/HttpConfigTests.java
index e0eacfd369..d3de9aab8d 100644
--- a/config/src/test/java/org/springframework/security/config/http/HttpConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/HttpConfigTests.java
@@ -51,25 +51,18 @@ public class HttpConfigTests {
@Test
public void getWhenUsingMinimalConfigurationThenRedirectsToLogin() throws Exception {
-
this.spring.configLocations(this.xml("Minimal")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isFound()).andExpect(redirectedUrl("http://localhost/login"));
}
@Test
public void getWhenUsingMinimalConfigurationThenPreventsSessionAsUrlParameter() throws Exception {
-
this.spring.configLocations(this.xml("Minimal")).autowire();
-
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
MockHttpServletResponse response = new MockHttpServletResponse();
-
FilterChainProxy proxy = this.spring.getContext().getBean(FilterChainProxy.class);
-
proxy.doFilter(request, new EncodeUrlDenyingHttpServletResponseWrapper(response), (req, resp) -> {
});
-
assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_MOVED_TEMPORARILY);
assertThat(response.getRedirectedUrl()).isEqualTo("http://localhost/login");
}
diff --git a/config/src/test/java/org/springframework/security/config/http/HttpCorsConfigTests.java b/config/src/test/java/org/springframework/security/config/http/HttpCorsConfigTests.java
index 3809b4f5a1..6f3b20db83 100644
--- a/config/src/test/java/org/springframework/security/config/http/HttpCorsConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/HttpCorsConfigTests.java
@@ -66,36 +66,27 @@ public class HttpCorsConfigTests {
@Test
public void getWhenUsingCorsThenDoesSpringSecurityCorsHandshake() throws Exception {
-
this.spring.configLocations(this.xml("WithCors")).autowire();
-
this.mvc.perform(get("/").with(this.approved())).andExpect(corsResponseHeaders())
.andExpect((status().isIAmATeapot()));
-
this.mvc.perform(options("/").with(this.preflight())).andExpect(corsResponseHeaders())
.andExpect(status().isOk());
}
@Test
public void getWhenUsingCustomCorsConfigurationSourceThenDoesSpringSecurityCorsHandshake() throws Exception {
-
this.spring.configLocations(this.xml("WithCorsConfigurationSource")).autowire();
-
this.mvc.perform(get("/").with(this.approved())).andExpect(corsResponseHeaders())
.andExpect((status().isIAmATeapot()));
-
this.mvc.perform(options("/").with(this.preflight())).andExpect(corsResponseHeaders())
.andExpect(status().isOk());
}
@Test
public void getWhenUsingCustomCorsFilterThenDoesSPringSecurityCorsHandshake() throws Exception {
-
this.spring.configLocations(this.xml("WithCorsFilter")).autowire();
-
this.mvc.perform(get("/").with(this.approved())).andExpect(corsResponseHeaders())
.andExpect((status().isIAmATeapot()));
-
this.mvc.perform(options("/").with(this.preflight())).andExpect(corsResponseHeaders())
.andExpect(status().isOk());
}
@@ -115,12 +106,10 @@ public class HttpCorsConfigTests {
private RequestPostProcessor cors(boolean preflight) {
return (request) -> {
request.addHeader(HttpHeaders.ORIGIN, "https://example.com");
-
if (preflight) {
request.setMethod(HttpMethod.OPTIONS.name());
request.addHeader(HttpHeaders.ACCESS_CONTROL_REQUEST_METHOD, HttpMethod.POST.name());
}
-
return request;
};
}
@@ -149,7 +138,6 @@ public class HttpCorsConfigTests {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList(RequestMethod.GET.name(), RequestMethod.POST.name()));
-
super.registerCorsConfiguration("/**", configuration);
}
diff --git a/config/src/test/java/org/springframework/security/config/http/HttpHeadersConfigTests.java b/config/src/test/java/org/springframework/security/config/http/HttpHeadersConfigTests.java
index ef52dec747..da112ae731 100644
--- a/config/src/test/java/org/springframework/security/config/http/HttpHeadersConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/HttpHeadersConfigTests.java
@@ -51,7 +51,6 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
public class HttpHeadersConfigTests {
private static final String CONFIG_LOCATION_PREFIX = "classpath:org/springframework/security/config/http/HttpHeadersConfigTests";
-
static final Map defaultHeaders = ImmutableMap.builder()
.put("X-Content-Type-Options", "nosniff").put("X-Frame-Options", "DENY")
.put("Strict-Transport-Security", "max-age=31536000 ; includeSubDomains")
@@ -66,39 +65,28 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenHeadersDisabledThenResponseExcludesAllSecureHeaders() throws Exception {
-
this.spring.configLocations(this.xml("HeadersDisabled")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(excludesDefaults());
}
@Test
public void requestWhenHeadersDisabledViaPlaceholderThenResponseExcludesAllSecureHeaders() throws Exception {
-
System.setProperty("security.headers.disabled", "true");
-
this.spring.configLocations(this.xml("DisabledWithPlaceholder")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(excludesDefaults());
}
@Test
public void requestWhenHeadersEnabledViaPlaceholderThenResponseIncludesAllSecureHeaders() throws Exception {
-
System.setProperty("security.headers.disabled", "false");
-
this.spring.configLocations(this.xml("DisabledWithPlaceholder")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includesDefaults());
}
@Test
public void requestWhenHeadersDisabledRefMissingPlaceholderThenResponseIncludesAllSecureHeaders() throws Exception {
-
System.clearProperty("security.headers.disabled");
-
this.spring.configLocations(this.xml("DisabledWithPlaceholder")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includesDefaults());
}
@@ -111,28 +99,21 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenHeadersEnabledThenResponseContainsAllSecureHeaders() throws Exception {
-
this.spring.configLocations(this.xml("DefaultConfig")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includesDefaults());
}
@Test
public void requestWhenHeadersElementUsedThenResponseContainsAllSecureHeaders() throws Exception {
-
this.spring.configLocations(this.xml("HeadersEnabled")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includesDefaults());
}
@Test
public void requestWhenFrameOptionsConfiguredThenIncludesHeader() throws Exception {
-
Map headers = new HashMap(defaultHeaders);
headers.put("X-Frame-Options", "SAMEORIGIN");
-
this.spring.configLocations(this.xml("WithFrameOptions")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includes(headers));
}
@@ -141,86 +122,63 @@ public class HttpHeadersConfigTests {
*/
@Test
public void requestWhenDefaultsDisabledWithNoOverrideThenExcludesAllSecureHeaders() throws Exception {
-
this.spring.configLocations(this.xml("DefaultsDisabledWithNoOverride")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(excludesDefaults());
}
@Test
public void requestWhenDefaultsDisabledWithPlaceholderTrueThenExcludesAllSecureHeaders() throws Exception {
-
System.setProperty("security.headers.defaults.disabled", "true");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithPlaceholder")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(excludesDefaults());
}
@Test
public void requestWhenDefaultsDisabledWithPlaceholderFalseThenIncludeAllSecureHeaders() throws Exception {
-
System.setProperty("security.headers.defaults.disabled", "false");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithPlaceholder")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includesDefaults());
}
@Test
public void requestWhenDefaultsDisabledWithPlaceholderMissingThenIncludeAllSecureHeaders() throws Exception {
-
System.clearProperty("security.headers.defaults.disabled");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithPlaceholder")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includesDefaults());
}
@Test
public void requestWhenUsingContentTypeOptionsThenDefaultsToNoSniff() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("X-Content-Type-Options");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithContentTypeOptions")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk())
.andExpect(header().string("X-Content-Type-Options", "nosniff")).andExpect(excludes(excludedHeaders));
}
@Test
public void requestWhenUsingFrameOptionsThenDefaultsToDeny() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("X-Frame-Options");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithFrameOptions")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(header().string("X-Frame-Options", "DENY"))
.andExpect(excludes(excludedHeaders));
}
@Test
public void requestWhenUsingFrameOptionsDenyThenRespondsWithDeny() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("X-Frame-Options");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithFrameOptionsDeny")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(header().string("X-Frame-Options", "DENY"))
.andExpect(excludes(excludedHeaders));
}
@Test
public void requestWhenUsingFrameOptionsSameOriginThenRespondsWithSameOrigin() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("X-Frame-Options");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithFrameOptionsSameOrigin")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk())
.andExpect(header().string("X-Frame-Options", "SAMEORIGIN")).andExpect(excludes(excludedHeaders));
}
@@ -249,12 +207,9 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingFrameOptionsAllowFromThenRespondsWithAllowFrom() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("X-Frame-Options");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithFrameOptionsAllowFrom")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk())
.andExpect(header().string("X-Frame-Options", "ALLOW-FROM https://example.org"))
.andExpect(excludes(excludedHeaders));
@@ -262,34 +217,26 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingFrameOptionsAllowFromWhitelistThenRespondsWithAllowFrom() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("X-Frame-Options");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithFrameOptionsAllowFromWhitelist")).autowire();
-
this.mvc.perform(get("/").param("from", "https://example.org")).andExpect(status().isOk())
.andExpect(header().string("X-Frame-Options", "ALLOW-FROM https://example.org"))
.andExpect(excludes(excludedHeaders));
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(header().string("X-Frame-Options", "DENY"))
.andExpect(excludes(excludedHeaders));
}
@Test
public void requestWhenUsingCustomHeaderThenRespondsWithThatHeader() throws Exception {
-
this.spring.configLocations(this.xml("DefaultsDisabledWithCustomHeader")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(header().string("a", "b"))
.andExpect(header().string("c", "d")).andExpect(excludesDefaults());
}
@Test
public void requestWhenUsingCustomHeaderWriterThenRespondsWithThatHeader() throws Exception {
-
this.spring.configLocations(this.xml("DefaultsDisabledWithCustomHeaderWriter")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(header().string("abc", "def"))
.andExpect(excludesDefaults());
}
@@ -309,36 +256,27 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingXssProtectionThenDefaultsToModeBlock() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("X-XSS-Protection");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithXssProtection")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk())
.andExpect(header().string("X-XSS-Protection", "1; mode=block")).andExpect(excludes(excludedHeaders));
}
@Test
public void requestWhenEnablingXssProtectionThenDefaultsToModeBlock() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("X-XSS-Protection");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithXssProtectionEnabled")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk())
.andExpect(header().string("X-XSS-Protection", "1; mode=block")).andExpect(excludes(excludedHeaders));
}
@Test
public void requestWhenDisablingXssProtectionThenDefaultsToZero() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("X-XSS-Protection");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithXssProtectionDisabled")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(header().string("X-XSS-Protection", "0"))
.andExpect(excludes(excludedHeaders));
}
@@ -353,24 +291,18 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingCacheControlThenRespondsWithCorrespondingHeaders() throws Exception {
-
Map includedHeaders = ImmutableMap.builder()
.put("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate").put("Expires", "0")
.put("Pragma", "no-cache").build();
-
this.spring.configLocations(this.xml("DefaultsDisabledWithCacheControl")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(includes(includedHeaders));
}
@Test
public void requestWhenUsingHstsThenRespondsWithHstsHeader() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("Strict-Transport-Security");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithHsts")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk())
.andExpect(header().string("Strict-Transport-Security", "max-age=31536000 ; includeSubDomains"))
.andExpect(excludes(excludedHeaders));
@@ -378,20 +310,15 @@ public class HttpHeadersConfigTests {
@Test
public void insecureRequestWhenUsingHstsThenExcludesHstsHeader() throws Exception {
-
this.spring.configLocations(this.xml("DefaultsDisabledWithHsts")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(excludesDefaults());
}
@Test
public void insecureRequestWhenUsingCustomHstsRequestMatcherThenIncludesHstsHeader() throws Exception {
-
Set excludedHeaders = new HashSet<>(defaultHeaders.keySet());
excludedHeaders.remove("Strict-Transport-Security");
-
this.spring.configLocations(this.xml("DefaultsDisabledWithCustomHstsRequestMatcher")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk())
.andExpect(header().string("Strict-Transport-Security", "max-age=1"))
.andExpect(excludes(excludedHeaders));
@@ -414,7 +341,6 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingHpkpThenIncludesHpkpHeader() throws Exception {
this.spring.configLocations(this.xml("DefaultsDisabledWithHpkp")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk())
.andExpect(header().string("Public-Key-Pins-Report-Only",
"max-age=5184000 ; pin-sha256=\"d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=\""))
@@ -424,7 +350,6 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingHpkpDefaultsThenIncludesHpkpHeaderUsingSha256() throws Exception {
this.spring.configLocations(this.xml("DefaultsDisabledWithHpkpDefaults")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk())
.andExpect(header().string("Public-Key-Pins-Report-Only",
"max-age=5184000 ; pin-sha256=\"d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=\""))
@@ -434,7 +359,6 @@ public class HttpHeadersConfigTests {
@Test
public void insecureRequestWhenUsingHpkpThenExcludesHpkpHeader() throws Exception {
this.spring.configLocations(this.xml("DefaultsDisabledWithHpkpDefaults")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk())
.andExpect(header().doesNotExist("Public-Key-Pins-Report-Only")).andExpect(excludesDefaults());
}
@@ -442,7 +366,6 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingHpkpCustomMaxAgeThenIncludesHpkpHeaderAccordingly() throws Exception {
this.spring.configLocations(this.xml("DefaultsDisabledWithHpkpMaxAge")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk())
.andExpect(header().string("Public-Key-Pins-Report-Only",
"max-age=604800 ; pin-sha256=\"d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=\""))
@@ -452,7 +375,6 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingHpkpReportThenIncludesHpkpHeaderAccordingly() throws Exception {
this.spring.configLocations(this.xml("DefaultsDisabledWithHpkpReport")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk())
.andExpect(header().string("Public-Key-Pins",
"max-age=5184000 ; pin-sha256=\"d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=\""))
@@ -462,7 +384,6 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingHpkpIncludeSubdomainsThenIncludesHpkpHeaderAccordingly() throws Exception {
this.spring.configLocations(this.xml("DefaultsDisabledWithHpkpIncludeSubdomains")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(header().string(
"Public-Key-Pins-Report-Only",
"max-age=5184000 ; pin-sha256=\"d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=\" ; includeSubDomains"))
@@ -472,7 +393,6 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenUsingHpkpReportUriThenIncludesHpkpHeaderAccordingly() throws Exception {
this.spring.configLocations(this.xml("DefaultsDisabledWithHpkpReportUri")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(header().string(
"Public-Key-Pins-Report-Only",
"max-age=5184000 ; pin-sha256=\"d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=\" ; report-uri=\"https://example.net/pkp-report\""))
@@ -481,68 +401,51 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenCacheControlDisabledThenExcludesHeader() throws Exception {
-
Collection cacheControl = Arrays.asList("Cache-Control", "Expires", "Pragma");
Map allButCacheControl = remove(defaultHeaders, cacheControl);
-
this.spring.configLocations(this.xml("CacheControlDisabled")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includes(allButCacheControl))
.andExpect(excludes(cacheControl));
}
@Test
public void requestWhenContentTypeOptionsDisabledThenExcludesHeader() throws Exception {
-
Collection contentTypeOptions = Arrays.asList("X-Content-Type-Options");
Map allButContentTypeOptions = remove(defaultHeaders, contentTypeOptions);
-
this.spring.configLocations(this.xml("ContentTypeOptionsDisabled")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includes(allButContentTypeOptions))
.andExpect(excludes(contentTypeOptions));
}
@Test
public void requestWhenHstsDisabledThenExcludesHeader() throws Exception {
-
Collection hsts = Arrays.asList("Strict-Transport-Security");
Map allButHsts = remove(defaultHeaders, hsts);
-
this.spring.configLocations(this.xml("HstsDisabled")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includes(allButHsts))
.andExpect(excludes(hsts));
}
@Test
public void requestWhenHpkpDisabledThenExcludesHeader() throws Exception {
-
this.spring.configLocations(this.xml("HpkpDisabled")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includesDefaults());
}
@Test
public void requestWhenFrameOptionsDisabledThenExcludesHeader() throws Exception {
-
Collection frameOptions = Arrays.asList("X-Frame-Options");
Map allButFrameOptions = remove(defaultHeaders, frameOptions);
-
this.spring.configLocations(this.xml("FrameOptionsDisabled")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includes(allButFrameOptions))
.andExpect(excludes(frameOptions));
}
@Test
public void requestWhenXssProtectionDisabledThenExcludesHeader() throws Exception {
-
Collection xssProtection = Arrays.asList("X-XSS-Protection");
Map allButXssProtection = remove(defaultHeaders, xssProtection);
-
this.spring.configLocations(this.xml("XssProtectionDisabled")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includes(allButXssProtection))
.andExpect(excludes(xssProtection));
}
@@ -589,29 +492,22 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenContentSecurityPolicyDirectivesConfiguredThenIncludesDirectives() throws Exception {
-
Map includedHeaders = new HashMap<>(defaultHeaders);
includedHeaders.put("Content-Security-Policy", "default-src 'self'");
-
this.spring.configLocations(this.xml("ContentSecurityPolicyWithPolicyDirectives")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includes(includedHeaders));
}
@Test
public void requestWhenHeadersDisabledAndContentSecurityPolicyConfiguredThenExcludesHeader() throws Exception {
-
this.spring.configLocations(this.xml("HeadersDisabledWithContentSecurityPolicy")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(excludesDefaults())
.andExpect(excludes("Content-Security-Policy"));
}
@Test
public void requestWhenDefaultsDisabledAndContentSecurityPolicyConfiguredThenIncludesHeader() throws Exception {
-
this.spring.configLocations(this.xml("DefaultsDisabledWithContentSecurityPolicy")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(excludesDefaults())
.andExpect(header().string("Content-Security-Policy", "default-src 'self'"));
}
@@ -626,30 +522,23 @@ public class HttpHeadersConfigTests {
@Test
public void requestWhenContentSecurityPolicyConfiguredWithReportOnlyThenIncludesReportOnlyHeader()
throws Exception {
-
Map includedHeaders = new HashMap<>(defaultHeaders);
includedHeaders.put("Content-Security-Policy-Report-Only",
"default-src https:; report-uri https://example.org/");
-
this.spring.configLocations(this.xml("ContentSecurityPolicyWithReportOnly")).autowire();
-
this.mvc.perform(get("/").secure(true)).andExpect(status().isOk()).andExpect(includes(includedHeaders));
}
@Test
public void requestWhenReferrerPolicyConfiguredThenResponseDefaultsToNoReferrer() throws Exception {
-
this.spring.configLocations(this.xml("DefaultsDisabledWithReferrerPolicy")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(excludesDefaults())
.andExpect(header().string("Referrer-Policy", "no-referrer"));
}
@Test
public void requestWhenReferrerPolicyConfiguredWithSameOriginThenRespondsWithSameOrigin() throws Exception {
-
this.spring.configLocations(this.xml("DefaultsDisabledWithReferrerPolicySameOrigin")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isOk()).andExpect(excludesDefaults())
.andExpect(header().string("Referrer-Policy", "same-origin"));
}
@@ -684,11 +573,9 @@ public class HttpHeadersConfigTests {
private static Map remove(Map map, Collection keys) {
Map copy = new HashMap<>(map);
-
for (K key : keys) {
copy.remove(key);
}
-
return copy;
}
diff --git a/config/src/test/java/org/springframework/security/config/http/HttpInterceptUrlTests.java b/config/src/test/java/org/springframework/security/config/http/HttpInterceptUrlTests.java
index 614c072d60..671a392dae 100644
--- a/config/src/test/java/org/springframework/security/config/http/HttpInterceptUrlTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/HttpInterceptUrlTests.java
@@ -48,11 +48,8 @@ public class HttpInterceptUrlTests {
@Test
public void interceptUrlWhenRequestMatcherRefThenWorks() throws Exception {
loadConfig("interceptUrlWhenRequestMatcherRefThenWorks.xml");
-
this.mockMvc.perform(get("/foo")).andExpect(status().isUnauthorized());
-
this.mockMvc.perform(get("/FOO")).andExpect(status().isUnauthorized());
-
this.mockMvc.perform(get("/other")).andExpect(status().isOk());
}
@@ -65,9 +62,7 @@ public class HttpInterceptUrlTests {
context.setServletContext(new MockServletContext());
context.refresh();
this.context = context;
-
context.getAutowireCapableBeanFactory().autowireBean(this);
-
Filter springSecurityFilterChain = context.getBean("springSecurityFilterChain", Filter.class);
this.mockMvc = MockMvcBuilders.standaloneSetup(new FooController()).addFilters(springSecurityFilterChain)
.build();
diff --git a/config/src/test/java/org/springframework/security/config/http/InterceptUrlConfigTests.java b/config/src/test/java/org/springframework/security/config/http/InterceptUrlConfigTests.java
index 07b4708f9e..1b7d40c339 100644
--- a/config/src/test/java/org/springframework/security/config/http/InterceptUrlConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/InterceptUrlConfigTests.java
@@ -64,11 +64,8 @@ public class InterceptUrlConfigTests {
*/
@Test
public void requestWhenMethodIsSpecifiedThenItIsNotGivenPriority() throws Exception {
-
this.spring.configLocations(this.xml("Sec2256")).autowire();
-
this.mvc.perform(post("/path").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/path").with(httpBasic("user", "password"))).andExpect(status().isOk());
}
@@ -77,24 +74,16 @@ public class InterceptUrlConfigTests {
*/
@Test
public void requestWhenUsingPatchThenAuthorizesRequestsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("PatchMethod")).autowire();
-
this.mvc.perform(get("/path").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(patch("/path").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
-
this.mvc.perform(patch("/path").with(httpBasic("admin", "password"))).andExpect(status().isOk());
-
}
@Test
public void requestWhenUsingHasAnyRoleThenAuthorizesRequestsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("HasAnyRole")).autowire();
-
this.mvc.perform(get("/path").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/path").with(httpBasic("admin", "password"))).andExpect(status().isForbidden());
}
@@ -103,14 +92,10 @@ public class InterceptUrlConfigTests {
*/
@Test
public void requestWhenUsingPathVariablesThenAuthorizesRequestsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("PathVariables")).autowire();
-
this.mvc.perform(get("/path/user/path").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/path/otheruser/path").with(httpBasic("user", "password")))
.andExpect(status().isForbidden());
-
this.mvc.perform(get("/path").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
}
@@ -119,14 +104,10 @@ public class InterceptUrlConfigTests {
*/
@Test
public void requestWhenUsingCamelCasePathVariablesThenAuthorizesRequestsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("CamelCasePathVariables")).autowire();
-
this.mvc.perform(get("/path/user/path").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/path/otheruser/path").with(httpBasic("user", "password")))
.andExpect(status().isForbidden());
-
this.mvc.perform(get("/PATH/user/path").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
}
@@ -135,55 +116,37 @@ public class InterceptUrlConfigTests {
*/
@Test
public void requestWhenUsingPathVariablesAndTypeConversionThenAuthorizesRequestsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("TypeConversionPathVariables")).autowire();
-
this.mvc.perform(get("/path/1/path").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/path/2/path").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
-
}
@Test
public void requestWhenUsingMvcMatchersThenAuthorizesRequestsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("MvcMatchers")).autowire();
-
this.mvc.perform(get("/path")).andExpect(status().isUnauthorized());
-
this.mvc.perform(get("/path.html")).andExpect(status().isUnauthorized());
-
this.mvc.perform(get("/path/")).andExpect(status().isUnauthorized());
}
@Test
public void requestWhenUsingMvcMatchersAndPathVariablesThenAuthorizesRequestsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("MvcMatchersPathVariables")).autowire();
-
this.mvc.perform(get("/path/user/path").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/path/otheruser/path").with(httpBasic("user", "password")))
.andExpect(status().isForbidden());
-
this.mvc.perform(get("/PATH/user/path").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
}
@Test
public void requestWhenUsingMvcMatchersAndServletPathThenAuthorizesRequestsAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("MvcMatchersServletPath")).autowire();
-
MockServletContext servletContext = mockServletContext("/spring");
ConfigurableWebApplicationContext context = this.spring.getContext();
context.setServletContext(servletContext);
-
this.mvc.perform(get("/spring/path").servletPath("/spring")).andExpect(status().isUnauthorized());
-
this.mvc.perform(get("/spring/path.html").servletPath("/spring")).andExpect(status().isUnauthorized());
-
this.mvc.perform(get("/spring/path/").servletPath("/spring")).andExpect(status().isUnauthorized());
-
}
@Test
diff --git a/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java b/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java
index 56c9106964..1438a39056 100644
--- a/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/MiscHttpConfigTests.java
@@ -161,41 +161,29 @@ public class MiscHttpConfigTests {
@Test
public void requestWhenUsingDebugFilterAndPatternIsNotConfigureForSecurityThenRespondsOk() throws Exception {
-
this.spring.configLocations(xml("NoSecurityForPattern")).autowire();
-
this.mvc.perform(get("/unprotected")).andExpect(status().isNotFound());
-
this.mvc.perform(get("/nomatch")).andExpect(status().isNotFound());
}
@Test
public void requestWhenHttpPatternUsesRegexMatchingThenMatchesAccordingly() throws Exception {
-
this.spring.configLocations(xml("RegexSecurityPattern")).autowire();
-
this.mvc.perform(get("/protected")).andExpect(status().isUnauthorized());
-
this.mvc.perform(get("/unprotected")).andExpect(status().isNotFound());
}
@Test
public void requestWhenHttpPatternUsesCiRegexMatchingThenMatchesAccordingly() throws Exception {
-
this.spring.configLocations(xml("CiRegexSecurityPattern")).autowire();
-
this.mvc.perform(get("/ProTectEd")).andExpect(status().isUnauthorized());
-
this.mvc.perform(get("/UnProTectEd")).andExpect(status().isNotFound());
}
@Test
public void requestWhenHttpPatternUsesCustomRequestMatcherThenMatchesAccordingly() throws Exception {
-
this.spring.configLocations(xml("CustomRequestMatcher")).autowire();
-
this.mvc.perform(get("/protected")).andExpect(status().isUnauthorized());
-
this.mvc.perform(get("/unprotected")).andExpect(status().isNotFound());
}
@@ -204,94 +192,64 @@ public class MiscHttpConfigTests {
*/
@Test
public void requestWhenUsingMinimalConfigurationThenHonorsAnonymousEndpoints() throws Exception {
-
this.spring.configLocations(xml("AnonymousEndpoints")).autowire();
-
this.mvc.perform(get("/protected")).andExpect(status().isUnauthorized());
-
this.mvc.perform(get("/unprotected")).andExpect(status().isNotFound());
-
assertThat(getFilter(AnonymousAuthenticationFilter.class)).isNotNull();
}
@Test
public void requestWhenAnonymousIsDisabledThenRejectsAnonymousEndpoints() throws Exception {
-
this.spring.configLocations(xml("AnonymousDisabled")).autowire();
-
this.mvc.perform(get("/protected")).andExpect(status().isUnauthorized());
-
this.mvc.perform(get("/unprotected")).andExpect(status().isUnauthorized());
-
assertThat(getFilter(AnonymousAuthenticationFilter.class)).isNull();
}
@Test
public void requestWhenAnonymousUsesCustomAttributesThenRespondsWithThoseAttributes() throws Exception {
-
this.spring.configLocations(xml("AnonymousCustomAttributes")).autowire();
-
this.mvc.perform(get("/protected").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
-
this.mvc.perform(get("/protected")).andExpect(status().isOk()).andExpect(content().string("josh"));
-
this.mvc.perform(get("/customKey")).andExpect(status().isOk())
.andExpect(content().string(String.valueOf("myCustomKey".hashCode())));
}
@Test
public void requestWhenAnonymousUsesMultipleGrantedAuthoritiesThenRespondsWithThoseAttributes() throws Exception {
-
this.spring.configLocations(xml("AnonymousMultipleAuthorities")).autowire();
-
this.mvc.perform(get("/protected").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
-
this.mvc.perform(get("/protected")).andExpect(status().isOk()).andExpect(content().string("josh"));
-
this.mvc.perform(get("/customKey")).andExpect(status().isOk())
.andExpect(content().string(String.valueOf("myCustomKey".hashCode())));
}
@Test
public void requestWhenInterceptUrlMatchesMethodThenSecuresAccordingly() throws Exception {
-
this.spring.configLocations(xml("InterceptUrlMethod")).autowire();
-
this.mvc.perform(get("/protected").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(post("/protected").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
-
this.mvc.perform(post("/protected").with(httpBasic("poster", "password"))).andExpect(status().isOk());
-
this.mvc.perform(delete("/protected").with(httpBasic("poster", "password"))).andExpect(status().isForbidden());
-
this.mvc.perform(delete("/protected").with(httpBasic("admin", "password"))).andExpect(status().isOk());
}
@Test
public void requestWhenInterceptUrlMatchesMethodAndRequiresHttpsThenSecuresAccordingly() throws Exception {
-
this.spring.configLocations(xml("InterceptUrlMethodRequiresHttps")).autowire();
-
this.mvc.perform(post("/protected").with(csrf())).andExpect(status().isOk());
-
this.mvc.perform(get("/protected").secure(true).with(httpBasic("user", "password")))
.andExpect(status().isForbidden());
-
this.mvc.perform(get("/protected").secure(true).with(httpBasic("admin", "password")))
.andExpect(status().isOk());
}
@Test
public void requestWhenInterceptUrlMatchesAnyPatternAndRequiresHttpsThenSecuresAccordingly() throws Exception {
-
this.spring.configLocations(xml("InterceptUrlMethodRequiresHttpsAny")).autowire();
-
this.mvc.perform(post("/protected").with(csrf())).andExpect(status().isOk());
-
this.mvc.perform(get("/protected").secure(true).with(httpBasic("user", "password")))
.andExpect(status().isForbidden());
-
this.mvc.perform(get("/protected").secure(true).with(httpBasic("admin", "password")))
.andExpect(status().isOk());
}
@@ -299,20 +257,15 @@ public class MiscHttpConfigTests {
@Test
public void configureWhenOncePerRequestIsFalseThenFilterSecurityInterceptorExercisedForForwards() {
this.spring.configLocations(xml("OncePerRequest")).autowire();
-
FilterSecurityInterceptor filterSecurityInterceptor = getFilter(FilterSecurityInterceptor.class);
assertThat(filterSecurityInterceptor.isObserveOncePerRequest()).isFalse();
}
@Test
public void requestWhenCustomHttpBasicEntryPointRefThenInvokesOnCommence() throws Exception {
-
this.spring.configLocations(xml("CustomHttpBasicEntryPointRef")).autowire();
-
AuthenticationEntryPoint entryPoint = this.spring.getContext().getBean(AuthenticationEntryPoint.class);
-
this.mvc.perform(get("/protected")).andExpect(status().isOk());
-
verify(entryPoint).commence(any(HttpServletRequest.class), any(HttpServletResponse.class),
any(AuthenticationException.class));
}
@@ -326,7 +279,6 @@ public class MiscHttpConfigTests {
@Test
public void getWhenPortsMappedThenRedirectedAccordingly() throws Exception {
this.spring.configLocations(xml("PortsMappedInterceptUrlMethodRequiresAny")).autowire();
-
this.mvc.perform(get("http://localhost:9080/protected"))
.andExpect(redirectedUrl("https://localhost:9443/protected"));
}
@@ -335,11 +287,8 @@ public class MiscHttpConfigTests {
public void configureWhenCustomFiltersThenAddedToChainInCorrectOrder() {
System.setProperty("customFilterRef", "userFilter");
this.spring.configLocations(xml("CustomFilters")).autowire();
-
List filters = getFilters("/");
-
Class> userFilterClass = this.spring.getContext().getBean("userFilter").getClass();
-
assertThat(filters).extracting((Extractor>) (filter) -> filter.getClass()).containsSubsequence(
userFilterClass, userFilterClass, SecurityContextPersistenceFilter.class, LogoutFilter.class,
userFilterClass);
@@ -354,7 +303,6 @@ public class MiscHttpConfigTests {
@Test
public void configureWhenUsingX509ThenAddsX509FilterCorrectly() {
this.spring.configLocations(xml("X509")).autowire();
-
assertThat(getFilters("/")).extracting((Extractor>) (filter) -> filter.getClass())
.containsSubsequence(CsrfFilter.class, X509AuthenticationFilter.class,
ExceptionTranslationFilter.class);
@@ -364,7 +312,6 @@ public class MiscHttpConfigTests {
public void getWhenUsingX509AndPropertyPlaceholderThenSubjectPrincipalRegexIsConfigured() throws Exception {
System.setProperty("subject_principal_regex", "OU=(.*?)(?:,|$)");
this.spring.configLocations(xml("X509")).autowire();
-
this.mvc.perform(get("/protected")
.with(x509("classpath:org/springframework/security/config/http/MiscHttpConfigTests-certificate.pem")))
.andExpect(status().isOk());
@@ -379,9 +326,7 @@ public class MiscHttpConfigTests {
@Test
public void logoutWhenSpecifyingCookiesToDeleteThenSetCookieAdded() throws Exception {
this.spring.configLocations(xml("DeleteCookies")).autowire();
-
MvcResult result = this.mvc.perform(post("/logout").with(csrf())).andReturn();
-
List values = result.getResponse().getHeaders("Set-Cookie");
assertThat(values.size()).isEqualTo(2);
assertThat(values).extracting((value) -> value.split("=")[0]).contains("JSESSIONID", "mycookie");
@@ -390,29 +335,22 @@ public class MiscHttpConfigTests {
@Test
public void logoutWhenSpecifyingSuccessHandlerRefThenResponseHandledAccordingly() throws Exception {
this.spring.configLocations(xml("LogoutSuccessHandlerRef")).autowire();
-
this.mvc.perform(post("/logout").with(csrf())).andExpect(redirectedUrl("/logoutSuccessEndpoint"));
}
@Test
public void getWhenUnauthenticatedThenUsesConfiguredRequestCache() throws Exception {
this.spring.configLocations(xml("RequestCache")).autowire();
-
RequestCache requestCache = this.spring.getContext().getBean(RequestCache.class);
-
this.mvc.perform(get("/"));
-
verify(requestCache).saveRequest(any(HttpServletRequest.class), any(HttpServletResponse.class));
}
@Test
public void getWhenUnauthenticatedThenUsesConfiguredAuthenticationEntryPoint() throws Exception {
this.spring.configLocations(xml("EntryPoint")).autowire();
-
AuthenticationEntryPoint entryPoint = this.spring.getContext().getBean(AuthenticationEntryPoint.class);
-
this.mvc.perform(get("/"));
-
verify(entryPoint).commence(any(HttpServletRequest.class), any(HttpServletResponse.class),
any(AuthenticationException.class));
}
@@ -426,38 +364,29 @@ public class MiscHttpConfigTests {
@Test
public void configureWhenUsingCustomUserDetailsServiceThenBeanPostProcessorsAreStillApplied() {
this.spring.configLocations(xml("Sec750")).autowire();
-
BeanNameCollectingPostProcessor postProcessor = this.spring.getContext()
.getBean(BeanNameCollectingPostProcessor.class);
-
assertThat(postProcessor.getBeforeInitPostProcessedBeans()).contains("authenticationProvider", "userService");
assertThat(postProcessor.getAfterInitPostProcessedBeans()).contains("authenticationProvider", "userService");
-
}
/* SEC-934 */
@Test
public void getWhenUsingTwoIdenticalInterceptUrlsThenTheSecondTakesPrecedence() throws Exception {
this.spring.configLocations(xml("Sec934")).autowire();
-
this.mvc.perform(get("/protected").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/protected").with(httpBasic("admin", "password"))).andExpect(status().isForbidden());
}
@Test
public void getWhenAuthenticatingThenConsultsCustomSecurityContextRepository() throws Exception {
this.spring.configLocations(xml("SecurityContextRepository")).autowire();
-
SecurityContextRepository repository = this.spring.getContext().getBean(SecurityContextRepository.class);
SecurityContext context = new SecurityContextImpl(new TestingAuthenticationToken("user", "password"));
given(repository.loadContext(any(HttpRequestResponseHolder.class))).willReturn(context);
-
MvcResult result = this.mvc.perform(get("/protected").with(httpBasic("user", "password")))
.andExpect(status().isOk()).andReturn();
-
assertThat(result.getRequest().getSession(false)).isNotNull();
-
verify(repository, atLeastOnce()).saveContext(any(SecurityContext.class), any(HttpServletRequest.class),
any(HttpServletResponse.class));
}
@@ -465,25 +394,18 @@ public class MiscHttpConfigTests {
@Test
public void getWhenUsingInterceptUrlExpressionsThenAuthorizesAccordingly() throws Exception {
this.spring.configLocations(xml("InterceptUrlExpressions")).autowire();
-
this.mvc.perform(get("/protected").with(httpBasic("admin", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/protected").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
-
this.mvc.perform(get("/unprotected").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
}
@Test
public void getWhenUsingCustomExpressionHandlerThenAuthorizesAccordingly() throws Exception {
this.spring.configLocations(xml("ExpressionHandler")).autowire();
-
PermissionEvaluator permissionEvaluator = this.spring.getContext().getBean(PermissionEvaluator.class);
given(permissionEvaluator.hasPermission(any(Authentication.class), any(Object.class), any(Object.class)))
.willReturn(false);
-
this.mvc.perform(get("/").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
-
verify(permissionEvaluator).hasPermission(any(Authentication.class), any(Object.class), any(Object.class));
}
@@ -491,26 +413,19 @@ public class MiscHttpConfigTests {
public void configureWhenProtectingLoginPageThenWarningLogged() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
redirectLogsTo(baos, DefaultFilterChainValidator.class);
-
this.spring.configLocations(xml("ProtectedLoginPage")).autowire();
-
assertThat(baos.toString()).contains("[WARN]");
}
@Test
public void configureWhenUsingDisableUrlRewritingThenRedirectIsNotEncodedByResponse()
throws IOException, ServletException {
-
this.spring.configLocations(xml("DisableUrlRewriting")).autowire();
-
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/");
MockHttpServletResponse response = new MockHttpServletResponse();
-
FilterChainProxy proxy = this.spring.getContext().getBean(FilterChainProxy.class);
-
proxy.doFilter(request, new EncodeUrlDenyingHttpServletResponseWrapper(response), (req, resp) -> {
});
-
assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_MOVED_TEMPORARILY);
assertThat(response.getRedirectedUrl()).isEqualTo("http://localhost/login");
}
@@ -520,11 +435,9 @@ public class MiscHttpConfigTests {
assertThatCode(
() -> this.spring.configLocations(MiscHttpConfigTests.xml("MissingUserDetailsService")).autowire())
.isInstanceOf(BeansException.class);
-
try (XmlWebApplicationContext parent = new XmlWebApplicationContext()) {
parent.setConfigLocations(MiscHttpConfigTests.xml("AutoConfig"));
parent.refresh();
-
try (XmlWebApplicationContext child = new XmlWebApplicationContext()) {
child.setParent(parent);
child.setConfigLocation(MiscHttpConfigTests.xml("MissingUserDetailsService"));
@@ -536,9 +449,7 @@ public class MiscHttpConfigTests {
@Test
public void loginWhenConfiguredWithNoInternalAuthenticationProvidersThenSuccessfullyAuthenticates()
throws Exception {
-
this.spring.configLocations(xml("NoInternalAuthenticationProviders")).autowire();
-
this.mvc.perform(post("/login").param("username", "user").param("password", "password"))
.andExpect(redirectedUrl("/"));
}
@@ -546,16 +457,13 @@ public class MiscHttpConfigTests {
@Test
public void loginWhenUsingDefaultsThenErasesCredentialsAfterAuthentication() throws Exception {
this.spring.configLocations(xml("HttpBasic")).autowire();
-
this.mvc.perform(get("/password").with(httpBasic("user", "password"))).andExpect(content().string(""));
}
@Test
public void loginWhenAuthenticationManagerConfiguredToEraseCredentialsThenErasesCredentialsAfterAuthentication()
throws Exception {
-
this.spring.configLocations(xml("AuthenticationManagerEraseCredentials")).autowire();
-
this.mvc.perform(get("/password").with(httpBasic("user", "password"))).andExpect(content().string(""));
}
@@ -565,28 +473,22 @@ public class MiscHttpConfigTests {
@Test
public void loginWhenAuthenticationManagerRefConfiguredToKeepCredentialsThenKeepsCredentialsAfterAuthentication()
throws Exception {
-
this.spring.configLocations(xml("AuthenticationManagerRefKeepCredentials")).autowire();
-
this.mvc.perform(get("/password").with(httpBasic("user", "password"))).andExpect(content().string("password"));
}
@Test
public void loginWhenAuthenticationManagerRefIsNotAProviderManagerThenKeepsCredentialsAccordingly()
throws Exception {
-
this.spring.configLocations(xml("AuthenticationManagerRefNotProviderManager")).autowire();
-
this.mvc.perform(get("/password").with(httpBasic("user", "password"))).andExpect(content().string("password"));
}
@Test
public void loginWhenJeeFilterThenExtractsRoles() throws Exception {
this.spring.configLocations(xml("JeeFilter")).autowire();
-
Principal user = mock(Principal.class);
given(user.getName()).willReturn("joe");
-
this.mvc.perform(get("/roles").principal(user).with((request) -> {
request.addUserRole("admin");
request.addUserRole("user");
@@ -598,26 +500,19 @@ public class MiscHttpConfigTests {
@Test
public void loginWhenUsingCustomAuthenticationDetailsSourceRefThenAuthenticationSourcesDetailsAccordingly()
throws Exception {
-
this.spring.configLocations(xml("CustomAuthenticationDetailsSourceRef")).autowire();
-
Object details = mock(Object.class);
AuthenticationDetailsSource source = this.spring.getContext().getBean(AuthenticationDetailsSource.class);
given(source.buildDetails(any(Object.class))).willReturn(details);
-
this.mvc.perform(get("/details").with(httpBasic("user", "password")))
.andExpect(content().string(details.getClass().getName()));
-
this.mvc.perform(get("/details")
.with(x509("classpath:org/springframework/security/config/http/MiscHttpConfigTests-certificate.pem")))
.andExpect(content().string(details.getClass().getName()));
-
MockHttpSession session = (MockHttpSession) this.mvc
.perform(post("/login").param("username", "user").param("password", "password").with(csrf()))
.andReturn().getRequest().getSession(false);
-
this.mvc.perform(get("/details").session(session)).andExpect(content().string(details.getClass().getName()));
-
assertThat(ReflectionTestUtils.getField(getFilter(OpenIDAuthenticationFilter.class),
"authenticationDetailsSource")).isEqualTo(source);
}
@@ -625,29 +520,24 @@ public class MiscHttpConfigTests {
@Test
public void loginWhenUsingJaasApiProvisionThenJaasSubjectContainsUsername() throws Exception {
this.spring.configLocations(xml("Jaas")).autowire();
-
AuthorityGranter granter = this.spring.getContext().getBean(AuthorityGranter.class);
given(granter.grant(any(Principal.class))).willReturn(new HashSet<>(Arrays.asList("USER")));
-
this.mvc.perform(get("/username").with(httpBasic("user", "password"))).andExpect(content().string("user"));
}
@Test
public void getWhenUsingCustomHttpFirewallThenFirewallIsInvoked() throws Exception {
this.spring.configLocations(xml("HttpFirewall")).autowire();
-
FirewalledRequest request = new FirewalledRequest(new MockHttpServletRequest()) {
@Override
public void reset() {
}
};
HttpServletResponse response = new MockHttpServletResponse();
-
HttpFirewall firewall = this.spring.getContext().getBean(HttpFirewall.class);
given(firewall.getFirewalledRequest(any(HttpServletRequest.class))).willReturn(request);
given(firewall.getFirewalledResponse(any(HttpServletResponse.class))).willReturn(response);
this.mvc.perform(get("/unprotected"));
-
verify(firewall).getFirewalledRequest(any(HttpServletRequest.class));
verify(firewall).getFirewalledResponse(any(HttpServletResponse.class));
}
@@ -655,22 +545,18 @@ public class MiscHttpConfigTests {
@Test
public void getWhenUsingCustomRequestRejectedHandlerThenRequestRejectedHandlerIsInvoked() throws Exception {
this.spring.configLocations(xml("RequestRejectedHandler")).autowire();
-
HttpServletResponse response = new MockHttpServletResponse();
-
RequestRejectedException rejected = new RequestRejectedException("failed");
HttpFirewall firewall = this.spring.getContext().getBean(HttpFirewall.class);
RequestRejectedHandler requestRejectedHandler = this.spring.getContext().getBean(RequestRejectedHandler.class);
given(firewall.getFirewalledRequest(any(HttpServletRequest.class))).willThrow(rejected);
this.mvc.perform(get("/unprotected"));
-
verify(requestRejectedHandler).handle(any(), any(), any());
}
@Test
public void getWhenUsingCustomAccessDecisionManagerThenAuthorizesAccordingly() throws Exception {
this.spring.configLocations(xml("CustomAccessDecisionManager")).autowire();
-
this.mvc.perform(get("/unprotected").with(httpBasic("user", "password"))).andExpect(status().isForbidden());
}
@@ -680,16 +566,13 @@ public class MiscHttpConfigTests {
@Test
public void authenticateWhenUsingPortMapperThenRedirectsAppropriately() throws Exception {
this.spring.configLocations(xml("PortsMappedRequiresHttps")).autowire();
-
MockHttpSession session = (MockHttpSession) this.mvc.perform(get("https://localhost:9080/protected"))
.andExpect(redirectedUrl("https://localhost:9443/login")).andReturn().getRequest().getSession(false);
-
session = (MockHttpSession) this.mvc
.perform(post("/login").param("username", "user").param("password", "password").session(session)
.with(csrf()))
.andExpect(redirectedUrl("https://localhost:9443/protected")).andReturn().getRequest()
.getSession(false);
-
this.mvc.perform(get("http://localhost:9080/protected").session(session))
.andExpect(redirectedUrl("https://localhost:9443/protected"));
}
@@ -715,7 +598,6 @@ public class MiscHttpConfigTests {
private void assertThatFiltersMatchExpectedAutoConfigList(String url) {
Iterator filters = getFilters(url).iterator();
-
assertThat(filters.next()).isInstanceOf(SecurityContextPersistenceFilter.class);
assertThat(filters.next()).isInstanceOf(WebAsyncManagerIntegrationFilter.class);
assertThat(filters.next()).isInstanceOf(HeaderWriterFilter.class);
@@ -768,11 +650,9 @@ public class MiscHttpConfigTests {
@GetMapping("/customKey")
String customKey() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-
if (authentication != null && authentication instanceof AnonymousAuthenticationToken) {
return String.valueOf(((AnonymousAuthenticationToken) authentication).getKeyHash());
}
-
return null;
}
diff --git a/config/src/test/java/org/springframework/security/config/http/MultiHttpBlockConfigTests.java b/config/src/test/java/org/springframework/security/config/http/MultiHttpBlockConfigTests.java
index dd3fb990e3..4c19f1d5d2 100644
--- a/config/src/test/java/org/springframework/security/config/http/MultiHttpBlockConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/MultiHttpBlockConfigTests.java
@@ -52,12 +52,9 @@ public class MultiHttpBlockConfigTests {
@Test
public void requestWhenUsingMutuallyExclusiveHttpElementsThenIsRoutedAccordingly() throws Exception {
-
this.spring.configLocations(this.xml("DistinctHttpElements")).autowire();
-
this.mvc.perform(MockMvcRequestBuilders.get("/first").with(httpBasic("user", "password")))
.andExpect(status().isOk());
-
this.mvc.perform(post("/second/login").param("username", "user").param("password", "password").with(csrf()))
.andExpect(status().isFound()).andExpect(redirectedUrl("/"));
}
@@ -80,11 +77,8 @@ public class MultiHttpBlockConfigTests {
@Test
public void requestWhenTargettingAuthenticationManagersToCorrespondingHttpElementsThenAuthenticationProceeds()
throws Exception {
-
this.spring.configLocations(this.xml("Sec1937")).autowire();
-
this.mvc.perform(get("/first").with(httpBasic("first", "password")).with(csrf())).andExpect(status().isOk());
-
this.mvc.perform(post("/second/login").param("username", "second").param("password", "password").with(csrf()))
.andExpect(redirectedUrl("/"));
}
diff --git a/config/src/test/java/org/springframework/security/config/http/NamespaceHttpBasicTests.java b/config/src/test/java/org/springframework/security/config/http/NamespaceHttpBasicTests.java
index 028ccf8f6a..166757825d 100644
--- a/config/src/test/java/org/springframework/security/config/http/NamespaceHttpBasicTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/NamespaceHttpBasicTests.java
@@ -88,12 +88,9 @@ public class NamespaceHttpBasicTests {
" ");
// @formatter:on
-
this.request.addHeader("Authorization",
"Basic " + Base64.getEncoder().encodeToString("user:test".getBytes("UTF-8")));
-
this.springSecurityFilterChain.doFilter(this.request, this.response, this.chain);
-
assertThat(this.response.getStatus()).isEqualTo(HttpServletResponse.SC_OK);
}
@@ -108,9 +105,7 @@ public class NamespaceHttpBasicTests {
"\n" +
" ");
// @formatter:on
-
this.springSecurityFilterChain.doFilter(this.request, this.response, this.chain);
-
assertThat(this.response.getStatus()).isEqualTo(HttpServletResponse.SC_UNAUTHORIZED);
assertThat(this.response.getHeader("WWW-Authenticate")).isEqualTo("Basic realm=\"Realm\"");
}
diff --git a/config/src/test/java/org/springframework/security/config/http/OAuth2ClientBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/http/OAuth2ClientBeanDefinitionParserTests.java
index 0b0842641d..a6ade1e729 100644
--- a/config/src/test/java/org/springframework/security/config/http/OAuth2ClientBeanDefinitionParserTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/OAuth2ClientBeanDefinitionParserTests.java
@@ -100,7 +100,6 @@ public class OAuth2ClientBeanDefinitionParserTests {
@Test
public void requestWhenAuthorizeThenRedirect() throws Exception {
this.spring.configLocations(xml("Minimal")).autowire();
-
MvcResult result = this.mvc.perform(get("/oauth2/authorization/google")).andExpect(status().is3xxRedirection())
.andReturn();
assertThat(result.getResponse().getRedirectedUrl()).matches(
@@ -111,58 +110,46 @@ public class OAuth2ClientBeanDefinitionParserTests {
@Test
public void requestWhenCustomClientRegistrationRepositoryThenCalled() throws Exception {
this.spring.configLocations(xml("CustomClientRegistrationRepository")).autowire();
-
ClientRegistration clientRegistration = CommonOAuth2Provider.GOOGLE.getBuilder("google")
.clientId("google-client-id").clientSecret("google-client-secret")
.redirectUri("http://localhost/callback/google").scope("scope1", "scope2").build();
given(this.clientRegistrationRepository.findByRegistrationId(any())).willReturn(clientRegistration);
-
MvcResult result = this.mvc.perform(get("/oauth2/authorization/google")).andExpect(status().is3xxRedirection())
.andReturn();
assertThat(result.getResponse().getRedirectedUrl()).matches(
"https://accounts.google.com/o/oauth2/v2/auth\\?" + "response_type=code&client_id=google-client-id&"
+ "scope=scope1%20scope2&state=.{15,}&redirect_uri=http://localhost/callback/google");
-
verify(this.clientRegistrationRepository).findByRegistrationId(any());
}
@Test
public void requestWhenCustomAuthorizationRequestResolverThenCalled() throws Exception {
this.spring.configLocations(xml("CustomConfiguration")).autowire();
-
ClientRegistration clientRegistration = this.clientRegistrationRepository.findByRegistrationId("google");
-
OAuth2AuthorizationRequest authorizationRequest = createAuthorizationRequest(clientRegistration);
given(this.authorizationRequestResolver.resolve(any())).willReturn(authorizationRequest);
-
this.mvc.perform(get("/oauth2/authorization/google")).andExpect(status().is3xxRedirection())
.andExpect(redirectedUrl("https://accounts.google.com/o/oauth2/v2/auth?"
+ "response_type=code&client_id=google-client-id&"
+ "scope=scope1%20scope2&state=state&redirect_uri=http://localhost/callback/google"));
-
verify(this.authorizationRequestResolver).resolve(any());
}
@Test
public void requestWhenAuthorizationResponseMatchThenProcess() throws Exception {
this.spring.configLocations(xml("CustomConfiguration")).autowire();
-
ClientRegistration clientRegistration = this.clientRegistrationRepository.findByRegistrationId("google");
-
OAuth2AuthorizationRequest authorizationRequest = createAuthorizationRequest(clientRegistration);
given(this.authorizationRequestRepository.loadAuthorizationRequest(any())).willReturn(authorizationRequest);
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get(authorizationRequest.getRedirectUri()).params(params))
.andExpect(status().is3xxRedirection()).andExpect(redirectedUrl(authorizationRequest.getRedirectUri()));
-
ArgumentCaptor authorizedClientCaptor = ArgumentCaptor
.forClass(OAuth2AuthorizedClient.class);
verify(this.authorizedClientRepository).saveAuthorizedClient(authorizedClientCaptor.capture(), any(), any(),
@@ -176,23 +163,18 @@ public class OAuth2ClientBeanDefinitionParserTests {
@Test
public void requestWhenCustomAuthorizedClientServiceThenCalled() throws Exception {
this.spring.configLocations(xml("CustomAuthorizedClientService")).autowire();
-
ClientRegistration clientRegistration = this.clientRegistrationRepository.findByRegistrationId("google");
-
OAuth2AuthorizationRequest authorizationRequest = createAuthorizationRequest(clientRegistration);
given(this.authorizationRequestRepository.loadAuthorizationRequest(any())).willReturn(authorizationRequest);
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get(authorizationRequest.getRedirectUri()).params(params))
.andExpect(status().is3xxRedirection()).andExpect(redirectedUrl(authorizationRequest.getRedirectUri()));
-
verify(this.authorizedClientService).saveAuthorizedClient(any(), any());
}
@@ -200,13 +182,10 @@ public class OAuth2ClientBeanDefinitionParserTests {
@Test
public void requestWhenAuthorizedClientFoundThenMethodArgumentResolved() throws Exception {
this.spring.configLocations(xml("AuthorizedClientArgumentResolver")).autowire();
-
ClientRegistration clientRegistration = this.clientRegistrationRepository.findByRegistrationId("google");
-
OAuth2AuthorizedClient authorizedClient = new OAuth2AuthorizedClient(clientRegistration, "user",
TestOAuth2AccessTokens.noScopes());
given(this.authorizedClientRepository.loadAuthorizedClient(any(), any(), any())).willReturn(authorizedClient);
-
this.mvc.perform(get("/authorized-client")).andExpect(status().isOk()).andExpect(content().string("resolved"));
}
diff --git a/config/src/test/java/org/springframework/security/config/http/OAuth2LoginBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/http/OAuth2LoginBeanDefinitionParserTests.java
index 190fd7e704..50e77f770c 100644
--- a/config/src/test/java/org/springframework/security/config/http/OAuth2LoginBeanDefinitionParserTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/OAuth2LoginBeanDefinitionParserTests.java
@@ -144,9 +144,7 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestLoginWhenMultiClientRegistrationThenReturnLoginPageWithClients() throws Exception {
this.spring.configLocations(this.xml("MultiClientRegistration")).autowire();
-
MvcResult result = this.mvc.perform(get("/login")).andExpect(status().is2xxSuccessful()).andReturn();
-
assertThat(result.getResponse().getContentAsString())
.contains("Google");
assertThat(result.getResponse().getContentAsString())
@@ -157,10 +155,8 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestWhenSingleClientRegistrationThenAutoRedirect() throws Exception {
this.spring.configLocations(this.xml("SingleClientRegistration")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().is3xxRedirection())
.andExpect(redirectedUrl("http://localhost/oauth2/authorization/google-login"));
-
verify(this.requestCache).saveRequest(any(), any());
}
@@ -169,7 +165,6 @@ public class OAuth2LoginBeanDefinitionParserTests {
public void requestWhenSingleClientRegistrationAndRequestFaviconNotAuthenticatedThenRedirectDefaultLoginPage()
throws Exception {
this.spring.configLocations(this.xml("SingleClientRegistration")).autowire();
-
this.mvc.perform(get("/favicon.ico").accept(new MediaType("image", "*"))).andExpect(status().is3xxRedirection())
.andExpect(redirectedUrl("http://localhost/login"));
}
@@ -179,7 +174,6 @@ public class OAuth2LoginBeanDefinitionParserTests {
public void requestWhenSingleClientRegistrationAndRequestXHRNotAuthenticatedThenDoesNotRedirectForAuthorization()
throws Exception {
this.spring.configLocations(this.xml("SingleClientRegistration")).autowire();
-
this.mvc.perform(get("/").header("X-Requested-With", "XMLHttpRequest")).andExpect(status().is3xxRedirection())
.andExpect(redirectedUrl("http://localhost/login"));
}
@@ -188,12 +182,10 @@ public class OAuth2LoginBeanDefinitionParserTests {
public void requestWhenAuthorizationRequestNotFoundThenThrowAuthenticationException() throws Exception {
this.spring.configLocations(this.xml("SingleClientRegistration-WithCustomAuthenticationFailureHandler"))
.autowire();
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", "state123");
this.mvc.perform(get("/login/oauth2/code/google").params(params));
-
ArgumentCaptor exceptionCaptor = ArgumentCaptor
.forClass(AuthenticationException.class);
verify(this.authenticationFailureHandler).onAuthenticationFailure(any(), any(), exceptionCaptor.capture());
@@ -206,25 +198,20 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestWhenAuthorizationResponseValidThenAuthenticate() throws Exception {
this.spring.configLocations(this.xml("MultiClientRegistration-WithCustomConfiguration")).autowire();
-
Map attributes = new HashMap<>();
attributes.put(OAuth2ParameterNames.REGISTRATION_ID, "github-login");
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
.attributes(attributes).build();
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
OAuth2User oauth2User = TestOAuth2Users.create();
given(this.oauth2UserService.loadUser(any())).willReturn(oauth2User);
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get("/login/oauth2/code/github-login").params(params)).andExpect(status().is2xxSuccessful());
-
ArgumentCaptor authenticationCaptor = ArgumentCaptor.forClass(Authentication.class);
verify(this.authenticationSuccessHandler).onAuthenticationSuccess(any(), any(), authenticationCaptor.capture());
Authentication authentication = authenticationCaptor.getValue();
@@ -235,25 +222,20 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestWhenAuthorizationResponseValidThenAuthenticationSuccessEventPublished() throws Exception {
this.spring.configLocations(this.xml("MultiClientRegistration-WithCustomConfiguration")).autowire();
-
Map attributes = new HashMap<>();
attributes.put(OAuth2ParameterNames.REGISTRATION_ID, "github-login");
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
.attributes(attributes).build();
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
OAuth2User oauth2User = TestOAuth2Users.create();
given(this.oauth2UserService.loadUser(any())).willReturn(oauth2User);
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get("/login/oauth2/code/github-login").params(params));
-
verify(this.authenticationSuccessListener).onApplicationEvent(any(AuthenticationSuccessEvent.class));
}
@@ -261,27 +243,22 @@ public class OAuth2LoginBeanDefinitionParserTests {
public void requestWhenOidcAuthenticationResponseValidThenJwtDecoderFactoryCalled() throws Exception {
this.spring.configLocations(this.xml("SingleClientRegistration-WithJwtDecoderFactoryAndDefaultSuccessHandler"))
.autowire();
-
Map attributes = new HashMap<>();
attributes.put(OAuth2ParameterNames.REGISTRATION_ID, "google-login");
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.oidcRequest()
.attributes(attributes).build();
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.oidcAccessTokenResponse()
.build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
Jwt jwt = TestJwts.user();
given(this.jwtDecoderFactory.createDecoder(any())).willReturn((token) -> jwt);
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get("/login/oauth2/code/google-login").params(params)).andExpect(status().is3xxRedirection())
.andExpect(redirectedUrl("/"));
-
verify(this.jwtDecoderFactory).createDecoder(any());
verify(this.requestCache).getRequest(any(), any());
}
@@ -290,28 +267,22 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestWhenCustomGrantedAuthoritiesMapperThenCalled() throws Exception {
this.spring.configLocations(this.xml("MultiClientRegistration-WithCustomGrantedAuthorities")).autowire();
-
Map attributes = new HashMap<>();
attributes.put(OAuth2ParameterNames.REGISTRATION_ID, "github-login");
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
.attributes(attributes).build();
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
OAuth2User oauth2User = TestOAuth2Users.create();
given(this.oauth2UserService.loadUser(any())).willReturn(oauth2User);
-
given(this.userAuthoritiesMapper.mapAuthorities(any()))
.willReturn((Collection) AuthorityUtils.createAuthorityList("ROLE_OAUTH2_USER"));
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get("/login/oauth2/code/github-login").params(params)).andExpect(status().is2xxSuccessful());
-
ArgumentCaptor authenticationCaptor = ArgumentCaptor.forClass(Authentication.class);
verify(this.authenticationSuccessHandler).onAuthenticationSuccess(any(), any(), authenticationCaptor.capture());
Authentication authentication = authenticationCaptor.getValue();
@@ -319,25 +290,19 @@ public class OAuth2LoginBeanDefinitionParserTests {
assertThat(authentication.getAuthorities()).hasSize(1);
assertThat(authentication.getAuthorities()).first().isInstanceOf(SimpleGrantedAuthority.class)
.hasToString("ROLE_OAUTH2_USER");
-
// re-setup for OIDC test
attributes = new HashMap<>();
attributes.put(OAuth2ParameterNames.REGISTRATION_ID, "google-login");
authorizationRequest = TestOAuth2AuthorizationRequests.oidcRequest().attributes(attributes).build();
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
accessTokenResponse = TestOAuth2AccessTokenResponses.oidcAccessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
Jwt jwt = TestJwts.user();
given(this.jwtDecoderFactory.createDecoder(any())).willReturn((token) -> jwt);
-
given(this.userAuthoritiesMapper.mapAuthorities(any()))
.willReturn((Collection) AuthorityUtils.createAuthorityList("ROLE_OIDC_USER"));
-
this.mvc.perform(get("/login/oauth2/code/google-login").params(params)).andExpect(status().is2xxSuccessful());
-
authenticationCaptor = ArgumentCaptor.forClass(Authentication.class);
verify(this.authenticationSuccessHandler, times(2)).onAuthenticationSuccess(any(), any(),
authenticationCaptor.capture());
@@ -352,25 +317,20 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestWhenCustomLoginProcessingUrlThenProcessAuthentication() throws Exception {
this.spring.configLocations(this.xml("MultiClientRegistration-WithCustomLoginProcessingUrl")).autowire();
-
Map attributes = new HashMap<>();
attributes.put(OAuth2ParameterNames.REGISTRATION_ID, "github-login");
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
.attributes(attributes).build();
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
OAuth2User oauth2User = TestOAuth2Users.create();
given(this.oauth2UserService.loadUser(any())).willReturn(oauth2User);
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get("/login/oauth2/github-login").params(params)).andExpect(status().is2xxSuccessful());
-
ArgumentCaptor authenticationCaptor = ArgumentCaptor.forClass(Authentication.class);
verify(this.authenticationSuccessHandler).onAuthenticationSuccess(any(), any(), authenticationCaptor.capture());
Authentication authentication = authenticationCaptor.getValue();
@@ -382,9 +342,7 @@ public class OAuth2LoginBeanDefinitionParserTests {
public void requestWhenCustomAuthorizationRequestResolverThenCalled() throws Exception {
this.spring.configLocations(this.xml("SingleClientRegistration-WithCustomAuthorizationRequestResolver"))
.autowire();
-
this.mvc.perform(get("/oauth2/authorization/google-login")).andExpect(status().is3xxRedirection());
-
verify(this.authorizationRequestResolver).resolve(any());
}
@@ -392,7 +350,6 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestWhenMultiClientRegistrationThenRedirectDefaultLoginPage() throws Exception {
this.spring.configLocations(this.xml("MultiClientRegistration")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().is3xxRedirection())
.andExpect(redirectedUrl("http://localhost/login"));
}
@@ -400,7 +357,6 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestWhenCustomLoginPageThenRedirectCustomLoginPage() throws Exception {
this.spring.configLocations(this.xml("SingleClientRegistration-WithCustomLoginPage")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().is3xxRedirection())
.andExpect(redirectedUrl("http://localhost/custom-login"));
}
@@ -410,7 +366,6 @@ public class OAuth2LoginBeanDefinitionParserTests {
public void requestWhenSingleClientRegistrationAndFormLoginConfiguredThenRedirectDefaultLoginPage()
throws Exception {
this.spring.configLocations(this.xml("SingleClientRegistration-WithFormLogin")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().is3xxRedirection())
.andExpect(redirectedUrl("http://localhost/login"));
}
@@ -418,84 +373,66 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestWhenCustomClientRegistrationRepositoryThenCalled() throws Exception {
this.spring.configLocations(this.xml("WithCustomClientRegistrationRepository")).autowire();
-
ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration().build();
given(this.clientRegistrationRepository.findByRegistrationId(any())).willReturn(clientRegistration);
-
Map attributes = new HashMap<>();
attributes.put(OAuth2ParameterNames.REGISTRATION_ID, clientRegistration.getRegistrationId());
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
.attributes(attributes).build();
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
OAuth2User oauth2User = TestOAuth2Users.create();
given(this.oauth2UserService.loadUser(any())).willReturn(oauth2User);
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get("/login/oauth2/code/" + clientRegistration.getRegistrationId()).params(params));
-
verify(this.clientRegistrationRepository).findByRegistrationId(clientRegistration.getRegistrationId());
}
@Test
public void requestWhenCustomAuthorizedClientRepositoryThenCalled() throws Exception {
this.spring.configLocations(this.xml("WithCustomAuthorizedClientRepository")).autowire();
-
ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration().build();
given(this.clientRegistrationRepository.findByRegistrationId(any())).willReturn(clientRegistration);
-
Map attributes = new HashMap<>();
attributes.put(OAuth2ParameterNames.REGISTRATION_ID, clientRegistration.getRegistrationId());
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
.attributes(attributes).build();
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
OAuth2User oauth2User = TestOAuth2Users.create();
given(this.oauth2UserService.loadUser(any())).willReturn(oauth2User);
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get("/login/oauth2/code/" + clientRegistration.getRegistrationId()).params(params));
-
verify(this.authorizedClientRepository).saveAuthorizedClient(any(), any(), any(), any());
}
@Test
public void requestWhenCustomAuthorizedClientServiceThenCalled() throws Exception {
this.spring.configLocations(this.xml("WithCustomAuthorizedClientService")).autowire();
-
ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration().build();
given(this.clientRegistrationRepository.findByRegistrationId(any())).willReturn(clientRegistration);
-
Map attributes = new HashMap<>();
attributes.put(OAuth2ParameterNames.REGISTRATION_ID, clientRegistration.getRegistrationId());
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
.attributes(attributes).build();
given(this.authorizationRequestRepository.removeAuthorizationRequest(any(), any()))
.willReturn(authorizationRequest);
-
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse().build();
given(this.accessTokenResponseClient.getTokenResponse(any())).willReturn(accessTokenResponse);
-
OAuth2User oauth2User = TestOAuth2Users.create();
given(this.oauth2UserService.loadUser(any())).willReturn(oauth2User);
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("code", "code123");
params.add("state", authorizationRequest.getState());
this.mvc.perform(get("/login/oauth2/code/" + clientRegistration.getRegistrationId()).params(params));
-
verify(this.authorizedClientService).saveAuthorizedClient(any(), any());
}
@@ -503,13 +440,10 @@ public class OAuth2LoginBeanDefinitionParserTests {
@Test
public void requestWhenAuthorizedClientFoundThenMethodArgumentResolved() throws Exception {
this.spring.configLocations(xml("AuthorizedClientArgumentResolver")).autowire();
-
ClientRegistration clientRegistration = this.clientRegistrationRepository.findByRegistrationId("google-login");
-
OAuth2AuthorizedClient authorizedClient = new OAuth2AuthorizedClient(clientRegistration, "user",
TestOAuth2AccessTokens.noScopes());
given(this.authorizedClientRepository.loadAuthorizedClient(any(), any(), any())).willReturn(authorizedClient);
-
this.mvc.perform(get("/authorized-client")).andExpect(status().isOk()).andExpect(content().string("resolved"));
}
diff --git a/config/src/test/java/org/springframework/security/config/http/OAuth2ResourceServerBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/http/OAuth2ResourceServerBeanDefinitionParserTests.java
index aa233653b1..9ba660ea3a 100644
--- a/config/src/test/java/org/springframework/security/config/http/OAuth2ResourceServerBeanDefinitionParserTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/OAuth2ResourceServerBeanDefinitionParserTests.java
@@ -138,7 +138,6 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ValidNoScopes");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isNotFound());
}
@@ -147,59 +146,48 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
this.spring.configLocations(xml("WebServer"), xml("JwkSetUri")).autowire();
mockWebServer(jwks("Default"));
String token = this.token("ValidNoScopes");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isNotFound());
}
@Test
public void getWhenExpiredBearerTokenThenInvalidToken() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("Expired");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isUnauthorized())
.andExpect(invalidTokenHeader("An error occurred while attempting to decode the Jwt"));
}
@Test
public void getWhenBadJwkEndpointThenInvalidToken() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations("malformed");
String token = this.token("ValidNoScopes");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isUnauthorized())
.andExpect(header().string("WWW-Authenticate", "Bearer"));
}
@Test
public void getWhenUnavailableJwkEndpointThenInvalidToken() throws Exception {
-
this.spring.configLocations(xml("WebServer"), xml("JwkSetUri")).autowire();
this.web.shutdown();
String token = this.token("ValidNoScopes");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isUnauthorized())
.andExpect(header().string("WWW-Authenticate", "Bearer"));
}
@Test
public void getWhenMalformedBearerTokenThenInvalidToken() throws Exception {
-
this.spring.configLocations(xml("JwkSetUri")).autowire();
-
this.mvc.perform(get("/").header("Authorization", "Bearer an\"invalid\"token"))
.andExpect(status().isUnauthorized()).andExpect(invalidTokenHeader("Bearer token is malformed"));
}
@Test
public void getWhenMalformedPayloadThenInvalidToken() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("MalformedPayload");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isUnauthorized())
.andExpect(
invalidTokenHeader("An error occurred while attempting to decode the Jwt: Malformed payload"));
@@ -207,30 +195,24 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void getWhenUnsignedBearerTokenThenInvalidToken() throws Exception {
-
this.spring.configLocations(xml("JwkSetUri")).autowire();
String token = this.token("Unsigned");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isUnauthorized())
.andExpect(invalidTokenHeader("Unsupported algorithm of none"));
}
@Test
public void getWhenBearerTokenBeforeNotBeforeThenInvalidToken() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
this.mockRestOperations(jwks("Default"));
String token = this.token("TooEarly");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isUnauthorized())
.andExpect(invalidTokenHeader("An error occurred while attempting to decode the Jwt"));
}
@Test
public void getWhenBearerTokenInTwoPlacesThenInvalidRequest() throws Exception {
-
this.spring.configLocations(xml("JwkSetUri")).autowire();
-
this.mvc.perform(get("/").header("Authorization", "Bearer token").param("access_token", "token"))
.andExpect(status().isBadRequest())
.andExpect(invalidRequestHeader("Found multiple bearer tokens in the request"));
@@ -238,22 +220,17 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void getWhenBearerTokenInTwoParametersThenInvalidRequest() throws Exception {
-
this.spring.configLocations(xml("JwkSetUri")).autowire();
-
MultiValueMap params = new LinkedMultiValueMap<>();
params.add("access_token", "token1");
params.add("access_token", "token2");
-
this.mvc.perform(get("/").params(params)).andExpect(status().isBadRequest())
.andExpect(invalidRequestHeader("Found multiple bearer tokens in the request"));
}
@Test
public void postWhenBearerTokenAsFormParameterThenIgnoresToken() throws Exception {
-
this.spring.configLocations(xml("JwkSetUri")).autowire();
-
this.mvc.perform(post("/") // engage csrf
.param("access_token", "token")).andExpect(status().isForbidden())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, "Bearer")); // different
@@ -263,95 +240,77 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void getWhenNoBearerTokenThenUnauthorized() throws Exception {
-
this.spring.configLocations(xml("JwkSetUri")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isUnauthorized())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, "Bearer"));
}
@Test
public void getWhenSufficientlyScopedBearerTokenThenAcceptsRequest() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ValidMessageReadScope");
-
this.mvc.perform(get("/requires-read-scope").header("Authorization", "Bearer " + token))
.andExpect(status().isNotFound());
}
@Test
public void getWhenInsufficientScopeThenInsufficientScopeError() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ValidNoScopes");
-
this.mvc.perform(get("/requires-read-scope").header("Authorization", "Bearer " + token))
.andExpect(status().isForbidden()).andExpect(insufficientScopeHeader());
}
@Test
public void getWhenInsufficientScpThenInsufficientScopeError() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ValidMessageWriteScp");
-
this.mvc.perform(get("/requires-read-scope").header("Authorization", "Bearer " + token))
.andExpect(status().isForbidden()).andExpect(insufficientScopeHeader());
}
@Test
public void getWhenAuthorizationServerHasNoMatchingKeyThenInvalidToken() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Empty"));
String token = this.token("ValidNoScopes");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isUnauthorized())
.andExpect(invalidTokenHeader("An error occurred while attempting to decode the Jwt"));
}
@Test
public void getWhenAuthorizationServerHasMultipleMatchingKeysThenOk() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("TwoKeys"));
String token = this.token("ValidNoScopes");
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer " + token))
.andExpect(status().isNotFound());
}
@Test
public void getWhenKeyMatchesByKidThenOk() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("TwoKeys"));
String token = this.token("Kid");
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer " + token))
.andExpect(status().isNotFound());
}
@Test
public void postWhenValidBearerTokenAndNoCsrfTokenThenOk() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ValidNoScopes");
-
this.mvc.perform(post("/authenticated").header("Authorization", "Bearer " + token))
.andExpect(status().isNotFound());
}
@Test
public void postWhenNoBearerTokenThenCsrfDenies() throws Exception {
-
this.spring.configLocations(xml("JwkSetUri")).autowire();
-
this.mvc.perform(post("/authenticated")).andExpect(status().isForbidden())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, "Bearer")); // different
// from
@@ -360,11 +319,9 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void postWhenExpiredBearerTokenAndNoCsrfThenInvalidToken() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("Expired");
-
this.mvc.perform(post("/authenticated").header("Authorization", "Bearer " + token))
.andExpect(status().isUnauthorized())
.andExpect(invalidTokenHeader("An error occurred while attempting to decode the Jwt"));
@@ -372,49 +329,37 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void requestWhenJwtThenSessionIsNotCreated() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ValidNoScopes");
-
MvcResult result = this.mvc.perform(get("/").header("Authorization", "Bearer " + token))
.andExpect(status().isNotFound()).andReturn();
-
assertThat(result.getRequest().getSession(false)).isNull();
}
@Test
public void requestWhenIntrospectionThenSessionIsNotCreated() throws Exception {
-
this.spring.configLocations(xml("WebServer"), xml("IntrospectionUri")).autowire();
mockWebServer(json("Active"));
-
MvcResult result = this.mvc.perform(get("/authenticated").header("Authorization", "Bearer token"))
.andExpect(status().isNotFound()).andReturn();
-
assertThat(result.getRequest().getSession(false)).isNull();
}
@Test
public void requestWhenNoBearerTokenThenSessionIsCreated() throws Exception {
-
this.spring.configLocations(xml("JwkSetUri")).autowire();
-
MvcResult result = this.mvc.perform(get("/")).andExpect(status().isUnauthorized()).andReturn();
-
assertThat(result.getRequest().getSession(false)).isNotNull();
}
@Test
public void requestWhenSessionManagementConfiguredThenUses() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("AlwaysSessionCreation")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ValidNoScopes");
-
MvcResult result = this.mvc.perform(get("/").header("Authorization", "Bearer " + token))
.andExpect(status().isNotFound()).andReturn();
-
assertThat(result.getRequest().getSession(false)).isNotNull();
}
@@ -422,15 +367,11 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
public void getWhenCustomBearerTokenResolverThenUses() throws Exception {
this.spring.configLocations(xml("MockBearerTokenResolver"), xml("MockJwtDecoder"), xml("BearerTokenResolver"))
.autowire();
-
JwtDecoder decoder = this.spring.getContext().getBean(JwtDecoder.class);
given(decoder.decode("token")).willReturn(TestJwts.jwt().build());
-
BearerTokenResolver bearerTokenResolver = this.spring.getContext().getBean(BearerTokenResolver.class);
given(bearerTokenResolver.resolve(any(HttpServletRequest.class))).willReturn("token");
-
this.mvc.perform(get("/")).andExpect(status().isNotFound());
-
verify(decoder).decode("token");
verify(bearerTokenResolver).resolve(any(HttpServletRequest.class));
}
@@ -438,41 +379,30 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void requestWhenBearerTokenResolverAllowsRequestBodyThenEitherHeaderOrRequestBodyIsAccepted()
throws Exception {
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("AllowBearerTokenInBody")).autowire();
-
JwtDecoder decoder = this.spring.getContext().getBean(JwtDecoder.class);
given(decoder.decode(anyString())).willReturn(TestJwts.jwt().build());
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer token"))
.andExpect(status().isNotFound());
-
this.mvc.perform(post("/authenticated").param("access_token", "token")).andExpect(status().isNotFound());
}
@Test
public void requestWhenBearerTokenResolverAllowsQueryParameterThenEitherHeaderOrQueryParameterIsAccepted()
throws Exception {
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("AllowBearerTokenInQuery")).autowire();
-
JwtDecoder decoder = this.spring.getContext().getBean(JwtDecoder.class);
given(decoder.decode(anyString())).willReturn(TestJwts.jwt().build());
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer token"))
.andExpect(status().isNotFound());
-
this.mvc.perform(get("/authenticated").param("access_token", "token")).andExpect(status().isNotFound());
-
verify(decoder, times(2)).decode("token");
}
@Test
public void requestWhenBearerTokenResolverAllowsRequestBodyAndRequestContainsTwoTokensThenInvalidRequest()
throws Exception {
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("AllowBearerTokenInBody")).autowire();
-
this.mvc.perform(post("/authenticated").param("access_token", "token").header("Authorization", "Bearer token")
.with(csrf())).andExpect(status().isBadRequest())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, containsString("invalid_request")));
@@ -481,9 +411,7 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void requestWhenBearerTokenResolverAllowsQueryParameterAndRequestContainsTwoTokensThenInvalidRequest()
throws Exception {
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("AllowBearerTokenInQuery")).autowire();
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer token").param("access_token", "token"))
.andExpect(status().isBadRequest())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, containsString("invalid_request")));
@@ -493,22 +421,16 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
public void getBearerTokenResolverWhenNoResolverSpecifiedThenTheDefaultIsUsed() {
OAuth2ResourceServerBeanDefinitionParser oauth2 = new OAuth2ResourceServerBeanDefinitionParser(
mock(BeanReference.class), mock(List.class), mock(Map.class), mock(Map.class), mock(List.class));
-
assertThat(oauth2.getBearerTokenResolver(mock(Element.class))).isInstanceOf(RootBeanDefinition.class);
}
@Test
public void requestWhenCustomJwtDecoderThenUsed() throws Exception {
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("Jwt")).autowire();
-
JwtDecoder decoder = this.spring.getContext().getBean(JwtDecoder.class);
-
given(decoder.decode(anyString())).willReturn(TestJwts.jwt().build());
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer token"))
.andExpect(status().isNotFound());
-
verify(decoder).decode("token");
}
@@ -520,12 +442,9 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void requestWhenRealmNameConfiguredThenUsesOnUnauthenticated() throws Exception {
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("AuthenticationEntryPoint")).autowire();
-
JwtDecoder decoder = this.spring.getContext().getBean(JwtDecoder.class);
Mockito.when(decoder.decode(anyString())).thenThrow(JwtException.class);
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer invalid_token"))
.andExpect(status().isUnauthorized())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer realm=\"myRealm\"")));
@@ -533,12 +452,9 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void requestWhenRealmNameConfiguredThenUsesOnAccessDenied() throws Exception {
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("AccessDeniedHandler")).autowire();
-
JwtDecoder decoder = this.spring.getContext().getBean(JwtDecoder.class);
given(decoder.decode(anyString())).willReturn(TestJwts.jwt().build());
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer insufficiently_scoped"))
.andExpect(status().isForbidden())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer realm=\"myRealm\"")));
@@ -546,86 +462,66 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void requestWhenCustomJwtValidatorFailsThenCorrespondingErrorMessage() throws Exception {
-
this.spring.configLocations(xml("MockJwtValidator"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ValidNoScopes");
-
OAuth2TokenValidator jwtValidator = this.spring.getContext().getBean(OAuth2TokenValidator.class);
-
OAuth2Error error = new OAuth2Error("custom-error", "custom-description", "custom-uri");
-
given(jwtValidator.validate(any(Jwt.class))).willReturn(OAuth2TokenValidatorResult.failure(error));
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isUnauthorized())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, containsString("custom-description")));
}
@Test
public void requestWhenClockSkewSetThenTimestampWindowRelaxedAccordingly() throws Exception {
-
this.spring.configLocations(xml("UnexpiredJwtClockSkew"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ExpiresAt4687177990");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isNotFound());
}
@Test
public void requestWhenClockSkewSetButJwtStillTooLateThenReportsExpired() throws Exception {
-
this.spring.configLocations(xml("ExpiredJwtClockSkew"), xml("Jwt")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ExpiresAt4687177990");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isUnauthorized())
.andExpect(invalidTokenHeader("Jwt expired at"));
}
@Test
public void requestWhenJwtAuthenticationConverterThenUsed() throws Exception {
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("MockJwtAuthenticationConverter"),
xml("JwtAuthenticationConverter")).autowire();
-
Converter jwtAuthenticationConverter = (Converter) this.spring
.getContext().getBean("jwtAuthenticationConverter");
given(jwtAuthenticationConverter.convert(any(Jwt.class)))
.willReturn(new JwtAuthenticationToken(TestJwts.jwt().build(), Collections.emptyList()));
-
JwtDecoder jwtDecoder = this.spring.getContext().getBean(JwtDecoder.class);
given(jwtDecoder.decode(anyString())).willReturn(TestJwts.jwt().build());
-
this.mvc.perform(get("/").header("Authorization", "Bearer token")).andExpect(status().isNotFound());
-
verify(jwtAuthenticationConverter).convert(any(Jwt.class));
}
@Test
public void requestWhenUsingPublicKeyAndValidTokenThenAuthenticates() throws Exception {
-
this.spring.configLocations(xml("SingleKey"), xml("Jwt")).autowire();
String token = this.token("ValidNoScopes");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token)).andExpect(status().isNotFound());
}
@Test
public void requestWhenUsingPublicKeyAndSignatureFailsThenReturnsInvalidToken() throws Exception {
-
this.spring.configLocations(xml("SingleKey"), xml("Jwt")).autowire();
String token = this.token("WrongSignature");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token))
.andExpect(invalidTokenHeader("signature"));
}
@Test
public void requestWhenUsingPublicKeyAlgorithmDoesNotMatchThenReturnsInvalidToken() throws Exception {
-
this.spring.configLocations(xml("SingleKey"), xml("Jwt")).autowire();
String token = this.token("WrongAlgorithm");
-
this.mvc.perform(get("/").header("Authorization", "Bearer " + token))
.andExpect(invalidTokenHeader("algorithm"));
}
@@ -634,7 +530,6 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
public void getWhenIntrospectingThenOk() throws Exception {
this.spring.configLocations(xml("OpaqueTokenRestOperations"), xml("OpaqueToken")).autowire();
mockRestOperations(json("Active"));
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer token"))
.andExpect(status().isNotFound());
}
@@ -643,7 +538,6 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
public void getWhenIntrospectionFailsThenUnauthorized() throws Exception {
this.spring.configLocations(xml("OpaqueTokenRestOperations"), xml("OpaqueToken")).autowire();
mockRestOperations(json("Inactive"));
-
this.mvc.perform(get("/").header("Authorization", "Bearer token")).andExpect(status().isUnauthorized())
.andExpect(
header().string(HttpHeaders.WWW_AUTHENTICATE, containsString("Provided token isn't active")));
@@ -653,7 +547,6 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
public void getWhenIntrospectionLacksScopeThenForbidden() throws Exception {
this.spring.configLocations(xml("OpaqueTokenRestOperations"), xml("OpaqueToken")).autowire();
mockRestOperations(json("ActiveNoScopes"));
-
this.mvc.perform(get("/requires-read-scope").header("Authorization", "Bearer token"))
.andExpect(status().isForbidden())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, containsString("scope")));
@@ -674,21 +567,17 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void getWhenAuthenticationManagerResolverThenUses() throws Exception {
this.spring.configLocations(xml("AuthenticationManagerResolver")).autowire();
-
AuthenticationManagerResolver authenticationManagerResolver = this.spring.getContext()
.getBean(AuthenticationManagerResolver.class);
given(authenticationManagerResolver.resolve(any(HttpServletRequest.class))).willReturn(
(authentication) -> new JwtAuthenticationToken(TestJwts.jwt().build(), Collections.emptyList()));
-
this.mvc.perform(get("/").header("Authorization", "Bearer token")).andExpect(status().isNotFound());
-
verify(authenticationManagerResolver).resolve(any(HttpServletRequest.class));
}
@Test
public void getWhenMultipleIssuersThenUsesIssuerClaimToDifferentiate() throws Exception {
this.spring.configLocations(xml("WebServer"), xml("MultipleIssuers")).autowire();
-
MockWebServer server = this.spring.getContext().getBean(MockWebServer.class);
String metadata = "{\n" + " \"issuer\": \"%s\", \n" + " \"jwks_uri\": \"%s/.well-known/jwks.json\" \n"
+ "}";
@@ -699,22 +588,16 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
String jwtOne = jwtFromIssuer(issuerOne);
String jwtTwo = jwtFromIssuer(issuerTwo);
String jwtThree = jwtFromIssuer(issuerThree);
-
mockWebServer(String.format(metadata, issuerOne, issuerOne));
mockWebServer(jwkSet);
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer " + jwtOne))
.andExpect(status().isNotFound());
-
mockWebServer(String.format(metadata, issuerTwo, issuerTwo));
mockWebServer(jwkSet);
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer " + jwtTwo))
.andExpect(status().isNotFound());
-
mockWebServer(String.format(metadata, issuerThree, issuerThree));
mockWebServer(jwkSet);
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer " + jwtThree))
.andExpect(status().isUnauthorized()).andExpect(invalidTokenHeader("Invalid issuer"));
}
@@ -722,18 +605,13 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void requestWhenBasicAndResourceServerEntryPointsThenBearerTokenPresides() throws Exception {
// different from DSL
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("BasicAndResourceServer")).autowire();
-
JwtDecoder decoder = this.spring.getContext().getBean(JwtDecoder.class);
given(decoder.decode(anyString())).willThrow(JwtException.class);
-
this.mvc.perform(get("/authenticated").with(httpBasic("some", "user"))).andExpect(status().isUnauthorized())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, startsWith("Basic")));
-
this.mvc.perform(get("/authenticated")).andExpect(status().isUnauthorized())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer")));
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer invalid_token"))
.andExpect(status().isUnauthorized())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer")));
@@ -742,32 +620,23 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
@Test
public void requestWhenFormLoginAndResourceServerEntryPointsThenSessionCreatedByRequest() throws Exception {
// different from DSL
-
this.spring.configLocations(xml("MockJwtDecoder"), xml("FormAndResourceServer")).autowire();
-
JwtDecoder decoder = this.spring.getContext().getBean(JwtDecoder.class);
given(decoder.decode(anyString())).willThrow(JwtException.class);
-
MvcResult result = this.mvc.perform(get("/authenticated")).andExpect(status().isUnauthorized()).andReturn();
-
assertThat(result.getRequest().getSession(false)).isNotNull();
-
result = this.mvc.perform(get("/authenticated").header("Authorization", "Bearer token"))
.andExpect(status().isUnauthorized()).andReturn();
-
assertThat(result.getRequest().getSession(false)).isNull();
}
@Test
public void getWhenAlsoUsingHttpBasicThenCorrectProviderEngages() throws Exception {
-
this.spring.configLocations(xml("JwtRestOperations"), xml("BasicAndResourceServer")).autowire();
mockRestOperations(jwks("Default"));
String token = this.token("ValidNoScopes");
-
this.mvc.perform(get("/authenticated").header("Authorization", "Bearer " + token))
.andExpect(status().isNotFound());
-
this.mvc.perform(get("/authenticated").with(httpBasic("user", "password"))).andExpect(status().isNotFound());
}
@@ -800,11 +669,9 @@ public class OAuth2ResourceServerBeanDefinitionParserTests {
.willReturn(true);
Element child = mock(Element.class);
ParserContext pc = new ParserContext(mock(XmlReaderContext.class), mock(BeanDefinitionParserDelegate.class));
-
parser.validateConfiguration(element, child, null, pc);
verify(pc.getReaderContext()).error(anyString(), eq(element));
reset(pc.getReaderContext());
-
parser.validateConfiguration(element, null, child, pc);
verify(pc.getReaderContext()).error(anyString(), eq(element));
}
diff --git a/config/src/test/java/org/springframework/security/config/http/OpenIDConfigTests.java b/config/src/test/java/org/springframework/security/config/http/OpenIDConfigTests.java
index fad993004f..7017e60822 100644
--- a/config/src/test/java/org/springframework/security/config/http/OpenIDConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/OpenIDConfigTests.java
@@ -72,63 +72,47 @@ public class OpenIDConfigTests {
@Test
public void requestWhenOpenIDAndFormLoginBothConfiguredThenRedirectsToGeneratedLoginPage() throws Exception {
-
this.spring.configLocations(this.xml("WithFormLogin")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isFound()).andExpect(redirectedUrl("http://localhost/login"));
-
assertThat(getFilter(DefaultLoginPageGeneratingFilter.class)).isNotNull();
}
@Test
public void requestWhenOpenIDAndFormLoginWithFormLoginPageConfiguredThenFormLoginPageWins() throws Exception {
-
this.spring.configLocations(this.xml("WithFormLoginPage")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isFound()).andExpect(redirectedUrl("http://localhost/form-page"));
}
@Test
public void requestWhenOpenIDAndFormLoginWithOpenIDLoginPageConfiguredThenOpenIDLoginPageWins() throws Exception {
-
this.spring.configLocations(this.xml("WithOpenIDLoginPageAndFormLogin")).autowire();
-
this.mvc.perform(get("/")).andExpect(status().isFound())
.andExpect(redirectedUrl("http://localhost/openid-page"));
}
@Test
public void configureWhenOpenIDAndFormLoginBothConfigureLoginPagesThenWiringException() {
-
assertThatCode(() -> this.spring.configLocations(this.xml("WithFormLoginAndOpenIDLoginPages")).autowire())
.isInstanceOf(BeanDefinitionParsingException.class);
}
@Test
public void requestWhenOpenIDAndRememberMeConfiguredThenRememberMePassedToIdp() throws Exception {
-
this.spring.configLocations(this.xml("WithRememberMe")).autowire();
-
OpenIDAuthenticationFilter openIDFilter = getFilter(OpenIDAuthenticationFilter.class);
-
String openIdEndpointUrl = "https://testopenid.com?openid.return_to=";
Set returnToUrlParameters = new HashSet<>();
returnToUrlParameters.add(AbstractRememberMeServices.DEFAULT_PARAMETER);
openIDFilter.setReturnToUrlParameters(returnToUrlParameters);
-
OpenIDConsumer consumer = mock(OpenIDConsumer.class);
given(consumer.beginConsumption(any(HttpServletRequest.class), anyString(), anyString(), anyString()))
.will((invocation) -> openIdEndpointUrl + invocation.getArgument(2));
openIDFilter.setConsumer(consumer);
-
String expectedReturnTo = new StringBuilder("http://localhost/login/openid").append("?")
.append(AbstractRememberMeServices.DEFAULT_PARAMETER).append("=").append("on").toString();
-
this.mvc.perform(get("/")).andExpect(status().isFound()).andExpect(redirectedUrl("http://localhost/login"));
-
this.mvc.perform(get("/login")).andExpect(status().isOk())
.andExpect(content().string(containsString(AbstractRememberMeServices.DEFAULT_PARAMETER)));
-
this.mvc.perform(get("/login/openid")
.param(OpenIDAuthenticationFilter.DEFAULT_CLAIMED_IDENTITY_FIELD, "https://ww1.openid.com")
.param(AbstractRememberMeServices.DEFAULT_PARAMETER, "on")).andExpect(status().isFound())
@@ -137,21 +121,16 @@ public class OpenIDConfigTests {
@Test
public void requestWhenAttributeExchangeConfiguredThenFetchAttributesPassedToIdp() throws Exception {
-
this.spring.configLocations(this.xml("WithOpenIDAttributes")).autowire();
-
OpenIDAuthenticationFilter openIDFilter = getFilter(OpenIDAuthenticationFilter.class);
OpenID4JavaConsumer consumer = getFieldValue(openIDFilter, "consumer");
ConsumerManager manager = getFieldValue(consumer, "consumerManager");
manager.setMaxAssocAttempts(0);
-
try (MockWebServer server = new MockWebServer()) {
String endpoint = server.url("/").toString();
-
server.enqueue(new MockResponse().addHeader(YadisResolver.YADIS_XRDS_LOCATION, endpoint));
server.enqueue(new MockResponse()
.setBody(String.format("%s", endpoint)));
-
this.mvc.perform(
get("/login/openid").param(OpenIDAuthenticationFilter.DEFAULT_CLAIMED_IDENTITY_FIELD, endpoint))
.andExpect(status().isFound())
@@ -169,11 +148,8 @@ public class OpenIDConfigTests {
@Test
public void requestWhenLoginPageConfiguredWithPhraseLoginThenRedirectsOnlyToUserGeneratedLoginPage()
throws Exception {
-
this.spring.configLocations(this.xml("Sec2919")).autowire();
-
assertThat(getFilter(DefaultLoginPageGeneratingFilter.class)).isNull();
-
this.mvc.perform(get("/login")).andExpect(status().isOk()).andExpect(content().string("a custom login page"));
}
diff --git a/config/src/test/java/org/springframework/security/config/http/PlaceHolderAndELConfigTests.java b/config/src/test/java/org/springframework/security/config/http/PlaceHolderAndELConfigTests.java
index e413874758..13478ad795 100644
--- a/config/src/test/java/org/springframework/security/config/http/PlaceHolderAndELConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/PlaceHolderAndELConfigTests.java
@@ -52,11 +52,8 @@ public class PlaceHolderAndELConfigTests {
@Test
public void getWhenUsingPlaceholderThenUnsecuredPatternCorrectlyConfigured() throws Exception {
-
System.setProperty("pattern.nofilters", "/unsecured");
-
this.spring.configLocations(this.xml("UnsecuredPattern")).autowire();
-
this.mvc.perform(get("/unsecured")).andExpect(status().isOk());
}
@@ -65,27 +62,19 @@ public class PlaceHolderAndELConfigTests {
*/
@Test
public void loginWhenUsingPlaceholderThenInterceptUrlsAndFormLoginWorks() throws Exception {
-
System.setProperty("secure.Url", "/secured");
System.setProperty("secure.role", "ROLE_NUNYA");
System.setProperty("login.page", "/loginPage");
System.setProperty("default.target", "/defaultTarget");
System.setProperty("auth.failure", "/authFailure");
-
this.spring.configLocations(this.xml("InterceptUrlAndFormLogin")).autowire();
-
// login-page setting
-
this.mvc.perform(get("/secured")).andExpect(redirectedUrl("http://localhost/loginPage"));
-
// login-processing-url setting
// default-target-url setting
-
this.mvc.perform(post("/loginPage").param("username", "user").param("password", "password"))
.andExpect(redirectedUrl("/defaultTarget"));
-
// authentication-failure-url setting
-
this.mvc.perform(post("/loginPage").param("username", "user").param("password", "wrong"))
.andExpect(redirectedUrl("/authFailure"));
}
@@ -95,44 +84,31 @@ public class PlaceHolderAndELConfigTests {
*/
@Test
public void loginWhenUsingSpELThenInterceptUrlsAndFormLoginWorks() throws Exception {
-
System.setProperty("secure.url", "/secured");
System.setProperty("secure.role", "ROLE_NUNYA");
System.setProperty("login.page", "/loginPage");
System.setProperty("default.target", "/defaultTarget");
System.setProperty("auth.failure", "/authFailure");
-
this.spring.configLocations(this.xml("InterceptUrlAndFormLoginWithSpEL")).autowire();
-
// login-page setting
-
this.mvc.perform(get("/secured")).andExpect(redirectedUrl("http://localhost/loginPage"));
-
// login-processing-url setting
// default-target-url setting
-
this.mvc.perform(post("/loginPage").param("username", "user").param("password", "password"))
.andExpect(redirectedUrl("/defaultTarget"));
-
// authentication-failure-url setting
-
this.mvc.perform(post("/loginPage").param("username", "user").param("password", "wrong"))
.andExpect(redirectedUrl("/authFailure"));
-
}
@Test
@WithMockUser
public void requestWhenUsingPlaceholderOrSpELThenPortMapperWorks() throws Exception {
-
System.setProperty("http", "9080");
System.setProperty("https", "9443");
-
this.spring.configLocations(this.xml("PortMapping")).autowire();
-
this.mvc.perform(get("http://localhost:9080/secured")).andExpect(status().isFound())
.andExpect(redirectedUrl("https://localhost:9443/secured"));
-
this.mvc.perform(get("https://localhost:9443/unsecured")).andExpect(status().isFound())
.andExpect(redirectedUrl("http://localhost:9080/unsecured"));
}
@@ -140,12 +116,9 @@ public class PlaceHolderAndELConfigTests {
@Test
@WithMockUser
public void requestWhenUsingPlaceholderThenRequiresChannelWorks() throws Exception {
-
System.setProperty("secure.url", "/secured");
System.setProperty("required.channel", "https");
-
this.spring.configLocations(this.xml("RequiresChannel")).autowire();
-
this.mvc.perform(get("http://localhost/secured")).andExpect(status().isFound())
.andExpect(redirectedUrl("https://localhost/secured"));
}
@@ -153,20 +126,15 @@ public class PlaceHolderAndELConfigTests {
@Test
@WithMockUser
public void requestWhenUsingPlaceholderThenAccessDeniedPageWorks() throws Exception {
-
System.setProperty("accessDenied", "/go-away");
-
this.spring.configLocations(this.xml("AccessDeniedPage")).autowire();
-
this.mvc.perform(get("/secured")).andExpect(forwardedUrl("/go-away"));
}
@Test
@WithMockUser
public void requestWhenUsingSpELThenAccessDeniedPageWorks() throws Exception {
-
this.spring.configLocations(this.xml("AccessDeniedPageWithSpEL")).autowire();
-
this.mvc.perform(get("/secured")).andExpect(forwardedUrl("/go-away"));
}
diff --git a/config/src/test/java/org/springframework/security/config/http/RememberMeConfigTests.java b/config/src/test/java/org/springframework/security/config/http/RememberMeConfigTests.java
index e16b8ec2b1..46fc53c570 100644
--- a/config/src/test/java/org/springframework/security/config/http/RememberMeConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/RememberMeConfigTests.java
@@ -69,17 +69,12 @@ public class RememberMeConfigTests {
@Test
public void requestWithRememberMeWhenUsingCustomTokenRepositoryThenAutomaticallyReauthenticates() throws Exception {
-
this.spring.configLocations(this.xml("WithTokenRepository")).autowire();
-
MvcResult result = this.rememberAuthentication("user", "password")
.andExpect(cookie().secure(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, false))
.andReturn();
-
Cookie cookie = rememberMeCookie(result);
-
this.mvc.perform(get("/authenticated").cookie(cookie)).andExpect(status().isOk());
-
JdbcTemplate template = this.spring.getContext().getBean(JdbcTemplate.class);
int count = template.queryForObject("select count(*) from persistent_logins", int.class);
assertThat(count).isEqualTo(1);
@@ -87,42 +82,30 @@ public class RememberMeConfigTests {
@Test
public void requestWithRememberMeWhenUsingCustomDataSourceThenAutomaticallyReauthenticates() throws Exception {
-
this.spring.configLocations(this.xml("WithDataSource")).autowire();
-
TestDataSource dataSource = this.spring.getContext().getBean(TestDataSource.class);
JdbcTemplate template = new JdbcTemplate(dataSource);
template.execute(JdbcTokenRepositoryImpl.CREATE_TABLE_SQL);
-
MvcResult result = this.rememberAuthentication("user", "password")
.andExpect(cookie().secure(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, false))
.andReturn();
-
Cookie cookie = rememberMeCookie(result);
-
this.mvc.perform(get("/authenticated").cookie(cookie)).andExpect(status().isOk());
-
int count = template.queryForObject("select count(*) from persistent_logins", int.class);
assertThat(count).isEqualTo(1);
}
@Test
public void requestWithRememberMeWhenUsingAuthenticationSuccessHandlerThenInvokesHandler() throws Exception {
-
this.spring.configLocations(this.xml("WithAuthenticationSuccessHandler")).autowire();
-
TestDataSource dataSource = this.spring.getContext().getBean(TestDataSource.class);
JdbcTemplate template = new JdbcTemplate(dataSource);
template.execute(JdbcTokenRepositoryImpl.CREATE_TABLE_SQL);
-
MvcResult result = this.rememberAuthentication("user", "password")
.andExpect(cookie().secure(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, false))
.andReturn();
-
Cookie cookie = rememberMeCookie(result);
-
this.mvc.perform(get("/authenticated").cookie(cookie)).andExpect(redirectedUrl("/target"));
-
int count = template.queryForObject("select count(*) from persistent_logins", int.class);
assertThat(count).isEqualTo(1);
}
@@ -131,16 +114,12 @@ public class RememberMeConfigTests {
public void requestWithRememberMeWhenUsingCustomRememberMeServicesThenAuthenticates() throws Exception {
// SEC-1281 - using key with external services
this.spring.configLocations(this.xml("WithServicesRef")).autowire();
-
MvcResult result = this.rememberAuthentication("user", "password")
.andExpect(cookie().secure(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, false))
.andExpect(cookie().maxAge(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, 5000))
.andReturn();
-
Cookie cookie = rememberMeCookie(result);
-
this.mvc.perform(get("/authenticated").cookie(cookie)).andExpect(status().isOk());
-
// SEC-909
this.mvc.perform(post("/logout").cookie(cookie).with(csrf()))
.andExpect(cookie().maxAge(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, 0))
@@ -149,13 +128,9 @@ public class RememberMeConfigTests {
@Test
public void logoutWhenUsingRememberMeDefaultsThenCookieIsCancelled() throws Exception {
-
this.spring.configLocations(this.xml("DefaultConfig")).autowire();
-
MvcResult result = this.rememberAuthentication("user", "password").andReturn();
-
Cookie cookie = rememberMeCookie(result);
-
this.mvc.perform(post("/logout").cookie(cookie).with(csrf()))
.andExpect(cookie().maxAge(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, 0));
}
@@ -163,23 +138,17 @@ public class RememberMeConfigTests {
@Test
public void requestWithRememberMeWhenTokenValidityIsConfiguredThenCookieReflectsCorrectExpiration()
throws Exception {
-
this.spring.configLocations(this.xml("TokenValidity")).autowire();
-
MvcResult result = this.rememberAuthentication("user", "password")
.andExpect(cookie().maxAge(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, 10000))
.andReturn();
-
Cookie cookie = rememberMeCookie(result);
-
this.mvc.perform(get("/authenticated").cookie(cookie)).andExpect(status().isOk());
}
@Test
public void requestWithRememberMeWhenTokenValidityIsNegativeThenCookieReflectsCorrectExpiration() throws Exception {
-
this.spring.configLocations(this.xml("NegativeTokenValidity")).autowire();
-
this.rememberAuthentication("user", "password")
.andExpect(cookie().maxAge(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, -1));
}
@@ -193,18 +162,14 @@ public class RememberMeConfigTests {
@Test
public void requestWithRememberMeWhenTokenValidityIsResolvedByPropertyPlaceholderThenCookieReflectsCorrectExpiration()
throws Exception {
-
this.spring.configLocations(this.xml("Sec2165")).autowire();
-
this.rememberAuthentication("user", "password")
.andExpect(cookie().maxAge(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, 30));
}
@Test
public void requestWithRememberMeWhenUseSecureCookieIsTrueThenCookieIsSecure() throws Exception {
-
this.spring.configLocations(this.xml("SecureCookie")).autowire();
-
this.rememberAuthentication("user", "password")
.andExpect(cookie().secure(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, true));
}
@@ -214,9 +179,7 @@ public class RememberMeConfigTests {
*/
@Test
public void requestWithRememberMeWhenUseSecureCookieIsFalseThenCookieIsNotSecure() throws Exception {
-
this.spring.configLocations(this.xml("Sec1827")).autowire();
-
this.rememberAuthentication("user", "password")
.andExpect(cookie().secure(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, false));
}
@@ -232,17 +195,12 @@ public class RememberMeConfigTests {
public void requestWithRememberMeWhenUsingCustomUserDetailsServiceThenInvokesThisUserDetailsService()
throws Exception {
this.spring.configLocations(this.xml("WithUserDetailsService")).autowire();
-
UserDetailsService userDetailsService = this.spring.getContext().getBean(UserDetailsService.class);
given(userDetailsService.loadUserByUsername("user"))
.willAnswer((invocation) -> new User("user", "{noop}password", Collections.emptyList()));
-
MvcResult result = this.rememberAuthentication("user", "password").andReturn();
-
Cookie cookie = rememberMeCookie(result);
-
this.mvc.perform(get("/authenticated").cookie(cookie)).andExpect(status().isOk());
-
verify(userDetailsService, atLeastOnce()).loadUserByUsername("user");
}
@@ -251,14 +209,10 @@ public class RememberMeConfigTests {
*/
@Test
public void requestWithRememberMeWhenExcludingBasicAuthenticationFilterThenStillReauthenticates() throws Exception {
-
this.spring.configLocations(this.xml("Sec742")).autowire();
-
MvcResult result = this.mvc.perform(login("user", "password").param("remember-me", "true").with(csrf()))
.andExpect(redirectedUrl("/messageList.html")).andReturn();
-
Cookie cookie = rememberMeCookie(result);
-
this.mvc.perform(get("/authenticated").cookie(cookie)).andExpect(status().isOk());
}
@@ -267,15 +221,11 @@ public class RememberMeConfigTests {
*/
@Test
public void requestWithRememberMeWhenUsingCustomRememberMeParameterThenReauthenticates() throws Exception {
-
this.spring.configLocations(this.xml("WithRememberMeParameter")).autowire();
-
MvcResult result = this.mvc
.perform(login("user", "password").param("custom-remember-me-parameter", "true").with(csrf()))
.andExpect(redirectedUrl("/")).andReturn();
-
Cookie cookie = rememberMeCookie(result);
-
this.mvc.perform(get("/authenticated").cookie(cookie)).andExpect(status().isOk());
}
@@ -290,9 +240,7 @@ public class RememberMeConfigTests {
*/
@Test
public void authenticateWhenUsingCustomRememberMeCookieNameThenIssuesCookieWithThatName() throws Exception {
-
this.spring.configLocations(this.xml("WithRememberMeCookie")).autowire();
-
this.rememberAuthentication("user", "password").andExpect(cookie().exists("custom-remember-me-cookie"));
}
@@ -309,7 +257,6 @@ public class RememberMeConfigTests {
}
private ResultActions rememberAuthentication(String username, String password) throws Exception {
-
return this.mvc.perform(
login(username, password).param(AbstractRememberMeServices.DEFAULT_PARAMETER, "true").with(csrf()))
.andExpect(redirectedUrl("/"));
diff --git a/config/src/test/java/org/springframework/security/config/http/SecurityContextHolderAwareRequestConfigTests.java b/config/src/test/java/org/springframework/security/config/http/SecurityContextHolderAwareRequestConfigTests.java
index ddb27b5cf5..d0ecc45474 100644
--- a/config/src/test/java/org/springframework/security/config/http/SecurityContextHolderAwareRequestConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/SecurityContextHolderAwareRequestConfigTests.java
@@ -66,132 +66,89 @@ public class SecurityContextHolderAwareRequestConfigTests {
@Test
public void servletLoginWhenUsingDefaultConfigurationThenUsesSpringSecurity() throws Exception {
-
this.spring.configLocations(this.xml("Simple")).autowire();
-
this.mvc.perform(get("/good-login")).andExpect(status().isOk()).andExpect(content().string("user"));
}
@Test
public void servletAuthenticateWhenUsingDefaultConfigurationThenUsesSpringSecurity() throws Exception {
-
this.spring.configLocations(this.xml("Simple")).autowire();
-
this.mvc.perform(get("/authenticate")).andExpect(status().isFound())
.andExpect(redirectedUrl("http://localhost/login"));
}
@Test
public void servletLogoutWhenUsingDefaultConfigurationThenUsesSpringSecurity() throws Exception {
-
this.spring.configLocations(this.xml("Simple")).autowire();
-
MvcResult result = this.mvc.perform(get("/good-login")).andReturn();
-
MockHttpSession session = (MockHttpSession) result.getRequest().getSession(false);
-
assertThat(session).isNotNull();
-
result = this.mvc.perform(get("/do-logout").session(session)).andExpect(status().isOk())
.andExpect(content().string("")).andReturn();
-
session = (MockHttpSession) result.getRequest().getSession(false);
-
assertThat(session).isNull();
}
@Test
public void servletAuthenticateWhenUsingHttpBasicThenUsesSpringSecurity() throws Exception {
-
this.spring.configLocations(this.xml("HttpBasic")).autowire();
-
this.mvc.perform(get("/authenticate")).andExpect(status().isUnauthorized())
.andExpect(header().string(HttpHeaders.WWW_AUTHENTICATE, containsString("discworld")));
}
@Test
public void servletAuthenticateWhenUsingFormLoginThenUsesSpringSecurity() throws Exception {
-
this.spring.configLocations(this.xml("FormLogin")).autowire();
-
this.mvc.perform(get("/authenticate")).andExpect(status().isFound())
.andExpect(redirectedUrl("http://localhost/login"));
}
@Test
public void servletLoginWhenUsingMultipleHttpConfigsThenUsesSpringSecurity() throws Exception {
-
this.spring.configLocations(this.xml("MultiHttp")).autowire();
-
this.mvc.perform(get("/good-login")).andExpect(status().isOk()).andExpect(content().string("user"));
-
this.mvc.perform(get("/v2/good-login")).andExpect(status().isOk()).andExpect(content().string("user2"));
}
@Test
public void servletAuthenticateWhenUsingMultipleHttpConfigsThenUsesSpringSecurity() throws Exception {
-
this.spring.configLocations(this.xml("MultiHttp")).autowire();
-
this.mvc.perform(get("/authenticate")).andExpect(status().isFound())
.andExpect(redirectedUrl("http://localhost/login"));
-
this.mvc.perform(get("/v2/authenticate")).andExpect(status().isFound())
.andExpect(redirectedUrl("http://localhost/login2"));
-
}
@Test
public void servletLogoutWhenUsingMultipleHttpConfigsThenUsesSpringSecurity() throws Exception {
-
this.spring.configLocations(this.xml("MultiHttp")).autowire();
-
MvcResult result = this.mvc.perform(get("/good-login")).andReturn();
-
MockHttpSession session = (MockHttpSession) result.getRequest().getSession(false);
-
assertThat(session).isNotNull();
-
result = this.mvc.perform(get("/do-logout").session(session)).andExpect(status().isOk())
.andExpect(content().string("")).andReturn();
-
session = (MockHttpSession) result.getRequest().getSession(false);
-
assertThat(session).isNotNull();
-
result = this.mvc.perform(get("/v2/good-login")).andReturn();
-
session = (MockHttpSession) result.getRequest().getSession(false);
-
assertThat(session).isNotNull();
-
result = this.mvc.perform(get("/v2/do-logout").session(session)).andExpect(status().isOk())
.andExpect(content().string("")).andReturn();
-
session = (MockHttpSession) result.getRequest().getSession(false);
-
assertThat(session).isNull();
}
@Test
public void servletLogoutWhenUsingCustomLogoutThenUsesSpringSecurity() throws Exception {
-
this.spring.configLocations(this.xml("Logout")).autowire();
-
this.mvc.perform(get("/authenticate")).andExpect(status().isFound())
.andExpect(redirectedUrl("http://localhost/signin"));
-
MvcResult result = this.mvc.perform(get("/good-login")).andReturn();
-
MockHttpSession session = (MockHttpSession) result.getRequest().getSession(false);
-
assertThat(session).isNotNull();
-
result = this.mvc.perform(get("/do-logout").session(session)).andExpect(status().isOk())
.andExpect(content().string("")).andExpect(cookie().maxAge("JSESSIONID", 0)).andReturn();
-
session = (MockHttpSession) result.getRequest().getSession(false);
-
assertThat(session).isNotNull();
}
@@ -201,9 +158,7 @@ public class SecurityContextHolderAwareRequestConfigTests {
@Test
@WithMockUser
public void servletIsUserInRoleWhenUsingDefaultConfigThenRoleIsSet() throws Exception {
-
this.spring.configLocations(this.xml("Simple")).autowire();
-
this.mvc.perform(get("/role")).andExpect(content().string("true"));
}
@@ -216,33 +171,26 @@ public class SecurityContextHolderAwareRequestConfigTests {
@GetMapping("/v2/good-login")
public String v2Login(HttpServletRequest request) throws ServletException {
-
request.login("user2", "password2");
-
return this.principal();
}
@GetMapping("/good-login")
public String login(HttpServletRequest request) throws ServletException {
-
request.login("user", "password");
-
return this.principal();
}
@GetMapping("/v2/authenticate")
public String v2Authenticate(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
-
return this.authenticate(request, response);
}
@GetMapping("/authenticate")
public String authenticate(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
-
request.authenticate(response);
-
return this.principal();
}
@@ -254,7 +202,6 @@ public class SecurityContextHolderAwareRequestConfigTests {
@GetMapping("/do-logout")
public String logout(HttpServletRequest request) throws ServletException {
request.logout();
-
return this.principal();
}
diff --git a/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigServlet31Tests.java b/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigServlet31Tests.java
index 6575395228..7995b13de2 100644
--- a/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigServlet31Tests.java
+++ b/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigServlet31Tests.java
@@ -90,40 +90,29 @@ public class SessionManagementConfigServlet31Tests {
request.setMethod("POST");
request.setParameter("username", "user");
request.setParameter("password", "password");
-
request.getSession().setAttribute("attribute1", "value1");
-
String id = request.getSession().getId();
-
loadContext("\n" + " \n" + " \n"
+ " \n" + " " + XML_AUTHENTICATION_MANAGER);
-
this.springSecurityFilterChain.doFilter(request, this.response, this.chain);
-
assertThat(request.getSession().getId()).isNotEqualTo(id);
assertThat(request.getSession().getAttribute("attribute1")).isEqualTo("value1");
}
@Test
public void changeSessionId() throws Exception {
-
MockHttpServletRequest request = new MockHttpServletRequest("GET", "");
request.getSession();
request.setServletPath("/login");
request.setMethod("POST");
request.setParameter("username", "user");
request.setParameter("password", "password");
-
String id = request.getSession().getId();
-
loadContext("\n" + " \n"
+ " \n"
+ " \n" + " " + XML_AUTHENTICATION_MANAGER);
-
this.springSecurityFilterChain.doFilter(request, this.response, this.chain);
-
assertThat(request.getSession().getId()).isNotEqualTo(id);
-
}
private void loadContext(String context) {
@@ -135,7 +124,6 @@ public class SessionManagementConfigServlet31Tests {
HttpSessionSecurityContextRepository repo = new HttpSessionSecurityContextRepository();
HttpRequestResponseHolder requestResponseHolder = new HttpRequestResponseHolder(this.request, this.response);
repo.loadContext(requestResponseHolder);
-
SecurityContextImpl securityContextImpl = new SecurityContextImpl();
securityContextImpl.setAuthentication(auth);
repo.saveContext(securityContextImpl, requestResponseHolder.getRequest(), requestResponseHolder.getResponse());
diff --git a/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigTests.java b/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigTests.java
index f7bd58f0b0..cdd74a6916 100644
--- a/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigTests.java
@@ -92,52 +92,41 @@ public class SessionManagementConfigTests {
@Test
public void requestWhenCreateSessionAlwaysThenAlwaysCreatesSession() throws Exception {
this.spring.configLocations(this.xml("CreateSessionAlways")).autowire();
-
MockHttpServletRequest request = get("/").buildRequest(this.servletContext());
MockHttpServletResponse response = request(request, this.spring.getContext());
-
assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
assertThat(request.getSession(false)).isNotNull();
}
@Test
public void requestWhenCreateSessionIsSetToNeverThenDoesNotCreateSessionOnLoginChallenge() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionNever")).autowire();
-
MockHttpServletRequest request = get("/auth").buildRequest(this.servletContext());
MockHttpServletResponse response = request(request, this.spring.getContext());
-
assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_MOVED_TEMPORARILY);
assertThat(request.getSession(false)).isNull();
}
@Test
public void requestWhenCreateSessionIsSetToNeverThenDoesNotCreateSessionOnLogin() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionNever")).autowire();
-
MockHttpServletRequest request = post("/login").param("username", "user").param("password", "password")
.buildRequest(this.servletContext());
request = csrf().postProcessRequest(request);
MockHttpServletResponse response = request(request, this.spring.getContext());
-
assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_MOVED_TEMPORARILY);
assertThat(request.getSession(false)).isNull();
}
@Test
public void requestWhenCreateSessionIsSetToNeverThenUsesExistingSession() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionNever")).autowire();
-
MockHttpServletRequest request = post("/login").param("username", "user").param("password", "password")
.buildRequest(this.servletContext());
request = csrf().postProcessRequest(request);
MockHttpSession session = new MockHttpSession();
request.setSession(session);
MockHttpServletResponse response = request(request, this.spring.getContext());
-
assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_MOVED_TEMPORARILY);
assertThat(request.getSession(false)).isNotNull();
assertThat(request.getSession(false)
@@ -146,72 +135,56 @@ public class SessionManagementConfigTests {
@Test
public void requestWhenCreateSessionIsSetToStatelessThenDoesNotCreateSessionOnLoginChallenge() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionStateless")).autowire();
-
this.mvc.perform(get("/auth")).andExpect(status().isFound()).andExpect(session().exists(false));
}
@Test
public void requestWhenCreateSessionIsSetToStatelessThenDoesNotCreateSessionOnLogin() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionStateless")).autowire();
-
this.mvc.perform(post("/login").param("username", "user").param("password", "password").with(csrf()))
.andExpect(status().isFound()).andExpect(session().exists(false));
}
@Test
public void requestWhenCreateSessionIsSetToStatelessThenIgnoresExistingSession() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionStateless")).autowire();
-
MvcResult result = this.mvc
.perform(post("/login").param("username", "user").param("password", "password")
.session(new MockHttpSession()).with(csrf()))
.andExpect(status().isFound()).andExpect(session()).andReturn();
-
assertThat(result.getRequest().getSession(false)
.getAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY)).isNull();
}
@Test
public void requestWhenCreateSessionIsSetToIfRequiredThenDoesNotCreateSessionOnPublicInvocation() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionIfRequired")).autowire();
-
ServletContext servletContext = this.mvc.getDispatcherServlet().getServletContext();
MockHttpServletRequest request = get("/").buildRequest(servletContext);
MockHttpServletResponse response = request(request, this.spring.getContext());
-
assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_OK);
assertThat(request.getSession(false)).isNull();
}
@Test
public void requestWhenCreateSessionIsSetToIfRequiredThenCreatesSessionOnLoginChallenge() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionIfRequired")).autowire();
-
ServletContext servletContext = this.mvc.getDispatcherServlet().getServletContext();
MockHttpServletRequest request = get("/auth").buildRequest(servletContext);
MockHttpServletResponse response = request(request, this.spring.getContext());
-
assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_MOVED_TEMPORARILY);
assertThat(request.getSession(false)).isNotNull();
}
@Test
public void requestWhenCreateSessionIsSetToIfRequiredThenCreatesSessionOnLogin() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionIfRequired")).autowire();
-
ServletContext servletContext = this.mvc.getDispatcherServlet().getServletContext();
MockHttpServletRequest request = post("/login").param("username", "user").param("password", "password")
.buildRequest(servletContext);
request = csrf().postProcessRequest(request);
MockHttpServletResponse response = request(request, this.spring.getContext());
-
assertThat(response.getStatus()).isEqualTo(HttpStatus.SC_MOVED_TEMPORARILY);
assertThat(request.getSession(false)).isNotNull();
}
@@ -221,12 +194,9 @@ public class SessionManagementConfigTests {
*/
@Test
public void requestWhenRejectingUserBasedOnMaxSessionsExceededThenDoesNotCreateSession() throws Exception {
-
this.spring.configLocations(this.xml("Sec1208")).autowire();
-
this.mvc.perform(get("/auth").with(httpBasic("user", "password"))).andExpect(status().isOk())
.andExpect(session());
-
this.mvc.perform(get("/auth").with(httpBasic("user", "password"))).andExpect(status().isUnauthorized())
.andExpect(session().exists(false));
}
@@ -237,9 +207,7 @@ public class SessionManagementConfigTests {
@Test
public void requestWhenSessionFixationProtectionDisabledAndConcurrencyControlEnabledThenSessionNotInvalidated()
throws Exception {
-
this.spring.configLocations(this.xml("Sec2137")).autowire();
-
MockHttpSession session = new MockHttpSession();
this.mvc.perform(get("/auth").session(session).with(httpBasic("user", "password"))).andExpect(status().isOk())
.andExpect(session().id(session.getId()));
@@ -248,15 +216,12 @@ public class SessionManagementConfigTests {
@Test
public void autowireWhenExportingSessionRegistryBeanThenAvailableForWiring() {
this.spring.configLocations(this.xml("ConcurrencyControlSessionRegistryAlias")).autowire();
-
this.sessionRegistryIsValid();
}
@Test
public void requestWhenExpiredUrlIsSetThenInvalidatesSessionAndRedirects() throws Exception {
-
this.spring.configLocations(this.xml("ConcurrencyControlExpiredUrl")).autowire();
-
this.mvc.perform(get("/auth").session(this.expiredSession()).with(httpBasic("user", "password")))
.andExpect(redirectedUrl("/expired")).andExpect(session().exists(false));
}
@@ -264,9 +229,7 @@ public class SessionManagementConfigTests {
@Test
public void requestWhenConcurrencyControlAndCustomLogoutHandlersAreSetThenAllAreInvokedWhenSessionExpires()
throws Exception {
-
this.spring.configLocations(this.xml("ConcurrencyControlLogoutAndRememberMeHandlers")).autowire();
-
this.mvc.perform(get("/auth").session(this.expiredSession()).with(httpBasic("user", "password")))
.andExpect(status().isOk()).andExpect(cookie().maxAge("testCookie", 0))
.andExpect(cookie().exists("rememberMeCookie")).andExpect(session().valid(true));
@@ -274,9 +237,7 @@ public class SessionManagementConfigTests {
@Test
public void requestWhenConcurrencyControlAndRememberMeAreSetThenInvokedWhenSessionExpires() throws Exception {
-
this.spring.configLocations(this.xml("ConcurrencyControlRememberMeHandler")).autowire();
-
this.mvc.perform(get("/auth").session(this.expiredSession()).with(httpBasic("user", "password")))
.andExpect(status().isOk()).andExpect(cookie().exists("rememberMeCookie"))
.andExpect(session().exists(false));
@@ -287,25 +248,18 @@ public class SessionManagementConfigTests {
*/
@Test
public void autowireWhenConcurrencyControlIsSetThenLogoutHandlersGetAuthenticationObject() throws Exception {
-
this.spring.configLocations(this.xml("ConcurrencyControlCustomLogoutHandler")).autowire();
-
MvcResult result = this.mvc.perform(get("/auth").with(httpBasic("user", "password"))).andExpect(session())
.andReturn();
-
MockHttpSession session = (MockHttpSession) result.getRequest().getSession(false);
-
SessionRegistry sessionRegistry = this.spring.getContext().getBean(SessionRegistry.class);
sessionRegistry.getSessionInformation(session.getId()).expireNow();
-
this.mvc.perform(get("/auth").session(session)).andExpect(header().string("X-Username", "user"));
}
@Test
public void requestWhenConcurrencyControlIsSetThenDefaultsToResponseBodyExpirationResponse() throws Exception {
-
this.spring.configLocations(this.xml("ConcurrencyControlSessionRegistryAlias")).autowire();
-
this.mvc.perform(get("/auth").session(this.expiredSession()).with(httpBasic("user", "password")))
.andExpect(content().string("This session has been expired (possibly due to multiple concurrent "
+ "logins being attempted as the same user)."));
@@ -313,71 +267,53 @@ public class SessionManagementConfigTests {
@Test
public void requestWhenCustomSessionAuthenticationStrategyThenInvokesOnAuthentication() throws Exception {
-
this.spring.configLocations(this.xml("SessionAuthenticationStrategyRef")).autowire();
-
this.mvc.perform(get("/auth").with(httpBasic("user", "password"))).andExpect(status().isIAmATeapot());
}
@Test
public void autowireWhenSessionRegistryRefIsSetThenAvailableForWiring() {
this.spring.configLocations(this.xml("ConcurrencyControlSessionRegistryRef")).autowire();
-
this.sessionRegistryIsValid();
}
@Test
public void requestWhenMaxSessionsIsSetThenErrorsWhenExceeded() throws Exception {
-
this.spring.configLocations(this.xml("ConcurrencyControlMaxSessions")).autowire();
-
this.mvc.perform(get("/auth").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/auth").with(httpBasic("user", "password"))).andExpect(status().isOk());
-
this.mvc.perform(get("/auth").with(httpBasic("user", "password"))).andExpect(redirectedUrl("/max-exceeded"));
}
@Test
public void autowireWhenSessionFixationProtectionIsNoneAndCsrfDisabledThenSessionManagementFilterIsNotWired() {
-
this.spring.configLocations(this.xml("NoSessionManagementFilter")).autowire();
-
assertThat(this.getFilter(SessionManagementFilter.class)).isNull();
}
@Test
public void requestWhenSessionFixationProtectionIsNoneThenSessionNotInvalidated() throws Exception {
-
this.spring.configLocations(this.xml("SessionFixationProtectionNone")).autowire();
-
MockHttpSession session = new MockHttpSession();
String sessionId = session.getId();
-
this.mvc.perform(get("/auth").session(session).with(httpBasic("user", "password")))
.andExpect(session().id(sessionId));
}
@Test
public void requestWhenSessionFixationProtectionIsMigrateSessionThenSessionIsReplaced() throws Exception {
-
this.spring.configLocations(this.xml("SessionFixationProtectionMigrateSession")).autowire();
-
MockHttpSession session = new MockHttpSession();
String sessionId = session.getId();
-
MvcResult result = this.mvc.perform(get("/auth").session(session).with(httpBasic("user", "password")))
.andExpect(session()).andReturn();
-
assertThat(result.getRequest().getSession(false).getId()).isNotEqualTo(sessionId);
}
@Test
public void requestWhenSessionFixationProtectionIsNoneAndInvalidSessionUrlIsSetThenStillRedirectsOnInvalidSession()
throws Exception {
-
this.spring.configLocations(this.xml("SessionFixationProtectionNoneWithInvalidSessionUrl")).autowire();
-
this.mvc.perform(get("/auth").with((request) -> {
request.setRequestedSessionId("1");
request.setRequestedSessionIdValid(false);
@@ -387,9 +323,7 @@ public class SessionManagementConfigTests {
private void sessionRegistryIsValid() {
SessionRegistry sessionRegistry = this.spring.getContext().getBean("sessionRegistry", SessionRegistry.class);
-
assertThat(sessionRegistry).isNotNull();
-
assertThat(this.getFilter(ConcurrentSessionFilter.class)).returns(sessionRegistry,
this::extractSessionRegistry);
assertThat(this.getFilter(UsernamePasswordAuthenticationFilter.class)).returns(sessionRegistry,
@@ -433,37 +367,26 @@ public class SessionManagementConfigTests {
*/
@Test
public void checkConcurrencyAndLogoutFilterHasSameSizeAndHasLogoutSuccessEventPublishingLogoutHandler() {
-
this.spring.configLocations(this.xml("ConcurrencyControlLogoutAndRememberMeHandlers")).autowire();
-
ConcurrentSessionFilter concurrentSessionFilter = getFilter(ConcurrentSessionFilter.class);
LogoutFilter logoutFilter = getFilter(LogoutFilter.class);
-
LogoutHandler csfLogoutHandler = getFieldValue(concurrentSessionFilter, "handlers");
LogoutHandler lfLogoutHandler = getFieldValue(logoutFilter, "handler");
-
assertThat(csfLogoutHandler).isInstanceOf(CompositeLogoutHandler.class);
assertThat(lfLogoutHandler).isInstanceOf(CompositeLogoutHandler.class);
-
List csfLogoutHandlers = getFieldValue(csfLogoutHandler, "logoutHandlers");
List lfLogoutHandlers = getFieldValue(lfLogoutHandler, "logoutHandlers");
-
assertThat(csfLogoutHandlers).hasSameSizeAs(lfLogoutHandlers);
-
assertThat(csfLogoutHandlers).hasAtLeastOneElementOfType(LogoutSuccessEventPublishingLogoutHandler.class);
assertThat(lfLogoutHandlers).hasAtLeastOneElementOfType(LogoutSuccessEventPublishingLogoutHandler.class);
}
private static MockHttpServletResponse request(MockHttpServletRequest request, ApplicationContext context)
throws IOException, ServletException {
-
MockHttpServletResponse response = new MockHttpServletResponse();
-
FilterChainProxy proxy = context.getBean(FilterChainProxy.class);
-
proxy.doFilter(request, new EncodeUrlDenyingHttpServletResponseWrapper(response), (req, resp) -> {
});
-
return response;
}
@@ -481,7 +404,6 @@ public class SessionManagementConfigTests {
private List getFilters() {
FilterChainProxy proxy = this.spring.getContext().getBean(FilterChainProxy.class);
-
return proxy.getFilters("/");
}
@@ -499,7 +421,6 @@ public class SessionManagementConfigTests {
@Override
public void onAuthentication(Authentication authentication, HttpServletRequest request,
HttpServletResponse response) throws SessionAuthenticationException {
-
response.setStatus(org.springframework.http.HttpStatus.I_AM_A_TEAPOT.value());
}
@@ -514,13 +435,11 @@ public class SessionManagementConfigTests {
@Override
public void loginFail(HttpServletRequest request, HttpServletResponse response) {
-
}
@Override
public void loginSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication successfulAuthentication) {
-
}
@Override
@@ -574,11 +493,8 @@ public class SessionManagementConfigTests {
assertThat(result.getRequest().getSession(false)).isNull();
return;
}
-
assertThat(result.getRequest().getSession(false)).isNotNull();
-
MockHttpSession session = (MockHttpSession) result.getRequest().getSession(false);
-
if (this.valid != null) {
if (this.valid) {
assertThat(session.isInvalid()).isFalse();
@@ -587,7 +503,6 @@ public class SessionManagementConfigTests {
assertThat(session.isInvalid()).isTrue();
}
}
-
if (this.id != null) {
assertThat(session.getId()).isEqualTo(this.id);
}
diff --git a/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigTransientAuthenticationTests.java b/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigTransientAuthenticationTests.java
index aa9ab7a33f..8e2df3e6e9 100644
--- a/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigTransientAuthenticationTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/SessionManagementConfigTransientAuthenticationTests.java
@@ -47,7 +47,6 @@ public class SessionManagementConfigTransientAuthenticationTests {
@Test
public void postWhenTransientAuthenticationThenNoSessionCreated() throws Exception {
-
this.spring.configLocations(this.xml("WithTransientAuthentication")).autowire();
MvcResult result = this.mvc.perform(post("/login")).andReturn();
assertThat(result.getRequest().getSession(false)).isNull();
@@ -55,7 +54,6 @@ public class SessionManagementConfigTransientAuthenticationTests {
@Test
public void postWhenTransientAuthenticationThenAlwaysSessionOverrides() throws Exception {
-
this.spring.configLocations(this.xml("CreateSessionAlwaysWithTransientAuthentication")).autowire();
MvcResult result = this.mvc.perform(post("/login")).andReturn();
assertThat(result.getRequest().getSession(false)).isNotNull();
diff --git a/config/src/test/java/org/springframework/security/config/http/customconfigurer/CustomHttpSecurityConfigurerTests.java b/config/src/test/java/org/springframework/security/config/http/customconfigurer/CustomHttpSecurityConfigurerTests.java
index 9f715ddce9..9b770c28ae 100644
--- a/config/src/test/java/org/springframework/security/config/http/customconfigurer/CustomHttpSecurityConfigurerTests.java
+++ b/config/src/test/java/org/springframework/security/config/http/customconfigurer/CustomHttpSecurityConfigurerTests.java
@@ -75,11 +75,8 @@ public class CustomHttpSecurityConfigurerTests {
@Test
public void customConfiguerPermitAll() throws Exception {
loadContext(Config.class);
-
this.request.setPathInfo("/public/something");
-
this.springSecurityFilterChain.doFilter(this.request, this.response, this.chain);
-
assertThat(this.response.getStatus()).isEqualTo(HttpServletResponse.SC_OK);
}
@@ -87,9 +84,7 @@ public class CustomHttpSecurityConfigurerTests {
public void customConfiguerFormLogin() throws Exception {
loadContext(Config.class);
this.request.setPathInfo("/requires-authentication");
-
this.springSecurityFilterChain.doFilter(this.request, this.response, this.chain);
-
assertThat(this.response.getRedirectedUrl()).endsWith("/custom");
}
@@ -98,9 +93,7 @@ public class CustomHttpSecurityConfigurerTests {
loadContext(ConfigCustomize.class);
this.request.setPathInfo("/public/something");
this.request.setMethod("POST");
-
this.springSecurityFilterChain.doFilter(this.request, this.response, this.chain);
-
assertThat(this.response.getStatus()).isEqualTo(HttpServletResponse.SC_OK);
}
@@ -108,9 +101,7 @@ public class CustomHttpSecurityConfigurerTests {
public void customConfiguerCustomizeFormLogin() throws Exception {
loadContext(ConfigCustomize.class);
this.request.setPathInfo("/requires-authentication");
-
this.springSecurityFilterChain.doFilter(this.request, this.response, this.chain);
-
assertThat(this.response.getRedirectedUrl()).endsWith("/other");
}
@@ -136,7 +127,6 @@ public class CustomHttpSecurityConfigurerTests {
// Typically externalize this as a properties file
Properties properties = new Properties();
properties.setProperty("permitAllPattern", "/public/**");
-
PropertyPlaceholderConfigurer propertyPlaceholderConfigurer = new PropertyPlaceholderConfigurer();
propertyPlaceholderConfigurer.setProperties(properties);
return propertyPlaceholderConfigurer;
@@ -164,7 +154,6 @@ public class CustomHttpSecurityConfigurerTests {
// Typically externalize this as a properties file
Properties properties = new Properties();
properties.setProperty("permitAllPattern", "/public/**");
-
PropertyPlaceholderConfigurer propertyPlaceholderConfigurer = new PropertyPlaceholderConfigurer();
propertyPlaceholderConfigurer.setProperties(properties);
return propertyPlaceholderConfigurer;
diff --git a/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java
index 3e0088b38a..f4f2fe7f62 100644
--- a/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java
+++ b/config/src/test/java/org/springframework/security/config/method/GlobalMethodSecurityBeanDefinitionParserTests.java
@@ -96,7 +96,6 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
@Test(expected = AuthenticationCredentialsNotFoundException.class)
public void targetShouldPreventProtectedMethodInvocationWithNoContext() {
loadContext();
-
this.target.someUserMethod1();
}
@@ -105,9 +104,7 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
loadContext();
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("user", "password");
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.someUserMethod1();
-
// SEC-1213. Check the order
Advisor[] advisors = ((Advised) this.target).getAdvisors();
assertThat(advisors).hasSize(1);
@@ -119,9 +116,7 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
loadContext();
TestingAuthenticationToken token = new TestingAuthenticationToken("Test", "Password", "ROLE_SOMEOTHERROLE");
token.setAuthenticated(true);
-
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.someAdminMethod();
}
@@ -132,10 +127,8 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
+ "" + ""
+ " " + ""
+ "");
-
PostProcessedMockUserDetailsService service = (PostProcessedMockUserDetailsService) this.appContext
.getBean("myUserService");
-
assertThat(service.getPostProcessorWasHere()).isEqualTo("Hello from the post processor!");
}
@@ -147,12 +140,10 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
+ ""
+ "" + ""
+ " " + "");
-
UserDetailsService service = (UserDetailsService) this.appContext.getBean("myUserService");
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_SOMEOTHERROLE"));
SecurityContextHolder.getContext().setAuthentication(token);
-
service.loadUserByUsername("notused");
}
@@ -169,7 +160,6 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
// someOther(int) should not be matched by someOther(String), but should require
// ROLE_USER
this.target.someOther(0);
-
try {
// String version should required admin role
this.target.someOther("somestring");
@@ -190,7 +180,6 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
this.target = (BusinessService) this.appContext.getBean("target");
// String method should not be protected
this.target.someOther("somestring");
-
// All others should require ROLE_USER
try {
this.target.someOther(0);
@@ -198,7 +187,6 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
}
catch (AuthenticationCredentialsNotFoundException expected) {
}
-
SecurityContextHolder.getContext()
.setAuthentication(new UsernamePasswordAuthenticationToken("user", "password"));
this.target.someOther(0);
@@ -217,7 +205,6 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
+ " "
+ " "
+ "" + ConfigTestUtils.AUTH_PROVIDER_XML);
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_SOMEOTHERROLE"));
SecurityContextHolder.getContext().setAuthentication(token);
@@ -226,7 +213,6 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
}
// Expression configuration tests
-
@SuppressWarnings("unchecked")
@Test
public void expressionVoterAndAfterInvocationProviderUseSameExpressionHandlerInstance() throws Exception {
@@ -341,7 +327,6 @@ public class GlobalMethodSecurityBeanDefinitionParserTests {
props.addPropertyValue("key", "blah");
parent.registerSingleton("runAsMgr", RunAsManagerImpl.class, props);
parent.refresh();
-
setContext("" + ConfigTestUtils.AUTH_PROVIDER_XML,
parent);
RunAsManagerImpl ram = (RunAsManagerImpl) this.appContext.getBean("runAsMgr");
diff --git a/config/src/test/java/org/springframework/security/config/method/InterceptMethodsBeanDefinitionDecoratorTests.java b/config/src/test/java/org/springframework/security/config/method/InterceptMethodsBeanDefinitionDecoratorTests.java
index 4771006d75..0316daf0fe 100644
--- a/config/src/test/java/org/springframework/security/config/method/InterceptMethodsBeanDefinitionDecoratorTests.java
+++ b/config/src/test/java/org/springframework/security/config/method/InterceptMethodsBeanDefinitionDecoratorTests.java
@@ -74,7 +74,6 @@ public class InterceptMethodsBeanDefinitionDecoratorTests implements Application
assertThat(this.appContext.getBeansOfType(ApplicationListener.class)).hasSize(1);
assertThat(this.appContext.getBeanNamesForType(ApplicationListener.class)).hasSize(1);
this.appContext.publishEvent(new AuthenticationSuccessEvent(new TestingAuthenticationToken("user", "")));
-
assertThat(this.target).isInstanceOf(ApplicationListener.class);
}
@@ -93,7 +92,6 @@ public class InterceptMethodsBeanDefinitionDecoratorTests implements Application
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_USER"));
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.doSomething();
}
@@ -102,7 +100,6 @@ public class InterceptMethodsBeanDefinitionDecoratorTests implements Application
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_SOMEOTHERROLE"));
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.doSomething();
}
diff --git a/config/src/test/java/org/springframework/security/config/method/Jsr250AnnotationDrivenBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/method/Jsr250AnnotationDrivenBeanDefinitionParserTests.java
index 20b5183888..46ca86f261 100644
--- a/config/src/test/java/org/springframework/security/config/method/Jsr250AnnotationDrivenBeanDefinitionParserTests.java
+++ b/config/src/test/java/org/springframework/security/config/method/Jsr250AnnotationDrivenBeanDefinitionParserTests.java
@@ -64,7 +64,6 @@ public class Jsr250AnnotationDrivenBeanDefinitionParserTests {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_USER"));
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.someOther(0);
}
@@ -73,7 +72,6 @@ public class Jsr250AnnotationDrivenBeanDefinitionParserTests {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_USER"));
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.someUserMethod1();
}
@@ -82,7 +80,6 @@ public class Jsr250AnnotationDrivenBeanDefinitionParserTests {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_SOMEOTHERROLE"));
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.someAdminMethod();
}
@@ -91,7 +88,6 @@ public class Jsr250AnnotationDrivenBeanDefinitionParserTests {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_USER"));
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.rolesAllowedUser();
}
diff --git a/config/src/test/java/org/springframework/security/config/method/Sec2196Tests.java b/config/src/test/java/org/springframework/security/config/method/Sec2196Tests.java
index 083b3c2b7f..7814a7f7d6 100644
--- a/config/src/test/java/org/springframework/security/config/method/Sec2196Tests.java
+++ b/config/src/test/java/org/springframework/security/config/method/Sec2196Tests.java
@@ -38,7 +38,6 @@ public class Sec2196Tests {
public void genericMethodsProtected() {
loadContext(""
+ "");
-
SecurityContextHolder.getContext()
.setAuthentication(new TestingAuthenticationToken("test", "pass", "ROLE_USER"));
Service service = this.context.getBean(Service.class);
@@ -49,7 +48,6 @@ public class Sec2196Tests {
public void genericMethodsAllowed() {
loadContext(""
+ "");
-
SecurityContextHolder.getContext()
.setAuthentication(new TestingAuthenticationToken("test", "pass", "saveUsers"));
Service service = this.context.getBean(Service.class);
diff --git a/config/src/test/java/org/springframework/security/config/method/SecuredAnnotationDrivenBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/method/SecuredAnnotationDrivenBeanDefinitionParserTests.java
index 3d46358d09..c7f1cc54a2 100644
--- a/config/src/test/java/org/springframework/security/config/method/SecuredAnnotationDrivenBeanDefinitionParserTests.java
+++ b/config/src/test/java/org/springframework/security/config/method/SecuredAnnotationDrivenBeanDefinitionParserTests.java
@@ -73,7 +73,6 @@ public class SecuredAnnotationDrivenBeanDefinitionParserTests {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_USER"));
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.someUserMethod1();
}
@@ -82,7 +81,6 @@ public class SecuredAnnotationDrivenBeanDefinitionParserTests {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_SOMEOTHER"));
SecurityContextHolder.getContext().setAuthentication(token);
-
this.target.someAdminMethod();
}
@@ -101,7 +99,6 @@ public class SecuredAnnotationDrivenBeanDefinitionParserTests {
catch (AuthenticationCredentialsNotFoundException expected) {
}
SecurityContextHolder.getContext().setAuthentication(new TestingAuthenticationToken("u", "p", "ROLE_A"));
-
BusinessService chompedTarget = (BusinessService) serializeAndDeserialize(this.target);
chompedTarget.someAdminMethod();
}
@@ -113,11 +110,9 @@ public class SecuredAnnotationDrivenBeanDefinitionParserTests {
oos.flush();
baos.flush();
byte[] bytes = baos.toByteArray();
-
ByteArrayInputStream is = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(is);
Object o2 = ois.readObject();
-
return o2;
}
diff --git a/config/src/test/java/org/springframework/security/config/method/sec2136/Sec2136Tests.java b/config/src/test/java/org/springframework/security/config/method/sec2136/Sec2136Tests.java
index a78f32bf76..4951e56206 100644
--- a/config/src/test/java/org/springframework/security/config/method/sec2136/Sec2136Tests.java
+++ b/config/src/test/java/org/springframework/security/config/method/sec2136/Sec2136Tests.java
@@ -32,7 +32,6 @@ public class Sec2136Tests {
@Test
public void configurationLoads() {
-
}
}
diff --git a/config/src/test/java/org/springframework/security/config/oauth2/client/ClientRegistrationsBeanDefinitionParserTests.java b/config/src/test/java/org/springframework/security/config/oauth2/client/ClientRegistrationsBeanDefinitionParserTests.java
index 2c593e80dc..c20e3c7b59 100644
--- a/config/src/test/java/org/springframework/security/config/oauth2/client/ClientRegistrationsBeanDefinitionParserTests.java
+++ b/config/src/test/java/org/springframework/security/config/oauth2/client/ClientRegistrationsBeanDefinitionParserTests.java
@@ -100,15 +100,11 @@ public class ClientRegistrationsBeanDefinitionParserTests {
this.server = new MockWebServer();
this.server.start();
String serverUrl = this.server.url("/").toString();
-
String discoveryResponse = OIDC_DISCOVERY_RESPONSE.replace("${issuer-uri}", serverUrl);
this.server.enqueue(jsonResponse(discoveryResponse));
-
String contextConfig = ISSUER_URI_XML_CONFIG.replace("${issuer-uri}", serverUrl);
this.spring.context(contextConfig).autowire();
-
assertThat(this.clientRegistrationRepository).isInstanceOf(InMemoryClientRegistrationRepository.class);
-
ClientRegistration googleRegistration = this.clientRegistrationRepository.findByRegistrationId("google-login");
assertThat(googleRegistration).isNotNull();
assertThat(googleRegistration.getRegistrationId()).isEqualTo("google-login");
@@ -120,7 +116,6 @@ public class ClientRegistrationsBeanDefinitionParserTests {
assertThat(googleRegistration.getScopes())
.isEqualTo(StringUtils.commaDelimitedListToSet("openid,profile,email"));
assertThat(googleRegistration.getClientName()).isEqualTo(serverUrl);
-
ProviderDetails googleProviderDetails = googleRegistration.getProviderDetails();
assertThat(googleProviderDetails).isNotNull();
assertThat(googleProviderDetails.getAuthorizationUri()).isEqualTo("https://example.com/o/oauth2/v2/auth");
@@ -138,9 +133,7 @@ public class ClientRegistrationsBeanDefinitionParserTests {
public void parseWhenMultipleClientsConfiguredThenAvailableInRepository() {
this.spring.configLocations(ClientRegistrationsBeanDefinitionParserTests.xml("MultiClientRegistration"))
.autowire();
-
assertThat(this.clientRegistrationRepository).isInstanceOf(InMemoryClientRegistrationRepository.class);
-
ClientRegistration googleRegistration = this.clientRegistrationRepository.findByRegistrationId("google-login");
assertThat(googleRegistration).isNotNull();
assertThat(googleRegistration.getRegistrationId()).isEqualTo("google-login");
@@ -152,7 +145,6 @@ public class ClientRegistrationsBeanDefinitionParserTests {
assertThat(googleRegistration.getScopes())
.isEqualTo(StringUtils.commaDelimitedListToSet("openid,profile,email"));
assertThat(googleRegistration.getClientName()).isEqualTo("Google");
-
ProviderDetails googleProviderDetails = googleRegistration.getProviderDetails();
assertThat(googleProviderDetails).isNotNull();
assertThat(googleProviderDetails.getAuthorizationUri())
@@ -165,7 +157,6 @@ public class ClientRegistrationsBeanDefinitionParserTests {
assertThat(googleProviderDetails.getUserInfoEndpoint().getUserNameAttributeName()).isEqualTo("sub");
assertThat(googleProviderDetails.getJwkSetUri()).isEqualTo("https://www.googleapis.com/oauth2/v3/certs");
assertThat(googleProviderDetails.getIssuerUri()).isEqualTo("https://accounts.google.com");
-
ClientRegistration githubRegistration = this.clientRegistrationRepository.findByRegistrationId("github-login");
assertThat(githubRegistration).isNotNull();
assertThat(githubRegistration.getRegistrationId()).isEqualTo("github-login");
@@ -177,7 +168,6 @@ public class ClientRegistrationsBeanDefinitionParserTests {
assertThat(googleRegistration.getScopes())
.isEqualTo(StringUtils.commaDelimitedListToSet("openid,profile,email"));
assertThat(githubRegistration.getClientName()).isEqualTo("Github");
-
ProviderDetails githubProviderDetails = githubRegistration.getProviderDetails();
assertThat(githubProviderDetails).isNotNull();
assertThat(githubProviderDetails.getAuthorizationUri()).isEqualTo("https://github.com/login/oauth/authorize");
diff --git a/config/src/test/java/org/springframework/security/config/test/SpringTestContext.java b/config/src/test/java/org/springframework/security/config/test/SpringTestContext.java
index 9da52a47c7..dba5ac9173 100644
--- a/config/src/test/java/org/springframework/security/config/test/SpringTestContext.java
+++ b/config/src/test/java/org/springframework/security/config/test/SpringTestContext.java
@@ -128,13 +128,11 @@ public class SpringTestContext implements Closeable {
this.context.setServletContext(new MockServletContext());
this.context.setServletConfig(new MockServletConfig());
this.context.refresh();
-
if (this.context.containsBean(BeanIds.SPRING_SECURITY_FILTER_CHAIN)) {
MockMvc mockMvc = MockMvcBuilders.webAppContextSetup(this.context).apply(springSecurity())
.apply(new AddFilter()).build();
this.context.getBeanFactory().registerResolvableDependency(MockMvc.class, mockMvc);
}
-
AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor();
bpp.setBeanFactory(this.context.getBeanFactory());
bpp.processInjection(this.test);
diff --git a/config/src/test/java/org/springframework/security/config/util/InMemoryXmlApplicationContext.java b/config/src/test/java/org/springframework/security/config/util/InMemoryXmlApplicationContext.java
index 5ba707036e..865462456d 100644
--- a/config/src/test/java/org/springframework/security/config/util/InMemoryXmlApplicationContext.java
+++ b/config/src/test/java/org/springframework/security/config/util/InMemoryXmlApplicationContext.java
@@ -42,7 +42,6 @@ public class InMemoryXmlApplicationContext extends AbstractXmlApplicationContext
+ "http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-2.5.xsd\n"
+ "http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security-";
static final String BEANS_CLOSE = "\n";
-
static final String SPRING_SECURITY_VERSION = "5.4";
Resource inMemoryXml;
diff --git a/config/src/test/java/org/springframework/security/config/web/server/AuthorizeExchangeSpecTests.java b/config/src/test/java/org/springframework/security/config/web/server/AuthorizeExchangeSpecTests.java
index 1fec30b4fc..22e87bbe62 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/AuthorizeExchangeSpecTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/AuthorizeExchangeSpecTests.java
@@ -35,30 +35,20 @@ public class AuthorizeExchangeSpecTests {
public void antMatchersWhenMethodAndPatternsThenDiscriminatesByMethod() {
this.http.csrf().disable().authorizeExchange().pathMatchers(HttpMethod.POST, "/a", "/b").denyAll().anyExchange()
.permitAll();
-
WebTestClient client = buildClient();
-
client.get().uri("/a").exchange().expectStatus().isOk();
-
client.get().uri("/b").exchange().expectStatus().isOk();
-
client.post().uri("/a").exchange().expectStatus().isUnauthorized();
-
client.post().uri("/b").exchange().expectStatus().isUnauthorized();
}
@Test
public void antMatchersWhenPatternsThenAnyMethod() {
this.http.csrf().disable().authorizeExchange().pathMatchers("/a", "/b").denyAll().anyExchange().permitAll();
-
WebTestClient client = buildClient();
-
client.get().uri("/a").exchange().expectStatus().isUnauthorized();
-
client.get().uri("/b").exchange().expectStatus().isUnauthorized();
-
client.post().uri("/a").exchange().expectStatus().isUnauthorized();
-
client.post().uri("/b").exchange().expectStatus().isUnauthorized();
}
@@ -66,15 +56,10 @@ public class AuthorizeExchangeSpecTests {
public void antMatchersWhenPatternsInLambdaThenAnyMethod() {
this.http.csrf(ServerHttpSecurity.CsrfSpec::disable).authorizeExchange(
(exchanges) -> exchanges.pathMatchers("/a", "/b").denyAll().anyExchange().permitAll());
-
WebTestClient client = buildClient();
-
client.get().uri("/a").exchange().expectStatus().isUnauthorized();
-
client.get().uri("/b").exchange().expectStatus().isUnauthorized();
-
client.post().uri("/a").exchange().expectStatus().isUnauthorized();
-
client.post().uri("/b").exchange().expectStatus().isUnauthorized();
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/CorsSpecTests.java b/config/src/test/java/org/springframework/security/config/web/server/CorsSpecTests.java
index 33e1d2e9c0..7499e9c240 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/CorsSpecTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/CorsSpecTests.java
@@ -105,9 +105,7 @@ public class CorsSpecTests {
WebTestClient client = buildClient();
FluxExchangeResult response = client.get().uri("https://example.com/")
.headers((h) -> h.setOrigin("https://origin.example.com")).exchange().returnResult(String.class);
-
Map> responseHeaders = response.getResponseHeaders();
-
if (!this.expectedHeaders.isEmpty()) {
assertThat(responseHeaders).describedAs(response.toString()).containsAllEntriesOf(this.expectedHeaders);
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/ExceptionHandlingSpecTests.java b/config/src/test/java/org/springframework/security/config/web/server/ExceptionHandlingSpecTests.java
index 470536e558..4b3ffae2ce 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/ExceptionHandlingSpecTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/ExceptionHandlingSpecTests.java
@@ -42,9 +42,7 @@ public class ExceptionHandlingSpecTests {
public void defaultAuthenticationEntryPoint() {
SecurityWebFilterChain securityWebFilter = this.http.csrf().disable().authorizeExchange().anyExchange()
.authenticated().and().exceptionHandling().and().build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
client.get().uri("/test").exchange().expectStatus().isUnauthorized().expectHeader()
.valueMatches("WWW-Authenticate", "Basic.*");
}
@@ -54,9 +52,7 @@ public class ExceptionHandlingSpecTests {
SecurityWebFilterChain securityWebFilter = this.http
.authorizeExchange((exchanges) -> exchanges.anyExchange().authenticated())
.exceptionHandling(withDefaults()).build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
client.get().uri("/test").exchange().expectStatus().isUnauthorized().expectHeader()
.valueMatches("WWW-Authenticate", "Basic.*");
}
@@ -66,9 +62,7 @@ public class ExceptionHandlingSpecTests {
SecurityWebFilterChain securityWebFilter = this.http.csrf().disable().authorizeExchange().anyExchange()
.authenticated().and().exceptionHandling()
.authenticationEntryPoint(redirectServerAuthenticationEntryPoint("/auth")).and().build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
client.get().uri("/test").exchange().expectStatus().isFound().expectHeader().valueMatches("Location", ".*");
}
@@ -79,9 +73,7 @@ public class ExceptionHandlingSpecTests {
.exceptionHandling((exceptionHandling) -> exceptionHandling
.authenticationEntryPoint(redirectServerAuthenticationEntryPoint("/auth")))
.build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
client.get().uri("/test").exchange().expectStatus().isFound().expectHeader().valueMatches("Location", ".*");
}
@@ -89,9 +81,7 @@ public class ExceptionHandlingSpecTests {
public void defaultAccessDeniedHandler() {
SecurityWebFilterChain securityWebFilter = this.http.csrf().disable().httpBasic().and().authorizeExchange()
.anyExchange().hasRole("ADMIN").and().exceptionHandling().and().build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
client.get().uri("/admin").headers((headers) -> headers.setBasicAuth("user", "password")).exchange()
.expectStatus().isForbidden();
}
@@ -101,9 +91,7 @@ public class ExceptionHandlingSpecTests {
SecurityWebFilterChain securityWebFilter = this.http.httpBasic(withDefaults())
.authorizeExchange((exchanges) -> exchanges.anyExchange().hasRole("ADMIN"))
.exceptionHandling(withDefaults()).build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
client.get().uri("/admin").headers((headers) -> headers.setBasicAuth("user", "password")).exchange()
.expectStatus().isForbidden();
}
@@ -113,9 +101,7 @@ public class ExceptionHandlingSpecTests {
SecurityWebFilterChain securityWebFilter = this.http.csrf().disable().httpBasic().and().authorizeExchange()
.anyExchange().hasRole("ADMIN").and().exceptionHandling()
.accessDeniedHandler(httpStatusServerAccessDeniedHandler(HttpStatus.BAD_REQUEST)).and().build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
client.get().uri("/admin").headers((headers) -> headers.setBasicAuth("user", "password")).exchange()
.expectStatus().isBadRequest();
}
@@ -127,9 +113,7 @@ public class ExceptionHandlingSpecTests {
.exceptionHandling((exceptionHandling) -> exceptionHandling
.accessDeniedHandler(httpStatusServerAccessDeniedHandler(HttpStatus.BAD_REQUEST)))
.build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
client.get().uri("/admin").headers((headers) -> headers.setBasicAuth("user", "password")).exchange()
.expectStatus().isBadRequest();
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/FormLoginTests.java b/config/src/test/java/org/springframework/security/config/web/server/FormLoginTests.java
index 791d064c70..cf96b628a1 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/FormLoginTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/FormLoginTests.java
@@ -70,22 +70,14 @@ public class FormLoginTests {
public void defaultLoginPage() {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().anyExchange().authenticated().and()
.formLogin().and().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
DefaultLoginPage loginPage = HomePage.to(driver, DefaultLoginPage.class).assertAt();
-
loginPage = loginPage.loginForm().username("user").password("invalid").submit(DefaultLoginPage.class)
.assertError();
-
HomePage homePage = loginPage.loginForm().username("user").password("password").submit(HomePage.class);
-
homePage.assertAt();
-
loginPage = DefaultLogoutPage.to(driver).assertAt().logout();
-
loginPage.assertAt().assertLogout();
}
@@ -94,22 +86,14 @@ public class FormLoginTests {
SecurityWebFilterChain securityWebFilter = this.http
.authorizeExchange((exchanges) -> exchanges.anyExchange().authenticated()).formLogin(withDefaults())
.build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
DefaultLoginPage loginPage = HomePage.to(driver, DefaultLoginPage.class).assertAt();
-
loginPage = loginPage.loginForm().username("user").password("invalid").submit(DefaultLoginPage.class)
.assertError();
-
HomePage homePage = loginPage.loginForm().username("user").password("password").submit(HomePage.class);
-
homePage.assertAt();
-
loginPage = DefaultLogoutPage.to(driver).assertAt().logout();
-
loginPage.assertAt().assertLogout();
}
@@ -117,17 +101,12 @@ public class FormLoginTests {
public void customLoginPage() {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().pathMatchers("/login").permitAll()
.anyExchange().authenticated().and().formLogin().loginPage("/login").and().build();
-
WebTestClient webTestClient = WebTestClient
.bindToController(new CustomLoginPageController(), new WebTestClientBuilder.Http200RestController())
.webFilter(new WebFilterChainProxy(securityWebFilter)).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
CustomLoginPage loginPage = HomePage.to(driver, CustomLoginPage.class).assertAt();
-
HomePage homePage = loginPage.loginForm().username("user").password("password").submit(HomePage.class);
-
homePage.assertAt();
}
@@ -137,17 +116,12 @@ public class FormLoginTests {
.authorizeExchange(
(exchanges) -> exchanges.pathMatchers("/login").permitAll().anyExchange().authenticated())
.formLogin((formLogin) -> formLogin.loginPage("/login")).build();
-
WebTestClient webTestClient = WebTestClient
.bindToController(new CustomLoginPageController(), new WebTestClientBuilder.Http200RestController())
.webFilter(new WebFilterChainProxy(securityWebFilter)).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
CustomLoginPage loginPage = HomePage.to(driver, CustomLoginPage.class).assertAt();
-
HomePage homePage = loginPage.loginForm().username("user").password("password").submit(HomePage.class);
-
homePage.assertAt();
}
@@ -156,15 +130,10 @@ public class FormLoginTests {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().pathMatchers("/login", "/failure")
.permitAll().anyExchange().authenticated().and().formLogin()
.authenticationFailureHandler(new RedirectServerAuthenticationFailureHandler("/failure")).and().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
DefaultLoginPage loginPage = HomePage.to(driver, DefaultLoginPage.class).assertAt();
-
loginPage.loginForm().username("invalid").password("invalid").submit(HomePage.class);
-
assertThat(driver.getCurrentUrl()).endsWith("/failure");
}
@@ -173,13 +142,9 @@ public class FormLoginTests {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().pathMatchers("/login", "/sign-in")
.permitAll().anyExchange().authenticated().and().formLogin()
.requiresAuthenticationMatcher(new PathPatternParserServerWebExchangeMatcher("/sign-in")).and().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
driver.get("http://localhost/sign-in");
-
assertThat(driver.getCurrentUrl()).endsWith("/login?error");
}
@@ -188,15 +153,10 @@ public class FormLoginTests {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().anyExchange().authenticated().and()
.formLogin().authenticationSuccessHandler(new RedirectServerAuthenticationSuccessHandler("/custom"))
.and().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
DefaultLoginPage loginPage = DefaultLoginPage.to(driver).assertAt();
-
HomePage homePage = loginPage.loginForm().username("user").password("password").submit(HomePage.class);
-
assertThat(driver.getCurrentUrl()).endsWith("/custom");
}
@@ -204,25 +164,17 @@ public class FormLoginTests {
public void customAuthenticationManager() {
ReactiveAuthenticationManager defaultAuthenticationManager = mock(ReactiveAuthenticationManager.class);
ReactiveAuthenticationManager customAuthenticationManager = mock(ReactiveAuthenticationManager.class);
-
given(defaultAuthenticationManager.authenticate(any()))
.willThrow(new RuntimeException("should not interact with default auth manager"));
given(customAuthenticationManager.authenticate(any()))
.willReturn(Mono.just(new TestingAuthenticationToken("user", "password", "ROLE_USER", "ROLE_ADMIN")));
-
SecurityWebFilterChain securityWebFilter = this.http.authenticationManager(defaultAuthenticationManager)
.formLogin().authenticationManager(customAuthenticationManager).and().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
DefaultLoginPage loginPage = DefaultLoginPage.to(driver).assertAt();
-
HomePage homePage = loginPage.loginForm().username("user").password("password").submit(HomePage.class);
-
homePage.assertAt();
-
verifyZeroInteractions(defaultAuthenticationManager);
}
@@ -230,28 +182,19 @@ public class FormLoginTests {
public void formLoginSecurityContextRepository() {
ServerSecurityContextRepository defaultSecContextRepository = mock(ServerSecurityContextRepository.class);
ServerSecurityContextRepository formLoginSecContextRepository = mock(ServerSecurityContextRepository.class);
-
TestingAuthenticationToken token = new TestingAuthenticationToken("rob", "rob", "ROLE_USER");
-
given(defaultSecContextRepository.save(any(), any())).willReturn(Mono.empty());
given(defaultSecContextRepository.load(any())).willReturn(authentication(token));
given(formLoginSecContextRepository.save(any(), any())).willReturn(Mono.empty());
given(formLoginSecContextRepository.load(any())).willReturn(authentication(token));
-
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().anyExchange().authenticated().and()
.securityContextRepository(defaultSecContextRepository).formLogin()
.securityContextRepository(formLoginSecContextRepository).and().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
DefaultLoginPage loginPage = DefaultLoginPage.to(driver).assertAt();
-
HomePage homePage = loginPage.loginForm().username("user").password("password").submit(HomePage.class);
-
homePage.assertAt();
-
verify(defaultSecContextRepository, atLeastOnce()).load(any());
verify(formLoginSecContextRepository).save(any(), any());
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/HeaderSpecTests.java b/config/src/test/java/org/springframework/security/config/web/server/HeaderSpecTests.java
index a168b477f7..5efabbd93e 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/HeaderSpecTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/HeaderSpecTests.java
@@ -77,39 +77,32 @@ public class HeaderSpecTests {
@Test
public void headersWhenDisableThenNoSecurityHeaders() {
new HashSet<>(this.expectedHeaders.keySet()).forEach(this::expectHeaderNamesNotPresent);
-
this.http.headers().disable();
-
assertHeaders();
}
@Test
public void headersWhenDisableInLambdaThenNoSecurityHeaders() {
new HashSet<>(this.expectedHeaders.keySet()).forEach(this::expectHeaderNamesNotPresent);
-
this.http.headers((headers) -> headers.disable());
-
assertHeaders();
}
@Test
public void headersWhenDisableAndInvokedExplicitlyThenDefautsUsed() {
this.http.headers().disable().headers();
-
assertHeaders();
}
@Test
public void headersWhenDefaultsThenAllDefaultsWritten() {
this.http.headers();
-
assertHeaders();
}
@Test
public void headersWhenDefaultsInLambdaThenAllDefaultsWritten() {
this.http.headers(withDefaults());
-
assertHeaders();
}
@@ -117,7 +110,6 @@ public class HeaderSpecTests {
public void headersWhenCacheDisableThenCacheNotWritten() {
expectHeaderNamesNotPresent(HttpHeaders.CACHE_CONTROL, HttpHeaders.PRAGMA, HttpHeaders.EXPIRES);
this.http.headers().cache().disable();
-
assertHeaders();
}
@@ -125,7 +117,6 @@ public class HeaderSpecTests {
public void headersWhenCacheDisableInLambdaThenCacheNotWritten() {
expectHeaderNamesNotPresent(HttpHeaders.CACHE_CONTROL, HttpHeaders.PRAGMA, HttpHeaders.EXPIRES);
this.http.headers((headers) -> headers.cache((cache) -> cache.disable()));
-
assertHeaders();
}
@@ -133,7 +124,6 @@ public class HeaderSpecTests {
public void headersWhenContentOptionsDisableThenContentTypeOptionsNotWritten() {
expectHeaderNamesNotPresent(ContentTypeOptionsServerHttpHeadersWriter.X_CONTENT_OPTIONS);
this.http.headers().contentTypeOptions().disable();
-
assertHeaders();
}
@@ -142,7 +132,6 @@ public class HeaderSpecTests {
expectHeaderNamesNotPresent(ContentTypeOptionsServerHttpHeadersWriter.X_CONTENT_OPTIONS);
this.http
.headers((headers) -> headers.contentTypeOptions((contentTypeOptions) -> contentTypeOptions.disable()));
-
assertHeaders();
}
@@ -150,7 +139,6 @@ public class HeaderSpecTests {
public void headersWhenHstsDisableThenHstsNotWritten() {
expectHeaderNamesNotPresent(StrictTransportSecurityServerHttpHeadersWriter.STRICT_TRANSPORT_SECURITY);
this.http.headers().hsts().disable();
-
assertHeaders();
}
@@ -158,7 +146,6 @@ public class HeaderSpecTests {
public void headersWhenHstsDisableInLambdaThenHstsNotWritten() {
expectHeaderNamesNotPresent(StrictTransportSecurityServerHttpHeadersWriter.STRICT_TRANSPORT_SECURITY);
this.http.headers((headers) -> headers.hsts((hsts) -> hsts.disable()));
-
assertHeaders();
}
@@ -168,7 +155,6 @@ public class HeaderSpecTests {
this.expectedHeaders.add(StrictTransportSecurityServerHttpHeadersWriter.STRICT_TRANSPORT_SECURITY,
"max-age=60");
this.http.headers().hsts().maxAge(Duration.ofSeconds(60)).includeSubdomains(false);
-
assertHeaders();
}
@@ -179,7 +165,6 @@ public class HeaderSpecTests {
"max-age=60");
this.http.headers(
(headers) -> headers.hsts((hsts) -> hsts.maxAge(Duration.ofSeconds(60)).includeSubdomains(false)));
-
assertHeaders();
}
@@ -189,7 +174,6 @@ public class HeaderSpecTests {
this.expectedHeaders.add(StrictTransportSecurityServerHttpHeadersWriter.STRICT_TRANSPORT_SECURITY,
"max-age=60 ; includeSubDomains ; preload");
this.http.headers().hsts().maxAge(Duration.ofSeconds(60)).preload(true);
-
assertHeaders();
}
@@ -199,7 +183,6 @@ public class HeaderSpecTests {
this.expectedHeaders.add(StrictTransportSecurityServerHttpHeadersWriter.STRICT_TRANSPORT_SECURITY,
"max-age=60 ; includeSubDomains ; preload");
this.http.headers((headers) -> headers.hsts((hsts) -> hsts.maxAge(Duration.ofSeconds(60)).preload(true)));
-
assertHeaders();
}
@@ -207,7 +190,6 @@ public class HeaderSpecTests {
public void headersWhenFrameOptionsDisableThenFrameOptionsNotWritten() {
expectHeaderNamesNotPresent(XFrameOptionsServerHttpHeadersWriter.X_FRAME_OPTIONS);
this.http.headers().frameOptions().disable();
-
assertHeaders();
}
@@ -215,7 +197,6 @@ public class HeaderSpecTests {
public void headersWhenFrameOptionsDisableInLambdaThenFrameOptionsNotWritten() {
expectHeaderNamesNotPresent(XFrameOptionsServerHttpHeadersWriter.X_FRAME_OPTIONS);
this.http.headers((headers) -> headers.frameOptions((frameOptions) -> frameOptions.disable()));
-
assertHeaders();
}
@@ -223,7 +204,6 @@ public class HeaderSpecTests {
public void headersWhenFrameOptionsModeThenFrameOptionsCustomMode() {
this.expectedHeaders.set(XFrameOptionsServerHttpHeadersWriter.X_FRAME_OPTIONS, "SAMEORIGIN");
this.http.headers().frameOptions().mode(XFrameOptionsServerHttpHeadersWriter.Mode.SAMEORIGIN);
-
assertHeaders();
}
@@ -232,7 +212,6 @@ public class HeaderSpecTests {
this.expectedHeaders.set(XFrameOptionsServerHttpHeadersWriter.X_FRAME_OPTIONS, "SAMEORIGIN");
this.http.headers((headers) -> headers.frameOptions(
(frameOptions) -> frameOptions.mode(XFrameOptionsServerHttpHeadersWriter.Mode.SAMEORIGIN)));
-
assertHeaders();
}
@@ -240,7 +219,6 @@ public class HeaderSpecTests {
public void headersWhenXssProtectionDisableThenXssProtectionNotWritten() {
expectHeaderNamesNotPresent("X-Xss-Protection");
this.http.headers().xssProtection().disable();
-
assertHeaders();
}
@@ -248,7 +226,6 @@ public class HeaderSpecTests {
public void headersWhenXssProtectionDisableInLambdaThenXssProtectionNotWritten() {
expectHeaderNamesNotPresent("X-Xss-Protection");
this.http.headers((headers) -> headers.xssProtection((xssProtection) -> xssProtection.disable()));
-
assertHeaders();
}
@@ -256,9 +233,7 @@ public class HeaderSpecTests {
public void headersWhenFeaturePolicyEnabledThenFeaturePolicyWritten() {
String policyDirectives = "Feature-Policy";
this.expectedHeaders.add(FeaturePolicyServerHttpHeadersWriter.FEATURE_POLICY, policyDirectives);
-
this.http.headers().featurePolicy(policyDirectives);
-
assertHeaders();
}
@@ -267,9 +242,7 @@ public class HeaderSpecTests {
String policyDirectives = "default-src 'self'";
this.expectedHeaders.add(ContentSecurityPolicyServerHttpHeadersWriter.CONTENT_SECURITY_POLICY,
policyDirectives);
-
this.http.headers().contentSecurityPolicy(policyDirectives);
-
assertHeaders();
}
@@ -278,9 +251,7 @@ public class HeaderSpecTests {
String expectedPolicyDirectives = "default-src 'self'";
this.expectedHeaders.add(ContentSecurityPolicyServerHttpHeadersWriter.CONTENT_SECURITY_POLICY,
expectedPolicyDirectives);
-
this.http.headers((headers) -> headers.contentSecurityPolicy(withDefaults()));
-
assertHeaders();
}
@@ -289,10 +260,8 @@ public class HeaderSpecTests {
String policyDirectives = "default-src 'self' *.trusted.com";
this.expectedHeaders.add(ContentSecurityPolicyServerHttpHeadersWriter.CONTENT_SECURITY_POLICY,
policyDirectives);
-
this.http.headers((headers) -> headers.contentSecurityPolicy(
(contentSecurityPolicy) -> contentSecurityPolicy.policyDirectives(policyDirectives)));
-
assertHeaders();
}
@@ -301,7 +270,6 @@ public class HeaderSpecTests {
this.expectedHeaders.add(ReferrerPolicyServerHttpHeadersWriter.REFERRER_POLICY,
ReferrerPolicy.NO_REFERRER.getPolicy());
this.http.headers().referrerPolicy();
-
assertHeaders();
}
@@ -310,7 +278,6 @@ public class HeaderSpecTests {
this.expectedHeaders.add(ReferrerPolicyServerHttpHeadersWriter.REFERRER_POLICY,
ReferrerPolicy.NO_REFERRER.getPolicy());
this.http.headers((headers) -> headers.referrerPolicy(withDefaults()));
-
assertHeaders();
}
@@ -319,7 +286,6 @@ public class HeaderSpecTests {
this.expectedHeaders.add(ReferrerPolicyServerHttpHeadersWriter.REFERRER_POLICY,
ReferrerPolicy.NO_REFERRER_WHEN_DOWNGRADE.getPolicy());
this.http.headers().referrerPolicy(ReferrerPolicy.NO_REFERRER_WHEN_DOWNGRADE);
-
assertHeaders();
}
@@ -329,7 +295,6 @@ public class HeaderSpecTests {
ReferrerPolicy.NO_REFERRER_WHEN_DOWNGRADE.getPolicy());
this.http.headers((headers) -> headers
.referrerPolicy((referrerPolicy) -> referrerPolicy.policy(ReferrerPolicy.NO_REFERRER_WHEN_DOWNGRADE)));
-
assertHeaders();
}
@@ -337,10 +302,7 @@ public class HeaderSpecTests {
public void headersWhenCustomHeadersWriter() {
this.expectedHeaders.add(CUSTOM_HEADER, CUSTOM_VALUE);
this.http.headers((headers) -> headers.writer((exchange) -> Mono.just(exchange)
- .doOnNext((it) -> it.getResponse().getHeaders().add(CUSTOM_HEADER, CUSTOM_VALUE)).then()
-
- ));
-
+ .doOnNext((it) -> it.getResponse().getHeaders().add(CUSTOM_HEADER, CUSTOM_VALUE)).then()));
assertHeaders();
}
@@ -355,9 +317,7 @@ public class HeaderSpecTests {
WebTestClient client = buildClient();
FluxExchangeResult response = client.get().uri("https://example.com/").exchange()
.returnResult(String.class);
-
Map> responseHeaders = response.getResponseHeaders();
-
if (!this.expectedHeaders.isEmpty()) {
assertThat(responseHeaders).describedAs(response.toString()).containsAllEntriesOf(this.expectedHeaders);
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/HttpsRedirectSpecTests.java b/config/src/test/java/org/springframework/security/config/web/server/HttpsRedirectSpecTests.java
index f31818b22b..9df6cc1c16 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/HttpsRedirectSpecTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/HttpsRedirectSpecTests.java
@@ -55,14 +55,12 @@ public class HttpsRedirectSpecTests {
@Test
public void getWhenSecureThenDoesNotRedirect() {
this.spring.register(RedirectToHttpConfig.class).autowire();
-
this.client.get().uri("https://localhost").exchange().expectStatus().isNotFound();
}
@Test
public void getWhenInsecureThenRespondsWithRedirectToSecure() {
this.spring.register(RedirectToHttpConfig.class).autowire();
-
this.client.get().uri("http://localhost").exchange().expectStatus().isFound().expectHeader()
.valueEquals(HttpHeaders.LOCATION, "https://localhost");
}
@@ -70,7 +68,6 @@ public class HttpsRedirectSpecTests {
@Test
public void getWhenInsecureAndRedirectConfiguredInLambdaThenRespondsWithRedirectToSecure() {
this.spring.register(RedirectToHttpsInLambdaConfig.class).autowire();
-
this.client.get().uri("http://localhost").exchange().expectStatus().isFound().expectHeader()
.valueEquals(HttpHeaders.LOCATION, "https://localhost");
}
@@ -78,9 +75,7 @@ public class HttpsRedirectSpecTests {
@Test
public void getWhenInsecureAndPathRequiresTransportSecurityThenRedirects() {
this.spring.register(SometimesRedirectToHttpsConfig.class).autowire();
-
this.client.get().uri("http://localhost:8080").exchange().expectStatus().isNotFound();
-
this.client.get().uri("http://localhost:8080/secure").exchange().expectStatus().isFound().expectHeader()
.valueEquals(HttpHeaders.LOCATION, "https://localhost:8443/secure");
}
@@ -88,9 +83,7 @@ public class HttpsRedirectSpecTests {
@Test
public void getWhenInsecureAndPathRequiresTransportSecurityInLambdaThenRedirects() {
this.spring.register(SometimesRedirectToHttpsInLambdaConfig.class).autowire();
-
this.client.get().uri("http://localhost:8080").exchange().expectStatus().isNotFound();
-
this.client.get().uri("http://localhost:8080/secure").exchange().expectStatus().isFound().expectHeader()
.valueEquals(HttpHeaders.LOCATION, "https://localhost:8443/secure");
}
@@ -98,10 +91,8 @@ public class HttpsRedirectSpecTests {
@Test
public void getWhenInsecureAndUsingCustomPortMapperThenRespondsWithRedirectToSecurePort() {
this.spring.register(RedirectToHttpsViaCustomPortsConfig.class).autowire();
-
PortMapper portMapper = this.spring.getContext().getBean(PortMapper.class);
given(portMapper.lookupHttpsPort(4080)).willReturn(4443);
-
this.client.get().uri("http://localhost:4080").exchange().expectStatus().isFound().expectHeader()
.valueEquals(HttpHeaders.LOCATION, "https://localhost:4443");
}
@@ -109,10 +100,8 @@ public class HttpsRedirectSpecTests {
@Test
public void getWhenInsecureAndUsingCustomPortMapperInLambdaThenRespondsWithRedirectToSecurePort() {
this.spring.register(RedirectToHttpsViaCustomPortsInLambdaConfig.class).autowire();
-
PortMapper portMapper = this.spring.getContext().getBean(PortMapper.class);
given(portMapper.lookupHttpsPort(4080)).willReturn(4443);
-
this.client.get().uri("http://localhost:4080").exchange().expectStatus().isFound().expectHeader()
.valueEquals(HttpHeaders.LOCATION, "https://localhost:4443");
}
@@ -127,7 +116,6 @@ public class HttpsRedirectSpecTests {
http
.redirectToHttps();
// @formatter:on
-
return http.build();
}
@@ -143,7 +131,6 @@ public class HttpsRedirectSpecTests {
http
.redirectToHttps(withDefaults());
// @formatter:on
-
return http.build();
}
@@ -160,7 +147,6 @@ public class HttpsRedirectSpecTests {
.redirectToHttps()
.httpsRedirectWhen(new PathPatternParserServerWebExchangeMatcher("/secure"));
// @formatter:on
-
return http.build();
}
@@ -179,7 +165,6 @@ public class HttpsRedirectSpecTests {
.httpsRedirectWhen(new PathPatternParserServerWebExchangeMatcher("/secure"))
);
// @formatter:on
-
return http.build();
}
@@ -196,7 +181,6 @@ public class HttpsRedirectSpecTests {
.redirectToHttps()
.portMapper(portMapper());
// @formatter:on
-
return http.build();
}
@@ -220,7 +204,6 @@ public class HttpsRedirectSpecTests {
.portMapper(portMapper())
);
// @formatter:on
-
return http.build();
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/LogoutSpecTests.java b/config/src/test/java/org/springframework/security/config/web/server/LogoutSpecTests.java
index 7f4b247184..bd8822247d 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/LogoutSpecTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/LogoutSpecTests.java
@@ -41,24 +41,16 @@ public class LogoutSpecTests {
public void defaultLogout() {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().anyExchange().authenticated().and()
.formLogin().and().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
FormLoginTests.DefaultLoginPage loginPage = FormLoginTests.HomePage
.to(driver, FormLoginTests.DefaultLoginPage.class).assertAt();
-
loginPage = loginPage.loginForm().username("user").password("invalid")
.submit(FormLoginTests.DefaultLoginPage.class).assertError();
-
FormLoginTests.HomePage homePage = loginPage.loginForm().username("user").password("password")
.submit(FormLoginTests.HomePage.class);
-
homePage.assertAt();
-
loginPage = FormLoginTests.DefaultLogoutPage.to(driver).assertAt().logout();
-
loginPage.assertAt().assertLogout();
}
@@ -67,24 +59,16 @@ public class LogoutSpecTests {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().anyExchange().authenticated().and()
.formLogin().and().logout().requiresLogout(ServerWebExchangeMatchers.pathMatchers("/custom-logout"))
.and().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
FormLoginTests.DefaultLoginPage loginPage = FormLoginTests.HomePage
.to(driver, FormLoginTests.DefaultLoginPage.class).assertAt();
-
loginPage = loginPage.loginForm().username("user").password("invalid")
.submit(FormLoginTests.DefaultLoginPage.class).assertError();
-
FormLoginTests.HomePage homePage = loginPage.loginForm().username("user").password("password")
.submit(FormLoginTests.HomePage.class);
-
homePage.assertAt();
-
driver.get("http://localhost/custom-logout");
-
FormLoginTests.DefaultLoginPage.create(driver).assertAt().assertLogout();
}
@@ -95,24 +79,16 @@ public class LogoutSpecTests {
.formLogin(withDefaults())
.logout((logout) -> logout.requiresLogout(ServerWebExchangeMatchers.pathMatchers("/custom-logout")))
.build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
FormLoginTests.DefaultLoginPage loginPage = FormLoginTests.HomePage
.to(driver, FormLoginTests.DefaultLoginPage.class).assertAt();
-
loginPage = loginPage.loginForm().username("user").password("invalid")
.submit(FormLoginTests.DefaultLoginPage.class).assertError();
-
FormLoginTests.HomePage homePage = loginPage.loginForm().username("user").password("password")
.submit(FormLoginTests.HomePage.class);
-
homePage.assertAt();
-
driver.get("http://localhost/custom-logout");
-
FormLoginTests.DefaultLoginPage.create(driver).assertAt().assertLogout();
}
@@ -120,21 +96,14 @@ public class LogoutSpecTests {
public void logoutWhenDisabledThenPostToLogoutDoesNothing() {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().anyExchange().authenticated().and()
.formLogin().and().logout().disable().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
FormLoginTests.DefaultLoginPage loginPage = FormLoginTests.HomePage
.to(driver, FormLoginTests.DefaultLoginPage.class).assertAt();
-
FormLoginTests.HomePage homePage = loginPage.loginForm().username("user").password("password")
.submit(FormLoginTests.HomePage.class);
-
homePage.assertAt();
-
FormLoginTests.DefaultLogoutPage.to(driver).assertAt().logout();
-
homePage.assertAt();
}
@@ -144,21 +113,14 @@ public class LogoutSpecTests {
repository.setSpringSecurityContextAttrName("CUSTOM_CONTEXT_ATTR");
SecurityWebFilterChain securityWebFilter = this.http.securityContextRepository(repository).authorizeExchange()
.anyExchange().authenticated().and().formLogin().and().logout().and().build();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(securityWebFilter).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
FormLoginTests.DefaultLoginPage loginPage = FormLoginTests.HomePage
.to(driver, FormLoginTests.DefaultLoginPage.class).assertAt();
-
FormLoginTests.HomePage homePage = loginPage.loginForm().username("user").password("password")
.submit(FormLoginTests.HomePage.class);
-
homePage.assertAt();
-
FormLoginTests.DefaultLogoutPage.to(driver).assertAt().logout();
-
FormLoginTests.HomePage.to(driver, FormLoginTests.DefaultLoginPage.class).assertAt();
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/OAuth2ClientSpecTests.java b/config/src/test/java/org/springframework/security/config/web/server/OAuth2ClientSpecTests.java
index 6000f4da54..b4f5599fad 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/OAuth2ClientSpecTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/OAuth2ClientSpecTests.java
@@ -96,7 +96,6 @@ public class OAuth2ClientSpecTests {
given(repository.findByRegistrationId(any()))
.willReturn(Mono.just(TestClientRegistrations.clientRegistration().build()));
given(authorizedClientRepository.loadAuthorizedClient(any(), any(), any())).willReturn(Mono.empty());
-
this.client.get().uri("/").exchange().expectStatus().is3xxRedirection();
}
@@ -110,7 +109,6 @@ public class OAuth2ClientSpecTests {
given(repository.findByRegistrationId(any()))
.willReturn(Mono.just(TestClientRegistrations.clientRegistration().build()));
given(authorizedClientRepository.loadAuthorizedClient(any(), any(), any())).willReturn(Mono.empty());
-
this.client.get().uri("/").exchange().expectStatus().is3xxRedirection();
}
@@ -118,14 +116,11 @@ public class OAuth2ClientSpecTests {
public void oauth2ClientWhenCustomObjectsThenUsed() {
this.spring.register(ClientRegistrationConfig.class, OAuth2ClientCustomConfig.class,
AuthorizedClientController.class).autowire();
-
OAuth2ClientCustomConfig config = this.spring.getContext().getBean(OAuth2ClientCustomConfig.class);
-
ServerAuthenticationConverter converter = config.authenticationConverter;
ReactiveAuthenticationManager manager = config.manager;
ServerAuthorizationRequestRepository authorizationRequestRepository = config.authorizationRequestRepository;
ServerRequestCache requestCache = config.requestCache;
-
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
.redirectUri("/authorize/oauth2/code/registration-id").build();
OAuth2AuthorizationResponse authorizationResponse = TestOAuth2AuthorizationResponses.success()
@@ -133,22 +128,18 @@ public class OAuth2ClientSpecTests {
OAuth2AuthorizationExchange authorizationExchange = new OAuth2AuthorizationExchange(authorizationRequest,
authorizationResponse);
OAuth2AccessToken accessToken = TestOAuth2AccessTokens.noScopes();
-
OAuth2AuthorizationCodeAuthenticationToken result = new OAuth2AuthorizationCodeAuthenticationToken(
this.registration, authorizationExchange, accessToken);
-
given(authorizationRequestRepository.loadAuthorizationRequest(any()))
.willReturn(Mono.just(authorizationRequest));
given(converter.convert(any())).willReturn(Mono.just(new TestingAuthenticationToken("a", "b", "c")));
given(manager.authenticate(any())).willReturn(Mono.just(result));
given(requestCache.getRedirectUri(any())).willReturn(Mono.just(URI.create("/saved-request")));
-
this.client.get()
.uri((uriBuilder) -> uriBuilder.path("/authorize/oauth2/code/registration-id")
.queryParam(OAuth2ParameterNames.CODE, "code").queryParam(OAuth2ParameterNames.STATE, "state")
.build())
.exchange().expectStatus().is3xxRedirection();
-
verify(converter).convert(any());
verify(manager).authenticate(any());
verify(requestCache).getRedirectUri(any());
@@ -158,15 +149,12 @@ public class OAuth2ClientSpecTests {
public void oauth2ClientWhenCustomObjectsInLambdaThenUsed() {
this.spring.register(ClientRegistrationConfig.class, OAuth2ClientInLambdaCustomConfig.class,
AuthorizedClientController.class).autowire();
-
OAuth2ClientInLambdaCustomConfig config = this.spring.getContext()
.getBean(OAuth2ClientInLambdaCustomConfig.class);
-
ServerAuthenticationConverter converter = config.authenticationConverter;
ReactiveAuthenticationManager manager = config.manager;
ServerAuthorizationRequestRepository authorizationRequestRepository = config.authorizationRequestRepository;
ServerRequestCache requestCache = config.requestCache;
-
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request()
.redirectUri("/authorize/oauth2/code/registration-id").build();
OAuth2AuthorizationResponse authorizationResponse = TestOAuth2AuthorizationResponses.success()
@@ -174,22 +162,18 @@ public class OAuth2ClientSpecTests {
OAuth2AuthorizationExchange authorizationExchange = new OAuth2AuthorizationExchange(authorizationRequest,
authorizationResponse);
OAuth2AccessToken accessToken = TestOAuth2AccessTokens.noScopes();
-
OAuth2AuthorizationCodeAuthenticationToken result = new OAuth2AuthorizationCodeAuthenticationToken(
this.registration, authorizationExchange, accessToken);
-
given(authorizationRequestRepository.loadAuthorizationRequest(any()))
.willReturn(Mono.just(authorizationRequest));
given(converter.convert(any())).willReturn(Mono.just(new TestingAuthenticationToken("a", "b", "c")));
given(manager.authenticate(any())).willReturn(Mono.just(result));
given(requestCache.getRedirectUri(any())).willReturn(Mono.just(URI.create("/saved-request")));
-
this.client.get()
.uri((uriBuilder) -> uriBuilder.path("/authorize/oauth2/code/registration-id")
.queryParam(OAuth2ParameterNames.CODE, "code").queryParam(OAuth2ParameterNames.STATE, "state")
.build())
.exchange().expectStatus().is3xxRedirection();
-
verify(converter).convert(any());
verify(manager).authenticate(any());
verify(requestCache).getRedirectUri(any());
diff --git a/config/src/test/java/org/springframework/security/config/web/server/OAuth2LoginTests.java b/config/src/test/java/org/springframework/security/config/web/server/OAuth2LoginTests.java
index c6809ca45b..94256acd27 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/OAuth2LoginTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/OAuth2LoginTests.java
@@ -141,11 +141,8 @@ public class OAuth2LoginTests {
@Test
public void defaultLoginPageWithMultipleClientRegistrationsThenLinks() {
this.spring.register(OAuth2LoginWithMultipleClientRegistrations.class).autowire();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(this.springSecurity).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
FormLoginTests.DefaultLoginPage loginPage = FormLoginTests.HomePage
.to(driver, FormLoginTests.DefaultLoginPage.class).assertAt().assertLoginFormNotPresent().oauth2Login()
.assertClientRegistrationByName(OAuth2LoginTests.github.getClientName()).and();
@@ -154,14 +151,10 @@ public class OAuth2LoginTests {
@Test
public void defaultLoginPageWithSingleClientRegistrationThenRedirect() {
this.spring.register(OAuth2LoginWithSingleClientRegistrations.class).autowire();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(new GitHubWebFilter(), this.springSecurity)
.build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
driver.get("http://localhost/");
-
assertThat(driver.getCurrentUrl()).startsWith("https://github.com/login/oauth/authorize");
}
@@ -169,7 +162,6 @@ public class OAuth2LoginTests {
@Test
public void defaultLoginPageWithSingleClientRegistrationAndXhrRequestThenDoesNotRedirectForAuthorization() {
this.spring.register(OAuth2LoginWithSingleClientRegistrations.class, WebFluxConfig.class).autowire();
-
this.client.get().uri("/").header("X-Requested-With", "XMLHttpRequest").exchange().expectStatus()
.is3xxRedirection().expectHeader().valueEquals(HttpHeaders.LOCATION, "/login");
}
@@ -178,21 +170,16 @@ public class OAuth2LoginTests {
public void oauth2AuthorizeWhenCustomObjectsThenUsed() {
this.spring.register(OAuth2LoginWithSingleClientRegistrations.class, OAuth2AuthorizeWithMockObjectsConfig.class,
AuthorizedClientController.class).autowire();
-
OAuth2AuthorizeWithMockObjectsConfig config = this.spring.getContext()
.getBean(OAuth2AuthorizeWithMockObjectsConfig.class);
-
ServerOAuth2AuthorizedClientRepository authorizedClientRepository = config.authorizedClientRepository;
ServerAuthorizationRequestRepository authorizationRequestRepository = config.authorizationRequestRepository;
ServerRequestCache requestCache = config.requestCache;
-
given(authorizedClientRepository.loadAuthorizedClient(any(), any(), any())).willReturn(Mono.empty());
given(authorizationRequestRepository.saveAuthorizationRequest(any(), any())).willReturn(Mono.empty());
given(requestCache.removeMatchingRequest(any())).willReturn(Mono.empty());
given(requestCache.saveRequest(any())).willReturn(Mono.empty());
-
this.client.get().uri("/").exchange().expectStatus().is3xxRedirection();
-
verify(authorizedClientRepository).loadAuthorizedClient(any(), any(), any());
verify(authorizationRequestRepository).saveAuthorizationRequest(any(), any());
verify(requestCache).saveRequest(any());
@@ -202,11 +189,8 @@ public class OAuth2LoginTests {
public void oauth2LoginWhenCustomObjectsThenUsed() {
this.spring.register(OAuth2LoginWithSingleClientRegistrations.class,
OAuth2LoginMockAuthenticationManagerConfig.class).autowire();
-
String redirectLocation = "/custom-redirect-location";
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(this.springSecurity).build();
-
OAuth2LoginMockAuthenticationManagerConfig config = this.spring.getContext()
.getBean(OAuth2LoginMockAuthenticationManagerConfig.class);
ServerAuthenticationConverter converter = config.authenticationConverter;
@@ -214,14 +198,11 @@ public class OAuth2LoginTests {
ServerWebExchangeMatcher matcher = config.matcher;
ServerOAuth2AuthorizationRequestResolver resolver = config.resolver;
ServerAuthenticationSuccessHandler successHandler = config.successHandler;
-
OAuth2AuthorizationExchange exchange = TestOAuth2AuthorizationExchanges.success();
OAuth2User user = TestOAuth2Users.create();
OAuth2AccessToken accessToken = TestOAuth2AccessTokens.noScopes();
-
OAuth2LoginAuthenticationToken result = new OAuth2LoginAuthenticationToken(github, exchange, user,
user.getAuthorities(), accessToken);
-
given(converter.convert(any())).willReturn(Mono.just(new TestingAuthenticationToken("a", "b", "c")));
given(manager.authenticate(any())).willReturn(Mono.just(result));
given(matcher.matches(any())).willReturn(ServerWebExchangeMatcher.MatchResult.match());
@@ -229,14 +210,11 @@ public class OAuth2LoginTests {
given(successHandler.onAuthenticationSuccess(any(), any())).willAnswer((Answer>) (invocation) -> {
WebFilterExchange webFilterExchange = invocation.getArgument(0);
Authentication authentication = invocation.getArgument(1);
-
return new RedirectServerAuthenticationSuccessHandler(redirectLocation)
.onAuthenticationSuccess(webFilterExchange, authentication);
});
-
webTestClient.get().uri("/login/oauth2/code/github").exchange().expectStatus().is3xxRedirection().expectHeader()
.valueEquals("Location", redirectLocation);
-
verify(converter).convert(any());
verify(manager).authenticate(any());
verify(matcher).matches(any());
@@ -248,12 +226,9 @@ public class OAuth2LoginTests {
public void oauth2LoginFailsWhenCustomObjectsThenUsed() {
this.spring.register(OAuth2LoginWithSingleClientRegistrations.class,
OAuth2LoginMockAuthenticationManagerConfig.class).autowire();
-
String redirectLocation = "/custom-redirect-location";
String failureRedirectLocation = "/failure-redirect-location";
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(this.springSecurity).build();
-
OAuth2LoginMockAuthenticationManagerConfig config = this.spring.getContext()
.getBean(OAuth2LoginMockAuthenticationManagerConfig.class);
ServerAuthenticationConverter converter = config.authenticationConverter;
@@ -262,7 +237,6 @@ public class OAuth2LoginTests {
ServerOAuth2AuthorizationRequestResolver resolver = config.resolver;
ServerAuthenticationSuccessHandler successHandler = config.successHandler;
ServerAuthenticationFailureHandler failureHandler = config.failureHandler;
-
given(converter.convert(any())).willReturn(Mono.just(new TestingAuthenticationToken("a", "b", "c")));
given(manager.authenticate(any()))
.willReturn(Mono.error(new OAuth2AuthenticationException(new OAuth2Error("error"), "message")));
@@ -271,21 +245,17 @@ public class OAuth2LoginTests {
given(successHandler.onAuthenticationSuccess(any(), any())).willAnswer((Answer>) (invocation) -> {
WebFilterExchange webFilterExchange = invocation.getArgument(0);
Authentication authentication = invocation.getArgument(1);
-
return new RedirectServerAuthenticationSuccessHandler(redirectLocation)
.onAuthenticationSuccess(webFilterExchange, authentication);
});
given(failureHandler.onAuthenticationFailure(any(), any())).willAnswer((Answer>) (invocation) -> {
WebFilterExchange webFilterExchange = invocation.getArgument(0);
AuthenticationException authenticationException = invocation.getArgument(1);
-
return new RedirectServerAuthenticationFailureHandler(failureRedirectLocation)
.onAuthenticationFailure(webFilterExchange, authenticationException);
});
-
webTestClient.get().uri("/login/oauth2/code/github").exchange().expectStatus().is3xxRedirection().expectHeader()
.valueEquals("Location", failureRedirectLocation);
-
verify(converter).convert(any());
verify(manager).authenticate(any());
verify(matcher).matches(any());
@@ -297,11 +267,8 @@ public class OAuth2LoginTests {
public void oauth2LoginWhenCustomObjectsInLambdaThenUsed() {
this.spring.register(OAuth2LoginWithSingleClientRegistrations.class,
OAuth2LoginMockAuthenticationManagerInLambdaConfig.class).autowire();
-
String redirectLocation = "/custom-redirect-location";
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(this.springSecurity).build();
-
OAuth2LoginMockAuthenticationManagerInLambdaConfig config = this.spring.getContext()
.getBean(OAuth2LoginMockAuthenticationManagerInLambdaConfig.class);
ServerAuthenticationConverter converter = config.authenticationConverter;
@@ -309,14 +276,11 @@ public class OAuth2LoginTests {
ServerWebExchangeMatcher matcher = config.matcher;
ServerOAuth2AuthorizationRequestResolver resolver = config.resolver;
ServerAuthenticationSuccessHandler successHandler = config.successHandler;
-
OAuth2AuthorizationExchange exchange = TestOAuth2AuthorizationExchanges.success();
OAuth2User user = TestOAuth2Users.create();
OAuth2AccessToken accessToken = TestOAuth2AccessTokens.noScopes();
-
OAuth2LoginAuthenticationToken result = new OAuth2LoginAuthenticationToken(github, exchange, user,
user.getAuthorities(), accessToken);
-
given(converter.convert(any())).willReturn(Mono.just(new TestingAuthenticationToken("a", "b", "c")));
given(manager.authenticate(any())).willReturn(Mono.just(result));
given(matcher.matches(any())).willReturn(ServerWebExchangeMatcher.MatchResult.match());
@@ -324,14 +288,11 @@ public class OAuth2LoginTests {
given(successHandler.onAuthenticationSuccess(any(), any())).willAnswer((Answer>) (invocation) -> {
WebFilterExchange webFilterExchange = invocation.getArgument(0);
Authentication authentication = invocation.getArgument(1);
-
return new RedirectServerAuthenticationSuccessHandler(redirectLocation)
.onAuthenticationSuccess(webFilterExchange, authentication);
});
-
webTestClient.get().uri("/login/oauth2/code/github").exchange().expectStatus().is3xxRedirection().expectHeader()
.valueEquals("Location", redirectLocation);
-
verify(converter).convert(any());
verify(manager).authenticate(any());
verify(matcher).matches(any());
@@ -343,26 +304,20 @@ public class OAuth2LoginTests {
public void oauth2LoginWhenCustomBeansThenUsed() {
this.spring.register(OAuth2LoginWithMultipleClientRegistrations.class, OAuth2LoginWithCustomBeansConfig.class)
.autowire();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(this.springSecurity).build();
-
OAuth2LoginWithCustomBeansConfig config = this.spring.getContext()
.getBean(OAuth2LoginWithCustomBeansConfig.class);
-
OAuth2AuthorizationRequest request = TestOAuth2AuthorizationRequests.request().scope("openid").build();
OAuth2AuthorizationResponse response = TestOAuth2AuthorizationResponses.success().build();
OAuth2AuthorizationExchange exchange = new OAuth2AuthorizationExchange(request, response);
OAuth2AccessToken accessToken = TestOAuth2AccessTokens.scopes("openid");
OAuth2AuthorizationCodeAuthenticationToken token = new OAuth2AuthorizationCodeAuthenticationToken(google,
exchange, accessToken);
-
ServerAuthenticationConverter converter = config.authenticationConverter;
given(converter.convert(any())).willReturn(Mono.just(token));
-
ServerSecurityContextRepository securityContextRepository = config.securityContextRepository;
given(securityContextRepository.save(any(), any())).willReturn(Mono.empty());
given(securityContextRepository.load(any())).willReturn(authentication(token));
-
Map additionalParameters = new HashMap<>();
additionalParameters.put(OidcParameterNames.ID_TOKEN, "id-token");
OAuth2AccessTokenResponse accessTokenResponse = OAuth2AccessTokenResponse.withToken(accessToken.getTokenValue())
@@ -370,13 +325,10 @@ public class OAuth2LoginTests {
.additionalParameters(additionalParameters).build();
ReactiveOAuth2AccessTokenResponseClient tokenResponseClient = config.tokenResponseClient;
given(tokenResponseClient.getTokenResponse(any())).willReturn(Mono.just(accessTokenResponse));
-
OidcUser user = TestOidcUsers.create();
ReactiveOAuth2UserService userService = config.userService;
given(userService.loadUser(any())).willReturn(Mono.just(user));
-
webTestClient.get().uri("/login/oauth2/code/google").exchange().expectStatus().is3xxRedirection();
-
verify(config.jwtDecoderFactory).createDecoder(any());
verify(tokenResponseClient).getTokenResponse(any());
verify(securityContextRepository).save(any(), any());
@@ -387,26 +339,20 @@ public class OAuth2LoginTests {
public void oauth2LoginWhenAccessTokenRequestFailsThenDefaultRedirectToLogin() {
this.spring.register(OAuth2LoginWithMultipleClientRegistrations.class, OAuth2LoginWithCustomBeansConfig.class)
.autowire();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(this.springSecurity).build();
-
OAuth2AuthorizationRequest request = TestOAuth2AuthorizationRequests.request().scope("openid").build();
OAuth2AuthorizationResponse response = TestOAuth2AuthorizationResponses.success().build();
OAuth2AuthorizationExchange exchange = new OAuth2AuthorizationExchange(request, response);
OAuth2AccessToken accessToken = TestOAuth2AccessTokens.scopes("openid");
OAuth2AuthorizationCodeAuthenticationToken authenticationToken = new OAuth2AuthorizationCodeAuthenticationToken(
google, exchange, accessToken);
-
OAuth2LoginWithCustomBeansConfig config = this.spring.getContext()
.getBean(OAuth2LoginWithCustomBeansConfig.class);
-
ServerAuthenticationConverter converter = config.authenticationConverter;
given(converter.convert(any())).willReturn(Mono.just(authenticationToken));
-
ReactiveOAuth2AccessTokenResponseClient tokenResponseClient = config.tokenResponseClient;
OAuth2Error oauth2Error = new OAuth2Error("invalid_request", "Invalid request", null);
given(tokenResponseClient.getTokenResponse(any())).willThrow(new OAuth2AuthenticationException(oauth2Error));
-
webTestClient.get().uri("/login/oauth2/code/google").exchange().expectStatus().is3xxRedirection().expectHeader()
.valueEquals("Location", "/login?error");
}
@@ -416,22 +362,17 @@ public class OAuth2LoginTests {
public void oauth2LoginWhenIdTokenValidationFailsThenDefaultRedirectToLogin() {
this.spring.register(OAuth2LoginWithMultipleClientRegistrations.class, OAuth2LoginWithCustomBeansConfig.class)
.autowire();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(this.springSecurity).build();
-
OAuth2LoginWithCustomBeansConfig config = this.spring.getContext()
.getBean(OAuth2LoginWithCustomBeansConfig.class);
-
OAuth2AuthorizationRequest request = TestOAuth2AuthorizationRequests.request().scope("openid").build();
OAuth2AuthorizationResponse response = TestOAuth2AuthorizationResponses.success().build();
OAuth2AuthorizationExchange exchange = new OAuth2AuthorizationExchange(request, response);
OAuth2AccessToken accessToken = TestOAuth2AccessTokens.scopes("openid");
OAuth2AuthorizationCodeAuthenticationToken authenticationToken = new OAuth2AuthorizationCodeAuthenticationToken(
google, exchange, accessToken);
-
ServerAuthenticationConverter converter = config.authenticationConverter;
given(converter.convert(any())).willReturn(Mono.just(authenticationToken));
-
Map additionalParameters = new HashMap<>();
additionalParameters.put(OidcParameterNames.ID_TOKEN, "id-token");
OAuth2AccessTokenResponse accessTokenResponse = OAuth2AccessTokenResponse.withToken(accessToken.getTokenValue())
@@ -439,12 +380,10 @@ public class OAuth2LoginTests {
.additionalParameters(additionalParameters).build();
ReactiveOAuth2AccessTokenResponseClient tokenResponseClient = config.tokenResponseClient;
given(tokenResponseClient.getTokenResponse(any())).willReturn(Mono.just(accessTokenResponse));
-
ReactiveJwtDecoderFactory jwtDecoderFactory = config.jwtDecoderFactory;
OAuth2Error oauth2Error = new OAuth2Error("invalid_id_token", "Invalid ID Token", null);
given(jwtDecoderFactory.createDecoder(any())).willReturn((token) -> Mono
.error(new JwtValidationException("ID Token validation failed", Collections.singleton(oauth2Error))));
-
webTestClient.get().uri("/login/oauth2/code/google").exchange().expectStatus().is3xxRedirection().expectHeader()
.valueEquals("Location", "/login?error");
}
@@ -452,13 +391,10 @@ public class OAuth2LoginTests {
@Test
public void logoutWhenUsingOidcLogoutHandlerThenRedirects() {
this.spring.register(OAuth2LoginConfigWithOidcLogoutSuccessHandler.class).autowire();
-
OAuth2AuthenticationToken token = new OAuth2AuthenticationToken(TestOidcUsers.create(),
AuthorityUtils.NO_AUTHORITIES, getBean(ClientRegistration.class).getRegistrationId());
-
ServerSecurityContextRepository repository = getBean(ServerSecurityContextRepository.class);
given(repository.load(any())).willReturn(authentication(token));
-
this.client.post().uri("/logout").exchange().expectHeader().valueEquals("Location",
"https://logout?id_token_hint=id-token");
}
@@ -467,9 +403,7 @@ public class OAuth2LoginTests {
@Test
public void oauth2LoginWhenAuthenticationConverterFailsThenDefaultRedirectToLogin() {
this.spring.register(OAuth2LoginWithMultipleClientRegistrations.class).autowire();
-
WebTestClient webTestClient = WebTestClientBuilder.bindToWebFilters(this.springSecurity).build();
-
webTestClient.get().uri("/login/oauth2/code/google").exchange().expectStatus().is3xxRedirection().expectHeader()
.valueEquals("Location", "/login?error");
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/OAuth2ResourceServerSpecTests.java b/config/src/test/java/org/springframework/security/config/web/server/OAuth2ResourceServerSpecTests.java
index 019ced220c..301644ccd1 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/OAuth2ResourceServerSpecTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/OAuth2ResourceServerSpecTests.java
@@ -134,7 +134,6 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenValidThenReturnsOk() {
this.spring.register(PublicKeyConfig.class, RootController.class).autowire();
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isOk();
}
@@ -142,7 +141,6 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenExpiredThenReturnsInvalidToken() {
this.spring.register(PublicKeyConfig.class).autowire();
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.expired)).exchange().expectStatus()
.isUnauthorized().expectHeader()
.value(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer error=\"invalid_token\""));
@@ -151,7 +149,6 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenUnsignedThenReturnsInvalidToken() {
this.spring.register(PublicKeyConfig.class).autowire();
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.unsignedToken)).exchange().expectStatus()
.isUnauthorized().expectHeader()
.value(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer error=\"invalid_token\""));
@@ -160,7 +157,6 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenEmptyBearerTokenThenReturnsInvalidToken() {
this.spring.register(PublicKeyConfig.class).autowire();
-
this.client.get().headers((headers) -> headers.add("Authorization", "Bearer ")).exchange().expectStatus()
.isUnauthorized().expectHeader()
.value(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer error=\"invalid_token\""));
@@ -169,7 +165,6 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenValidTokenAndPublicKeyInLambdaThenReturnsOk() {
this.spring.register(PublicKeyInLambdaConfig.class, RootController.class).autowire();
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isOk();
}
@@ -177,7 +172,6 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenExpiredTokenAndPublicKeyInLambdaThenReturnsInvalidToken() {
this.spring.register(PublicKeyInLambdaConfig.class).autowire();
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.expired)).exchange().expectStatus()
.isUnauthorized().expectHeader()
.value(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer error=\"invalid_token\""));
@@ -186,7 +180,6 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenValidUsingPlaceholderThenReturnsOk() {
this.spring.register(PlaceholderConfig.class, RootController.class).autowire();
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isOk();
}
@@ -194,22 +187,17 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenCustomDecoderThenAuthenticatesAccordingly() {
this.spring.register(CustomDecoderConfig.class, RootController.class).autowire();
-
ReactiveJwtDecoder jwtDecoder = this.spring.getContext().getBean(ReactiveJwtDecoder.class);
given(jwtDecoder.decode(anyString())).willReturn(Mono.just(this.jwt));
-
this.client.get().headers((headers) -> headers.setBearerAuth("token")).exchange().expectStatus().isOk();
-
verify(jwtDecoder).decode(anyString());
}
@Test
public void getWhenUsingJwkSetUriThenConsultsAccordingly() {
this.spring.register(JwkSetUriConfig.class, RootController.class).autowire();
-
MockWebServer mockWebServer = this.spring.getContext().getBean(MockWebServer.class);
mockWebServer.enqueue(new MockResponse().setBody(this.jwkSet));
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadTokenWithKid)).exchange()
.expectStatus().isOk();
}
@@ -217,10 +205,8 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenUsingJwkSetUriInLambdaThenConsultsAccordingly() {
this.spring.register(JwkSetUriInLambdaConfig.class, RootController.class).autowire();
-
MockWebServer mockWebServer = this.spring.getContext().getBean(MockWebServer.class);
mockWebServer.enqueue(new MockResponse().setBody(this.jwkSet));
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadTokenWithKid)).exchange()
.expectStatus().isOk();
}
@@ -228,12 +214,10 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenUsingCustomAuthenticationManagerThenUsesItAccordingly() {
this.spring.register(CustomAuthenticationManagerConfig.class).autowire();
-
ReactiveAuthenticationManager authenticationManager = this.spring.getContext()
.getBean(ReactiveAuthenticationManager.class);
given(authenticationManager.authenticate(any(Authentication.class)))
.willReturn(Mono.error(new OAuth2AuthenticationException(new OAuth2Error("mock-failure"))));
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isUnauthorized().expectHeader()
.value(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer error=\"mock-failure\""));
@@ -242,12 +226,10 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenUsingCustomAuthenticationManagerInLambdaThenUsesItAccordingly() {
this.spring.register(CustomAuthenticationManagerInLambdaConfig.class).autowire();
-
ReactiveAuthenticationManager authenticationManager = this.spring.getContext()
.getBean(ReactiveAuthenticationManager.class);
given(authenticationManager.authenticate(any(Authentication.class)))
.willReturn(Mono.error(new OAuth2AuthenticationException(new OAuth2Error("mock-failure"))));
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isUnauthorized().expectHeader()
.value(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer error=\"mock-failure\""));
@@ -256,18 +238,14 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenUsingCustomAuthenticationManagerResolverThenUsesItAccordingly() {
this.spring.register(CustomAuthenticationManagerResolverConfig.class).autowire();
-
ReactiveAuthenticationManagerResolver authenticationManagerResolver = this.spring
.getContext().getBean(ReactiveAuthenticationManagerResolver.class);
-
ReactiveAuthenticationManager authenticationManager = this.spring.getContext()
.getBean(ReactiveAuthenticationManager.class);
-
given(authenticationManagerResolver.resolve(any(ServerWebExchange.class)))
.willReturn(Mono.just(authenticationManager));
given(authenticationManager.authenticate(any(Authentication.class)))
.willReturn(Mono.error(new OAuth2AuthenticationException(new OAuth2Error("mock-failure"))));
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isUnauthorized().expectHeader()
.value(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer error=\"mock-failure\""));
@@ -276,7 +254,6 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void postWhenSignedThenReturnsOk() {
this.spring.register(PublicKeyConfig.class, RootController.class).autowire();
-
this.client.post().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isOk();
}
@@ -284,7 +261,6 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenTokenHasInsufficientScopeThenReturnsInsufficientScope() {
this.spring.register(DenyAllConfig.class, RootController.class).autowire();
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isForbidden().expectHeader()
.value(HttpHeaders.WWW_AUTHENTICATE, startsWith("Bearer error=\"insufficient_scope\""));
@@ -293,21 +269,18 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void postWhenMissingTokenThenReturnsForbidden() {
this.spring.register(PublicKeyConfig.class, RootController.class).autowire();
-
this.client.post().exchange().expectStatus().isForbidden();
}
@Test
public void getWhenCustomBearerTokenServerAuthenticationConverterThenResponds() {
this.spring.register(CustomBearerTokenServerAuthenticationConverter.class, RootController.class).autowire();
-
this.client.get().cookie("TOKEN", this.messageReadToken).exchange().expectStatus().isOk();
}
@Test
public void getWhenSignedAndCustomConverterThenConverts() {
this.spring.register(CustomJwtAuthenticationConverterConfig.class, RootController.class).autowire();
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isOk();
}
@@ -315,14 +288,12 @@ public class OAuth2ResourceServerSpecTests {
@Test
public void getWhenCustomBearerTokenEntryPointThenResponds() {
this.spring.register(CustomErrorHandlingConfig.class).autowire();
-
this.client.get().uri("/authenticated").exchange().expectStatus().isEqualTo(HttpStatus.I_AM_A_TEAPOT);
}
@Test
public void getWhenCustomBearerTokenDeniedHandlerThenResponds() {
this.spring.register(CustomErrorHandlingConfig.class).autowire();
-
this.client.get().uri("/unobtainable").headers((headers) -> headers.setBearerAuth(this.messageReadToken))
.exchange().expectStatus().isEqualTo(HttpStatus.BANDWIDTH_LIMIT_EXCEEDED);
}
@@ -332,14 +303,11 @@ public class OAuth2ResourceServerSpecTests {
GenericWebApplicationContext context = autowireWebServerGenericWebApplicationContext();
ServerHttpSecurity http = new ServerHttpSecurity();
http.setApplicationContext(context);
-
ReactiveJwtDecoder beanWiredJwtDecoder = mock(ReactiveJwtDecoder.class);
ReactiveJwtDecoder dslWiredJwtDecoder = mock(ReactiveJwtDecoder.class);
context.registerBean(ReactiveJwtDecoder.class, () -> beanWiredJwtDecoder);
-
ServerHttpSecurity.OAuth2ResourceServerSpec.JwtSpec jwt = http.oauth2ResourceServer().jwt();
jwt.jwtDecoder(dslWiredJwtDecoder);
-
assertThat(jwt.getJwtDecoder()).isEqualTo(dslWiredJwtDecoder);
}
@@ -348,15 +316,12 @@ public class OAuth2ResourceServerSpecTests {
GenericWebApplicationContext context = autowireWebServerGenericWebApplicationContext();
ServerHttpSecurity http = new ServerHttpSecurity();
http.setApplicationContext(context);
-
ReactiveJwtDecoder beanWiredJwtDecoder = mock(ReactiveJwtDecoder.class);
ReactiveJwtDecoder dslWiredJwtDecoder = mock(ReactiveJwtDecoder.class);
context.registerBean("firstJwtDecoder", ReactiveJwtDecoder.class, () -> beanWiredJwtDecoder);
context.registerBean("secondJwtDecoder", ReactiveJwtDecoder.class, () -> beanWiredJwtDecoder);
-
ServerHttpSecurity.OAuth2ResourceServerSpec.JwtSpec jwt = http.oauth2ResourceServer().jwt();
jwt.jwtDecoder(dslWiredJwtDecoder);
-
assertThat(jwt.getJwtDecoder()).isEqualTo(dslWiredJwtDecoder);
}
@@ -365,13 +330,10 @@ public class OAuth2ResourceServerSpecTests {
GenericWebApplicationContext context = autowireWebServerGenericWebApplicationContext();
ServerHttpSecurity http = new ServerHttpSecurity();
http.setApplicationContext(context);
-
ReactiveJwtDecoder beanWiredJwtDecoder = mock(ReactiveJwtDecoder.class);
context.registerBean("firstJwtDecoder", ReactiveJwtDecoder.class, () -> beanWiredJwtDecoder);
context.registerBean("secondJwtDecoder", ReactiveJwtDecoder.class, () -> beanWiredJwtDecoder);
-
ServerHttpSecurity.OAuth2ResourceServerSpec.JwtSpec jwt = http.oauth2ResourceServer().jwt();
-
assertThatCode(() -> jwt.getJwtDecoder()).isInstanceOf(NoUniqueBeanDefinitionException.class);
}
@@ -380,9 +342,7 @@ public class OAuth2ResourceServerSpecTests {
GenericWebApplicationContext context = autowireWebServerGenericWebApplicationContext();
ServerHttpSecurity http = new ServerHttpSecurity();
http.setApplicationContext(context);
-
ServerHttpSecurity.OAuth2ResourceServerSpec.JwtSpec jwt = http.oauth2ResourceServer().jwt();
-
assertThatCode(() -> jwt.getJwtDecoder()).isInstanceOf(NoSuchBeanDefinitionException.class);
}
@@ -391,7 +351,6 @@ public class OAuth2ResourceServerSpecTests {
this.spring.register(IntrospectionConfig.class, RootController.class).autowire();
this.spring.getContext().getBean(MockWebServer.class)
.setDispatcher(requiresAuth(this.clientId, this.clientSecret, this.active));
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isOk();
}
@@ -401,7 +360,6 @@ public class OAuth2ResourceServerSpecTests {
this.spring.register(IntrospectionInLambdaConfig.class, RootController.class).autowire();
this.spring.getContext().getBean(MockWebServer.class)
.setDispatcher(requiresAuth(this.clientId, this.clientSecret, this.active));
-
this.client.get().headers((headers) -> headers.setBearerAuth(this.messageReadToken)).exchange().expectStatus()
.isOk();
}
@@ -440,7 +398,6 @@ public class OAuth2ResourceServerSpecTests {
private static RSAPublicKey publicKey() {
String modulus = "26323220897278656456354815752829448539647589990395639665273015355787577386000316054335559633864476469390247312823732994485311378484154955583861993455004584140858982659817218753831620205191028763754231454775026027780771426040997832758235764611119743390612035457533732596799927628476322029280486807310749948064176545712270582940917249337311592011920620009965129181413510845780806191965771671528886508636605814099711121026468495328702234901200169245493126030184941412539949521815665744267183140084667383643755535107759061065656273783542590997725982989978433493861515415520051342321336460543070448417126615154138673620797";
String exponent = "65537";
-
RSAPublicKeySpec spec = new RSAPublicKeySpec(new BigInteger(modulus), new BigInteger(exponent));
RSAPublicKey rsaPublicKey = null;
try {
@@ -537,14 +494,12 @@ public class OAuth2ResourceServerSpecTests {
@Bean
SecurityWebFilterChain springSecurity(ServerHttpSecurity http) {
String jwkSetUri = mockWebServer().url("/.well-known/jwks.json").toString();
-
// @formatter:off
http
.oauth2ResourceServer()
.jwt()
.jwkSetUri(jwkSetUri);
// @formatter:on
-
return http.build();
}
@@ -569,7 +524,6 @@ public class OAuth2ResourceServerSpecTests {
@Bean
SecurityWebFilterChain springSecurity(ServerHttpSecurity http) {
String jwkSetUri = mockWebServer().url("/.well-known/jwks.json").toString();
-
// @formatter:off
http
.oauth2ResourceServer((oauth2ResourceServer) ->
@@ -580,7 +534,6 @@ public class OAuth2ResourceServerSpecTests {
)
);
// @formatter:on
-
return http.build();
}
@@ -609,7 +562,6 @@ public class OAuth2ResourceServerSpecTests {
.oauth2ResourceServer()
.jwt();
// @formatter:on
-
return http.build();
}
@@ -635,7 +587,6 @@ public class OAuth2ResourceServerSpecTests {
.jwt()
.publicKey(publicKey());
// @formatter:on
-
return http.build();
}
@@ -653,7 +604,6 @@ public class OAuth2ResourceServerSpecTests {
.jwt()
.authenticationManager(authenticationManager());
// @formatter:on
-
return http.build();
}
@@ -680,7 +630,6 @@ public class OAuth2ResourceServerSpecTests {
)
);
// @formatter:on
-
return http.build();
}
@@ -705,7 +654,6 @@ public class OAuth2ResourceServerSpecTests {
.oauth2ResourceServer()
.authenticationManagerResolver(authenticationManagerResolver());
// @formatter:on
-
return http.build();
}
@@ -737,7 +685,6 @@ public class OAuth2ResourceServerSpecTests {
.jwt()
.publicKey(publicKey());
// @formatter:on
-
return http.build();
}
@@ -765,19 +712,16 @@ public class OAuth2ResourceServerSpecTests {
.jwtAuthenticationConverter(jwtAuthenticationConverter())
.publicKey(publicKey());
// @formatter:on
-
return http.build();
}
@Bean
Converter> jwtAuthenticationConverter() {
-
JwtAuthenticationConverter converter = new JwtAuthenticationConverter();
converter.setJwtGrantedAuthoritiesConverter((jwt) -> {
String[] claims = ((String) jwt.getClaims().get("scope")).split(" ");
return Stream.of(claims).map(SimpleGrantedAuthority::new).collect(Collectors.toList());
});
-
return new ReactiveJwtAuthenticationConverterAdapter(converter);
}
@@ -801,7 +745,6 @@ public class OAuth2ResourceServerSpecTests {
.jwt()
.publicKey(publicKey());
// @formatter:on
-
return http.build();
}
@@ -816,7 +759,6 @@ public class OAuth2ResourceServerSpecTests {
@Bean
SecurityWebFilterChain springSecurity(ServerHttpSecurity http) {
String introspectionUri = mockWebServer().url("/introspect").toString();
-
// @formatter:off
http
.oauth2ResourceServer()
@@ -824,7 +766,6 @@ public class OAuth2ResourceServerSpecTests {
.introspectionUri(introspectionUri)
.introspectionClientCredentials("client", "secret");
// @formatter:on
-
return http.build();
}
@@ -849,7 +790,6 @@ public class OAuth2ResourceServerSpecTests {
@Bean
SecurityWebFilterChain springSecurity(ServerHttpSecurity http) {
String introspectionUri = mockWebServer().url("/introspect").toString();
-
// @formatter:off
http
.oauth2ResourceServer((oauth2ResourceServer) ->
@@ -861,7 +801,6 @@ public class OAuth2ResourceServerSpecTests {
)
);
// @formatter:on
-
return http.build();
}
@@ -892,7 +831,6 @@ public class OAuth2ResourceServerSpecTests {
.authenticationManagerResolver(mock(ReactiveAuthenticationManagerResolver.class))
.opaqueToken();
// @formatter:on
-
return http.build();
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/RequestCacheTests.java b/config/src/test/java/org/springframework/security/config/web/server/RequestCacheTests.java
index cccf0f0df9..a9331c95e2 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/RequestCacheTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/RequestCacheTests.java
@@ -49,17 +49,12 @@ public class RequestCacheTests {
public void defaultFormLoginRequestCache() {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().anyExchange().authenticated().and()
.formLogin().and().build();
-
WebTestClient webTestClient = WebTestClient
.bindToController(new SecuredPageController(), new WebTestClientBuilder.Http200RestController())
.webFilter(new WebFilterChainProxy(securityWebFilter)).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
DefaultLoginPage loginPage = SecuredPage.to(driver, DefaultLoginPage.class).assertAt();
-
SecuredPage securedPage = loginPage.loginForm().username("user").password("password").submit(SecuredPage.class);
-
securedPage.assertAt();
}
@@ -67,17 +62,12 @@ public class RequestCacheTests {
public void requestCacheNoOp() {
SecurityWebFilterChain securityWebFilter = this.http.authorizeExchange().anyExchange().authenticated().and()
.formLogin().and().requestCache().requestCache(NoOpServerRequestCache.getInstance()).and().build();
-
WebTestClient webTestClient = WebTestClient
.bindToController(new SecuredPageController(), new WebTestClientBuilder.Http200RestController())
.webFilter(new WebFilterChainProxy(securityWebFilter)).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
DefaultLoginPage loginPage = SecuredPage.to(driver, DefaultLoginPage.class).assertAt();
-
HomePage securedPage = loginPage.loginForm().username("user").password("password").submit(HomePage.class);
-
securedPage.assertAt();
}
@@ -88,17 +78,12 @@ public class RequestCacheTests {
.formLogin(withDefaults())
.requestCache((requestCache) -> requestCache.requestCache(NoOpServerRequestCache.getInstance()))
.build();
-
WebTestClient webTestClient = WebTestClient
.bindToController(new SecuredPageController(), new WebTestClientBuilder.Http200RestController())
.webFilter(new WebFilterChainProxy(securityWebFilter)).build();
-
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
DefaultLoginPage loginPage = SecuredPage.to(driver, DefaultLoginPage.class).assertAt();
-
HomePage securedPage = loginPage.loginForm().username("user").password("password").submit(HomePage.class);
-
securedPage.assertAt();
}
diff --git a/config/src/test/java/org/springframework/security/config/web/server/ServerHttpSecurityTests.java b/config/src/test/java/org/springframework/security/config/web/server/ServerHttpSecurityTests.java
index a23964ceec..521b17c3ee 100644
--- a/config/src/test/java/org/springframework/security/config/web/server/ServerHttpSecurityTests.java
+++ b/config/src/test/java/org/springframework/security/config/web/server/ServerHttpSecurityTests.java
@@ -109,12 +109,9 @@ public class ServerHttpSecurityTests {
TestPublisher securityContext = TestPublisher.create();
given(this.contextRepository.load(any())).willReturn(securityContext.mono());
this.http.securityContextRepository(this.contextRepository);
-
WebTestClient client = buildClient();
-
FluxExchangeResult result = client.get().uri("/").exchange().expectHeader()
.valueMatches(HttpHeaders.CACHE_CONTROL, ".+").returnResult(String.class);
-
assertThat(result.getResponseCookies()).isEmpty();
// there is no need to try and load the SecurityContext by default
securityContext.assertWasNotSubscribed();
@@ -124,19 +121,15 @@ public class ServerHttpSecurityTests {
public void basic() {
given(this.authenticationManager.authenticate(any()))
.willReturn(Mono.just(new TestingAuthenticationToken("rob", "rob", "ROLE_USER", "ROLE_ADMIN")));
-
this.http.httpBasic();
this.http.authenticationManager(this.authenticationManager);
ServerHttpSecurity.AuthorizeExchangeSpec authorize = this.http.authorizeExchange();
authorize.anyExchange().authenticated();
-
WebTestClient client = buildClient();
-
EntityExchangeResult result = client.get().uri("/")
.headers((headers) -> headers.setBasicAuth("rob", "rob")).exchange().expectStatus().isOk()
.expectHeader().valueMatches(HttpHeaders.CACHE_CONTROL, ".+").expectBody(String.class)
.consumeWith((b) -> assertThat(b.getResponseBody()).isEqualTo("ok")).returnResult();
-
assertThat(result.getResponseCookies().getFirst("SESSION")).isNull();
}
@@ -144,27 +137,22 @@ public class ServerHttpSecurityTests {
public void basicWithGlobalWebSessionServerSecurityContextRepository() {
given(this.authenticationManager.authenticate(any()))
.willReturn(Mono.just(new TestingAuthenticationToken("rob", "rob", "ROLE_USER", "ROLE_ADMIN")));
-
this.http.securityContextRepository(new WebSessionServerSecurityContextRepository());
this.http.httpBasic();
this.http.authenticationManager(this.authenticationManager);
ServerHttpSecurity.AuthorizeExchangeSpec authorize = this.http.authorizeExchange();
authorize.anyExchange().authenticated();
-
WebTestClient client = buildClient();
-
EntityExchangeResult result = client.get().uri("/")
.headers((headers) -> headers.setBasicAuth("rob", "rob")).exchange().expectStatus().isOk()
.expectHeader().valueMatches(HttpHeaders.CACHE_CONTROL, ".+").expectBody(String.class)
.consumeWith((b) -> assertThat(b.getResponseBody()).isEqualTo("ok")).returnResult();
-
assertThat(result.getResponseCookies().getFirst("SESSION")).isNotNull();
}
@Test
public void basicWhenNoCredentialsThenUnauthorized() {
this.http.authorizeExchange().anyExchange().authenticated();
-
WebTestClient client = buildClient();
client.get().uri("/").exchange().expectStatus().isUnauthorized().expectHeader()
.valueMatches(HttpHeaders.CACHE_CONTROL, ".+").expectBody().isEmpty();
@@ -173,23 +161,18 @@ public class ServerHttpSecurityTests {
@Test
public void buildWhenServerWebExchangeFromContextThenFound() {
SecurityWebFilterChain filter = this.http.build();
-
WebTestClient client = WebTestClient.bindToController(new SubscriberContextController())
.webFilter(new WebFilterChainProxy(filter)).build();
-
client.get().uri("/foo/bar").exchange().expectBody(String.class).isEqualTo("/foo/bar");
}
@Test
public void csrfServerLogoutHandlerNotAppliedIfCsrfIsntEnabled() {
SecurityWebFilterChain securityWebFilterChain = this.http.csrf().disable().build();
-
assertThat(getWebFilter(securityWebFilterChain, CsrfWebFilter.class)).isNotPresent();
-
Optional logoutHandler = getWebFilter(securityWebFilterChain, LogoutWebFilter.class)
.map((logoutWebFilter) -> (ServerLogoutHandler) ReflectionTestUtils.getField(logoutWebFilter,
LogoutWebFilter.class, "logoutHandler"));
-
assertThat(logoutHandler).get().isExactlyInstanceOf(SecurityContextServerLogoutHandler.class);
}
@@ -197,15 +180,12 @@ public class ServerHttpSecurityTests {
public void csrfServerLogoutHandlerAppliedIfCsrfIsEnabled() {
SecurityWebFilterChain securityWebFilterChain = this.http.csrf().csrfTokenRepository(this.csrfTokenRepository)
.and().build();
-
assertThat(getWebFilter(securityWebFilterChain, CsrfWebFilter.class)).get()
.extracting((csrfWebFilter) -> ReflectionTestUtils.getField(csrfWebFilter, "csrfTokenRepository"))
.isEqualTo(this.csrfTokenRepository);
-
Optional logoutHandler = getWebFilter(securityWebFilterChain, LogoutWebFilter.class)
.map((logoutWebFilter) -> (ServerLogoutHandler) ReflectionTestUtils.getField(logoutWebFilter,
LogoutWebFilter.class, "logoutHandler"));
-
assertThat(logoutHandler).get().isExactlyInstanceOf(DelegatingServerLogoutHandler.class)
.extracting((delegatingLogoutHandler) -> ((List) ReflectionTestUtils
.getField(delegatingLogoutHandler, DelegatingServerLogoutHandler.class, "delegates")).stream()
@@ -220,10 +200,8 @@ public class ServerHttpSecurityTests {
.addFilterAfter(new TestWebFilter(), SecurityWebFiltersOrder.SECURITY_CONTEXT_SERVER_WEB_EXCHANGE)
.build();
List filters = securityWebFilterChain.getWebFilters().map(WebFilter::getClass).collectList().block();
-
assertThat(filters).isNotNull().isNotEmpty().containsSequence(SecurityContextServerWebExchangeWebFilter.class,
TestWebFilter.class);
-
}
@Test
@@ -233,10 +211,8 @@ public class ServerHttpSecurityTests {
.addFilterBefore(new TestWebFilter(), SecurityWebFiltersOrder.SECURITY_CONTEXT_SERVER_WEB_EXCHANGE)
.build();
List filters = securityWebFilterChain.getWebFilters().map(WebFilter::getClass).collectList().block();
-
assertThat(filters).isNotNull().isNotEmpty().containsSequence(TestWebFilter.class,
SecurityContextServerWebExchangeWebFilter.class);
-
}
@Test
@@ -244,9 +220,7 @@ public class ServerHttpSecurityTests {
SecurityWebFilterChain securityFilterChain = this.http.anonymous().and().build();
WebTestClient client = WebTestClientBuilder.bindToControllerAndWebFilters(
AnonymousAuthenticationWebFilterTests.HttpMeController.class, securityFilterChain).build();
-
client.get().uri("/me").exchange().expectStatus().isOk().expectBody(String.class).isEqualTo("anonymousUser");
-
}
@Test
@@ -254,7 +228,6 @@ public class ServerHttpSecurityTests {
SecurityWebFilterChain securityFilterChain = this.http.anonymous(withDefaults()).build();
WebTestClient client = WebTestClientBuilder.bindToControllerAndWebFilters(
AnonymousAuthenticationWebFilterTests.HttpMeController.class, securityFilterChain).build();
-
client.get().uri("/me").exchange().expectStatus().isOk().expectBody(String.class).isEqualTo("anonymousUser");
}
@@ -262,19 +235,15 @@ public class ServerHttpSecurityTests {
public void basicWithAnonymous() {
given(this.authenticationManager.authenticate(any()))
.willReturn(Mono.just(new TestingAuthenticationToken("rob", "rob", "ROLE_USER", "ROLE_ADMIN")));
-
this.http.httpBasic().and().anonymous();
this.http.authenticationManager(this.authenticationManager);
ServerHttpSecurity.AuthorizeExchangeSpec authorize = this.http.authorizeExchange();
authorize.anyExchange().hasAuthority("ROLE_ADMIN");
-
WebTestClient client = buildClient();
-
EntityExchangeResult result = client.get().uri("/")
.headers((headers) -> headers.setBasicAuth("rob", "rob")).exchange().expectStatus().isOk()
.expectHeader().valueMatches(HttpHeaders.CACHE_CONTROL, ".+").expectBody(String.class)
.consumeWith((b) -> assertThat(b.getResponseBody()).isEqualTo("ok")).returnResult();
-
assertThat(result.getResponseCookies().getFirst("SESSION")).isNull();
}
@@ -287,13 +256,10 @@ public class ServerHttpSecurityTests {
this.http.authenticationManager(this.authenticationManager);
ServerHttpSecurity.AuthorizeExchangeSpec authorize = this.http.authorizeExchange();
authorize.anyExchange().authenticated();
-
WebTestClient client = buildClient();
-
EntityExchangeResult result = client.get().uri("/").exchange().expectStatus().isUnauthorized()
.expectHeader().value(HttpHeaders.WWW_AUTHENTICATE, (value) -> assertThat(value).contains("myrealm"))
.expectBody(String.class).returnResult();
-
assertThat(result.getResponseCookies().getFirst("SESSION")).isNull();
}
@@ -306,13 +272,10 @@ public class ServerHttpSecurityTests {
this.http.authenticationManager(this.authenticationManager);
ServerHttpSecurity.AuthorizeExchangeSpec authorize = this.http.authorizeExchange();
authorize.anyExchange().authenticated();
-
WebTestClient client = buildClient();
-
EntityExchangeResult result = client.get().uri("/").exchange().expectStatus().isUnauthorized()
.expectHeader().value(HttpHeaders.WWW_AUTHENTICATE, (value) -> assertThat(value).contains("myrealm"))
.expectBody(String.class).returnResult();
-
assertThat(result.getResponseCookies().getFirst("SESSION")).isNull();
}
@@ -321,15 +284,12 @@ public class ServerHttpSecurityTests {
ReactiveAuthenticationManager customAuthenticationManager = mock(ReactiveAuthenticationManager.class);
given(customAuthenticationManager.authenticate(any()))
.willReturn(Mono.just(new TestingAuthenticationToken("rob", "rob", "ROLE_USER", "ROLE_ADMIN")));
-
SecurityWebFilterChain securityFilterChain = this.http.httpBasic()
.authenticationManager(customAuthenticationManager).and().build();
WebFilterChainProxy springSecurityFilterChain = new WebFilterChainProxy(securityFilterChain);
WebTestClient client = WebTestClientBuilder.bindToWebFilters(springSecurityFilterChain).build();
-
client.get().uri("/").headers((headers) -> headers.setBasicAuth("rob", "rob")).exchange().expectStatus().isOk()
.expectBody(String.class).consumeWith((b) -> assertThat(b.getResponseBody()).isEqualTo("ok"));
-
verifyZeroInteractions(this.authenticationManager);
}
@@ -338,15 +298,12 @@ public class ServerHttpSecurityTests {
ReactiveAuthenticationManager customAuthenticationManager = mock(ReactiveAuthenticationManager.class);
given(customAuthenticationManager.authenticate(any()))
.willReturn(Mono.just(new TestingAuthenticationToken("rob", "rob", "ROLE_USER", "ROLE_ADMIN")));
-
SecurityWebFilterChain securityFilterChain = this.http
.httpBasic((httpBasic) -> httpBasic.authenticationManager(customAuthenticationManager)).build();
WebFilterChainProxy springSecurityFilterChain = new WebFilterChainProxy(securityFilterChain);
WebTestClient client = WebTestClientBuilder.bindToWebFilters(springSecurityFilterChain).build();
-
client.get().uri("/").headers((headers) -> headers.setBasicAuth("rob", "rob")).exchange().expectStatus().isOk()
.expectBody(String.class).consumeWith((b) -> assertThat(b.getResponseBody()).isEqualTo("ok"));
-
verifyZeroInteractions(this.authenticationManager);
verify(customAuthenticationManager).authenticate(any(Authentication.class));
}
@@ -356,12 +313,9 @@ public class ServerHttpSecurityTests {
public void addsX509FilterWhenX509AuthenticationIsConfigured() {
X509PrincipalExtractor mockExtractor = mock(X509PrincipalExtractor.class);
ReactiveAuthenticationManager mockAuthenticationManager = mock(ReactiveAuthenticationManager.class);
-
this.http.x509().principalExtractor(mockExtractor).authenticationManager(mockAuthenticationManager).and();
-
SecurityWebFilterChain securityWebFilterChain = this.http.build();
WebFilter x509WebFilter = securityWebFilterChain.getWebFilters().filter(this::isX509Filter).blockFirst();
-
assertThat(x509WebFilter).isNotNull();
}
@@ -369,33 +323,26 @@ public class ServerHttpSecurityTests {
public void x509WhenCustomizedThenAddsX509Filter() {
X509PrincipalExtractor mockExtractor = mock(X509PrincipalExtractor.class);
ReactiveAuthenticationManager mockAuthenticationManager = mock(ReactiveAuthenticationManager.class);
-
this.http.x509(
(x509) -> x509.principalExtractor(mockExtractor).authenticationManager(mockAuthenticationManager));
-
SecurityWebFilterChain securityWebFilterChain = this.http.build();
WebFilter x509WebFilter = securityWebFilterChain.getWebFilters().filter(this::isX509Filter).blockFirst();
-
assertThat(x509WebFilter).isNotNull();
}
@Test
public void addsX509FilterWhenX509AuthenticationIsConfiguredWithDefaults() {
this.http.x509();
-
SecurityWebFilterChain securityWebFilterChain = this.http.build();
WebFilter x509WebFilter = securityWebFilterChain.getWebFilters().filter(this::isX509Filter).blockFirst();
-
assertThat(x509WebFilter).isNotNull();
}
@Test
public void x509WhenDefaultsThenAddsX509Filter() {
this.http.x509(withDefaults());
-
SecurityWebFilterChain securityWebFilterChain = this.http.build();
WebFilter x509WebFilter = securityWebFilterChain.getWebFilters().filter(this::isX509Filter).blockFirst();
-
assertThat(x509WebFilter).isNotNull();
}
@@ -404,7 +351,6 @@ public class ServerHttpSecurityTests {
SecurityWebFilterChain securityFilterChain = this.http.csrf((csrf) -> csrf.disable()).build();
WebFilterChainProxy springSecurityFilterChain = new WebFilterChainProxy(securityFilterChain);
WebTestClient client = WebTestClientBuilder.bindToWebFilters(springSecurityFilterChain).build();
-
client.post().uri("/").exchange().expectStatus().isOk();
}
@@ -416,9 +362,7 @@ public class ServerHttpSecurityTests {
.csrf((csrf) -> csrf.csrfTokenRepository(customServerCsrfTokenRepository)).build();
WebFilterChainProxy springSecurityFilterChain = new WebFilterChainProxy(securityFilterChain);
WebTestClient client = WebTestClientBuilder.bindToWebFilters(springSecurityFilterChain).build();
-
client.post().uri("/").exchange().expectStatus().isForbidden();
-
verify(customServerCsrfTokenRepository).loadToken(any());
}
@@ -427,17 +371,14 @@ public class ServerHttpSecurityTests {
ServerRequestCache requestCache = spy(new WebSessionServerRequestCache());
ReactiveClientRegistrationRepository clientRegistrationRepository = mock(
ReactiveClientRegistrationRepository.class);
-
SecurityWebFilterChain securityFilterChain = this.http.oauth2Login()
.clientRegistrationRepository(clientRegistrationRepository).and().authorizeExchange().anyExchange()
.authenticated().and().requestCache((c) -> c.requestCache(requestCache)).build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityFilterChain).build();
client.get().uri("/test").exchange();
ArgumentCaptor captor = ArgumentCaptor.forClass(ServerWebExchange.class);
verify(requestCache).saveRequest(captor.capture());
assertThat(captor.getValue().getRequest().getURI().toString()).isEqualTo("/test");
-
OAuth2LoginAuthenticationWebFilter authenticationWebFilter = getWebFilter(securityFilterChain,
OAuth2LoginAuthenticationWebFilter.class).get();
Object handler = ReflectionTestUtils.getField(authenticationWebFilter, "authenticationSuccessHandler");
@@ -450,19 +391,14 @@ public class ServerHttpSecurityTests {
ServerAuthorizationRequestRepository.class);
ReactiveClientRegistrationRepository clientRegistrationRepository = mock(
ReactiveClientRegistrationRepository.class);
-
OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request().build();
-
given(authorizationRequestRepository.removeAuthorizationRequest(any()))
.willReturn(Mono.just(authorizationRequest));
-
SecurityWebFilterChain securityFilterChain = this.http.oauth2Login()
.clientRegistrationRepository(clientRegistrationRepository)
.authorizationRequestRepository(authorizationRequestRepository).and().build();
-
WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityFilterChain).build();
client.get().uri("/login/oauth2/code/registration-id").exchange();
-
verify(authorizationRequestRepository).removeAuthorizationRequest(any());
}
diff --git a/config/src/test/java/org/springframework/security/config/websocket/WebSocketMessageBrokerConfigTests.java b/config/src/test/java/org/springframework/security/config/websocket/WebSocketMessageBrokerConfigTests.java
index 4bd2d1e9f3..8d760858d5 100644
--- a/config/src/test/java/org/springframework/security/config/websocket/WebSocketMessageBrokerConfigTests.java
+++ b/config/src/test/java/org/springframework/security/config/websocket/WebSocketMessageBrokerConfigTests.java
@@ -102,9 +102,7 @@ public class WebSocketMessageBrokerConfigTests {
@Test
public void sendWhenNoIdSpecifiedThenIntegratesWithClientInboundChannel() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
this.clientInboundChannel.send(message("/permitAll"));
-
assertThatThrownBy(() -> this.clientInboundChannel.send(message("/denyAll")))
.hasCauseInstanceOf(AccessDeniedException.class);
}
@@ -112,214 +110,165 @@ public class WebSocketMessageBrokerConfigTests {
@Test
public void sendWhenAnonymousMessageWithConnectMessageTypeThenPermitted() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.create(SimpMessageType.CONNECT);
headers.setNativeHeader(this.token.getHeaderName(), this.token.getToken());
-
assertThatCode(() -> this.clientInboundChannel.send(message("/permitAll", headers))).doesNotThrowAnyException();
}
@Test
public void sendWhenAnonymousMessageWithConnectAckMessageTypeThenPermitted() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.CONNECT_ACK);
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenAnonymousMessageWithDisconnectMessageTypeThenPermitted() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.DISCONNECT);
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenAnonymousMessageWithDisconnectAckMessageTypeThenPermitted() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.DISCONNECT_ACK);
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenAnonymousMessageWithHeartbeatMessageTypeThenPermitted() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.HEARTBEAT);
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenAnonymousMessageWithMessageMessageTypeThenPermitted() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.MESSAGE);
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenAnonymousMessageWithOtherMessageTypeThenPermitted() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.OTHER);
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenAnonymousMessageWithSubscribeMessageTypeThenPermitted() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.SUBSCRIBE);
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenAnonymousMessageWithUnsubscribeMessageTypeThenPermitted() {
this.spring.configLocations(xml("NoIdConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.UNSUBSCRIBE);
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenConnectWithoutCsrfTokenThenDenied() {
this.spring.configLocations(xml("SyncConfig")).autowire();
-
Message> message = message("/message", SimpMessageType.CONNECT);
-
assertThatThrownBy(send(message)).hasCauseInstanceOf(InvalidCsrfTokenException.class);
}
@Test
public void sendWhenConnectWithSameOriginDisabledThenCsrfTokenNotRequired() {
this.spring.configLocations(xml("SyncSameOriginDisabledConfig")).autowire();
-
Message> message = message("/message", SimpMessageType.CONNECT);
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenInterceptWiredForMessageTypeThenDeniesOnTypeMismatch() {
this.spring.configLocations(xml("MessageInterceptTypeConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.MESSAGE);
-
assertThatCode(send(message)).doesNotThrowAnyException();
-
message = message("/permitAll", SimpMessageType.UNSUBSCRIBE);
-
assertThatThrownBy(send(message)).hasCauseInstanceOf(AccessDeniedException.class);
-
message = message("/anyOther", SimpMessageType.MESSAGE);
-
assertThatThrownBy(send(message)).hasCauseInstanceOf(AccessDeniedException.class);
}
@Test
public void sendWhenInterceptWiredForSubscribeTypeThenDeniesOnTypeMismatch() {
this.spring.configLocations(xml("SubscribeInterceptTypeConfig")).autowire();
-
Message> message = message("/permitAll", SimpMessageType.SUBSCRIBE);
-
assertThatCode(send(message)).doesNotThrowAnyException();
-
message = message("/permitAll", SimpMessageType.UNSUBSCRIBE);
-
assertThatThrownBy(send(message)).hasCauseInstanceOf(AccessDeniedException.class);
-
message = message("/anyOther", SimpMessageType.SUBSCRIBE);
-
assertThatThrownBy(send(message)).hasCauseInstanceOf(AccessDeniedException.class);
}
@Test
public void configureWhenUsingConnectMessageTypeThenAutowireFails() {
ThrowingCallable bad = () -> this.spring.configLocations(xml("ConnectInterceptTypeConfig")).autowire();
-
assertThatThrownBy(bad).isInstanceOf(BeanDefinitionParsingException.class);
}
@Test
public void configureWhenUsingConnectAckMessageTypeThenAutowireFails() {
ThrowingCallable bad = () -> this.spring.configLocations(xml("ConnectAckInterceptTypeConfig")).autowire();
-
assertThatThrownBy(bad).isInstanceOf(BeanDefinitionParsingException.class);
}
@Test
public void configureWhenUsingDisconnectMessageTypeThenAutowireFails() {
ThrowingCallable bad = () -> this.spring.configLocations(xml("DisconnectInterceptTypeConfig")).autowire();
-
assertThatThrownBy(bad).isInstanceOf(BeanDefinitionParsingException.class);
}
@Test
public void configureWhenUsingDisconnectAckMessageTypeThenAutowireFails() {
ThrowingCallable bad = () -> this.spring.configLocations(xml("DisconnectAckInterceptTypeConfig")).autowire();
-
assertThatThrownBy(bad).isInstanceOf(BeanDefinitionParsingException.class);
}
@Test
public void configureWhenUsingHeartbeatMessageTypeThenAutowireFails() {
ThrowingCallable bad = () -> this.spring.configLocations(xml("HeartbeatInterceptTypeConfig")).autowire();
-
assertThatThrownBy(bad).isInstanceOf(BeanDefinitionParsingException.class);
}
@Test
public void configureWhenUsingOtherMessageTypeThenAutowireFails() {
ThrowingCallable bad = () -> this.spring.configLocations(xml("OtherInterceptTypeConfig")).autowire();
-
assertThatThrownBy(bad).isInstanceOf(BeanDefinitionParsingException.class);
}
@Test
public void configureWhenUsingUnsubscribeMessageTypeThenAutowireFails() {
ThrowingCallable bad = () -> this.spring.configLocations(xml("UnsubscribeInterceptTypeConfig")).autowire();
-
assertThatThrownBy(bad).isInstanceOf(BeanDefinitionParsingException.class);
}
@Test
public void sendWhenNoIdMessageThenAuthenticationPrincipalResolved() {
this.spring.configLocations(xml("SyncConfig")).autowire();
-
this.clientInboundChannel.send(message("/message"));
-
assertThat(this.messageController.username).isEqualTo("anonymous");
}
@Test
public void requestWhenConnectMessageThenUsesCsrfTokenHandshakeInterceptor() throws Exception {
this.spring.configLocations(xml("SyncConfig")).autowire();
-
WebApplicationContext context = this.spring.getContext();
MockMvc mvc = MockMvcBuilders.webAppContextSetup(context).build();
-
String csrfAttributeName = CsrfToken.class.getName();
String customAttributeName = this.getClass().getName();
-
MvcResult result = mvc.perform(get("/app").requestAttr(csrfAttributeName, this.token)
.sessionAttr(customAttributeName, "attributeValue")).andReturn();
-
CsrfToken handshakeToken = (CsrfToken) this.testHandshakeHandler.attributes.get(csrfAttributeName);
String handshakeValue = (String) this.testHandshakeHandler.attributes.get(customAttributeName);
String sessionValue = (String) result.getRequest().getSession().getAttribute(customAttributeName);
-
assertThat(handshakeToken).isEqualTo(this.token).withFailMessage("CsrfToken is populated");
-
assertThat(handshakeValue).isEqualTo(sessionValue)
.withFailMessage("Explicitly listed session variables are not overridden");
}
@@ -327,22 +276,16 @@ public class WebSocketMessageBrokerConfigTests {
@Test
public void requestWhenConnectMessageAndUsingSockJsThenUsesCsrfTokenHandshakeInterceptor() throws Exception {
this.spring.configLocations(xml("SyncSockJsConfig")).autowire();
-
WebApplicationContext context = this.spring.getContext();
MockMvc mvc = MockMvcBuilders.webAppContextSetup(context).build();
-
String csrfAttributeName = CsrfToken.class.getName();
String customAttributeName = this.getClass().getName();
-
MvcResult result = mvc.perform(get("/app/289/tpyx6mde/websocket").requestAttr(csrfAttributeName, this.token)
.sessionAttr(customAttributeName, "attributeValue")).andReturn();
-
CsrfToken handshakeToken = (CsrfToken) this.testHandshakeHandler.attributes.get(csrfAttributeName);
String handshakeValue = (String) this.testHandshakeHandler.attributes.get(customAttributeName);
String sessionValue = (String) result.getRequest().getSession().getAttribute(customAttributeName);
-
assertThat(handshakeToken).isEqualTo(this.token).withFailMessage("CsrfToken is populated");
-
assertThat(handshakeValue).isEqualTo(sessionValue)
.withFailMessage("Explicitly listed session variables are not overridden");
}
@@ -350,31 +293,23 @@ public class WebSocketMessageBrokerConfigTests {
@Test
public void sendWhenNoIdSpecifiedThenCustomArgumentResolversAreNotOverridden() {
this.spring.configLocations(xml("SyncCustomArgumentResolverConfig")).autowire();
-
this.clientInboundChannel.send(message("/message-with-argument"));
-
assertThat(this.messageWithArgumentController.messageArgument).isNotNull();
}
@Test
public void sendWhenUsingCustomPathMatcherThenSecurityAppliesIt() {
this.spring.configLocations(xml("CustomPathMatcherConfig")).autowire();
-
Message> message = message("/denyAll.a");
-
assertThatThrownBy(send(message)).hasCauseInstanceOf(AccessDeniedException.class);
-
message = message("/denyAll.a.b");
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@Test
public void sendWhenIdSpecifiedThenSecurityDoesNotIntegrateWithClientInboundChannel() {
this.spring.configLocations(xml("IdConfig")).autowire();
-
Message> message = message("/denyAll");
-
assertThatCode(send(message)).doesNotThrowAnyException();
}
@@ -382,18 +317,14 @@ public class WebSocketMessageBrokerConfigTests {
@WithMockUser
public void sendWhenIdSpecifiedAndExplicitlyIntegratedWhenBrokerUsesClientInboundChannel() {
this.spring.configLocations(xml("IdIntegratedConfig")).autowire();
-
Message> message = message("/denyAll");
-
assertThatThrownBy(send(message)).hasCauseInstanceOf(AccessDeniedException.class);
}
@Test
public void sendWhenNoIdSpecifiedThenSecurityDoesntOverrideCustomInterceptors() {
this.spring.configLocations(xml("CustomInterceptorConfig")).autowire();
-
Message> message = message("/throwAll");
-
assertThatThrownBy(send(message)).hasCauseInstanceOf(UnsupportedOperationException.class);
}
@@ -401,9 +332,7 @@ public class WebSocketMessageBrokerConfigTests {
@WithMockUser(username = "nile")
public void sendWhenCustomExpressionHandlerThenAuthorizesAccordingly() {
this.spring.configLocations(xml("CustomExpressionHandlerConfig")).autowire();
-
Message> message = message("/denyNile");
-
assertThatThrownBy(send(message)).hasCauseInstanceOf(AccessDeniedException.class);
}
@@ -428,13 +357,10 @@ public class WebSocketMessageBrokerConfigTests {
headers.setSessionId("123");
headers.setSessionAttributes(new HashMap<>());
headers.setDestination(destination);
-
if (SecurityContextHolder.getContext().getAuthentication() != null) {
headers.setUser(SecurityContextHolder.getContext().getAuthentication());
}
-
headers.getSessionAttributes().put(CsrfToken.class.getName(), this.token);
-
return new GenericMessage<>("hi", headers.getMessageHeaders());
}
@@ -491,9 +417,7 @@ public class WebSocketMessageBrokerConfigTests {
public boolean doHandshake(ServerHttpRequest request,
org.springframework.http.server.ServerHttpResponse response, WebSocketHandler wsHandler,
Map attributes) throws HandshakeFailureException {
-
this.attributes = attributes;
-
return true;
}
@@ -510,7 +434,6 @@ public class WebSocketMessageBrokerConfigTests {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
-
}
}
@@ -529,14 +452,11 @@ public class WebSocketMessageBrokerConfigTests {
@Override
protected SecurityExpressionOperations createSecurityExpressionRoot(Authentication authentication,
Message invocation) {
-
return new MessageSecurityExpressionRoot(authentication, invocation) {
-
public boolean denyNile() {
Authentication auth = getAuthentication();
return auth != null && !"nile".equals(auth.getName());
}
-
};
}
diff --git a/config/src/test/java/org/springframework/security/htmlunit/server/HtmlUnitWebTestClient.java b/config/src/test/java/org/springframework/security/htmlunit/server/HtmlUnitWebTestClient.java
index 4f673aa2ef..9ac5684868 100644
--- a/config/src/test/java/org/springframework/security/htmlunit/server/HtmlUnitWebTestClient.java
+++ b/config/src/test/java/org/springframework/security/htmlunit/server/HtmlUnitWebTestClient.java
@@ -63,7 +63,6 @@ final class HtmlUnitWebTestClient {
contentType(request, webRequest);
cookies(request, webRequest);
headers(request, webRequest);
-
return content(request, webRequest).exchange().returnResult(String.class);
}
@@ -109,7 +108,6 @@ final class HtmlUnitWebTestClient {
request.cookie(cookieName, cookieValue);
}
}
-
Set managedCookies = this.webClient.getCookies(webRequest.getUrl());
for (com.gargoylesoftware.htmlunit.util.Cookie cookie : managedCookies) {
request.cookie(cookie.getName(), cookie.getValue());
@@ -156,10 +154,8 @@ final class HtmlUnitWebTestClient {
.headers((headers) -> headers.addAll(request.headers()))
.cookies((cookies) -> cookies.addAll(request.cookies()))
.attributes((attributes) -> attributes.putAll(request.attributes())).build();
-
return next.exchange(redirect).flatMap((r) -> redirectIfNecessary(request, next, r));
}
-
return Mono.just(response);
}
diff --git a/config/src/test/java/org/springframework/security/htmlunit/server/WebTestClientHtmlUnitDriverBuilderTests.java b/config/src/test/java/org/springframework/security/htmlunit/server/WebTestClientHtmlUnitDriverBuilderTests.java
index 7f509d7f1a..1c734077a8 100644
--- a/config/src/test/java/org/springframework/security/htmlunit/server/WebTestClientHtmlUnitDriverBuilderTests.java
+++ b/config/src/test/java/org/springframework/security/htmlunit/server/WebTestClientHtmlUnitDriverBuilderTests.java
@@ -46,9 +46,7 @@ public class WebTestClientHtmlUnitDriverBuilderTests {
public void helloWorld() {
WebTestClient webTestClient = WebTestClient.bindToController(new HelloWorldController()).build();
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
driver.get("http://localhost/");
-
assertThat(driver.getPageSource()).contains("Hello World");
}
@@ -56,13 +54,9 @@ public class WebTestClientHtmlUnitDriverBuilderTests {
public void cookies() {
WebTestClient webTestClient = WebTestClient.bindToController(new CookieController()).build();
WebDriver driver = WebTestClientHtmlUnitDriverBuilder.webTestClientSetup(webTestClient).build();
-
driver.get("http://localhost/cookie");
-
assertThat(driver.getPageSource()).contains("theCookie");
-
driver.get("http://localhost/cookie/delete");
-
assertThat(driver.getPageSource()).contains("null");
}
diff --git a/config/src/test/java/org/springframework/security/htmlunit/server/WebTestClientWebConnection.java b/config/src/test/java/org/springframework/security/htmlunit/server/WebTestClientWebConnection.java
index f7dd640175..a2fed90d58 100644
--- a/config/src/test/java/org/springframework/security/htmlunit/server/WebTestClientWebConnection.java
+++ b/config/src/test/java/org/springframework/security/htmlunit/server/WebTestClientWebConnection.java
@@ -50,7 +50,6 @@ public class WebTestClientWebConnection implements WebConnection {
Assert.notNull(webTestClient, "MockMvc must not be null");
Assert.notNull(webClient, "WebClient must not be null");
validateContextPath(contextPath);
-
this.webClient = webClient;
this.webTestClient = webTestClient;
this.contextPath = contextPath;
@@ -82,7 +81,6 @@ public class WebTestClientWebConnection implements WebConnection {
@Override
public WebResponse getResponse(WebRequest webRequest) throws IOException {
long startTime = System.currentTimeMillis();
-
FluxExchangeResult exchangeResult = this.requestBuilder.getResponse(webRequest);
webRequest.setUrl(exchangeResult.getUrl().toURL());
return new MockWebResponseBuilder(startTime, webRequest, exchangeResult).build();
diff --git a/config/src/test/java/org/springframework/security/intercept/method/aopalliance/MethodSecurityInterceptorWithAopConfigTests.java b/config/src/test/java/org/springframework/security/intercept/method/aopalliance/MethodSecurityInterceptorWithAopConfigTests.java
index dd8575d432..2710091266 100644
--- a/config/src/test/java/org/springframework/security/intercept/method/aopalliance/MethodSecurityInterceptorWithAopConfigTests.java
+++ b/config/src/test/java/org/springframework/security/intercept/method/aopalliance/MethodSecurityInterceptorWithAopConfigTests.java
@@ -41,12 +41,10 @@ public class MethodSecurityInterceptorWithAopConfigTests {
+ " "
+ " "
+ " " + " " + "";
-
static final String ACCESS_MANAGER_XML = ""
+ " "
+ " "
+ " " + "";
-
static final String TARGET_BEAN_AND_INTERCEPTOR = ""
+ ""
+ " " + " "
@@ -77,9 +75,7 @@ public class MethodSecurityInterceptorWithAopConfigTests {
+ " "
+ " " + ""
+ TARGET_BEAN_AND_INTERCEPTOR + AUTH_PROVIDER_XML + ACCESS_MANAGER_XML);
-
ITargetObject target = (ITargetObject) this.appContext.getBean("target");
-
// Check both against interface and class
try {
target.makeLowerCase("TEST");
@@ -87,7 +83,6 @@ public class MethodSecurityInterceptorWithAopConfigTests {
}
catch (AuthenticationCredentialsNotFoundException expected) {
}
-
target.makeUpperCase("test");
}
@@ -101,18 +96,14 @@ public class MethodSecurityInterceptorWithAopConfigTests {
+ " " + " "
+ " " + ""
+ TARGET_BEAN_AND_INTERCEPTOR + AUTH_PROVIDER_XML + ACCESS_MANAGER_XML);
-
ITargetObject target = (ITargetObject) this.appContext.getBean("target");
-
try {
target.makeLowerCase("TEST");
fail("AuthenticationCredentialsNotFoundException expected");
}
catch (AuthenticationCredentialsNotFoundException expected) {
}
-
target.makeUpperCase("test");
-
}
private void setContext(String context) {
diff --git a/core/src/test/java/org/springframework/security/PopulatedDatabase.java b/core/src/test/java/org/springframework/security/PopulatedDatabase.java
index f450a2bb76..2ff999577a 100644
--- a/core/src/test/java/org/springframework/security/PopulatedDatabase.java
+++ b/core/src/test/java/org/springframework/security/PopulatedDatabase.java
@@ -37,14 +37,12 @@ public final class PopulatedDatabase {
if (dataSource == null) {
setupDataSource();
}
-
return dataSource;
}
private static void setupDataSource() {
dataSource = new TestDataSource("springsecuritytest");
JdbcTemplate template = new JdbcTemplate(dataSource);
-
template.execute(
"CREATE TABLE USERS(USERNAME VARCHAR_IGNORECASE(50) NOT NULL PRIMARY KEY,PASSWORD VARCHAR_IGNORECASE(500) NOT NULL,ENABLED BOOLEAN NOT NULL)");
template.execute(
@@ -77,18 +75,15 @@ public final class PopulatedDatabase {
"INSERT INTO acl_object_identity VALUES (5, 'org.springframework.security.acl.DomainObject:5', 3, 'org.springframework.security.acl.basic.SimpleAclEntry');");
template.execute(
"INSERT INTO acl_object_identity VALUES (6, 'org.springframework.security.acl.DomainObject:6', 3, 'org.springframework.security.acl.basic.SimpleAclEntry');");
-
// ----- BEGIN deviation from normal sample data load script -----
template.execute(
"INSERT INTO acl_object_identity VALUES (7, 'org.springframework.security.acl.DomainObject:7', 3, 'some.invalid.acl.entry.class');");
-
// ----- FINISH deviation from normal sample data load script -----
template.execute("INSERT INTO acl_permission VALUES (null, 1, 'ROLE_SUPERVISOR', 1);");
template.execute("INSERT INTO acl_permission VALUES (null, 2, 'ROLE_SUPERVISOR', 0);");
template.execute("INSERT INTO acl_permission VALUES (null, 2, 'rod', 2);");
template.execute("INSERT INTO acl_permission VALUES (null, 3, 'scott', 14);");
template.execute("INSERT INTO acl_permission VALUES (null, 6, 'scott', 1);");
-
createGroupTables(template);
insertGroupData(template);
}
@@ -106,13 +101,11 @@ public final class PopulatedDatabase {
public static void insertGroupData(JdbcTemplate template) {
template.execute("INSERT INTO USERS VALUES('jerry','password',TRUE)");
template.execute("INSERT INTO USERS VALUES('tom','password',TRUE)");
-
template.execute("INSERT INTO GROUPS VALUES (0, 'GROUP_0')");
template.execute("INSERT INTO GROUPS VALUES (1, 'GROUP_1')");
template.execute("INSERT INTO GROUPS VALUES (2, 'GROUP_2')");
// Group 3 isn't used
template.execute("INSERT INTO GROUPS VALUES (3, 'GROUP_3')");
-
template.execute("INSERT INTO GROUP_AUTHORITIES VALUES (0, 'ROLE_A')");
template.execute("INSERT INTO GROUP_AUTHORITIES VALUES (1, 'ROLE_B')");
template.execute("INSERT INTO GROUP_AUTHORITIES VALUES (1, 'ROLE_C')");
@@ -121,7 +114,6 @@ public final class PopulatedDatabase {
template.execute("INSERT INTO GROUP_AUTHORITIES VALUES (2, 'ROLE_C')");
template.execute("INSERT INTO GROUP_AUTHORITIES VALUES (3, 'ROLE_D')");
template.execute("INSERT INTO GROUP_AUTHORITIES VALUES (3, 'ROLE_E')");
-
template.execute("INSERT INTO GROUP_MEMBERS VALUES (0, 'jerry', 0)");
template.execute("INSERT INTO GROUP_MEMBERS VALUES (1, 'jerry', 1)");
// tom has groups with overlapping roles
diff --git a/core/src/test/java/org/springframework/security/TargetObject.java b/core/src/test/java/org/springframework/security/TargetObject.java
index 5f98437350..b936d69043 100644
--- a/core/src/test/java/org/springframework/security/TargetObject.java
+++ b/core/src/test/java/org/springframework/security/TargetObject.java
@@ -47,7 +47,6 @@ public class TargetObject implements ITargetObject {
@Override
public String makeLowerCase(String input) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
-
if (auth == null) {
return input.toLowerCase() + " Authentication empty";
}
@@ -67,7 +66,6 @@ public class TargetObject implements ITargetObject {
@Override
public String makeUpperCase(String input) {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
-
return input.toUpperCase() + " " + auth.getClass().getName() + " " + auth.isAuthenticated();
}
diff --git a/core/src/test/java/org/springframework/security/access/AuthorizedEventTests.java b/core/src/test/java/org/springframework/security/access/AuthorizedEventTests.java
index 94de0f1f15..9b6fee171e 100644
--- a/core/src/test/java/org/springframework/security/access/AuthorizedEventTests.java
+++ b/core/src/test/java/org/springframework/security/access/AuthorizedEventTests.java
@@ -37,7 +37,6 @@ public class AuthorizedEventTests {
@Test(expected = IllegalArgumentException.class)
public void testRejectsNulls2() {
-
new AuthorizedEvent(new SimpleMethodInvocation(), null, new UsernamePasswordAuthenticationToken("foo", "bar"));
}
diff --git a/core/src/test/java/org/springframework/security/access/SecurityConfigTests.java b/core/src/test/java/org/springframework/security/access/SecurityConfigTests.java
index 40c2165865..7cc22aff20 100644
--- a/core/src/test/java/org/springframework/security/access/SecurityConfigTests.java
+++ b/core/src/test/java/org/springframework/security/access/SecurityConfigTests.java
@@ -53,23 +53,17 @@ public class SecurityConfigTests {
SecurityConfig security1 = new SecurityConfig("TEST");
SecurityConfig security2 = new SecurityConfig("TEST");
assertThat(security2).isEqualTo(security1);
-
// SEC-311: Must observe symmetry requirement of Object.equals(Object) contract
String securityString1 = "TEST";
assertThat(securityString1).isNotSameAs(security1);
-
String securityString2 = "NOT_EQUAL";
assertThat(!security1.equals(securityString2)).isTrue();
-
SecurityConfig security3 = new SecurityConfig("NOT_EQUAL");
assertThat(!security1.equals(security3)).isTrue();
-
MockConfigAttribute mock1 = new MockConfigAttribute("TEST");
assertThat(security1).isEqualTo(mock1);
-
MockConfigAttribute mock2 = new MockConfigAttribute("NOT_EQUAL");
assertThat(security1).isNotEqualTo(mock2);
-
Integer int1 = 987;
assertThat(security1).isNotEqualTo(int1);
}
diff --git a/core/src/test/java/org/springframework/security/access/annotation/BusinessServiceImpl.java b/core/src/test/java/org/springframework/security/access/annotation/BusinessServiceImpl.java
index 705632467e..0e732bf480 100644
--- a/core/src/test/java/org/springframework/security/access/annotation/BusinessServiceImpl.java
+++ b/core/src/test/java/org/springframework/security/access/annotation/BusinessServiceImpl.java
@@ -75,7 +75,6 @@ public class BusinessServiceImpl implements BusinessService {
@Override
public void rolesAllowedUser() {
-
}
}
diff --git a/core/src/test/java/org/springframework/security/access/annotation/ExpressionProtectedBusinessServiceImpl.java b/core/src/test/java/org/springframework/security/access/annotation/ExpressionProtectedBusinessServiceImpl.java
index eec3144daa..9d1b066d01 100644
--- a/core/src/test/java/org/springframework/security/access/annotation/ExpressionProtectedBusinessServiceImpl.java
+++ b/core/src/test/java/org/springframework/security/access/annotation/ExpressionProtectedBusinessServiceImpl.java
@@ -71,12 +71,10 @@ public class ExpressionProtectedBusinessServiceImpl implements BusinessService {
@PreAuthorize("#x == 'x' and @number.intValue() == 1294 ")
public void methodWithBeanNamePropertyAccessExpression(String x) {
-
}
@Override
public void rolesAllowedUser() {
-
}
}
diff --git a/core/src/test/java/org/springframework/security/access/annotation/Jsr250BusinessServiceImpl.java b/core/src/test/java/org/springframework/security/access/annotation/Jsr250BusinessServiceImpl.java
index 3472f49f1c..09aa5ae48c 100644
--- a/core/src/test/java/org/springframework/security/access/annotation/Jsr250BusinessServiceImpl.java
+++ b/core/src/test/java/org/springframework/security/access/annotation/Jsr250BusinessServiceImpl.java
@@ -76,7 +76,6 @@ public class Jsr250BusinessServiceImpl implements BusinessService {
@Override
@RolesAllowed({ "USER" })
public void rolesAllowedUser() {
-
}
}
diff --git a/core/src/test/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSourceTests.java b/core/src/test/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSourceTests.java
index e072ee4b4c..642674a887 100644
--- a/core/src/test/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSourceTests.java
+++ b/core/src/test/java/org/springframework/security/access/annotation/Jsr250MethodSecurityMetadataSourceTests.java
@@ -91,7 +91,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
@Test
public void customDefaultRolePrefix() throws Exception {
this.mds.setDefaultRolePrefix("CUSTOMPREFIX_");
-
ConfigAttribute[] accessAttributes = findAttributes("adminMethod");
assertThat(accessAttributes).hasSize(1);
assertThat(accessAttributes[0].toString()).isEqualTo("CUSTOMPREFIX_ADMIN");
@@ -100,7 +99,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
@Test
public void emptyDefaultRolePrefix() throws Exception {
this.mds.setDefaultRolePrefix("");
-
ConfigAttribute[] accessAttributes = findAttributes("adminMethod");
assertThat(accessAttributes).hasSize(1);
assertThat(accessAttributes[0].toString()).isEqualTo("ADMIN");
@@ -109,7 +107,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
@Test
public void nullDefaultRolePrefix() throws Exception {
this.mds.setDefaultRolePrefix(null);
-
ConfigAttribute[] accessAttributes = findAttributes("adminMethod");
assertThat(accessAttributes).hasSize(1);
assertThat(accessAttributes[0].toString()).isEqualTo("ADMIN");
@@ -123,7 +120,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
}
// JSR-250 Spec Tests
-
/**
* Class-level annotations only affect the class they annotate and their members, that
* is, its methods and fields. They never affect a member declared by a superclass,
@@ -134,7 +130,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
public void classLevelAnnotationsOnlyAffectTheClassTheyAnnotateAndTheirMembers() throws Exception {
Child target = new Child();
MockMethodInvocation mi = new MockMethodInvocation(target, target.getClass(), "notOverriden");
-
Collection accessAttributes = this.mds.getAttributes(mi);
assertThat(accessAttributes).isNull();
}
@@ -143,7 +138,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
public void classLevelAnnotationsOnlyAffectTheClassTheyAnnotateAndTheirMembersOverriden() throws Exception {
Child target = new Child();
MockMethodInvocation mi = new MockMethodInvocation(target, target.getClass(), "overriden");
-
Collection accessAttributes = this.mds.getAttributes(mi);
assertThat(accessAttributes).hasSize(1);
assertThat(accessAttributes.toArray()[0].toString()).isEqualTo("ROLE_DERIVED");
@@ -153,7 +147,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
public void classLevelAnnotationsImpactMemberLevel() throws Exception {
Child target = new Child();
MockMethodInvocation mi = new MockMethodInvocation(target, target.getClass(), "defaults");
-
Collection accessAttributes = this.mds.getAttributes(mi);
assertThat(accessAttributes).hasSize(1);
assertThat(accessAttributes.toArray()[0].toString()).isEqualTo("ROLE_DERIVED");
@@ -163,7 +156,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
public void classLevelAnnotationsIgnoredByExplicitMemberAnnotation() throws Exception {
Child target = new Child();
MockMethodInvocation mi = new MockMethodInvocation(target, target.getClass(), "explicitMethod");
-
Collection accessAttributes = this.mds.getAttributes(mi);
assertThat(accessAttributes).hasSize(1);
assertThat(accessAttributes.toArray()[0].toString()).isEqualTo("ROLE_EXPLICIT");
@@ -178,7 +170,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
public void interfacesNeverContributeAnnotationsMethodLevel() throws Exception {
Parent target = new Parent();
MockMethodInvocation mi = new MockMethodInvocation(target, target.getClass(), "interfaceMethod");
-
Collection accessAttributes = this.mds.getAttributes(mi);
assertThat(accessAttributes).isEmpty();
}
@@ -187,7 +178,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
public void interfacesNeverContributeAnnotationsClassLevel() throws Exception {
Parent target = new Parent();
MockMethodInvocation mi = new MockMethodInvocation(target, target.getClass(), "notOverriden");
-
Collection accessAttributes = this.mds.getAttributes(mi);
assertThat(accessAttributes).isEmpty();
}
@@ -196,7 +186,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
public void annotationsOnOverriddenMemberIgnored() throws Exception {
Child target = new Child();
MockMethodInvocation mi = new MockMethodInvocation(target, target.getClass(), "overridenIgnored");
-
Collection accessAttributes = this.mds.getAttributes(mi);
assertThat(accessAttributes).hasSize(1);
assertThat(accessAttributes.toArray()[0].toString()).isEqualTo("ROLE_DERIVED");
@@ -234,7 +223,6 @@ public class Jsr250MethodSecurityMetadataSourceTests {
}
// JSR-250 Spec
-
@RolesAllowed("IPARENT")
interface IParent {
diff --git a/core/src/test/java/org/springframework/security/access/annotation/Jsr250VoterTests.java b/core/src/test/java/org/springframework/security/access/annotation/Jsr250VoterTests.java
index 8e7f5536fc..412d2fe93f 100644
--- a/core/src/test/java/org/springframework/security/access/annotation/Jsr250VoterTests.java
+++ b/core/src/test/java/org/springframework/security/access/annotation/Jsr250VoterTests.java
@@ -38,21 +38,17 @@ public class Jsr250VoterTests {
public void supportsMultipleRolesCorrectly() {
List attrs = new ArrayList<>();
Jsr250Voter voter = new Jsr250Voter();
-
attrs.add(new Jsr250SecurityConfig("A"));
attrs.add(new Jsr250SecurityConfig("B"));
attrs.add(new Jsr250SecurityConfig("C"));
-
assertThat(voter.vote(new TestingAuthenticationToken("user", "pwd", "A"), new Object(), attrs))
.isEqualTo(AccessDecisionVoter.ACCESS_GRANTED);
assertThat(voter.vote(new TestingAuthenticationToken("user", "pwd", "B"), new Object(), attrs))
.isEqualTo(AccessDecisionVoter.ACCESS_GRANTED);
assertThat(voter.vote(new TestingAuthenticationToken("user", "pwd", "C"), new Object(), attrs))
.isEqualTo(AccessDecisionVoter.ACCESS_GRANTED);
-
assertThat(voter.vote(new TestingAuthenticationToken("user", "pwd", "NONE"), new Object(), attrs))
.isEqualTo(AccessDecisionVoter.ACCESS_DENIED);
-
assertThat(voter.vote(new TestingAuthenticationToken("user", "pwd", "A"), new Object(),
SecurityConfig.createList("A", "B", "C"))).isEqualTo(AccessDecisionVoter.ACCESS_ABSTAIN);
}
diff --git a/core/src/test/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSourceTests.java b/core/src/test/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSourceTests.java
index 842aa93485..a607b56874 100644
--- a/core/src/test/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSourceTests.java
+++ b/core/src/test/java/org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSourceTests.java
@@ -54,39 +54,29 @@ public class SecuredAnnotationSecurityMetadataSourceTests {
@Test
public void genericsSuperclassDeclarationsAreIncludedWhenSubclassesOverride() {
Method method = null;
-
try {
method = DepartmentServiceImpl.class.getMethod("someUserMethod3", new Class[] { Department.class });
}
catch (NoSuchMethodException unexpected) {
fail("Should be a superMethod called 'someUserMethod3' on class!");
}
-
Collection attrs = this.mds.findAttributes(method, DepartmentServiceImpl.class);
-
assertThat(attrs).isNotNull();
-
// expect 1 attribute
assertThat(attrs.size() == 1).as("Did not find 1 attribute").isTrue();
-
// should have 1 SecurityConfig
for (ConfigAttribute sc : attrs) {
assertThat(sc.getAttribute()).as("Found an incorrect role").isEqualTo("ROLE_ADMIN");
}
-
Method superMethod = null;
-
try {
superMethod = DepartmentServiceImpl.class.getMethod("someUserMethod3", new Class[] { Entity.class });
}
catch (NoSuchMethodException unexpected) {
fail("Should be a superMethod called 'someUserMethod3' on class!");
}
-
Collection superAttrs = this.mds.findAttributes(superMethod, DepartmentServiceImpl.class);
-
assertThat(superAttrs).isNotNull();
-
// This part of the test relates to SEC-274
// expect 1 attribute
assertThat(superAttrs).as("Did not find 1 attribute").hasSize(1);
@@ -99,41 +89,31 @@ public class SecuredAnnotationSecurityMetadataSourceTests {
@Test
public void classLevelAttributesAreFound() {
Collection attrs = this.mds.findAttributes(BusinessService.class);
-
assertThat(attrs).isNotNull();
-
// expect 1 annotation
assertThat(attrs).hasSize(1);
-
// should have 1 SecurityConfig
SecurityConfig sc = (SecurityConfig) attrs.toArray()[0];
-
assertThat(sc.getAttribute()).isEqualTo("ROLE_USER");
}
@Test
public void methodLevelAttributesAreFound() {
Method method = null;
-
try {
method = BusinessService.class.getMethod("someUserAndAdminMethod", new Class[] {});
}
catch (NoSuchMethodException unexpected) {
fail("Should be a method called 'someUserAndAdminMethod' on class!");
}
-
Collection attrs = this.mds.findAttributes(method, BusinessService.class);
-
// expect 2 attributes
assertThat(attrs).hasSize(2);
-
boolean user = false;
boolean admin = false;
-
// should have 2 SecurityConfigs
for (ConfigAttribute sc : attrs) {
assertThat(sc).isInstanceOf(SecurityConfig.class);
-
if (sc.getAttribute().equals("ROLE_USER")) {
user = true;
}
@@ -141,7 +121,6 @@ public class SecuredAnnotationSecurityMetadataSourceTests {
admin = true;
}
}
-
// expect to have ROLE_USER and ROLE_ADMIN
assertThat(user).isEqualTo(admin).isTrue();
}
@@ -159,9 +138,7 @@ public class SecuredAnnotationSecurityMetadataSourceTests {
public void annotatedAnnotationAtClassLevelIsDetected() throws Exception {
MockMethodInvocation annotatedAtClassLevel = new MockMethodInvocation(new AnnotatedAnnotationAtClassLevel(),
ReturnVoid.class, "doSomething", List.class);
-
ConfigAttribute[] attrs = this.mds.getAttributes(annotatedAtClassLevel).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
assertThat(attrs).extracting("attribute").containsOnly("CUSTOM");
}
@@ -170,9 +147,7 @@ public class SecuredAnnotationSecurityMetadataSourceTests {
public void annotatedAnnotationAtInterfaceLevelIsDetected() throws Exception {
MockMethodInvocation annotatedAtInterfaceLevel = new MockMethodInvocation(
new AnnotatedAnnotationAtInterfaceLevel(), ReturnVoid2.class, "doSomething", List.class);
-
ConfigAttribute[] attrs = this.mds.getAttributes(annotatedAtInterfaceLevel).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
assertThat(attrs).extracting("attribute").containsOnly("CUSTOM");
}
@@ -182,7 +157,6 @@ public class SecuredAnnotationSecurityMetadataSourceTests {
MockMethodInvocation annotatedAtMethodLevel = new MockMethodInvocation(new AnnotatedAnnotationAtMethodLevel(),
ReturnVoid.class, "doSomething", List.class);
ConfigAttribute[] attrs = this.mds.getAttributes(annotatedAtMethodLevel).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
assertThat(attrs).extracting("attribute").containsOnly("CUSTOM");
}
@@ -223,7 +197,6 @@ public class SecuredAnnotationSecurityMetadataSourceTests {
}
// SEC-1491 Related classes. PoC for custom annotation with enum value.
-
@CustomSecurityAnnotation(SecurityEnum.ADMIN)
interface CustomAnnotatedService {
@@ -262,7 +235,6 @@ public class SecuredAnnotationSecurityMetadataSourceTests {
@Override
public Collection extends ConfigAttribute> extractAttributes(CustomSecurityAnnotation securityAnnotation) {
SecurityEnum[] values = securityAnnotation.value();
-
return EnumSet.copyOf(Arrays.asList(values));
}
diff --git a/core/src/test/java/org/springframework/security/access/expression/AbstractSecurityExpressionHandlerTests.java b/core/src/test/java/org/springframework/security/access/expression/AbstractSecurityExpressionHandlerTests.java
index c9522feca6..f8c6b653a2 100644
--- a/core/src/test/java/org/springframework/security/access/expression/AbstractSecurityExpressionHandlerTests.java
+++ b/core/src/test/java/org/springframework/security/access/expression/AbstractSecurityExpressionHandlerTests.java
@@ -51,7 +51,6 @@ public class AbstractSecurityExpressionHandlerTests {
@Test
public void beanNamesAreCorrectlyResolved() {
this.handler.setApplicationContext(new AnnotationConfigApplicationContext(TestConfiguration.class));
-
Expression expression = this.handler.getExpressionParser()
.parseExpression("@number10.compareTo(@number20) < 0");
assertThat(expression.getValue(this.handler.createEvaluationContext(mock(Authentication.class), new Object())))
diff --git a/core/src/test/java/org/springframework/security/access/expression/SecurityExpressionRootTests.java b/core/src/test/java/org/springframework/security/access/expression/SecurityExpressionRootTests.java
index c1e953f363..9cb6564f61 100644
--- a/core/src/test/java/org/springframework/security/access/expression/SecurityExpressionRootTests.java
+++ b/core/src/test/java/org/springframework/security/access/expression/SecurityExpressionRootTests.java
@@ -64,7 +64,6 @@ public class SecurityExpressionRootTests {
@Test
public void roleHierarchySupportIsCorrectlyUsedInEvaluatingRoles() {
this.root.setRoleHierarchy((authorities) -> AuthorityUtils.createAuthorityList("ROLE_C"));
-
assertThat(this.root.hasRole("C")).isTrue();
assertThat(this.root.hasAuthority("ROLE_C")).isTrue();
assertThat(this.root.hasRole("A")).isFalse();
@@ -98,7 +97,6 @@ public class SecurityExpressionRootTests {
public void hasRoleDoesNotAddDefaultPrefixForAlreadyPrefixedRoles() {
SecurityExpressionRoot root = new SecurityExpressionRoot(JOE) {
};
-
assertThat(root.hasRole("ROLE_A")).isTrue();
assertThat(root.hasRole("ROLE_NO")).isFalse();
}
diff --git a/core/src/test/java/org/springframework/security/access/expression/method/DefaultMethodSecurityExpressionHandlerTests.java b/core/src/test/java/org/springframework/security/access/expression/method/DefaultMethodSecurityExpressionHandlerTests.java
index f2f1047f61..0cc3343ca5 100644
--- a/core/src/test/java/org/springframework/security/access/expression/method/DefaultMethodSecurityExpressionHandlerTests.java
+++ b/core/src/test/java/org/springframework/security/access/expression/method/DefaultMethodSecurityExpressionHandlerTests.java
@@ -77,11 +77,9 @@ public class DefaultMethodSecurityExpressionHandlerTests {
@Test
public void createEvaluationContextCustomTrustResolver() {
this.handler.setTrustResolver(this.trustResolver);
-
Expression expression = this.handler.getExpressionParser().parseExpression("anonymous");
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
expression.getValue(context, Boolean.class);
-
verify(this.trustResolver).isAnonymous(this.authentication);
}
@@ -92,13 +90,9 @@ public class DefaultMethodSecurityExpressionHandlerTests {
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
-
Expression expression = this.handler.getExpressionParser().parseExpression("filterObject.key eq 'key2'");
-
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
-
Object filtered = this.handler.filter(map, expression, context);
-
assertThat(filtered == map);
Map result = ((Map) filtered);
assertThat(result.size() == 1);
@@ -113,13 +107,9 @@ public class DefaultMethodSecurityExpressionHandlerTests {
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
-
Expression expression = this.handler.getExpressionParser().parseExpression("filterObject.value eq 'value3'");
-
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
-
Object filtered = this.handler.filter(map, expression, context);
-
assertThat(filtered == map);
Map result = ((Map) filtered);
assertThat(result.size() == 1);
@@ -134,14 +124,10 @@ public class DefaultMethodSecurityExpressionHandlerTests {
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
-
Expression expression = this.handler.getExpressionParser()
.parseExpression("(filterObject.key eq 'key1') or (filterObject.value eq 'value2')");
-
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
-
Object filtered = this.handler.filter(map, expression, context);
-
assertThat(filtered == map);
Map result = ((Map) filtered);
assertThat(result.size() == 2);
@@ -153,13 +139,9 @@ public class DefaultMethodSecurityExpressionHandlerTests {
@SuppressWarnings("unchecked")
public void filterWhenUsingStreamThenFiltersStream() {
final Stream stream = Stream.of("1", "2", "3");
-
Expression expression = this.handler.getExpressionParser().parseExpression("filterObject ne '2'");
-
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
-
Object filtered = this.handler.filter(stream, expression, context);
-
assertThat(filtered).isInstanceOf(Stream.class);
List list = ((Stream) filtered).collect(Collectors.toList());
assertThat(list).containsExactly("1", "3");
@@ -169,11 +151,8 @@ public class DefaultMethodSecurityExpressionHandlerTests {
public void filterStreamWhenClosedThenUpstreamGetsClosed() {
final Stream> upstream = mock(Stream.class);
doReturn(Stream.empty()).when(upstream).filter(any());
-
Expression expression = this.handler.getExpressionParser().parseExpression("true");
-
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.methodInvocation);
-
((Stream) this.handler.filter(upstream, expression, context)).close();
verify(upstream).close();
}
diff --git a/core/src/test/java/org/springframework/security/access/expression/method/MethodExpressionVoterTests.java b/core/src/test/java/org/springframework/security/access/expression/method/MethodExpressionVoterTests.java
index d60ef97c45..d409c4054d 100644
--- a/core/src/test/java/org/springframework/security/access/expression/method/MethodExpressionVoterTests.java
+++ b/core/src/test/java/org/springframework/security/access/expression/method/MethodExpressionVoterTests.java
@@ -113,9 +113,8 @@ public class MethodExpressionVoterTests {
@Test
public void ruleDefinedInAClassMethodIsApplied() throws Exception {
MethodInvocation mi = new SimpleMethodInvocation(new TargetImpl(), methodTakingAString(), "joe");
- assertThat(
-
- this.am.vote(this.joe, mi, createAttributes(new PreInvocationExpressionAttribute(null, null,
+ assertThat(this.am.vote(this.joe, mi,
+ createAttributes(new PreInvocationExpressionAttribute(null, null,
"T(org.springframework.security.access.expression.method.SecurityRules).isJoe(#argument)"))))
.isEqualTo(AccessDecisionVoter.ACCESS_GRANTED);
}
diff --git a/core/src/test/java/org/springframework/security/access/expression/method/MethodSecurityExpressionRootTests.java b/core/src/test/java/org/springframework/security/access/expression/method/MethodSecurityExpressionRootTests.java
index 43ee1027ad..e6c8910fd8 100644
--- a/core/src/test/java/org/springframework/security/access/expression/method/MethodSecurityExpressionRootTests.java
+++ b/core/src/test/java/org/springframework/security/access/expression/method/MethodSecurityExpressionRootTests.java
@@ -64,7 +64,6 @@ public class MethodSecurityExpressionRootTests {
public void canCallMethodsOnVariables() {
this.ctx.setVariable("var", "somestring");
Expression e = this.parser.parseExpression("#var.length() == 10");
-
assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
}
@@ -87,9 +86,7 @@ public class MethodSecurityExpressionRootTests {
this.ctx.setVariable("domainObject", dummyDomainObject);
this.root.setPermissionEvaluator(pe);
given(pe.hasPermission(this.user, dummyDomainObject, "ignored")).willReturn(false);
-
assertThat(this.root.hasPermission(dummyDomainObject, "ignored")).isFalse();
-
}
@Test
@@ -99,7 +96,6 @@ public class MethodSecurityExpressionRootTests {
this.ctx.setVariable("domainObject", dummyDomainObject);
this.root.setPermissionEvaluator(pe);
given(pe.hasPermission(this.user, dummyDomainObject, "ignored")).willReturn(true);
-
assertThat(this.root.hasPermission(dummyDomainObject, "ignored")).isTrue();
}
@@ -110,7 +106,6 @@ public class MethodSecurityExpressionRootTests {
final PermissionEvaluator pe = mock(PermissionEvaluator.class);
this.root.setPermissionEvaluator(pe);
given(pe.hasPermission(eq(this.user), eq(dummyDomainObject), any(Integer.class))).willReturn(true, true, false);
-
Expression e = this.parser.parseExpression("hasPermission(#domainObject, 0xA)");
// evaluator returns true
assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
@@ -135,12 +130,10 @@ public class MethodSecurityExpressionRootTests {
this.root.setPermissionEvaluator(pe);
given(pe.hasPermission(this.user, targetObject, i)).willReturn(true, false);
given(pe.hasPermission(this.user, "x", i)).willReturn(true);
-
Expression e = this.parser.parseExpression("hasPermission(this, 2)");
assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
e = this.parser.parseExpression("hasPermission(this, 2)");
assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isFalse();
-
e = this.parser.parseExpression("hasPermission(this.x, 2)");
assertThat(ExpressionUtils.evaluateAsBoolean(e, this.ctx)).isTrue();
}
diff --git a/core/src/test/java/org/springframework/security/access/expression/method/PrePostAnnotationSecurityMetadataSourceTests.java b/core/src/test/java/org/springframework/security/access/expression/method/PrePostAnnotationSecurityMetadataSourceTests.java
index bf024683f3..c7e19fbf89 100644
--- a/core/src/test/java/org/springframework/security/access/expression/method/PrePostAnnotationSecurityMetadataSourceTests.java
+++ b/core/src/test/java/org/springframework/security/access/expression/method/PrePostAnnotationSecurityMetadataSourceTests.java
@@ -88,7 +88,6 @@ public class PrePostAnnotationSecurityMetadataSourceTests {
@Test
public void classLevelPreAnnotationIsPickedUpWhenNoMethodLevelExists() {
ConfigAttribute[] attrs = this.mds.getAttributes(this.voidImpl1).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
assertThat(attrs[0] instanceof PreInvocationExpressionAttribute).isTrue();
PreInvocationExpressionAttribute pre = (PreInvocationExpressionAttribute) attrs[0];
@@ -100,7 +99,6 @@ public class PrePostAnnotationSecurityMetadataSourceTests {
@Test
public void mixedClassAndMethodPreAnnotationsAreBothIncluded() {
ConfigAttribute[] attrs = this.mds.getAttributes(this.voidImpl2).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
assertThat(attrs[0] instanceof PreInvocationExpressionAttribute).isTrue();
PreInvocationExpressionAttribute pre = (PreInvocationExpressionAttribute) attrs[0];
@@ -112,7 +110,6 @@ public class PrePostAnnotationSecurityMetadataSourceTests {
@Test
public void methodWithPreFilterOnlyIsAllowed() {
ConfigAttribute[] attrs = this.mds.getAttributes(this.voidImpl3).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
assertThat(attrs[0] instanceof PreInvocationExpressionAttribute).isTrue();
PreInvocationExpressionAttribute pre = (PreInvocationExpressionAttribute) attrs[0];
@@ -124,7 +121,6 @@ public class PrePostAnnotationSecurityMetadataSourceTests {
@Test
public void methodWithPostFilterOnlyIsAllowed() {
ConfigAttribute[] attrs = this.mds.getAttributes(this.listImpl1).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(2);
assertThat(attrs[0] instanceof PreInvocationExpressionAttribute).isTrue();
assertThat(attrs[1] instanceof PostInvocationExpressionAttribute).isTrue();
@@ -138,7 +134,6 @@ public class PrePostAnnotationSecurityMetadataSourceTests {
@Test
public void interfaceAttributesAreIncluded() {
ConfigAttribute[] attrs = this.mds.getAttributes(this.notherListImpl1).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
assertThat(attrs[0] instanceof PreInvocationExpressionAttribute).isTrue();
PreInvocationExpressionAttribute pre = (PreInvocationExpressionAttribute) attrs[0];
@@ -151,7 +146,6 @@ public class PrePostAnnotationSecurityMetadataSourceTests {
@Test
public void classAttributesTakesPrecedeceOverInterfaceAttributes() {
ConfigAttribute[] attrs = this.mds.getAttributes(this.notherListImpl2).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
assertThat(attrs[0] instanceof PreInvocationExpressionAttribute).isTrue();
PreInvocationExpressionAttribute pre = (PreInvocationExpressionAttribute) attrs[0];
@@ -164,7 +158,6 @@ public class PrePostAnnotationSecurityMetadataSourceTests {
@Test
public void customAnnotationAtClassLevelIsDetected() {
ConfigAttribute[] attrs = this.mds.getAttributes(this.annotatedAtClassLevel).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
}
@@ -172,14 +165,12 @@ public class PrePostAnnotationSecurityMetadataSourceTests {
public void customAnnotationAtInterfaceLevelIsDetected() {
ConfigAttribute[] attrs = this.mds.getAttributes(this.annotatedAtInterfaceLevel)
.toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
}
@Test
public void customAnnotationAtMethodLevelIsDetected() {
ConfigAttribute[] attrs = this.mds.getAttributes(this.annotatedAtMethodLevel).toArray(new ConfigAttribute[0]);
-
assertThat(attrs).hasSize(1);
}
diff --git a/core/src/test/java/org/springframework/security/access/hierarchicalroles/HierarchicalRolesTestHelper.java b/core/src/test/java/org/springframework/security/access/hierarchicalroles/HierarchicalRolesTestHelper.java
index 8d2a9fdff3..b8df1e837e 100755
--- a/core/src/test/java/org/springframework/security/access/hierarchicalroles/HierarchicalRolesTestHelper.java
+++ b/core/src/test/java/org/springframework/security/access/hierarchicalroles/HierarchicalRolesTestHelper.java
@@ -36,7 +36,6 @@ public abstract class HierarchicalRolesTestHelper {
if (authorities1 == null && authorities2 == null) {
return true;
}
-
if (authorities1 == null || authorities2 == null) {
return false;
}
@@ -48,7 +47,6 @@ public abstract class HierarchicalRolesTestHelper {
if (authorities1 == null && authorities2 == null) {
return true;
}
-
if (authorities1 == null || authorities2 == null) {
return false;
}
@@ -60,7 +58,6 @@ public abstract class HierarchicalRolesTestHelper {
if (authorities == null) {
return null;
}
-
List result = new ArrayList<>(authorities.size());
for (GrantedAuthority authority : authorities) {
result.add(authority.getAuthority());
@@ -70,12 +67,10 @@ public abstract class HierarchicalRolesTestHelper {
public static List createAuthorityList(final String... roles) {
List authorities = new ArrayList<>(roles.length);
-
for (final String role : roles) {
// Use non SimpleGrantedAuthority (SEC-863)
authorities.add((GrantedAuthority) () -> role);
}
-
return authorities;
}
diff --git a/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyAuthoritiesMapperTests.java b/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyAuthoritiesMapperTests.java
index 0d373bf9d9..58beb183f3 100644
--- a/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyAuthoritiesMapperTests.java
+++ b/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyAuthoritiesMapperTests.java
@@ -35,16 +35,11 @@ public class RoleHierarchyAuthoritiesMapperTests {
RoleHierarchyImpl rh = new RoleHierarchyImpl();
rh.setHierarchy("ROLE_A > ROLE_B\nROLE_B > ROLE_C");
RoleHierarchyAuthoritiesMapper mapper = new RoleHierarchyAuthoritiesMapper(rh);
-
Collection extends GrantedAuthority> authorities = mapper
.mapAuthorities(AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_D"));
-
assertThat(authorities).hasSize(4);
-
mapper = new RoleHierarchyAuthoritiesMapper(new NullRoleHierarchy());
-
authorities = mapper.mapAuthorities(AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_D"));
-
assertThat(authorities).hasSize(2);
}
diff --git a/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyImplTests.java b/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyImplTests.java
index 7f337dac51..0bd68d1955 100644
--- a/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyImplTests.java
+++ b/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyImplTests.java
@@ -38,27 +38,21 @@ public class RoleHierarchyImplTests {
public void testRoleHierarchyWithNullOrEmptyAuthorities() {
List authorities0 = null;
List authorities1 = new ArrayList<>();
-
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B");
-
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(authorities0)).isNotNull();
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(authorities0)).isEmpty();
-
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(authorities1)).isNotNull();
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(authorities1)).isEmpty();
}
@Test
public void testSimpleRoleHierarchy() {
-
List authorities0 = AuthorityUtils.createAuthorityList("ROLE_0");
List authorities1 = AuthorityUtils.createAuthorityList("ROLE_A");
List authorities2 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_B");
-
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B");
-
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(
roleHierarchyImpl.getReachableGrantedAuthorities(authorities0), authorities0)).isTrue();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(
@@ -73,13 +67,10 @@ public class RoleHierarchyImplTests {
List authorities2 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_B", "ROLE_C");
List authorities3 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_B", "ROLE_C",
"ROLE_D");
-
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
-
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B\nROLE_B > ROLE_C");
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(
roleHierarchyImpl.getReachableGrantedAuthorities(authorities1), authorities2)).isTrue();
-
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B\nROLE_B > ROLE_C\nROLE_C > ROLE_D");
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(
roleHierarchyImpl.getReachableGrantedAuthorities(authorities1), authorities3)).isTrue();
@@ -96,10 +87,8 @@ public class RoleHierarchyImplTests {
List authoritiesOutput3 = AuthorityUtils.createAuthorityList("ROLE_C", "ROLE_D");
List authoritiesInput4 = AuthorityUtils.createAuthorityList("ROLE_D");
List authoritiesOutput4 = AuthorityUtils.createAuthorityList("ROLE_D");
-
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B\nROLE_A > ROLE_C\nROLE_C > ROLE_D\nROLE_B > ROLE_D");
-
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(
roleHierarchyImpl.getReachableGrantedAuthorities(authoritiesInput1), authoritiesOutput1)).isTrue();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(
@@ -113,28 +102,24 @@ public class RoleHierarchyImplTests {
@Test
public void testCyclesInRoleHierarchy() {
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
-
try {
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_A");
fail("Cycle in role hierarchy was not detected!");
}
catch (CycleInRoleHierarchyException ex) {
}
-
try {
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B\nROLE_B > ROLE_A");
fail("Cycle in role hierarchy was not detected!");
}
catch (CycleInRoleHierarchyException ex) {
}
-
try {
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B\nROLE_B > ROLE_C\nROLE_C > ROLE_A");
fail("Cycle in role hierarchy was not detected!");
}
catch (CycleInRoleHierarchyException ex) {
}
-
try {
roleHierarchyImpl.setHierarchy(
"ROLE_A > ROLE_B\nROLE_B > ROLE_C\nROLE_C > ROLE_E\nROLE_E > ROLE_D\nROLE_D > ROLE_B");
@@ -142,7 +127,6 @@ public class RoleHierarchyImplTests {
}
catch (CycleInRoleHierarchyException ex) {
}
-
try {
roleHierarchyImpl.setHierarchy("ROLE_C > ROLE_B\nROLE_B > ROLE_A\nROLE_A > ROLE_B");
fail("Cycle in role hierarchy was not detected!");
@@ -154,7 +138,6 @@ public class RoleHierarchyImplTests {
@Test
public void testNoCyclesInRoleHierarchy() {
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
-
try {
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B\nROLE_A > ROLE_C\nROLE_C > ROLE_D\nROLE_B > ROLE_D");
}
@@ -166,14 +149,11 @@ public class RoleHierarchyImplTests {
// SEC-863
@Test
public void testSimpleRoleHierarchyWithCustomGrantedAuthorityImplementation() {
-
List authorities0 = HierarchicalRolesTestHelper.createAuthorityList("ROLE_0");
List authorities1 = HierarchicalRolesTestHelper.createAuthorityList("ROLE_A");
List authorities2 = HierarchicalRolesTestHelper.createAuthorityList("ROLE_A", "ROLE_B");
-
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B");
-
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthoritiesCompareByAuthorityString(
roleHierarchyImpl.getReachableGrantedAuthorities(authorities0), authorities0)).isTrue();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthoritiesCompareByAuthorityString(
@@ -188,13 +168,10 @@ public class RoleHierarchyImplTests {
List authorities2 = AuthorityUtils.createAuthorityList("ROLE A", "ROLE B", "ROLE>C");
List authorities3 = AuthorityUtils.createAuthorityList("ROLE A", "ROLE B", "ROLE>C",
"ROLE D");
-
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
-
roleHierarchyImpl.setHierarchy("ROLE A > ROLE B\nROLE B > ROLE>C");
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(
roleHierarchyImpl.getReachableGrantedAuthorities(authorities1), authorities2)).isTrue();
-
roleHierarchyImpl.setHierarchy("ROLE A > ROLE B\nROLE B > ROLE>C\nROLE>C > ROLE D");
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(
roleHierarchyImpl.getReachableGrantedAuthorities(authorities1), authorities3)).isTrue();
@@ -209,7 +186,6 @@ public class RoleHierarchyImplTests {
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
roleHierarchyImpl.setHierarchy(
"ROLE_A > ROLE_B\n" + "ROLE_B > ROLE_AUTHENTICATED\n" + "ROLE_AUTHENTICATED > ROLE_UNAUTHENTICATED");
-
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(flatAuthorities))
.containsExactlyInAnyOrderElementsOf(allAuthorities);
}
@@ -223,7 +199,6 @@ public class RoleHierarchyImplTests {
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
roleHierarchyImpl
.setHierarchy("ROLE_HIGHEST > ROLE_HIGHER\n" + "ROLE_HIGHER > ROLE_LOW\n" + "ROLE_LOW > ROLE_LOWER");
-
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(flatAuthorities))
.containsExactlyInAnyOrderElementsOf(allAuthorities);
}
@@ -236,7 +211,6 @@ public class RoleHierarchyImplTests {
"ROLE_LOW", "ROLE_LOWER");
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
roleHierarchyImpl.setHierarchy("ROLE_HIGHEST > ROLE_HIGHER > ROLE_LOW > ROLE_LOWER");
-
assertThat(roleHierarchyImpl.getReachableGrantedAuthorities(flatAuthorities))
.containsExactlyInAnyOrderElementsOf(allAuthorities);
}
diff --git a/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyUtilsTests.java b/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyUtilsTests.java
index 6684a2e9d7..ae08fd1249 100644
--- a/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyUtilsTests.java
+++ b/core/src/test/java/org/springframework/security/access/hierarchicalroles/RoleHierarchyUtilsTests.java
@@ -44,14 +44,11 @@ public class RoleHierarchyUtilsTests {
"ROLE_B > ROLE_D" + EOL +
"ROLE_C > ROLE_D" + EOL;
// @formatter:on
-
Map> roleHierarchyMap = new TreeMap<>();
roleHierarchyMap.put("ROLE_A", Arrays.asList("ROLE_B", "ROLE_C"));
roleHierarchyMap.put("ROLE_B", Arrays.asList("ROLE_D"));
roleHierarchyMap.put("ROLE_C", Arrays.asList("ROLE_D"));
-
String roleHierarchy = RoleHierarchyUtils.roleHierarchyFromMap(roleHierarchyMap);
-
assertThat(roleHierarchy).isEqualTo(expectedRoleHierarchy);
}
@@ -69,7 +66,6 @@ public class RoleHierarchyUtilsTests {
public void roleHierarchyFromMapWhenRoleNullThenThrowsIllegalArgumentException() {
Map> roleHierarchyMap = new HashMap<>();
roleHierarchyMap.put(null, Arrays.asList("ROLE_B", "ROLE_C"));
-
RoleHierarchyUtils.roleHierarchyFromMap(roleHierarchyMap);
}
@@ -77,7 +73,6 @@ public class RoleHierarchyUtilsTests {
public void roleHierarchyFromMapWhenRoleEmptyThenThrowsIllegalArgumentException() {
Map> roleHierarchyMap = new HashMap<>();
roleHierarchyMap.put("", Arrays.asList("ROLE_B", "ROLE_C"));
-
RoleHierarchyUtils.roleHierarchyFromMap(roleHierarchyMap);
}
@@ -85,7 +80,6 @@ public class RoleHierarchyUtilsTests {
public void roleHierarchyFromMapWhenImpliedRolesNullThenThrowsIllegalArgumentException() {
Map> roleHierarchyMap = new HashMap<>();
roleHierarchyMap.put("ROLE_A", null);
-
RoleHierarchyUtils.roleHierarchyFromMap(roleHierarchyMap);
}
@@ -93,7 +87,6 @@ public class RoleHierarchyUtilsTests {
public void roleHierarchyFromMapWhenImpliedRolesEmptyThenThrowsIllegalArgumentException() {
Map> roleHierarchyMap = new HashMap<>();
roleHierarchyMap.put("ROLE_A", Collections.emptyList());
-
RoleHierarchyUtils.roleHierarchyFromMap(roleHierarchyMap);
}
diff --git a/core/src/test/java/org/springframework/security/access/hierarchicalroles/TestHelperTests.java b/core/src/test/java/org/springframework/security/access/hierarchicalroles/TestHelperTests.java
index 54570c4759..111b94b8f5 100644
--- a/core/src/test/java/org/springframework/security/access/hierarchicalroles/TestHelperTests.java
+++ b/core/src/test/java/org/springframework/security/access/hierarchicalroles/TestHelperTests.java
@@ -42,12 +42,10 @@ public class TestHelperTests {
List authorities3 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_C");
List authorities4 = AuthorityUtils.createAuthorityList("ROLE_A");
List authorities5 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_A");
-
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(null, null)).isTrue();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities1, authorities1)).isTrue();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities1, authorities2)).isTrue();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities2, authorities1)).isTrue();
-
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(null, authorities1)).isFalse();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities1, null)).isFalse();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities1, authorities3)).isFalse();
@@ -65,42 +63,32 @@ public class TestHelperTests {
Collection authorities3 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_C");
Collection authorities4 = AuthorityUtils.createAuthorityList("ROLE_A");
Collection authorities5 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_A");
-
List authoritiesStrings1 = new ArrayList<>();
authoritiesStrings1.add("ROLE_A");
authoritiesStrings1.add("ROLE_B");
-
List authoritiesStrings2 = new ArrayList<>();
authoritiesStrings2.add("ROLE_B");
authoritiesStrings2.add("ROLE_A");
-
List authoritiesStrings3 = new ArrayList<>();
authoritiesStrings3.add("ROLE_A");
authoritiesStrings3.add("ROLE_C");
-
List authoritiesStrings4 = new ArrayList<>();
authoritiesStrings4.add("ROLE_A");
-
List authoritiesStrings5 = new ArrayList<>();
authoritiesStrings5.add("ROLE_A");
authoritiesStrings5.add("ROLE_A");
-
assertThat(CollectionUtils.isEqualCollection(
HierarchicalRolesTestHelper.toCollectionOfAuthorityStrings(authorities1), authoritiesStrings1))
.isTrue();
-
assertThat(CollectionUtils.isEqualCollection(
HierarchicalRolesTestHelper.toCollectionOfAuthorityStrings(authorities2), authoritiesStrings2))
.isTrue();
-
assertThat(CollectionUtils.isEqualCollection(
HierarchicalRolesTestHelper.toCollectionOfAuthorityStrings(authorities3), authoritiesStrings3))
.isTrue();
-
assertThat(CollectionUtils.isEqualCollection(
HierarchicalRolesTestHelper.toCollectionOfAuthorityStrings(authorities4), authoritiesStrings4))
.isTrue();
-
assertThat(CollectionUtils.isEqualCollection(
HierarchicalRolesTestHelper.toCollectionOfAuthorityStrings(authorities5), authoritiesStrings5))
.isTrue();
@@ -114,12 +102,10 @@ public class TestHelperTests {
List authorities3 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_C");
List authorities4 = AuthorityUtils.createAuthorityList("ROLE_A");
List authorities5 = AuthorityUtils.createAuthorityList("ROLE_A", "ROLE_A");
-
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(null, null)).isTrue();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities1, authorities1)).isTrue();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities1, authorities2)).isTrue();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities2, authorities1)).isTrue();
-
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(null, authorities1)).isFalse();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities1, null)).isFalse();
assertThat(HierarchicalRolesTestHelper.containTheSameGrantedAuthorities(authorities1, authorities3)).isFalse();
@@ -144,7 +130,6 @@ public class TestHelperTests {
List authorities1 = HierarchicalRolesTestHelper.createAuthorityList("ROLE_A");
assertThat(authorities1).hasSize(1);
assertThat(authorities1.get(0).getAuthority()).isEqualTo("ROLE_A");
-
List authorities2 = HierarchicalRolesTestHelper.createAuthorityList("ROLE_A", "ROLE_C");
assertThat(authorities2).hasSize(2);
assertThat(authorities2.get(0).getAuthority()).isEqualTo("ROLE_A");
diff --git a/core/src/test/java/org/springframework/security/access/intercept/AbstractSecurityInterceptorTests.java b/core/src/test/java/org/springframework/security/access/intercept/AbstractSecurityInterceptorTests.java
index 67f6e1aa86..6a4047cbae 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/AbstractSecurityInterceptorTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/AbstractSecurityInterceptorTests.java
@@ -36,7 +36,6 @@ public class AbstractSecurityInterceptorTests {
@Test(expected = IllegalArgumentException.class)
public void detectsIfInvocationPassedIncompatibleSecureObject() {
MockSecurityInterceptorWhichOnlySupportsStrings si = new MockSecurityInterceptorWhichOnlySupportsStrings();
-
si.setRunAsManager(mock(RunAsManager.class));
si.setAuthenticationManager(mock(AuthenticationManager.class));
si.setAfterInvocationManager(mock(AfterInvocationManager.class));
diff --git a/core/src/test/java/org/springframework/security/access/intercept/AfterInvocationProviderManagerTests.java b/core/src/test/java/org/springframework/security/access/intercept/AfterInvocationProviderManagerTests.java
index 6244ad3a4f..f6fc8ec922 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/AfterInvocationProviderManagerTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/AfterInvocationProviderManagerTests.java
@@ -51,25 +51,19 @@ public class AfterInvocationProviderManagerTests {
manager.setProviders(list);
assertThat(manager.getProviders()).isEqualTo(list);
manager.afterPropertiesSet();
-
List attr1 = SecurityConfig.createList(new String[] { "GIVE_ME_SWAP1" });
List attr2 = SecurityConfig.createList(new String[] { "GIVE_ME_SWAP2" });
List attr3 = SecurityConfig.createList(new String[] { "GIVE_ME_SWAP3" });
List attr2and3 = SecurityConfig.createList(new String[] { "GIVE_ME_SWAP2", "GIVE_ME_SWAP3" });
List attr4 = SecurityConfig.createList(new String[] { "NEVER_CAUSES_SWAP" });
-
assertThat(manager.decide(null, new SimpleMethodInvocation(), attr1, "content-before-swapping"))
.isEqualTo("swap1");
-
assertThat(manager.decide(null, new SimpleMethodInvocation(), attr2, "content-before-swapping"))
.isEqualTo("swap2");
-
assertThat(manager.decide(null, new SimpleMethodInvocation(), attr3, "content-before-swapping"))
.isEqualTo("swap3");
-
assertThat(manager.decide(null, new SimpleMethodInvocation(), attr4, "content-before-swapping"))
.isEqualTo("content-before-swapping");
-
assertThat(manager.decide(null, new SimpleMethodInvocation(), attr2and3, "content-before-swapping"))
.isEqualTo("swap3");
}
@@ -78,7 +72,6 @@ public class AfterInvocationProviderManagerTests {
public void testRejectsEmptyProvidersList() {
AfterInvocationProviderManager manager = new AfterInvocationProviderManager();
List list = new Vector();
-
try {
manager.setProviders(list);
fail("Should have thrown IllegalArgumentException");
@@ -95,7 +88,6 @@ public class AfterInvocationProviderManagerTests {
list.add(new MockAfterInvocationProvider("swap1", MethodInvocation.class, new SecurityConfig("GIVE_ME_SWAP1")));
list.add(45);
list.add(new MockAfterInvocationProvider("swap3", MethodInvocation.class, new SecurityConfig("GIVE_ME_SWAP3")));
-
try {
manager.setProviders(list);
fail("Should have thrown IllegalArgumentException");
@@ -108,7 +100,6 @@ public class AfterInvocationProviderManagerTests {
@Test
public void testRejectsNullProvidersList() throws Exception {
AfterInvocationProviderManager manager = new AfterInvocationProviderManager();
-
try {
manager.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
@@ -127,7 +118,6 @@ public class AfterInvocationProviderManagerTests {
list.add(new MockAfterInvocationProvider("swap3", MethodInvocation.class, new SecurityConfig("GIVE_ME_SWAP3")));
manager.setProviders(list);
manager.afterPropertiesSet();
-
assertThat(manager.supports(new SecurityConfig("UNKNOWN_ATTRIB"))).isFalse();
assertThat(manager.supports(new SecurityConfig("GIVE_ME_SWAP2"))).isTrue();
}
@@ -141,7 +131,6 @@ public class AfterInvocationProviderManagerTests {
list.add(new MockAfterInvocationProvider("swap3", MethodInvocation.class, new SecurityConfig("GIVE_ME_SWAP3")));
manager.setProviders(list);
manager.afterPropertiesSet();
-
// assertFalse(manager.supports(FilterInvocation.class));
assertThat(manager.supports(MethodInvocation.class)).isTrue();
}
@@ -171,7 +160,6 @@ public class AfterInvocationProviderManagerTests {
if (config.contains(this.configAttribute)) {
return this.forceReturnObject;
}
-
return returnedObject;
}
diff --git a/core/src/test/java/org/springframework/security/access/intercept/InterceptorStatusTokenTests.java b/core/src/test/java/org/springframework/security/access/intercept/InterceptorStatusTokenTests.java
index f745614c0f..eb6947816a 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/InterceptorStatusTokenTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/InterceptorStatusTokenTests.java
@@ -42,7 +42,6 @@ public class InterceptorStatusTokenTests {
MethodInvocation mi = new SimpleMethodInvocation();
SecurityContext ctx = SecurityContextHolder.createEmptyContext();
InterceptorStatusToken token = new InterceptorStatusToken(ctx, true, attr, mi);
-
assertThat(token.isContextHolderRefreshRequired()).isTrue();
assertThat(token.getAttributes()).isEqualTo(attr);
assertThat(token.getSecureObject()).isEqualTo(mi);
diff --git a/core/src/test/java/org/springframework/security/access/intercept/RunAsImplAuthenticationProviderTests.java b/core/src/test/java/org/springframework/security/access/intercept/RunAsImplAuthenticationProviderTests.java
index b19767152a..620806f5ff 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/RunAsImplAuthenticationProviderTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/RunAsImplAuthenticationProviderTests.java
@@ -38,7 +38,6 @@ public class RunAsImplAuthenticationProviderTests {
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"), UsernamePasswordAuthenticationToken.class);
RunAsImplAuthenticationProvider provider = new RunAsImplAuthenticationProvider();
provider.setKey("hello_world");
-
provider.authenticate(token);
}
@@ -48,11 +47,8 @@ public class RunAsImplAuthenticationProviderTests {
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"), UsernamePasswordAuthenticationToken.class);
RunAsImplAuthenticationProvider provider = new RunAsImplAuthenticationProvider();
provider.setKey("my_password");
-
Authentication result = provider.authenticate(token);
-
Assert.assertTrue("Should have returned RunAsUserToken", result instanceof RunAsUserToken);
-
RunAsUserToken resultCast = (RunAsUserToken) result;
assertThat(resultCast.getKeyHash()).isEqualTo("my_password".hashCode());
}
@@ -60,7 +56,6 @@ public class RunAsImplAuthenticationProviderTests {
@Test(expected = IllegalArgumentException.class)
public void testStartupFailsIfNoKey() throws Exception {
RunAsImplAuthenticationProvider provider = new RunAsImplAuthenticationProvider();
-
provider.afterPropertiesSet();
}
diff --git a/core/src/test/java/org/springframework/security/access/intercept/RunAsManagerImplTests.java b/core/src/test/java/org/springframework/security/access/intercept/RunAsManagerImplTests.java
index c58c4a193f..31503300c3 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/RunAsManagerImplTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/RunAsManagerImplTests.java
@@ -45,10 +45,8 @@ public class RunAsManagerImplTests {
public void testDoesNotReturnAdditionalAuthoritiesIfCalledWithoutARunAsSetting() {
UsernamePasswordAuthenticationToken inputToken = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"));
-
RunAsManagerImpl runAs = new RunAsManagerImpl();
runAs.setKey("my_password");
-
Authentication resultingToken = runAs.buildRunAs(inputToken, new Object(),
SecurityConfig.createList("SOMETHING_WE_IGNORE"));
assertThat(resultingToken).isNull();
@@ -58,23 +56,18 @@ public class RunAsManagerImplTests {
public void testRespectsRolePrefix() {
UsernamePasswordAuthenticationToken inputToken = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ONE", "TWO"));
-
RunAsManagerImpl runAs = new RunAsManagerImpl();
runAs.setKey("my_password");
runAs.setRolePrefix("FOOBAR_");
-
Authentication result = runAs.buildRunAs(inputToken, new Object(),
SecurityConfig.createList("RUN_AS_SOMETHING"));
-
assertThat(result instanceof RunAsUserToken).withFailMessage("Should have returned a RunAsUserToken").isTrue();
assertThat(result.getPrincipal()).isEqualTo(inputToken.getPrincipal());
assertThat(result.getCredentials()).isEqualTo(inputToken.getCredentials());
Set authorities = AuthorityUtils.authorityListToSet(result.getAuthorities());
-
assertThat(authorities.contains("FOOBAR_RUN_AS_SOMETHING")).isTrue();
assertThat(authorities.contains("ONE")).isTrue();
assertThat(authorities.contains("TWO")).isTrue();
-
RunAsUserToken resultCast = (RunAsUserToken) result;
assertThat(resultCast.getKeyHash()).isEqualTo("my_password".hashCode());
}
@@ -83,25 +76,19 @@ public class RunAsManagerImplTests {
public void testReturnsAdditionalGrantedAuthorities() {
UsernamePasswordAuthenticationToken inputToken = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"));
-
RunAsManagerImpl runAs = new RunAsManagerImpl();
runAs.setKey("my_password");
-
Authentication result = runAs.buildRunAs(inputToken, new Object(),
SecurityConfig.createList("RUN_AS_SOMETHING"));
-
if (!(result instanceof RunAsUserToken)) {
fail("Should have returned a RunAsUserToken");
}
-
assertThat(result.getPrincipal()).isEqualTo(inputToken.getPrincipal());
assertThat(result.getCredentials()).isEqualTo(inputToken.getCredentials());
-
Set authorities = AuthorityUtils.authorityListToSet(result.getAuthorities());
assertThat(authorities.contains("ROLE_RUN_AS_SOMETHING")).isTrue();
assertThat(authorities.contains("ROLE_ONE")).isTrue();
assertThat(authorities.contains("ROLE_TWO")).isTrue();
-
RunAsUserToken resultCast = (RunAsUserToken) result;
assertThat(resultCast.getKeyHash()).isEqualTo("my_password".hashCode());
}
@@ -109,13 +96,11 @@ public class RunAsManagerImplTests {
@Test
public void testStartupDetectsMissingKey() throws Exception {
RunAsManagerImpl runAs = new RunAsManagerImpl();
-
try {
runAs.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
diff --git a/core/src/test/java/org/springframework/security/access/intercept/RunAsUserTokenTests.java b/core/src/test/java/org/springframework/security/access/intercept/RunAsUserTokenTests.java
index 50d5fd3d70..b8b151b27a 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/RunAsUserTokenTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/RunAsUserTokenTests.java
@@ -53,7 +53,6 @@ public class RunAsUserTokenTests {
@Test
public void testNoArgConstructorDoesntExist() {
Class clazz = RunAsUserToken.class;
-
try {
clazz.getDeclaredConstructor((Class[]) null);
fail("Should have thrown NoSuchMethodException");
diff --git a/core/src/test/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityInterceptorTests.java b/core/src/test/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityInterceptorTests.java
index b510aeb697..aa8ff61359 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityInterceptorTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityInterceptorTests.java
@@ -198,7 +198,6 @@ public class MethodSecurityInterceptorTests {
given(this.adm.supports(MethodInvocation.class)).willReturn(true);
given(this.mds.supports(MethodInvocation.class)).willReturn(true);
given(this.mds.getAllConfigAttributes()).willReturn(null);
-
this.interceptor.setValidateConfigAttributes(true);
this.interceptor.afterPropertiesSet();
verify(this.adm, never()).supports(any(ConfigAttribute.class));
@@ -224,10 +223,8 @@ public class MethodSecurityInterceptorTests {
public void callIsntMadeWhenAuthenticationManagerRejectsAuthentication() {
final TestingAuthenticationToken token = new TestingAuthenticationToken("Test", "Password");
SecurityContextHolder.getContext().setAuthentication(token);
-
mdsReturnsUserRole();
given(this.authman.authenticate(token)).willThrow(new BadCredentialsException("rejected"));
-
this.advisedTarget.makeLowerCase("HELLO");
}
@@ -237,9 +234,7 @@ public class MethodSecurityInterceptorTests {
this.interceptor.setPublishAuthorizationSuccess(true);
SecurityContextHolder.getContext().setAuthentication(this.token);
mdsReturnsUserRole();
-
String result = this.advisedTarget.makeLowerCase("HELLO");
-
// Note we check the isAuthenticated remained true in following line
assertThat(result)
.isEqualTo("hello org.springframework.security.authentication.TestingAuthenticationToken true");
@@ -256,7 +251,6 @@ public class MethodSecurityInterceptorTests {
given(this.authman.authenticate(this.token)).willReturn(this.token);
willThrow(new AccessDeniedException("rejected")).given(this.adm).decide(any(Authentication.class),
any(MethodInvocation.class), any(List.class));
-
try {
this.advisedTarget.makeUpperCase("HELLO");
fail("Expected Exception");
@@ -282,7 +276,6 @@ public class MethodSecurityInterceptorTests {
this.interceptor.setRunAsManager(runAs);
mdsReturnsUserRole();
given(runAs.buildRunAs(eq(this.token), any(MethodInvocation.class), any(List.class))).willReturn(runAsToken);
-
String result = this.advisedTarget.makeUpperCase("hello");
assertThat(result).isEqualTo("HELLO org.springframework.security.access.intercept.RunAsUserToken true");
// Check we've changed back
@@ -304,14 +297,12 @@ public class MethodSecurityInterceptorTests {
this.interceptor.setRunAsManager(runAs);
mdsReturnsUserRole();
given(runAs.buildRunAs(eq(this.token), any(MethodInvocation.class), any(List.class))).willReturn(runAsToken);
-
try {
this.advisedTarget.makeUpperCase("hello");
fail("Expected Exception");
}
catch (RuntimeException success) {
}
-
// Check we've changed back
assertThat(SecurityContextHolder.getContext()).isSameAs(ctx);
assertThat(SecurityContextHolder.getContext().getAuthentication()).isSameAs(this.token);
@@ -329,19 +320,15 @@ public class MethodSecurityInterceptorTests {
this.token.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(this.token);
mdsReturnsUserRole();
-
AfterInvocationManager aim = mock(AfterInvocationManager.class);
this.interceptor.setAfterInvocationManager(aim);
-
given(mi.proceed()).willThrow(new Throwable());
-
try {
this.interceptor.invoke(mi);
fail("Expected exception");
}
catch (Throwable expected) {
}
-
verifyZeroInteractions(aim);
}
diff --git a/core/src/test/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityMetadataSourceAdvisorTests.java b/core/src/test/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityMetadataSourceAdvisorTests.java
index d9ea3b8857..297705c6e5 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityMetadataSourceAdvisorTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/aopalliance/MethodSecurityMetadataSourceAdvisorTests.java
@@ -39,7 +39,6 @@ public class MethodSecurityMetadataSourceAdvisorTests {
public void testAdvisorReturnsFalseWhenMethodInvocationNotDefined() throws Exception {
Class clazz = TargetObject.class;
Method method = clazz.getMethod("makeLowerCase", new Class[] { String.class });
-
MethodSecurityMetadataSource mds = mock(MethodSecurityMetadataSource.class);
given(mds.getAttributes(method, clazz)).willReturn(null);
MethodSecurityMetadataSourceAdvisor advisor = new MethodSecurityMetadataSourceAdvisor("", mds, "");
@@ -50,7 +49,6 @@ public class MethodSecurityMetadataSourceAdvisorTests {
public void testAdvisorReturnsTrueWhenMethodInvocationIsDefined() throws Exception {
Class clazz = TargetObject.class;
Method method = clazz.getMethod("countLength", new Class[] { String.class });
-
MethodSecurityMetadataSource mds = mock(MethodSecurityMetadataSource.class);
given(mds.getAttributes(method, clazz)).willReturn(SecurityConfig.createList("ROLE_A"));
MethodSecurityMetadataSourceAdvisor advisor = new MethodSecurityMetadataSourceAdvisor("", mds, "");
diff --git a/core/src/test/java/org/springframework/security/access/intercept/aspectj/AspectJMethodSecurityInterceptorTests.java b/core/src/test/java/org/springframework/security/access/intercept/aspectj/AspectJMethodSecurityInterceptorTests.java
index f156277895..6ea44ac332 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/aspectj/AspectJMethodSecurityInterceptorTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/aspectj/AspectJMethodSecurityInterceptorTests.java
@@ -114,7 +114,6 @@ public class AspectJMethodSecurityInterceptorTests {
SecurityContextHolder.getContext().setAuthentication(this.token);
this.interceptor.invoke(this.joinPoint, this.aspectJCallback);
verify(this.aspectJCallback).proceedWithObject();
-
// Just try the other method too
this.interceptor.invoke(this.joinPoint);
}
@@ -123,7 +122,6 @@ public class AspectJMethodSecurityInterceptorTests {
@Test
public void callbackIsNotInvokedWhenPermissionDenied() {
willThrow(new AccessDeniedException("denied")).given(this.adm).decide(any(), any(), any());
-
SecurityContextHolder.getContext().setAuthentication(this.token);
try {
this.interceptor.invoke(this.joinPoint, this.aspectJCallback);
@@ -138,7 +136,6 @@ public class AspectJMethodSecurityInterceptorTests {
public void adapterHoldsCorrectData() {
TargetObject to = new TargetObject();
Method m = ClassUtils.getMethodIfAvailable(TargetObject.class, "countLength", new Class[] { String.class });
-
given(this.joinPoint.getTarget()).willReturn(to);
given(this.joinPoint.getArgs()).willReturn(new Object[] { "Hi" });
MethodInvocationAdapter mia = new MethodInvocationAdapter(this.joinPoint);
@@ -152,19 +149,15 @@ public class AspectJMethodSecurityInterceptorTests {
public void afterInvocationManagerIsNotInvokedIfExceptionIsRaised() {
this.token.setAuthenticated(true);
SecurityContextHolder.getContext().setAuthentication(this.token);
-
AfterInvocationManager aim = mock(AfterInvocationManager.class);
this.interceptor.setAfterInvocationManager(aim);
-
given(this.aspectJCallback.proceedWithObject()).willThrow(new RuntimeException());
-
try {
this.interceptor.invoke(this.joinPoint, this.aspectJCallback);
fail("Expected exception");
}
catch (RuntimeException expected) {
}
-
verifyZeroInteractions(aim);
}
@@ -181,14 +174,12 @@ public class AspectJMethodSecurityInterceptorTests {
this.interceptor.setRunAsManager(runAs);
given(runAs.buildRunAs(eq(this.token), any(MethodInvocation.class), any(List.class))).willReturn(runAsToken);
given(this.aspectJCallback.proceedWithObject()).willThrow(new RuntimeException());
-
try {
this.interceptor.invoke(this.joinPoint, this.aspectJCallback);
fail("Expected Exception");
}
catch (RuntimeException success) {
}
-
// Check we've changed back
assertThat(SecurityContextHolder.getContext()).isSameAs(ctx);
assertThat(SecurityContextHolder.getContext().getAuthentication()).isSameAs(this.token);
@@ -207,14 +198,12 @@ public class AspectJMethodSecurityInterceptorTests {
this.interceptor.setRunAsManager(runAs);
given(runAs.buildRunAs(eq(this.token), any(MethodInvocation.class), any(List.class))).willReturn(runAsToken);
given(this.joinPoint.proceed()).willThrow(new RuntimeException());
-
try {
this.interceptor.invoke(this.joinPoint);
fail("Expected Exception");
}
catch (RuntimeException success) {
}
-
// Check we've changed back
assertThat(SecurityContextHolder.getContext()).isSameAs(ctx);
assertThat(SecurityContextHolder.getContext().getAuthentication()).isSameAs(this.token);
diff --git a/core/src/test/java/org/springframework/security/access/intercept/method/MapBasedMethodSecurityMetadataSourceTests.java b/core/src/test/java/org/springframework/security/access/intercept/method/MapBasedMethodSecurityMetadataSourceTests.java
index 9236bb38d8..ae3c44b91e 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/method/MapBasedMethodSecurityMetadataSourceTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/method/MapBasedMethodSecurityMetadataSourceTests.java
@@ -64,7 +64,6 @@ public class MapBasedMethodSecurityMetadataSourceTests {
public void methodsWithDifferentArgumentsAreMatchedCorrectly() {
this.mds.addSecureMethod(MockService.class, this.someMethodInteger, this.ROLE_A);
this.mds.addSecureMethod(MockService.class, this.someMethodString, this.ROLE_B);
-
assertThat(this.mds.getAttributes(this.someMethodInteger, MockService.class)).isEqualTo(this.ROLE_A);
assertThat(this.mds.getAttributes(this.someMethodString, MockService.class)).isEqualTo(this.ROLE_B);
}
diff --git a/core/src/test/java/org/springframework/security/access/intercept/method/MethodInvocationPrivilegeEvaluatorTests.java b/core/src/test/java/org/springframework/security/access/intercept/method/MethodInvocationPrivilegeEvaluatorTests.java
index bd0a55037d..a9e89fa1e5 100644
--- a/core/src/test/java/org/springframework/security/access/intercept/method/MethodInvocationPrivilegeEvaluatorTests.java
+++ b/core/src/test/java/org/springframework/security/access/intercept/method/MethodInvocationPrivilegeEvaluatorTests.java
@@ -78,13 +78,10 @@ public class MethodInvocationPrivilegeEvaluatorTests {
public void allowsAccessUsingCreate() throws Exception {
Object object = new TargetObject();
final MethodInvocation mi = MethodInvocationUtils.create(object, "makeLowerCase", "foobar");
-
MethodInvocationPrivilegeEvaluator mipe = new MethodInvocationPrivilegeEvaluator();
given(this.mds.getAttributes(mi)).willReturn(this.role);
-
mipe.setSecurityInterceptor(this.interceptor);
mipe.afterPropertiesSet();
-
assertThat(mipe.isAllowed(mi, this.token)).isTrue();
}
@@ -95,7 +92,6 @@ public class MethodInvocationPrivilegeEvaluatorTests {
MethodInvocationPrivilegeEvaluator mipe = new MethodInvocationPrivilegeEvaluator();
mipe.setSecurityInterceptor(this.interceptor);
given(this.mds.getAttributes(mi)).willReturn(this.role);
-
assertThat(mipe.isAllowed(mi, this.token)).isTrue();
}
@@ -107,7 +103,6 @@ public class MethodInvocationPrivilegeEvaluatorTests {
mipe.setSecurityInterceptor(this.interceptor);
given(this.mds.getAttributes(mi)).willReturn(this.role);
willThrow(new AccessDeniedException("rejected")).given(this.adm).decide(this.token, mi, this.role);
-
assertThat(mipe.isAllowed(mi, this.token)).isFalse();
}
@@ -115,12 +110,10 @@ public class MethodInvocationPrivilegeEvaluatorTests {
public void declinesAccessUsingCreateFromClass() {
final MethodInvocation mi = MethodInvocationUtils.createFromClass(new OtherTargetObject(), ITargetObject.class,
"makeLowerCase", new Class[] { String.class }, new Object[] { "helloWorld" });
-
MethodInvocationPrivilegeEvaluator mipe = new MethodInvocationPrivilegeEvaluator();
mipe.setSecurityInterceptor(this.interceptor);
given(this.mds.getAttributes(mi)).willReturn(this.role);
willThrow(new AccessDeniedException("rejected")).given(this.adm).decide(this.token, mi, this.role);
-
assertThat(mipe.isAllowed(mi, this.token)).isFalse();
}
diff --git a/core/src/test/java/org/springframework/security/access/vote/AbstractAccessDecisionManagerTests.java b/core/src/test/java/org/springframework/security/access/vote/AbstractAccessDecisionManagerTests.java
index 46e5985dab..b0cfe45d60 100644
--- a/core/src/test/java/org/springframework/security/access/vote/AbstractAccessDecisionManagerTests.java
+++ b/core/src/test/java/org/springframework/security/access/vote/AbstractAccessDecisionManagerTests.java
@@ -54,9 +54,7 @@ public class AbstractAccessDecisionManagerTests {
List list = new Vector();
list.add(new DenyVoter());
list.add(new MockStringOnlyVoter());
-
MockDecisionManagerImpl mock = new MockDecisionManagerImpl(list);
-
assertThat(mock.supports(String.class)).isTrue();
assertThat(!mock.supports(Integer.class)).isTrue();
}
@@ -68,12 +66,9 @@ public class AbstractAccessDecisionManagerTests {
DenyAgainVoter denyVoter = new DenyAgainVoter();
list.add(voter);
list.add(denyVoter);
-
MockDecisionManagerImpl mock = new MockDecisionManagerImpl(list);
-
ConfigAttribute attr = new SecurityConfig("DENY_AGAIN_FOR_SURE");
assertThat(mock.supports(attr)).isTrue();
-
ConfigAttribute badAttr = new SecurityConfig("WE_DONT_SUPPORT_THIS");
assertThat(!mock.supports(badAttr)).isTrue();
}
@@ -92,13 +87,11 @@ public class AbstractAccessDecisionManagerTests {
@Test
public void testRejectsEmptyList() {
List list = new Vector();
-
try {
new MockDecisionManagerImpl(list);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@@ -109,7 +102,6 @@ public class AbstractAccessDecisionManagerTests {
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@@ -126,7 +118,6 @@ public class AbstractAccessDecisionManagerTests {
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
diff --git a/core/src/test/java/org/springframework/security/access/vote/AffirmativeBasedTests.java b/core/src/test/java/org/springframework/security/access/vote/AffirmativeBasedTests.java
index e03cbc3cb9..d11135de93 100644
--- a/core/src/test/java/org/springframework/security/access/vote/AffirmativeBasedTests.java
+++ b/core/src/test/java/org/springframework/security/access/vote/AffirmativeBasedTests.java
@@ -56,11 +56,9 @@ public class AffirmativeBasedTests {
@Before
@SuppressWarnings("unchecked")
public void setup() {
-
this.grant = mock(AccessDecisionVoter.class);
this.abstain = mock(AccessDecisionVoter.class);
this.deny = mock(AccessDecisionVoter.class);
-
given(this.grant.vote(any(Authentication.class), any(Object.class), any(List.class)))
.willReturn(AccessDecisionVoter.ACCESS_GRANTED);
given(this.abstain.vote(any(Authentication.class), any(Object.class), any(List.class)))
@@ -71,7 +69,6 @@ public class AffirmativeBasedTests {
@Test
public void oneAffirmativeVoteOneDenyVoteOneAbstainVoteGrantsAccess() throws Exception {
-
this.mgr = new AffirmativeBased(
Arrays.>asList(this.grant, this.deny, this.abstain));
this.mgr.afterPropertiesSet();
@@ -104,7 +101,6 @@ public class AffirmativeBasedTests {
this.mgr = new AffirmativeBased(
Arrays.>asList(this.abstain, this.abstain, this.abstain));
assertThat(!this.mgr.isAllowIfAllAbstainDecisions()).isTrue(); // check default
-
this.mgr.decide(this.user, new Object(), this.attrs);
}
@@ -114,7 +110,6 @@ public class AffirmativeBasedTests {
Arrays.>asList(this.abstain, this.abstain, this.abstain));
this.mgr.setAllowIfAllAbstainDecisions(true);
assertThat(this.mgr.isAllowIfAllAbstainDecisions()).isTrue(); // check changed
-
this.mgr.decide(this.user, new Object(), this.attrs);
}
diff --git a/core/src/test/java/org/springframework/security/access/vote/AuthenticatedVoterTests.java b/core/src/test/java/org/springframework/security/access/vote/AuthenticatedVoterTests.java
index 4cc37d0c70..595bd55fc9 100644
--- a/core/src/test/java/org/springframework/security/access/vote/AuthenticatedVoterTests.java
+++ b/core/src/test/java/org/springframework/security/access/vote/AuthenticatedVoterTests.java
@@ -82,13 +82,11 @@ public class AuthenticatedVoterTests {
@Test
public void testSetterRejectsNull() {
AuthenticatedVoter voter = new AuthenticatedVoter();
-
try {
voter.setAuthenticationTrustResolver(null);
fail("Expected IAE");
}
catch (IllegalArgumentException expected) {
-
}
}
diff --git a/core/src/test/java/org/springframework/security/access/vote/ConsensusBasedTests.java b/core/src/test/java/org/springframework/security/access/vote/ConsensusBasedTests.java
index 0392e921c1..647387d2aa 100644
--- a/core/src/test/java/org/springframework/security/access/vote/ConsensusBasedTests.java
+++ b/core/src/test/java/org/springframework/security/access/vote/ConsensusBasedTests.java
@@ -43,9 +43,7 @@ public class ConsensusBasedTests {
ConsensusBased mgr = makeDecisionManager();
mgr.setAllowIfEqualGrantedDeniedDecisions(false);
assertThat(!mgr.isAllowIfEqualGrantedDeniedDecisions()).isTrue(); // check changed
-
List config = SecurityConfig.createList("ROLE_1", "DENY_FOR_SURE");
-
mgr.decide(auth, new Object(), config);
}
@@ -53,29 +51,22 @@ public class ConsensusBasedTests {
public void testOneAffirmativeVoteOneDenyVoteOneAbstainVoteGrantsAccessWithDefault() {
TestingAuthenticationToken auth = makeTestToken();
ConsensusBased mgr = makeDecisionManager();
-
assertThat(mgr.isAllowIfEqualGrantedDeniedDecisions()).isTrue(); // check default
-
List config = SecurityConfig.createList("ROLE_1", "DENY_FOR_SURE");
-
mgr.decide(auth, new Object(), config);
-
}
@Test
public void testOneAffirmativeVoteTwoAbstainVotesGrantsAccess() {
TestingAuthenticationToken auth = makeTestToken();
ConsensusBased mgr = makeDecisionManager();
-
mgr.decide(auth, new Object(), SecurityConfig.createList("ROLE_2"));
-
}
@Test(expected = AccessDeniedException.class)
public void testOneDenyVoteTwoAbstainVotesDeniesAccess() {
TestingAuthenticationToken auth = makeTestToken();
ConsensusBased mgr = makeDecisionManager();
-
mgr.decide(auth, new Object(), SecurityConfig.createList("ROLE_WE_DO_NOT_HAVE"));
fail("Should have thrown AccessDeniedException");
}
@@ -84,9 +75,7 @@ public class ConsensusBasedTests {
public void testThreeAbstainVotesDeniesAccessWithDefault() {
TestingAuthenticationToken auth = makeTestToken();
ConsensusBased mgr = makeDecisionManager();
-
assertThat(!mgr.isAllowIfAllAbstainDecisions()).isTrue(); // check default
-
mgr.decide(auth, new Object(), SecurityConfig.createList("IGNORED_BY_ALL"));
}
@@ -96,7 +85,6 @@ public class ConsensusBasedTests {
ConsensusBased mgr = makeDecisionManager();
mgr.setAllowIfAllAbstainDecisions(true);
assertThat(mgr.isAllowIfAllAbstainDecisions()).isTrue(); // check changed
-
mgr.decide(auth, new Object(), SecurityConfig.createList("IGNORED_BY_ALL"));
}
@@ -104,7 +92,6 @@ public class ConsensusBasedTests {
public void testTwoAffirmativeVotesTwoAbstainVotesGrantsAccess() {
TestingAuthenticationToken auth = makeTestToken();
ConsensusBased mgr = makeDecisionManager();
-
mgr.decide(auth, new Object(), SecurityConfig.createList("ROLE_1", "ROLE_2"));
}
@@ -116,7 +103,6 @@ public class ConsensusBasedTests {
voters.add(roleVoter);
voters.add(denyForSureVoter);
voters.add(denyAgainForSureVoter);
-
return new ConsensusBased(voters);
}
diff --git a/core/src/test/java/org/springframework/security/access/vote/DenyAgainVoter.java b/core/src/test/java/org/springframework/security/access/vote/DenyAgainVoter.java
index f6e2977982..4d59a0173b 100644
--- a/core/src/test/java/org/springframework/security/access/vote/DenyAgainVoter.java
+++ b/core/src/test/java/org/springframework/security/access/vote/DenyAgainVoter.java
@@ -48,15 +48,12 @@ public class DenyAgainVoter implements AccessDecisionVoter {
@Override
public int vote(Authentication authentication, Object object, Collection attributes) {
Iterator iter = attributes.iterator();
-
while (iter.hasNext()) {
ConfigAttribute attribute = iter.next();
-
if (this.supports(attribute)) {
return ACCESS_DENIED;
}
}
-
return ACCESS_ABSTAIN;
}
diff --git a/core/src/test/java/org/springframework/security/access/vote/DenyVoter.java b/core/src/test/java/org/springframework/security/access/vote/DenyVoter.java
index ae548752f1..b20964b020 100644
--- a/core/src/test/java/org/springframework/security/access/vote/DenyVoter.java
+++ b/core/src/test/java/org/springframework/security/access/vote/DenyVoter.java
@@ -50,15 +50,12 @@ public class DenyVoter implements AccessDecisionVoter {
@Override
public int vote(Authentication authentication, Object object, Collection attributes) {
Iterator iter = attributes.iterator();
-
while (iter.hasNext()) {
ConfigAttribute attribute = iter.next();
-
if (this.supports(attribute)) {
return ACCESS_DENIED;
}
}
-
return ACCESS_ABSTAIN;
}
diff --git a/core/src/test/java/org/springframework/security/access/vote/RoleHierarchyVoterTests.java b/core/src/test/java/org/springframework/security/access/vote/RoleHierarchyVoterTests.java
index 9dd3cc940d..806ec7416b 100644
--- a/core/src/test/java/org/springframework/security/access/vote/RoleHierarchyVoterTests.java
+++ b/core/src/test/java/org/springframework/security/access/vote/RoleHierarchyVoterTests.java
@@ -31,11 +31,9 @@ public class RoleHierarchyVoterTests {
public void hierarchicalRoleIsIncludedInDecision() {
RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl();
roleHierarchyImpl.setHierarchy("ROLE_A > ROLE_B");
-
// User has role A, role B is required
TestingAuthenticationToken auth = new TestingAuthenticationToken("user", "password", "ROLE_A");
RoleHierarchyVoter voter = new RoleHierarchyVoter(roleHierarchyImpl);
-
assertThat(voter.vote(auth, new Object(), SecurityConfig.createList("ROLE_B")))
.isEqualTo(AccessDecisionVoter.ACCESS_GRANTED);
}
diff --git a/core/src/test/java/org/springframework/security/access/vote/UnanimousBasedTests.java b/core/src/test/java/org/springframework/security/access/vote/UnanimousBasedTests.java
index 2c204ea270..943d31da0a 100644
--- a/core/src/test/java/org/springframework/security/access/vote/UnanimousBasedTests.java
+++ b/core/src/test/java/org/springframework/security/access/vote/UnanimousBasedTests.java
@@ -51,7 +51,6 @@ public class UnanimousBasedTests {
private UnanimousBased makeDecisionManagerWithFooBarPrefix() {
RoleVoter roleVoter = new RoleVoter();
roleVoter.setRolePrefix("FOOBAR_");
-
DenyVoter denyForSureVoter = new DenyVoter();
DenyAgainVoter denyAgainForSureVoter = new DenyAgainVoter();
List> voters = new Vector<>();
@@ -73,9 +72,7 @@ public class UnanimousBasedTests {
public void testOneAffirmativeVoteOneDenyVoteOneAbstainVoteDeniesAccess() {
TestingAuthenticationToken auth = makeTestToken();
UnanimousBased mgr = makeDecisionManager();
-
List config = SecurityConfig.createList(new String[] { "ROLE_1", "DENY_FOR_SURE" });
-
try {
mgr.decide(auth, new Object(), config);
fail("Should have thrown AccessDeniedException");
@@ -88,9 +85,7 @@ public class UnanimousBasedTests {
public void testOneAffirmativeVoteTwoAbstainVotesGrantsAccess() {
TestingAuthenticationToken auth = makeTestToken();
UnanimousBased mgr = makeDecisionManager();
-
List config = SecurityConfig.createList("ROLE_2");
-
mgr.decide(auth, new Object(), config);
}
@@ -98,9 +93,7 @@ public class UnanimousBasedTests {
public void testOneDenyVoteTwoAbstainVotesDeniesAccess() {
TestingAuthenticationToken auth = makeTestToken();
UnanimousBased mgr = makeDecisionManager();
-
List config = SecurityConfig.createList("ROLE_WE_DO_NOT_HAVE");
-
try {
mgr.decide(auth, new Object(), config);
fail("Should have thrown AccessDeniedException");
@@ -113,9 +106,7 @@ public class UnanimousBasedTests {
public void testRoleVoterPrefixObserved() {
TestingAuthenticationToken auth = makeTestTokenWithFooBarPrefix();
UnanimousBased mgr = makeDecisionManagerWithFooBarPrefix();
-
List config = SecurityConfig.createList(new String[] { "FOOBAR_1", "FOOBAR_2" });
-
mgr.decide(auth, new Object(), config);
}
@@ -123,11 +114,8 @@ public class UnanimousBasedTests {
public void testThreeAbstainVotesDeniesAccessWithDefault() {
TestingAuthenticationToken auth = makeTestToken();
UnanimousBased mgr = makeDecisionManager();
-
assertThat(!mgr.isAllowIfAllAbstainDecisions()).isTrue(); // check default
-
List config = SecurityConfig.createList("IGNORED_BY_ALL");
-
try {
mgr.decide(auth, new Object(), config);
fail("Should have thrown AccessDeniedException");
@@ -142,9 +130,7 @@ public class UnanimousBasedTests {
UnanimousBased mgr = makeDecisionManager();
mgr.setAllowIfAllAbstainDecisions(true);
assertThat(mgr.isAllowIfAllAbstainDecisions()).isTrue(); // check changed
-
List config = SecurityConfig.createList("IGNORED_BY_ALL");
-
mgr.decide(auth, new Object(), config);
}
@@ -152,9 +138,7 @@ public class UnanimousBasedTests {
public void testTwoAffirmativeVotesTwoAbstainVotesGrantsAccess() {
TestingAuthenticationToken auth = makeTestToken();
UnanimousBased mgr = makeDecisionManager();
-
List config = SecurityConfig.createList(new String[] { "ROLE_1", "ROLE_2" });
-
mgr.decide(auth, new Object(), config);
}
diff --git a/core/src/test/java/org/springframework/security/authentication/AbstractAuthenticationTokenTests.java b/core/src/test/java/org/springframework/security/authentication/AbstractAuthenticationTokenTests.java
index fa7219294a..90c0f82f4a 100644
--- a/core/src/test/java/org/springframework/security/authentication/AbstractAuthenticationTokenTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/AbstractAuthenticationTokenTests.java
@@ -51,7 +51,6 @@ public class AbstractAuthenticationTokenTests {
MockAuthenticationImpl token = new MockAuthenticationImpl("Test", "Password", this.authorities);
List gotAuthorities = (List) token.getAuthorities();
assertThat(gotAuthorities).isNotSameAs(this.authorities);
-
gotAuthorities.set(0, new SimpleGrantedAuthority("ROLE_SUPER_USER"));
}
@@ -70,9 +69,7 @@ public class AbstractAuthenticationTokenTests {
MockAuthenticationImpl token3 = new MockAuthenticationImpl(null, null, AuthorityUtils.NO_AUTHORITIES);
assertThat(token2.hashCode()).isEqualTo(token1.hashCode());
assertThat(token1.hashCode() != token3.hashCode()).isTrue();
-
token2.setAuthenticated(true);
-
assertThat(token1.hashCode() != token2.hashCode()).isTrue();
}
@@ -81,25 +78,19 @@ public class AbstractAuthenticationTokenTests {
MockAuthenticationImpl token1 = new MockAuthenticationImpl("Test", "Password", this.authorities);
MockAuthenticationImpl token2 = new MockAuthenticationImpl("Test", "Password", this.authorities);
assertThat(token2).isEqualTo(token1);
-
MockAuthenticationImpl token3 = new MockAuthenticationImpl("Test", "Password_Changed", this.authorities);
assertThat(!token1.equals(token3)).isTrue();
-
MockAuthenticationImpl token4 = new MockAuthenticationImpl("Test_Changed", "Password", this.authorities);
assertThat(!token1.equals(token4)).isTrue();
-
MockAuthenticationImpl token5 = new MockAuthenticationImpl("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO_CHANGED"));
assertThat(!token1.equals(token5)).isTrue();
-
MockAuthenticationImpl token6 = new MockAuthenticationImpl("Test", "Password",
AuthorityUtils.createAuthorityList("ROLE_ONE"));
assertThat(!token1.equals(token6)).isTrue();
-
MockAuthenticationImpl token7 = new MockAuthenticationImpl("Test", "Password", null);
assertThat(!token1.equals(token7)).isTrue();
assertThat(!token7.equals(token1)).isTrue();
-
assertThat(!token1.equals(100)).isTrue();
}
@@ -126,10 +117,8 @@ public class AbstractAuthenticationTokenTests {
@Test
public void testGetNameWhenPrincipalIsAuthenticatedPrincipal() {
String principalName = "test";
-
AuthenticatedPrincipal principal = mock(AuthenticatedPrincipal.class);
given(principal.getName()).willReturn(principalName);
-
MockAuthenticationImpl token = new MockAuthenticationImpl(principal, "Password", this.authorities);
assertThat(token.getName()).isEqualTo(principalName);
verify(principal, times(1)).getName();
diff --git a/core/src/test/java/org/springframework/security/authentication/AuthenticationTrustResolverImplTests.java b/core/src/test/java/org/springframework/security/authentication/AuthenticationTrustResolverImplTests.java
index 63010817d8..fa476f0738 100644
--- a/core/src/test/java/org/springframework/security/authentication/AuthenticationTrustResolverImplTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/AuthenticationTrustResolverImplTests.java
@@ -55,11 +55,9 @@ public class AuthenticationTrustResolverImplTests {
@Test
public void testGettersSetters() {
AuthenticationTrustResolverImpl trustResolver = new AuthenticationTrustResolverImpl();
-
assertThat(AnonymousAuthenticationToken.class).isEqualTo(trustResolver.getAnonymousClass());
trustResolver.setAnonymousClass(TestingAuthenticationToken.class);
assertThat(trustResolver.getAnonymousClass()).isEqualTo(TestingAuthenticationToken.class);
-
assertThat(RememberMeAuthenticationToken.class).isEqualTo(trustResolver.getRememberMeClass());
trustResolver.setRememberMeClass(TestingAuthenticationToken.class);
assertThat(trustResolver.getRememberMeClass()).isEqualTo(TestingAuthenticationToken.class);
diff --git a/core/src/test/java/org/springframework/security/authentication/DefaultAuthenticationEventPublisherTests.java b/core/src/test/java/org/springframework/security/authentication/DefaultAuthenticationEventPublisherTests.java
index 111e33cb3b..6a7ac10f3e 100644
--- a/core/src/test/java/org/springframework/security/authentication/DefaultAuthenticationEventPublisherTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/DefaultAuthenticationEventPublisherTests.java
@@ -57,7 +57,6 @@ public class DefaultAuthenticationEventPublisherTests {
ApplicationEventPublisher appPublisher = mock(ApplicationEventPublisher.class);
this.publisher.setApplicationEventPublisher(appPublisher);
Authentication a = mock(Authentication.class);
-
Exception cause = new Exception();
Object extraInfo = new Object();
this.publisher.publishAuthenticationFailure(new BadCredentialsException(""), a);
@@ -94,7 +93,6 @@ public class DefaultAuthenticationEventPublisherTests {
this.publisher.setApplicationEventPublisher(appPublisher);
this.publisher.publishAuthenticationSuccess(mock(Authentication.class));
verify(appPublisher).publishEvent(isA(AuthenticationSuccessEvent.class));
-
this.publisher.setApplicationEventPublisher(null);
// Should be ignored with null app publisher
this.publisher.publishAuthenticationSuccess(mock(Authentication.class));
@@ -107,7 +105,6 @@ public class DefaultAuthenticationEventPublisherTests {
p.put(MockAuthenticationException.class.getName(), AuthenticationFailureDisabledEvent.class.getName());
this.publisher.setAdditionalExceptionMappings(p);
ApplicationEventPublisher appPublisher = mock(ApplicationEventPublisher.class);
-
this.publisher.setApplicationEventPublisher(appPublisher);
this.publisher.publishAuthenticationFailure(new MockAuthenticationException("test"),
mock(Authentication.class));
@@ -129,7 +126,6 @@ public class DefaultAuthenticationEventPublisherTests {
p.put(MockAuthenticationException.class.getName(), AuthenticationFailureDisabledEvent.class.getName());
this.publisher.setAdditionalExceptionMappings(p);
ApplicationEventPublisher appPublisher = mock(ApplicationEventPublisher.class);
-
this.publisher.setApplicationEventPublisher(appPublisher);
this.publisher.publishAuthenticationFailure(new AuthenticationException("") {
}, mock(Authentication.class));
@@ -166,7 +162,6 @@ public class DefaultAuthenticationEventPublisherTests {
mappings.put(MockAuthenticationException.class, AuthenticationFailureDisabledEvent.class);
this.publisher.setAdditionalExceptionMappings(mappings);
ApplicationEventPublisher appPublisher = mock(ApplicationEventPublisher.class);
-
this.publisher.setApplicationEventPublisher(appPublisher);
this.publisher.publishAuthenticationFailure(new MockAuthenticationException("test"),
mock(Authentication.class));
@@ -184,7 +179,6 @@ public class DefaultAuthenticationEventPublisherTests {
this.publisher = new DefaultAuthenticationEventPublisher();
this.publisher.setDefaultAuthenticationFailureEvent(AuthenticationFailureBadCredentialsEvent.class);
ApplicationEventPublisher appPublisher = mock(ApplicationEventPublisher.class);
-
this.publisher.setApplicationEventPublisher(appPublisher);
this.publisher.publishAuthenticationFailure(new AuthenticationException("") {
}, mock(Authentication.class));
diff --git a/core/src/test/java/org/springframework/security/authentication/DelegatingReactiveAuthenticationManagerTests.java b/core/src/test/java/org/springframework/security/authentication/DelegatingReactiveAuthenticationManagerTests.java
index 23394aef94..71e73e044c 100644
--- a/core/src/test/java/org/springframework/security/authentication/DelegatingReactiveAuthenticationManagerTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/DelegatingReactiveAuthenticationManagerTests.java
@@ -51,10 +51,8 @@ public class DelegatingReactiveAuthenticationManagerTests {
public void authenticateWhenEmptyAndNotThenReturnsNotEmpty() {
given(this.delegate1.authenticate(any())).willReturn(Mono.empty());
given(this.delegate2.authenticate(any())).willReturn(Mono.just(this.authentication));
-
DelegatingReactiveAuthenticationManager manager = new DelegatingReactiveAuthenticationManager(this.delegate1,
this.delegate2);
-
assertThat(manager.authenticate(this.authentication).block()).isEqualTo(this.authentication);
}
@@ -64,20 +62,16 @@ public class DelegatingReactiveAuthenticationManagerTests {
// flatMap)
given(this.delegate1.authenticate(any()))
.willReturn(Mono.just(this.authentication).delayElement(Duration.ofMillis(100)));
-
DelegatingReactiveAuthenticationManager manager = new DelegatingReactiveAuthenticationManager(this.delegate1,
this.delegate2);
-
StepVerifier.create(manager.authenticate(this.authentication)).expectNext(this.authentication).verifyComplete();
}
@Test
public void authenticateWhenBadCredentialsThenDelegate2NotInvokedAndError() {
given(this.delegate1.authenticate(any())).willReturn(Mono.error(new BadCredentialsException("Test")));
-
DelegatingReactiveAuthenticationManager manager = new DelegatingReactiveAuthenticationManager(this.delegate1,
this.delegate2);
-
StepVerifier.create(manager.authenticate(this.authentication)).expectError(BadCredentialsException.class)
.verify();
}
diff --git a/core/src/test/java/org/springframework/security/authentication/ProviderManagerTests.java b/core/src/test/java/org/springframework/security/authentication/ProviderManagerTests.java
index 711ffccfac..b75f9dcf8c 100644
--- a/core/src/test/java/org/springframework/security/authentication/ProviderManagerTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/ProviderManagerTests.java
@@ -69,7 +69,6 @@ public class ProviderManagerTests {
ProviderManager mgr = makeProviderManager();
Authentication result = mgr.authenticate(token);
assertThat(result.getCredentials()).isNull();
-
mgr.setEraseCredentialsAfterAuthentication(false);
token = new UsernamePasswordAuthenticationToken("Test", "Password");
result = mgr.authenticate(token);
@@ -82,7 +81,6 @@ public class ProviderManagerTests {
ProviderManager mgr = new ProviderManager(createProviderWhichReturns(a));
AuthenticationEventPublisher publisher = mock(AuthenticationEventPublisher.class);
mgr.setAuthenticationEventPublisher(publisher);
-
Authentication result = mgr.authenticate(a);
assertThat(result).isEqualTo(a);
verify(publisher).publishAuthenticationSuccess(result);
@@ -95,7 +93,6 @@ public class ProviderManagerTests {
Arrays.asList(createProviderWhichReturns(null), createProviderWhichReturns(a)));
AuthenticationEventPublisher publisher = mock(AuthenticationEventPublisher.class);
mgr.setAuthenticationEventPublisher(publisher);
-
Authentication result = mgr.authenticate(a);
assertThat(result).isSameAs(a);
verify(publisher).publishAuthenticationSuccess(result);
@@ -130,7 +127,6 @@ public class ProviderManagerTests {
public void detailsAreNotSetOnAuthenticationTokenIfAlreadySetByProvider() {
Object requestDetails = "(Request Details)";
final Object resultDetails = "(Result Details)";
-
// A provider which sets the details object
AuthenticationProvider provider = new AuthenticationProvider() {
@Override
@@ -144,12 +140,9 @@ public class ProviderManagerTests {
return true;
}
};
-
ProviderManager authMgr = new ProviderManager(provider);
-
TestingAuthenticationToken request = createAuthenticationToken();
request.setDetails(requestDetails);
-
Authentication result = authMgr.authenticate(request);
assertThat(result.getDetails()).isEqualTo(resultDetails);
}
@@ -158,10 +151,8 @@ public class ProviderManagerTests {
public void detailsAreSetOnAuthenticationTokenIfNotAlreadySetByProvider() {
Object details = new Object();
ProviderManager authMgr = makeProviderManager();
-
TestingAuthenticationToken request = createAuthenticationToken();
request.setDetails(details);
-
Authentication result = authMgr.authenticate(request);
assertThat(result.getCredentials()).isNotNull();
assertThat(result.getDetails()).isSameAs(details);
@@ -178,7 +169,6 @@ public class ProviderManagerTests {
@Test
public void authenticationExceptionIsRethrownIfNoLaterProviderAuthenticates() {
-
ProviderManager mgr = new ProviderManager(Arrays
.asList(createProviderWhichThrows(new BadCredentialsException("")), createProviderWhichReturns(null)));
try {
@@ -195,9 +185,7 @@ public class ProviderManagerTests {
AuthenticationProvider iThrowAccountStatusException = createProviderWhichThrows(new AccountStatusException("") {
});
AuthenticationProvider otherProvider = mock(AuthenticationProvider.class);
-
ProviderManager authMgr = new ProviderManager(Arrays.asList(iThrowAccountStatusException, otherProvider));
-
try {
authMgr.authenticate(mock(Authentication.class));
fail("Expected AccountStatusException");
@@ -239,13 +227,11 @@ public class ProviderManagerTests {
AuthenticationEventPublisher publisher = mock(AuthenticationEventPublisher.class);
AuthenticationManager parent = mock(AuthenticationManager.class);
given(parent.authenticate(authReq)).willThrow(new ProviderNotFoundException(""));
-
// Set a provider that throws an exception - this is the exception we expect to be
// propagated
ProviderManager mgr = new ProviderManager(
Collections.singletonList(createProviderWhichThrows(new BadCredentialsException(""))), parent);
mgr.setAuthenticationEventPublisher(publisher);
-
try {
mgr.authenticate(authReq);
fail("Expected exception");
@@ -302,7 +288,6 @@ public class ProviderManagerTests {
ProviderManager mgr = new ProviderManager(Arrays.asList(createProviderWhichThrows(expected),
createProviderWhichThrows(new BadCredentialsException("Oops"))), null);
final Authentication authReq = mock(Authentication.class);
-
try {
mgr.authenticate(authReq);
fail("Expected Exception");
@@ -318,13 +303,10 @@ public class ProviderManagerTests {
ProviderManager parentMgr = new ProviderManager(createProviderWhichThrows(badCredentialsExParent));
ProviderManager childMgr = new ProviderManager(Collections.singletonList(
createProviderWhichThrows(new BadCredentialsException("Bad Credentials in child"))), parentMgr);
-
AuthenticationEventPublisher publisher = mock(AuthenticationEventPublisher.class);
parentMgr.setAuthenticationEventPublisher(publisher);
childMgr.setAuthenticationEventPublisher(publisher);
-
final Authentication authReq = mock(Authentication.class);
-
try {
childMgr.authenticate(authReq);
fail("Expected exception");
@@ -341,7 +323,6 @@ public class ProviderManagerTests {
AuthenticationProvider provider = mock(AuthenticationProvider.class);
given(provider.supports(any(Class.class))).willReturn(true);
given(provider.authenticate(any(Authentication.class))).willThrow(ex);
-
return provider;
}
@@ -349,7 +330,6 @@ public class ProviderManagerTests {
AuthenticationProvider provider = mock(AuthenticationProvider.class);
given(provider.supports(any(Class.class))).willReturn(true);
given(provider.authenticate(any(Authentication.class))).willReturn(a);
-
return provider;
}
diff --git a/core/src/test/java/org/springframework/security/authentication/ReactiveAuthenticationManagerAdapterTests.java b/core/src/test/java/org/springframework/security/authentication/ReactiveAuthenticationManagerAdapterTests.java
index 99cb38c3d3..7a4bbb3740 100644
--- a/core/src/test/java/org/springframework/security/authentication/ReactiveAuthenticationManagerAdapterTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/ReactiveAuthenticationManagerAdapterTests.java
@@ -64,27 +64,21 @@ public class ReactiveAuthenticationManagerAdapterTests {
public void authenticateWhenSuccessThenSuccess() {
given(this.delegate.authenticate(any())).willReturn(this.authentication);
given(this.authentication.isAuthenticated()).willReturn(true);
-
Authentication result = this.manager.authenticate(this.authentication).block();
-
assertThat(result).isEqualTo(this.authentication);
}
@Test
public void authenticateWhenReturnNotAuthenticatedThenError() {
given(this.delegate.authenticate(any())).willReturn(this.authentication);
-
Authentication result = this.manager.authenticate(this.authentication).block();
-
assertThat(result).isNull();
}
@Test
public void authenticateWhenBadCredentialsThenError() {
given(this.delegate.authenticate(any())).willThrow(new BadCredentialsException("Failed"));
-
Mono result = this.manager.authenticate(this.authentication);
-
StepVerifier.create(result).expectError(BadCredentialsException.class).verify();
}
diff --git a/core/src/test/java/org/springframework/security/authentication/ReactiveUserDetailsServiceAuthenticationManagerTests.java b/core/src/test/java/org/springframework/security/authentication/ReactiveUserDetailsServiceAuthenticationManagerTests.java
index d6fd522756..1887df9bb3 100644
--- a/core/src/test/java/org/springframework/security/authentication/ReactiveUserDetailsServiceAuthenticationManagerTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/ReactiveUserDetailsServiceAuthenticationManagerTests.java
@@ -71,11 +71,9 @@ public class ReactiveUserDetailsServiceAuthenticationManagerTests {
@Test
public void authenticateWhenUserNotFoundThenBadCredentials() {
given(this.repository.findByUsername(this.username)).willReturn(Mono.empty());
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.username,
this.password);
Mono authentication = this.manager.authenticate(token);
-
StepVerifier.create(authentication).expectError(BadCredentialsException.class).verify();
}
@@ -88,11 +86,9 @@ public class ReactiveUserDetailsServiceAuthenticationManagerTests {
.build();
// @formatter:on
given(this.repository.findByUsername(user.getUsername())).willReturn(Mono.just(user));
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.username,
this.password + "INVALID");
Mono authentication = this.manager.authenticate(token);
-
StepVerifier.create(authentication).expectError(BadCredentialsException.class).verify();
}
@@ -105,11 +101,9 @@ public class ReactiveUserDetailsServiceAuthenticationManagerTests {
.build();
// @formatter:on
given(this.repository.findByUsername(user.getUsername())).willReturn(Mono.just(user));
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.username,
this.password);
Authentication authentication = this.manager.authenticate(token).block();
-
assertThat(authentication).isEqualTo(authentication);
}
@@ -119,11 +113,9 @@ public class ReactiveUserDetailsServiceAuthenticationManagerTests {
given(this.passwordEncoder.matches(any(), any())).willReturn(true);
User user = new User(this.username, this.password, AuthorityUtils.createAuthorityList("ROLE_USER"));
given(this.repository.findByUsername(user.getUsername())).willReturn(Mono.just(user));
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.username,
this.password);
Authentication authentication = this.manager.authenticate(token).block();
-
assertThat(authentication).isEqualTo(authentication);
}
@@ -133,12 +125,9 @@ public class ReactiveUserDetailsServiceAuthenticationManagerTests {
given(this.passwordEncoder.matches(any(), any())).willReturn(false);
User user = new User(this.username, this.password, AuthorityUtils.createAuthorityList("ROLE_USER"));
given(this.repository.findByUsername(user.getUsername())).willReturn(Mono.just(user));
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.username,
this.password);
-
Mono authentication = this.manager.authenticate(token);
-
StepVerifier.create(authentication).expectError(BadCredentialsException.class).verify();
}
diff --git a/core/src/test/java/org/springframework/security/authentication/TestingAuthenticationProviderTests.java b/core/src/test/java/org/springframework/security/authentication/TestingAuthenticationProviderTests.java
index ec2a84e921..1435300fc8 100644
--- a/core/src/test/java/org/springframework/security/authentication/TestingAuthenticationProviderTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/TestingAuthenticationProviderTests.java
@@ -35,9 +35,7 @@ public class TestingAuthenticationProviderTests {
TestingAuthenticationProvider provider = new TestingAuthenticationProvider();
TestingAuthenticationToken token = new TestingAuthenticationToken("Test", "Password", "ROLE_ONE", "ROLE_TWO");
Authentication result = provider.authenticate(token);
-
assertThat(result instanceof TestingAuthenticationToken).isTrue();
-
TestingAuthenticationToken castResult = (TestingAuthenticationToken) result;
assertThat(castResult.getPrincipal()).isEqualTo("Test");
assertThat(castResult.getCredentials()).isEqualTo("Password");
diff --git a/core/src/test/java/org/springframework/security/authentication/TestingAuthenticationTokenTests.java b/core/src/test/java/org/springframework/security/authentication/TestingAuthenticationTokenTests.java
index 35ec2095b7..8b7c6f4617 100644
--- a/core/src/test/java/org/springframework/security/authentication/TestingAuthenticationTokenTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/TestingAuthenticationTokenTests.java
@@ -32,7 +32,6 @@ public class TestingAuthenticationTokenTests {
@Test
public void constructorWhenNoAuthoritiesThenUnauthenticated() {
TestingAuthenticationToken unauthenticated = new TestingAuthenticationToken("principal", "credentials");
-
assertThat(unauthenticated.isAuthenticated()).isFalse();
}
@@ -40,7 +39,6 @@ public class TestingAuthenticationTokenTests {
public void constructorWhenArityAuthoritiesThenAuthenticated() {
TestingAuthenticationToken authenticated = new TestingAuthenticationToken("principal", "credentials",
"authority");
-
assertThat(authenticated.isAuthenticated()).isTrue();
}
@@ -48,7 +46,6 @@ public class TestingAuthenticationTokenTests {
public void constructorWhenCollectionAuthoritiesThenAuthenticated() {
TestingAuthenticationToken authenticated = new TestingAuthenticationToken("principal", "credentials",
Arrays.asList(new SimpleGrantedAuthority("authority")));
-
assertThat(authenticated.isAuthenticated()).isTrue();
}
diff --git a/core/src/test/java/org/springframework/security/authentication/UserDetailsRepositoryReactiveAuthenticationManagerTests.java b/core/src/test/java/org/springframework/security/authentication/UserDetailsRepositoryReactiveAuthenticationManagerTests.java
index 1718a05da4..8c6362b14e 100644
--- a/core/src/test/java/org/springframework/security/authentication/UserDetailsRepositoryReactiveAuthenticationManagerTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/UserDetailsRepositoryReactiveAuthenticationManagerTests.java
@@ -72,7 +72,6 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
.roles("USER")
.build();
// @formatter:on
-
private UserDetailsRepositoryReactiveAuthenticationManager manager;
@Before
@@ -97,9 +96,7 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
this.manager.setPasswordEncoder(this.encoder);
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.user,
this.user.getPassword());
-
Authentication result = this.manager.authenticate(token).block();
-
verify(this.scheduler).schedule(any());
}
@@ -115,9 +112,7 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
this.manager.setUserDetailsPasswordService(this.userDetailsPasswordService);
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.user,
this.user.getPassword());
-
Authentication result = this.manager.authenticate(token).block();
-
verify(this.encoder).encode(this.user.getPassword());
verify(this.userDetailsPasswordService).updatePassword(eq(this.user), eq(encodedPassword));
}
@@ -130,9 +125,7 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
this.manager.setUserDetailsPasswordService(this.userDetailsPasswordService);
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.user,
this.user.getPassword());
-
assertThatThrownBy(() -> this.manager.authenticate(token).block()).isInstanceOf(BadCredentialsException.class);
-
verifyZeroInteractions(this.userDetailsPasswordService);
}
@@ -145,9 +138,7 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
this.manager.setUserDetailsPasswordService(this.userDetailsPasswordService);
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.user,
this.user.getPassword());
-
Authentication result = this.manager.authenticate(token).block();
-
verifyZeroInteractions(this.userDetailsPasswordService);
}
@@ -158,11 +149,9 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
given(this.encoder.matches(any(), any())).willReturn(true);
this.manager.setPasswordEncoder(this.encoder);
this.manager.setPostAuthenticationChecks(this.postAuthenticationChecks);
-
assertThatExceptionOfType(LockedException.class).isThrownBy(() -> this.manager
.authenticate(new UsernamePasswordAuthenticationToken(this.user, this.user.getPassword())).block())
.withMessage("account is locked");
-
verify(this.postAuthenticationChecks).check(eq(this.user));
}
@@ -171,12 +160,9 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
given(this.userDetailsService.findByUsername(any())).willReturn(Mono.just(this.user));
given(this.encoder.matches(any(), any())).willReturn(true);
this.manager.setPasswordEncoder(this.encoder);
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(this.user,
this.user.getPassword());
-
this.manager.authenticate(token).block();
-
verifyZeroInteractions(this.postAuthenticationChecks);
}
@@ -191,10 +177,8 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
.build();
// @formatter:on
given(this.userDetailsService.findByUsername(any())).willReturn(Mono.just(expiredUser));
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(expiredUser,
expiredUser.getPassword());
-
this.manager.authenticate(token).block();
}
@@ -209,17 +193,14 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
.build();
// @formatter:on
given(this.userDetailsService.findByUsername(any())).willReturn(Mono.just(lockedUser));
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(lockedUser,
lockedUser.getPassword());
-
this.manager.authenticate(token).block();
}
@Test(expected = DisabledException.class)
public void authenticateWhenAccountDisabledThenException() {
this.manager.setPasswordEncoder(this.encoder);
-
// @formatter:off
UserDetails disabledUser = User.withUsername("user")
.password("password")
@@ -228,10 +209,8 @@ public class UserDetailsRepositoryReactiveAuthenticationManagerTests {
.build();
// @formatter:on
given(this.userDetailsService.findByUsername(any())).willReturn(Mono.just(disabledUser));
-
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(disabledUser,
disabledUser.getPassword());
-
this.manager.authenticate(token).block();
}
diff --git a/core/src/test/java/org/springframework/security/authentication/UsernamePasswordAuthenticationTokenTests.java b/core/src/test/java/org/springframework/security/authentication/UsernamePasswordAuthenticationTokenTests.java
index 7ea4eaab20..61cd51ecef 100644
--- a/core/src/test/java/org/springframework/security/authentication/UsernamePasswordAuthenticationTokenTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/UsernamePasswordAuthenticationTokenTests.java
@@ -34,26 +34,20 @@ public class UsernamePasswordAuthenticationTokenTests {
public void authenticatedPropertyContractIsSatisfied() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("Test", "Password",
AuthorityUtils.NO_AUTHORITIES);
-
// check default given we passed some GrantedAuthorty[]s (well, we passed empty
// list)
assertThat(token.isAuthenticated()).isTrue();
-
// check explicit set to untrusted (we can safely go from trusted to untrusted,
// but not the reverse)
token.setAuthenticated(false);
assertThat(!token.isAuthenticated()).isTrue();
-
// Now let's create a UsernamePasswordAuthenticationToken without any
// GrantedAuthorty[]s (different constructor)
token = new UsernamePasswordAuthenticationToken("Test", "Password");
-
assertThat(!token.isAuthenticated()).isTrue();
-
// check we're allowed to still set it to untrusted
token.setAuthenticated(false);
assertThat(!token.isAuthenticated()).isTrue();
-
// check denied changing it to trusted
try {
token.setAuthenticated(true);
diff --git a/core/src/test/java/org/springframework/security/authentication/anonymous/AnonymousAuthenticationProviderTests.java b/core/src/test/java/org/springframework/security/authentication/anonymous/AnonymousAuthenticationProviderTests.java
index 81745b88c2..808cb36347 100644
--- a/core/src/test/java/org/springframework/security/authentication/anonymous/AnonymousAuthenticationProviderTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/anonymous/AnonymousAuthenticationProviderTests.java
@@ -38,10 +38,8 @@ public class AnonymousAuthenticationProviderTests {
@Test
public void testDetectsAnInvalidKey() {
AnonymousAuthenticationProvider aap = new AnonymousAuthenticationProvider("qwerty");
-
AnonymousAuthenticationToken token = new AnonymousAuthenticationToken("WRONG_KEY", "Test",
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"));
-
try {
aap.authenticate(token);
fail("Should have thrown BadCredentialsException");
@@ -57,7 +55,6 @@ public class AnonymousAuthenticationProviderTests {
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@@ -70,10 +67,8 @@ public class AnonymousAuthenticationProviderTests {
@Test
public void testIgnoresClassesItDoesNotSupport() {
AnonymousAuthenticationProvider aap = new AnonymousAuthenticationProvider("qwerty");
-
TestingAuthenticationToken token = new TestingAuthenticationToken("user", "password", "ROLE_A");
assertThat(aap.supports(TestingAuthenticationToken.class)).isFalse();
-
// Try it anyway
assertThat(aap.authenticate(token)).isNull();
}
@@ -81,12 +76,9 @@ public class AnonymousAuthenticationProviderTests {
@Test
public void testNormalOperation() {
AnonymousAuthenticationProvider aap = new AnonymousAuthenticationProvider("qwerty");
-
AnonymousAuthenticationToken token = new AnonymousAuthenticationToken("qwerty", "Test",
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"));
-
Authentication result = aap.authenticate(token);
-
assertThat(token).isEqualTo(result);
}
diff --git a/core/src/test/java/org/springframework/security/authentication/anonymous/AnonymousAuthenticationTokenTests.java b/core/src/test/java/org/springframework/security/authentication/anonymous/AnonymousAuthenticationTokenTests.java
index 05fd37fb78..298a43e633 100644
--- a/core/src/test/java/org/springframework/security/authentication/anonymous/AnonymousAuthenticationTokenTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/anonymous/AnonymousAuthenticationTokenTests.java
@@ -46,21 +46,18 @@ public class AnonymousAuthenticationTokenTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
new AnonymousAuthenticationToken("key", null, ROLES_12);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
new AnonymousAuthenticationToken("key", "Test", null);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
new AnonymousAuthenticationToken("key", "Test", AuthorityUtils.NO_AUTHORITIES);
fail("Should have thrown IllegalArgumentException");
@@ -73,14 +70,12 @@ public class AnonymousAuthenticationTokenTests {
public void testEqualsWhenEqual() {
AnonymousAuthenticationToken token1 = new AnonymousAuthenticationToken("key", "Test", ROLES_12);
AnonymousAuthenticationToken token2 = new AnonymousAuthenticationToken("key", "Test", ROLES_12);
-
assertThat(token2).isEqualTo(token1);
}
@Test
public void testGetters() {
AnonymousAuthenticationToken token = new AnonymousAuthenticationToken("key", "Test", ROLES_12);
-
assertThat(token.getKeyHash()).isEqualTo("key".hashCode());
assertThat(token.getPrincipal()).isEqualTo("Test");
assertThat(token.getCredentials()).isEqualTo("");
@@ -91,7 +86,6 @@ public class AnonymousAuthenticationTokenTests {
@Test
public void testNoArgConstructorDoesntExist() {
Class> clazz = AnonymousAuthenticationToken.class;
-
try {
clazz.getDeclaredConstructor((Class[]) null);
fail("Should have thrown NoSuchMethodException");
@@ -104,7 +98,6 @@ public class AnonymousAuthenticationTokenTests {
public void testNotEqualsDueToAbstractParentEqualsCheck() {
AnonymousAuthenticationToken token1 = new AnonymousAuthenticationToken("key", "Test", ROLES_12);
AnonymousAuthenticationToken token2 = new AnonymousAuthenticationToken("key", "DIFFERENT_PRINCIPAL", ROLES_12);
-
assertThat(token1.equals(token2)).isFalse();
}
@@ -113,16 +106,13 @@ public class AnonymousAuthenticationTokenTests {
AnonymousAuthenticationToken token1 = new AnonymousAuthenticationToken("key", "Test", ROLES_12);
UsernamePasswordAuthenticationToken token2 = new UsernamePasswordAuthenticationToken("Test", "Password",
ROLES_12);
-
assertThat(token1.equals(token2)).isFalse();
}
@Test
public void testNotEqualsDueToKey() {
AnonymousAuthenticationToken token1 = new AnonymousAuthenticationToken("key", "Test", ROLES_12);
-
AnonymousAuthenticationToken token2 = new AnonymousAuthenticationToken("DIFFERENT_KEY", "Test", ROLES_12);
-
assertThat(token1.equals(token2)).isFalse();
}
diff --git a/core/src/test/java/org/springframework/security/authentication/dao/DaoAuthenticationProviderTests.java b/core/src/test/java/org/springframework/security/authentication/dao/DaoAuthenticationProviderTests.java
index ca50e2d215..8429503319 100644
--- a/core/src/test/java/org/springframework/security/authentication/dao/DaoAuthenticationProviderTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/dao/DaoAuthenticationProviderTests.java
@@ -74,17 +74,14 @@ public class DaoAuthenticationProviderTests {
@Test
public void testAuthenticateFailsForIncorrectPasswordCase() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("rod", "KOala");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown BadCredentialsException");
}
catch (BadCredentialsException expected) {
-
}
}
@@ -94,105 +91,86 @@ public class DaoAuthenticationProviderTests {
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken("rod", null);
try {
provider.authenticate(authenticationToken);
fail("Expected BadCredenialsException");
}
catch (BadCredentialsException expected) {
-
}
}
@Test
public void testAuthenticateFailsIfAccountExpired() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", "opal");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserPeterAccountExpired());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown AccountExpiredException");
}
catch (AccountExpiredException expected) {
-
}
}
@Test
public void testAuthenticateFailsIfAccountLocked() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", "opal");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserPeterAccountLocked());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown LockedException");
}
catch (LockedException expected) {
-
}
}
@Test
public void testAuthenticateFailsIfCredentialsExpired() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", "opal");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserPeterCredentialsExpired());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown CredentialsExpiredException");
}
catch (CredentialsExpiredException expected) {
-
}
-
// Check that wrong password causes BadCredentialsException, rather than
// CredentialsExpiredException
token = new UsernamePasswordAuthenticationToken("peter", "wrong_password");
-
try {
provider.authenticate(token);
fail("Should have thrown BadCredentialsException");
}
catch (BadCredentialsException expected) {
-
}
}
@Test
public void testAuthenticateFailsIfUserDisabled() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("peter", "opal");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserPeter());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown DisabledException");
}
catch (DisabledException expected) {
-
}
}
@Test
public void testAuthenticateFailsWhenAuthenticationDaoHasBackendFailure() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("rod", "koala");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceSimulateBackendError());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown InternalAuthenticationServiceException");
@@ -204,116 +182,95 @@ public class DaoAuthenticationProviderTests {
@Test
public void testAuthenticateFailsWithEmptyUsername() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(null, "koala");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown BadCredentialsException");
}
catch (BadCredentialsException expected) {
-
}
}
@Test
public void testAuthenticateFailsWithInvalidPassword() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("rod", "INVALID_PASSWORD");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown BadCredentialsException");
}
catch (BadCredentialsException expected) {
-
}
}
@Test
public void testAuthenticateFailsWithInvalidUsernameAndHideUserNotFoundExceptionFalse() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("INVALID_USER", "koala");
-
DaoAuthenticationProvider provider = createProvider();
provider.setHideUserNotFoundExceptions(false); // we want
// UsernameNotFoundExceptions
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown UsernameNotFoundException");
}
catch (UsernameNotFoundException expected) {
-
}
}
@Test
public void testAuthenticateFailsWithInvalidUsernameAndHideUserNotFoundExceptionsWithDefaultOfTrue() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("INVALID_USER", "koala");
-
DaoAuthenticationProvider provider = createProvider();
assertThat(provider.isHideUserNotFoundExceptions()).isTrue();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown BadCredentialsException");
}
catch (BadCredentialsException expected) {
-
}
}
@Test
public void testAuthenticateFailsWithInvalidUsernameAndChangePasswordEncoder() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("INVALID_USER", "koala");
-
DaoAuthenticationProvider provider = createProvider();
assertThat(provider.isHideUserNotFoundExceptions()).isTrue();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown BadCredentialsException");
}
catch (BadCredentialsException expected) {
-
}
-
provider.setPasswordEncoder(PasswordEncoderFactories.createDelegatingPasswordEncoder());
-
try {
provider.authenticate(token);
fail("Should have thrown BadCredentialsException");
}
catch (BadCredentialsException expected) {
-
}
}
@Test
public void testAuthenticateFailsWithMixedCaseUsernameIfDefaultChanged() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("RoD", "koala");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
try {
provider.authenticate(token);
fail("Should have thrown BadCredentialsException");
}
catch (BadCredentialsException expected) {
-
}
}
@@ -321,17 +278,13 @@ public class DaoAuthenticationProviderTests {
public void testAuthenticates() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("rod", "koala");
token.setDetails("192.168.0.1");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
Authentication result = provider.authenticate(token);
-
if (!(result instanceof UsernamePasswordAuthenticationToken)) {
fail("Should have returned instance of UsernamePasswordAuthenticationToken");
}
-
UsernamePasswordAuthenticationToken castResult = (UsernamePasswordAuthenticationToken) result;
assertThat(castResult.getPrincipal().getClass()).isEqualTo(User.class);
assertThat(castResult.getCredentials()).isEqualTo("koala");
@@ -342,42 +295,32 @@ public class DaoAuthenticationProviderTests {
@Test
public void testAuthenticatesASecondTime() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("rod", "koala");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
-
Authentication result = provider.authenticate(token);
-
if (!(result instanceof UsernamePasswordAuthenticationToken)) {
fail("Should have returned instance of UsernamePasswordAuthenticationToken");
}
-
// Now try to authenticate with the previous result (with its UserDetails)
Authentication result2 = provider.authenticate(result);
-
if (!(result2 instanceof UsernamePasswordAuthenticationToken)) {
fail("Should have returned instance of UsernamePasswordAuthenticationToken");
}
-
assertThat(result2.getCredentials()).isEqualTo(result.getCredentials());
}
@Test
public void testAuthenticatesWithForcePrincipalAsString() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("rod", "koala");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
provider.setUserCache(new MockUserCache());
provider.setForcePrincipalAsString(true);
-
Authentication result = provider.authenticate(token);
-
if (!(result instanceof UsernamePasswordAuthenticationToken)) {
fail("Should have returned instance of UsernamePasswordAuthenticationToken");
}
-
UsernamePasswordAuthenticationToken castResult = (UsernamePasswordAuthenticationToken) result;
assertThat(castResult.getPrincipal().getClass()).isEqualTo(String.class);
assertThat(castResult.getPrincipal()).isEqualTo("rod");
@@ -388,7 +331,6 @@ public class DaoAuthenticationProviderTests {
String password = "password";
String encodedPassword = "encoded";
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("user", password);
-
PasswordEncoder encoder = mock(PasswordEncoder.class);
UserDetailsService userDetailsService = mock(UserDetailsService.class);
UserDetailsPasswordService passwordManager = mock(UserDetailsPasswordService.class);
@@ -396,16 +338,13 @@ public class DaoAuthenticationProviderTests {
provider.setPasswordEncoder(encoder);
provider.setUserDetailsService(userDetailsService);
provider.setUserDetailsPasswordService(passwordManager);
-
UserDetails user = PasswordEncodedUser.user();
given(encoder.matches(any(), any())).willReturn(true);
given(encoder.upgradeEncoding(any())).willReturn(true);
given(encoder.encode(any())).willReturn(encodedPassword);
given(userDetailsService.loadUserByUsername(any())).willReturn(user);
given(passwordManager.updatePassword(any(), any())).willReturn(user);
-
Authentication result = provider.authenticate(token);
-
verify(encoder).encode(password);
verify(passwordManager).updatePassword(eq(user), eq(encodedPassword));
}
@@ -413,7 +352,6 @@ public class DaoAuthenticationProviderTests {
@Test
public void authenticateWhenBadCredentialsAndPasswordManagerThenNoUpdate() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("user", "password");
-
PasswordEncoder encoder = mock(PasswordEncoder.class);
UserDetailsService userDetailsService = mock(UserDetailsService.class);
UserDetailsPasswordService passwordManager = mock(UserDetailsPasswordService.class);
@@ -421,20 +359,16 @@ public class DaoAuthenticationProviderTests {
provider.setPasswordEncoder(encoder);
provider.setUserDetailsService(userDetailsService);
provider.setUserDetailsPasswordService(passwordManager);
-
UserDetails user = PasswordEncodedUser.user();
given(encoder.matches(any(), any())).willReturn(false);
given(userDetailsService.loadUserByUsername(any())).willReturn(user);
-
assertThatThrownBy(() -> provider.authenticate(token)).isInstanceOf(BadCredentialsException.class);
-
verifyZeroInteractions(passwordManager);
}
@Test
public void authenticateWhenNotUpgradeAndPasswordManagerThenNoUpdate() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("user", "password");
-
PasswordEncoder encoder = mock(PasswordEncoder.class);
UserDetailsService userDetailsService = mock(UserDetailsService.class);
UserDetailsPasswordService passwordManager = mock(UserDetailsPasswordService.class);
@@ -442,24 +376,19 @@ public class DaoAuthenticationProviderTests {
provider.setPasswordEncoder(encoder);
provider.setUserDetailsService(userDetailsService);
provider.setUserDetailsPasswordService(passwordManager);
-
UserDetails user = PasswordEncodedUser.user();
given(encoder.matches(any(), any())).willReturn(true);
given(encoder.upgradeEncoding(any())).willReturn(false);
given(userDetailsService.loadUserByUsername(any())).willReturn(user);
-
Authentication result = provider.authenticate(token);
-
verifyZeroInteractions(passwordManager);
}
@Test
public void testDetectsNullBeingReturnedFromAuthenticationDao() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("rod", "koala");
-
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(new MockUserDetailsServiceReturnsNull());
-
try {
provider.authenticate(token);
fail("Should have thrown AuthenticationServiceException");
@@ -475,10 +404,8 @@ public class DaoAuthenticationProviderTests {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
provider.setPasswordEncoder(new BCryptPasswordEncoder());
assertThat(provider.getPasswordEncoder().getClass()).isEqualTo(BCryptPasswordEncoder.class);
-
provider.setUserCache(new EhCacheBasedUserCache());
assertThat(provider.getUserCache().getClass()).isEqualTo(EhCacheBasedUserCache.class);
-
assertThat(provider.isForcePrincipalAsString()).isFalse();
provider.setForcePrincipalAsString(true);
assertThat(provider.isForcePrincipalAsString()).isTrue();
@@ -487,26 +414,20 @@ public class DaoAuthenticationProviderTests {
@Test
public void testGoesBackToAuthenticationDaoToObtainLatestPasswordIfCachedPasswordSeemsIncorrect() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("rod", "koala");
-
MockUserDetailsServiceUserRod authenticationDao = new MockUserDetailsServiceUserRod();
MockUserCache cache = new MockUserCache();
DaoAuthenticationProvider provider = createProvider();
provider.setUserDetailsService(authenticationDao);
provider.setUserCache(cache);
-
// This will work, as password still "koala"
provider.authenticate(token);
-
// Check "rod = koala" ended up in the cache
assertThat(cache.getUserFromCache("rod").getPassword()).isEqualTo("koala");
-
// Now change the password the AuthenticationDao will return
authenticationDao.setPassword("easternLongNeckTurtle");
-
// Now try authentication again, with the new password
token = new UsernamePasswordAuthenticationToken("rod", "easternLongNeckTurtle");
provider.authenticate(token);
-
// To get this far, the new password was accepted
// Check the cache was updated
assertThat(cache.getUserFromCache("rod").getPassword()).isEqualTo("easternLongNeckTurtle");
@@ -515,13 +436,11 @@ public class DaoAuthenticationProviderTests {
@Test
public void testStartupFailsIfNoAuthenticationDao() throws Exception {
DaoAuthenticationProvider provider = new DaoAuthenticationProvider();
-
try {
provider.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@@ -531,13 +450,11 @@ public class DaoAuthenticationProviderTests {
provider.setUserDetailsService(new MockUserDetailsServiceUserRod());
assertThat(provider.getUserCache().getClass()).isEqualTo(NullUserCache.class);
provider.setUserCache(null);
-
try {
provider.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@@ -549,7 +466,6 @@ public class DaoAuthenticationProviderTests {
provider.setUserCache(new MockUserCache());
assertThat(provider.getUserDetailsService()).isEqualTo(userDetailsService);
provider.afterPropertiesSet();
-
}
@Test
@@ -576,7 +492,6 @@ public class DaoAuthenticationProviderTests {
}
catch (UsernameNotFoundException success) {
}
-
// ensure encoder invoked w/ non-null strings since PasswordEncoder impls may fail
// if encoded password is null
verify(encoder).matches(isA(String.class), isA(String.class));
@@ -629,16 +544,13 @@ public class DaoAuthenticationProviderTests {
MockUserDetailsServiceUserRod userDetailsService = new MockUserDetailsServiceUserRod();
userDetailsService.password = encoder.encode((CharSequence) foundUser.getCredentials());
provider.setUserDetailsService(userDetailsService);
-
int sampleSize = 100;
-
List userFoundTimes = new ArrayList<>(sampleSize);
for (int i = 0; i < sampleSize; i++) {
long start = System.currentTimeMillis();
provider.authenticate(foundUser);
userFoundTimes.add(System.currentTimeMillis() - start);
}
-
List userNotFoundTimes = new ArrayList<>(sampleSize);
for (int i = 0; i < sampleSize; i++) {
long start = System.currentTimeMillis();
@@ -650,7 +562,6 @@ public class DaoAuthenticationProviderTests {
}
userNotFoundTimes.add(System.currentTimeMillis() - start);
}
-
double userFoundAvg = avg(userFoundTimes);
double userNotFoundAvg = avg(userNotFoundTimes);
assertThat(Math.abs(userNotFoundAvg - userFoundAvg) <= 3).withFailMessage("User not found average "
@@ -679,7 +590,6 @@ public class DaoAuthenticationProviderTests {
}
catch (UsernameNotFoundException success) {
}
-
verify(encoder, times(0)).matches(anyString(), anyString());
}
diff --git a/core/src/test/java/org/springframework/security/authentication/event/AuthenticationEventTests.java b/core/src/test/java/org/springframework/security/authentication/event/AuthenticationEventTests.java
index 1f5bf770ff..d843593f5c 100644
--- a/core/src/test/java/org/springframework/security/authentication/event/AuthenticationEventTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/event/AuthenticationEventTests.java
@@ -37,7 +37,6 @@ public class AuthenticationEventTests {
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken("Principal",
"Credentials");
authentication.setDetails("127.0.0.1");
-
return authentication;
}
@@ -60,13 +59,11 @@ public class AuthenticationEventTests {
@Test
public void testRejectsNullAuthentication() {
AuthenticationException exception = new DisabledException("TEST");
-
try {
new AuthenticationFailureDisabledEvent(null, exception);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@@ -77,7 +74,6 @@ public class AuthenticationEventTests {
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
diff --git a/core/src/test/java/org/springframework/security/authentication/event/LoggerListenerTests.java b/core/src/test/java/org/springframework/security/authentication/event/LoggerListenerTests.java
index e75590f5c4..4d788d4377 100644
--- a/core/src/test/java/org/springframework/security/authentication/event/LoggerListenerTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/event/LoggerListenerTests.java
@@ -33,7 +33,6 @@ public class LoggerListenerTests {
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken("Principal",
"Credentials");
authentication.setDetails("127.0.0.1");
-
return authentication;
}
@@ -43,7 +42,6 @@ public class LoggerListenerTests {
new LockedException("TEST"));
LoggerListener listener = new LoggerListener();
listener.onApplicationEvent(event);
-
}
}
diff --git a/core/src/test/java/org/springframework/security/authentication/jaas/DefaultJaasAuthenticationProviderTests.java b/core/src/test/java/org/springframework/security/authentication/jaas/DefaultJaasAuthenticationProviderTests.java
index ce23ea8c54..e075c6184d 100644
--- a/core/src/test/java/org/springframework/security/authentication/jaas/DefaultJaasAuthenticationProviderTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/jaas/DefaultJaasAuthenticationProviderTests.java
@@ -80,7 +80,6 @@ public class DefaultJaasAuthenticationProviderTests {
given(configuration.getAppConfigurationEntry(this.provider.getLoginContextName())).willReturn(aces);
this.token = new UsernamePasswordAuthenticationToken("user", "password");
ReflectionTestUtils.setField(this.provider, "log", this.log);
-
}
@Test(expected = IllegalArgumentException.class)
@@ -119,7 +118,6 @@ public class DefaultJaasAuthenticationProviderTests {
}
catch (AuthenticationException success) {
}
-
verifyFailedLogin();
}
@@ -131,7 +129,6 @@ public class DefaultJaasAuthenticationProviderTests {
}
catch (AuthenticationException success) {
}
-
verifyFailedLogin();
}
@@ -141,13 +138,10 @@ public class DefaultJaasAuthenticationProviderTests {
SecurityContext securityContext = mock(SecurityContext.class);
JaasAuthenticationToken token = mock(JaasAuthenticationToken.class);
LoginContext context = mock(LoginContext.class);
-
given(event.getSecurityContexts()).willReturn(Arrays.asList(securityContext));
given(securityContext.getAuthentication()).willReturn(token);
given(token.getLoginContext()).willReturn(context);
-
this.provider.onApplicationEvent(event);
-
verify(event).getSecurityContexts();
verify(securityContext).getAuthentication();
verify(token).getLoginContext();
@@ -158,9 +152,7 @@ public class DefaultJaasAuthenticationProviderTests {
@Test
public void logoutNullSession() {
SessionDestroyedEvent event = mock(SessionDestroyedEvent.class);
-
this.provider.handleLogout(event);
-
verify(event).getSecurityContexts();
verify(this.log).debug(anyString());
verifyNoMoreInteractions(event);
@@ -170,11 +162,8 @@ public class DefaultJaasAuthenticationProviderTests {
public void logoutNullAuthentication() {
SessionDestroyedEvent event = mock(SessionDestroyedEvent.class);
SecurityContext securityContext = mock(SecurityContext.class);
-
given(event.getSecurityContexts()).willReturn(Arrays.asList(securityContext));
-
this.provider.handleLogout(event);
-
verify(event).getSecurityContexts();
verify(event).getSecurityContexts();
verify(securityContext).getAuthentication();
@@ -185,12 +174,9 @@ public class DefaultJaasAuthenticationProviderTests {
public void logoutNonJaasAuthentication() {
SessionDestroyedEvent event = mock(SessionDestroyedEvent.class);
SecurityContext securityContext = mock(SecurityContext.class);
-
given(event.getSecurityContexts()).willReturn(Arrays.asList(securityContext));
given(securityContext.getAuthentication()).willReturn(this.token);
-
this.provider.handleLogout(event);
-
verify(event).getSecurityContexts();
verify(event).getSecurityContexts();
verify(securityContext).getAuthentication();
@@ -202,15 +188,12 @@ public class DefaultJaasAuthenticationProviderTests {
SessionDestroyedEvent event = mock(SessionDestroyedEvent.class);
SecurityContext securityContext = mock(SecurityContext.class);
JaasAuthenticationToken token = mock(JaasAuthenticationToken.class);
-
given(event.getSecurityContexts()).willReturn(Arrays.asList(securityContext));
given(securityContext.getAuthentication()).willReturn(token);
-
this.provider.onApplicationEvent(event);
verify(event).getSecurityContexts();
verify(securityContext).getAuthentication();
verify(token).getLoginContext();
-
verifyNoMoreInteractions(event, securityContext, token);
}
@@ -221,14 +204,11 @@ public class DefaultJaasAuthenticationProviderTests {
JaasAuthenticationToken token = mock(JaasAuthenticationToken.class);
LoginContext context = mock(LoginContext.class);
LoginException loginException = new LoginException("Failed Login");
-
given(event.getSecurityContexts()).willReturn(Arrays.asList(securityContext));
given(securityContext.getAuthentication()).willReturn(token);
given(token.getLoginContext()).willReturn(context);
willThrow(loginException).given(context).logout();
-
this.provider.onApplicationEvent(event);
-
verify(event).getSecurityContexts();
verify(securityContext).getAuthentication();
verify(token).getLoginContext();
@@ -241,7 +221,6 @@ public class DefaultJaasAuthenticationProviderTests {
public void publishNullPublisher() {
this.provider.setApplicationEventPublisher(null);
AuthenticationException ae = new BadCredentialsException("Failed to login");
-
this.provider.publishFailureEvent(this.token, ae);
this.provider.publishSuccessEvent(this.token);
}
diff --git a/core/src/test/java/org/springframework/security/authentication/jaas/JaasAuthenticationProviderTests.java b/core/src/test/java/org/springframework/security/authentication/jaas/JaasAuthenticationProviderTests.java
index f474ce4c40..6f59331bbf 100644
--- a/core/src/test/java/org/springframework/security/authentication/jaas/JaasAuthenticationProviderTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/jaas/JaasAuthenticationProviderTests.java
@@ -79,7 +79,6 @@ public class JaasAuthenticationProviderTests {
}
catch (AuthenticationException ex) {
}
-
assertThat(this.eventCheck.failedEvent).as("Failure event not fired").isNotNull();
assertThat(this.eventCheck.failedEvent.getException()).withFailMessage("Failure event exception was null")
.isNotNull();
@@ -94,7 +93,6 @@ public class JaasAuthenticationProviderTests {
}
catch (AuthenticationException ex) {
}
-
assertThat(this.eventCheck.failedEvent).as("Failure event not fired").isNotNull();
assertThat(this.eventCheck.failedEvent.getException()).withFailMessage("Failure event exception was null")
.isNotNull();
@@ -105,9 +103,7 @@ public class JaasAuthenticationProviderTests {
public void testConfigurationLoop() throws Exception {
String resName = "/" + getClass().getName().replace('.', '/') + ".conf";
URL url = getClass().getResource(resName);
-
Security.setProperty("login.config.url.1", url.toString());
-
setUp();
testFull();
}
@@ -119,7 +115,6 @@ public class JaasAuthenticationProviderTests {
myJaasProvider.setAuthorityGranters(this.jaasProvider.getAuthorityGranters());
myJaasProvider.setCallbackHandlers(this.jaasProvider.getCallbackHandlers());
myJaasProvider.setLoginContextName(this.jaasProvider.getLoginContextName());
-
try {
myJaasProvider.afterPropertiesSet();
fail("Should have thrown ApplicationContextException");
@@ -136,7 +131,6 @@ public class JaasAuthenticationProviderTests {
// Create temp directory with a space in the name
File configDir = new File(System.getProperty("java.io.tmpdir") + File.separator + "jaas test");
configDir.deleteOnExit();
-
if (configDir.exists()) {
configDir.delete();
}
@@ -149,14 +143,12 @@ public class JaasAuthenticationProviderTests {
"JAASTestBlah {" + "org.springframework.security.authentication.jaas.TestLoginModule required;" + "};");
pw.flush();
pw.close();
-
JaasAuthenticationProvider myJaasProvider = new JaasAuthenticationProvider();
myJaasProvider.setApplicationEventPublisher(this.context);
myJaasProvider.setLoginConfig(new FileSystemResource(configFile));
myJaasProvider.setAuthorityGranters(this.jaasProvider.getAuthorityGranters());
myJaasProvider.setCallbackHandlers(this.jaasProvider.getCallbackHandlers());
myJaasProvider.setLoginContextName(this.jaasProvider.getLoginContextName());
-
myJaasProvider.afterPropertiesSet();
}
@@ -168,7 +160,6 @@ public class JaasAuthenticationProviderTests {
myJaasProvider.setCallbackHandlers(this.jaasProvider.getCallbackHandlers());
myJaasProvider.setLoginConfig(this.jaasProvider.getLoginConfig());
myJaasProvider.setLoginContextName(null);
-
try {
myJaasProvider.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
@@ -176,9 +167,7 @@ public class JaasAuthenticationProviderTests {
catch (IllegalArgumentException expected) {
assertThat(expected.getMessage()).startsWith("loginContextName must be set on");
}
-
myJaasProvider.setLoginContextName("");
-
try {
myJaasProvider.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
@@ -192,25 +181,19 @@ public class JaasAuthenticationProviderTests {
public void testFull() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("user", "password",
AuthorityUtils.createAuthorityList("ROLE_ONE"));
-
assertThat(this.jaasProvider.supports(UsernamePasswordAuthenticationToken.class)).isTrue();
-
Authentication auth = this.jaasProvider.authenticate(token);
-
assertThat(this.jaasProvider.getAuthorityGranters()).isNotNull();
assertThat(this.jaasProvider.getCallbackHandlers()).isNotNull();
assertThat(this.jaasProvider.getLoginConfig()).isNotNull();
assertThat(this.jaasProvider.getLoginContextName()).isNotNull();
-
Collection extends GrantedAuthority> list = auth.getAuthorities();
Set set = AuthorityUtils.authorityListToSet(list);
-
assertThat(set.contains("ROLE_ONE")).withFailMessage("GrantedAuthorities should not contain ROLE_ONE")
.isFalse();
assertThat(set.contains("ROLE_TEST1")).withFailMessage("GrantedAuthorities should contain ROLE_TEST1").isTrue();
assertThat(set.contains("ROLE_TEST2")).withFailMessage("GrantedAuthorities should contain ROLE_TEST2").isTrue();
boolean foundit = false;
-
for (GrantedAuthority a : list) {
if (a instanceof JaasGrantedAuthority) {
JaasGrantedAuthority grant = (JaasGrantedAuthority) a;
@@ -219,9 +202,7 @@ public class JaasAuthenticationProviderTests {
foundit = true;
}
}
-
assertThat(foundit).as("Could not find a JaasGrantedAuthority").isTrue();
-
assertThat(this.eventCheck.successEvent).as("Success event should be fired").isNotNull();
assertThat(this.eventCheck.successEvent.getAuthentication()).withFailMessage("Auth objects should be equal")
.isEqualTo(auth);
@@ -237,7 +218,6 @@ public class JaasAuthenticationProviderTests {
public void testLoginExceptionResolver() {
assertThat(this.jaasProvider.getLoginExceptionResolver()).isNotNull();
this.jaasProvider.setLoginExceptionResolver((e) -> new LockedException("This is just a test!"));
-
try {
this.jaasProvider.authenticate(new UsernamePasswordAuthenticationToken("user", "password"));
}
@@ -251,26 +231,19 @@ public class JaasAuthenticationProviderTests {
@Test
public void testLogout() throws Exception {
MockLoginContext loginContext = new MockLoginContext(this.jaasProvider.getLoginContextName());
-
JaasAuthenticationToken token = new JaasAuthenticationToken(null, null, loginContext);
-
SecurityContext context = SecurityContextHolder.createEmptyContext();
context.setAuthentication(token);
-
SessionDestroyedEvent event = mock(SessionDestroyedEvent.class);
given(event.getSecurityContexts()).willReturn(Arrays.asList(context));
-
this.jaasProvider.handleLogout(event);
-
assertThat(loginContext.loggedOut).isTrue();
}
@Test
public void testNullDefaultAuthorities() {
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken("user", "password");
-
assertThat(this.jaasProvider.supports(UsernamePasswordAuthenticationToken.class)).isTrue();
-
Authentication auth = this.jaasProvider.authenticate(token);
assertThat(auth.getAuthorities()).withFailMessage("Only ROLE_TEST1 and ROLE_TEST2 should have been returned")
.hasSize(2);
diff --git a/core/src/test/java/org/springframework/security/authentication/jaas/JaasEventCheck.java b/core/src/test/java/org/springframework/security/authentication/jaas/JaasEventCheck.java
index 565ea98356..7efedeecb6 100644
--- a/core/src/test/java/org/springframework/security/authentication/jaas/JaasEventCheck.java
+++ b/core/src/test/java/org/springframework/security/authentication/jaas/JaasEventCheck.java
@@ -35,7 +35,6 @@ public class JaasEventCheck implements ApplicationListener options = new HashMap<>();
options.put("ignoreMissingAuthentication", "true");
-
this.module.initialize(this.subject, null, null, options);
SecurityContextHolder.getContext().setAuthentication(null);
assertThat(this.module.login()).as("Should return false and ask to be ignored").isFalse();
diff --git a/core/src/test/java/org/springframework/security/authentication/jaas/TestAuthorityGranter.java b/core/src/test/java/org/springframework/security/authentication/jaas/TestAuthorityGranter.java
index fbab33f747..2a557097a3 100644
--- a/core/src/test/java/org/springframework/security/authentication/jaas/TestAuthorityGranter.java
+++ b/core/src/test/java/org/springframework/security/authentication/jaas/TestAuthorityGranter.java
@@ -28,12 +28,10 @@ public class TestAuthorityGranter implements AuthorityGranter {
@Override
public Set grant(Principal principal) {
Set rtnSet = new HashSet<>();
-
if (principal.getName().equals("TEST_PRINCIPAL")) {
rtnSet.add("ROLE_TEST1");
rtnSet.add("ROLE_TEST2");
}
-
return rtnSet;
}
diff --git a/core/src/test/java/org/springframework/security/authentication/jaas/TestLoginModule.java b/core/src/test/java/org/springframework/security/authentication/jaas/TestLoginModule.java
index ab0d94fe90..b00267effc 100644
--- a/core/src/test/java/org/springframework/security/authentication/jaas/TestLoginModule.java
+++ b/core/src/test/java/org/springframework/security/authentication/jaas/TestLoginModule.java
@@ -52,14 +52,11 @@ public class TestLoginModule implements LoginModule {
@SuppressWarnings("unchecked")
public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) {
this.subject = subject;
-
try {
TextInputCallback textCallback = new TextInputCallback("prompt");
NameCallback nameCallback = new NameCallback("prompt");
PasswordCallback passwordCallback = new PasswordCallback("prompt", false);
-
callbackHandler.handle(new Callback[] { textCallback, nameCallback, passwordCallback });
-
this.password = new String(passwordCallback.getPassword());
this.user = nameCallback.getName();
}
@@ -73,15 +70,11 @@ public class TestLoginModule implements LoginModule {
if (!this.user.equals("user")) {
throw new LoginException("Bad User");
}
-
if (!this.password.equals("password")) {
throw new LoginException("Bad Password");
}
-
this.subject.getPrincipals().add(() -> "TEST_PRINCIPAL");
-
this.subject.getPrincipals().add(() -> "NULL_PRINCIPAL");
-
return true;
}
diff --git a/core/src/test/java/org/springframework/security/authentication/jaas/memory/InMemoryConfigurationTests.java b/core/src/test/java/org/springframework/security/authentication/jaas/memory/InMemoryConfigurationTests.java
index 58bb0120f5..c1f4f8be7f 100644
--- a/core/src/test/java/org/springframework/security/authentication/jaas/memory/InMemoryConfigurationTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/jaas/memory/InMemoryConfigurationTests.java
@@ -45,7 +45,6 @@ public class InMemoryConfigurationTests {
public void setUp() {
this.defaultEntries = new AppConfigurationEntry[] { new AppConfigurationEntry(TestLoginModule.class.getName(),
LoginModuleControlFlag.REQUIRED, Collections.emptyMap()) };
-
this.mappedEntries = Collections.singletonMap("name",
new AppConfigurationEntry[] { new AppConfigurationEntry(TestLoginModule.class.getName(),
LoginModuleControlFlag.OPTIONAL, Collections.emptyMap()) });
diff --git a/core/src/test/java/org/springframework/security/authentication/rcp/RemoteAuthenticationManagerImplTests.java b/core/src/test/java/org/springframework/security/authentication/rcp/RemoteAuthenticationManagerImplTests.java
index 3602d38288..a52f73ace0 100644
--- a/core/src/test/java/org/springframework/security/authentication/rcp/RemoteAuthenticationManagerImplTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/rcp/RemoteAuthenticationManagerImplTests.java
@@ -41,24 +41,20 @@ public class RemoteAuthenticationManagerImplTests {
AuthenticationManager am = mock(AuthenticationManager.class);
given(am.authenticate(any(Authentication.class))).willThrow(new BadCredentialsException(""));
manager.setAuthenticationManager(am);
-
manager.attemptAuthentication("rod", "password");
}
@Test
public void testStartupChecksAuthenticationManagerSet() throws Exception {
RemoteAuthenticationManagerImpl manager = new RemoteAuthenticationManagerImpl();
-
try {
manager.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
manager.setAuthenticationManager(mock(AuthenticationManager.class));
manager.afterPropertiesSet();
-
}
@Test
@@ -67,7 +63,6 @@ public class RemoteAuthenticationManagerImplTests {
AuthenticationManager am = mock(AuthenticationManager.class);
given(am.authenticate(any(Authentication.class))).willReturn(new TestingAuthenticationToken("u", "p", "A"));
manager.setAuthenticationManager(am);
-
manager.attemptAuthentication("rod", "password");
}
diff --git a/core/src/test/java/org/springframework/security/authentication/rcp/RemoteAuthenticationProviderTests.java b/core/src/test/java/org/springframework/security/authentication/rcp/RemoteAuthenticationProviderTests.java
index ed48fbfe87..42b37a73c8 100644
--- a/core/src/test/java/org/springframework/security/authentication/rcp/RemoteAuthenticationProviderTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/rcp/RemoteAuthenticationProviderTests.java
@@ -39,13 +39,11 @@ public class RemoteAuthenticationProviderTests {
public void testExceptionsGetPassedBackToCaller() {
RemoteAuthenticationProvider provider = new RemoteAuthenticationProvider();
provider.setRemoteAuthenticationManager(new MockRemoteAuthenticationManager(false));
-
try {
provider.authenticate(new UsernamePasswordAuthenticationToken("rod", "password"));
fail("Should have thrown RemoteAuthenticationException");
}
catch (RemoteAuthenticationException expected) {
-
}
}
@@ -59,25 +57,20 @@ public class RemoteAuthenticationProviderTests {
@Test
public void testStartupChecksAuthenticationManagerSet() throws Exception {
RemoteAuthenticationProvider provider = new RemoteAuthenticationProvider();
-
try {
provider.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
-
provider.setRemoteAuthenticationManager(new MockRemoteAuthenticationManager(true));
provider.afterPropertiesSet();
-
}
@Test
public void testSuccessfulAuthenticationCreatesObject() {
RemoteAuthenticationProvider provider = new RemoteAuthenticationProvider();
provider.setRemoteAuthenticationManager(new MockRemoteAuthenticationManager(true));
-
Authentication result = provider.authenticate(new UsernamePasswordAuthenticationToken("rod", "password"));
assertThat(result.getPrincipal()).isEqualTo("rod");
assertThat(result.getCredentials()).isEqualTo("password");
@@ -88,14 +81,12 @@ public class RemoteAuthenticationProviderTests {
public void testNullCredentialsDoesNotCauseNullPointerException() {
RemoteAuthenticationProvider provider = new RemoteAuthenticationProvider();
provider.setRemoteAuthenticationManager(new MockRemoteAuthenticationManager(false));
-
try {
provider.authenticate(new UsernamePasswordAuthenticationToken("rod", null));
fail("Expected Exception");
}
catch (RemoteAuthenticationException success) {
}
-
}
@Test
diff --git a/core/src/test/java/org/springframework/security/authentication/rememberme/RememberMeAuthenticationProviderTests.java b/core/src/test/java/org/springframework/security/authentication/rememberme/RememberMeAuthenticationProviderTests.java
index 3673f6b05e..169e9802cd 100644
--- a/core/src/test/java/org/springframework/security/authentication/rememberme/RememberMeAuthenticationProviderTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/rememberme/RememberMeAuthenticationProviderTests.java
@@ -38,10 +38,8 @@ public class RememberMeAuthenticationProviderTests {
@Test
public void testDetectsAnInvalidKey() {
RememberMeAuthenticationProvider aap = new RememberMeAuthenticationProvider("qwerty");
-
RememberMeAuthenticationToken token = new RememberMeAuthenticationToken("WRONG_KEY", "Test",
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"));
-
try {
aap.authenticate(token);
fail("Should have thrown BadCredentialsException");
@@ -57,7 +55,6 @@ public class RememberMeAuthenticationProviderTests {
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@@ -71,10 +68,8 @@ public class RememberMeAuthenticationProviderTests {
@Test
public void testIgnoresClassesItDoesNotSupport() {
RememberMeAuthenticationProvider aap = new RememberMeAuthenticationProvider("qwerty");
-
TestingAuthenticationToken token = new TestingAuthenticationToken("user", "password", "ROLE_A");
assertThat(aap.supports(TestingAuthenticationToken.class)).isFalse();
-
// Try it anyway
assertThat(aap.authenticate(token)).isNull();
}
@@ -82,12 +77,9 @@ public class RememberMeAuthenticationProviderTests {
@Test
public void testNormalOperation() {
RememberMeAuthenticationProvider aap = new RememberMeAuthenticationProvider("qwerty");
-
RememberMeAuthenticationToken token = new RememberMeAuthenticationToken("qwerty", "Test",
AuthorityUtils.createAuthorityList("ROLE_ONE", "ROLE_TWO"));
-
Authentication result = aap.authenticate(token);
-
assertThat(token).isEqualTo(result);
}
diff --git a/core/src/test/java/org/springframework/security/authentication/rememberme/RememberMeAuthenticationTokenTests.java b/core/src/test/java/org/springframework/security/authentication/rememberme/RememberMeAuthenticationTokenTests.java
index 492566f564..6bdf73bd5d 100644
--- a/core/src/test/java/org/springframework/security/authentication/rememberme/RememberMeAuthenticationTokenTests.java
+++ b/core/src/test/java/org/springframework/security/authentication/rememberme/RememberMeAuthenticationTokenTests.java
@@ -45,17 +45,13 @@ public class RememberMeAuthenticationTokenTests {
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
-
try {
new RememberMeAuthenticationToken("key", null, ROLES_12);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
-
try {
List authsContainingNull = new ArrayList<>();
authsContainingNull.add(null);
@@ -63,7 +59,6 @@ public class RememberMeAuthenticationTokenTests {
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@@ -71,14 +66,12 @@ public class RememberMeAuthenticationTokenTests {
public void testEqualsWhenEqual() {
RememberMeAuthenticationToken token1 = new RememberMeAuthenticationToken("key", "Test", ROLES_12);
RememberMeAuthenticationToken token2 = new RememberMeAuthenticationToken("key", "Test", ROLES_12);
-
assertThat(token2).isEqualTo(token1);
}
@Test
public void testGetters() {
RememberMeAuthenticationToken token = new RememberMeAuthenticationToken("key", "Test", ROLES_12);
-
assertThat(token.getKeyHash()).isEqualTo("key".hashCode());
assertThat(token.getPrincipal()).isEqualTo("Test");
assertThat(token.getCredentials()).isEqualTo("");
@@ -92,7 +85,6 @@ public class RememberMeAuthenticationTokenTests {
RememberMeAuthenticationToken token1 = new RememberMeAuthenticationToken("key", "Test", ROLES_12);
RememberMeAuthenticationToken token2 = new RememberMeAuthenticationToken("key", "DIFFERENT_PRINCIPAL",
ROLES_12);
-
assertThat(token1.equals(token2)).isFalse();
}
@@ -101,7 +93,6 @@ public class RememberMeAuthenticationTokenTests {
RememberMeAuthenticationToken token1 = new RememberMeAuthenticationToken("key", "Test", ROLES_12);
UsernamePasswordAuthenticationToken token2 = new UsernamePasswordAuthenticationToken("Test", "Password",
ROLES_12);
-
assertThat(token1.equals(token2)).isFalse();
}
@@ -109,7 +100,6 @@ public class RememberMeAuthenticationTokenTests {
public void testNotEqualsDueToKey() {
RememberMeAuthenticationToken token1 = new RememberMeAuthenticationToken("key", "Test", ROLES_12);
RememberMeAuthenticationToken token2 = new RememberMeAuthenticationToken("DIFFERENT_KEY", "Test", ROLES_12);
-
assertThat(token1.equals(token2)).isFalse();
}
diff --git a/core/src/test/java/org/springframework/security/authorization/AuthenticatedReactiveAuthorizationManagerTests.java b/core/src/test/java/org/springframework/security/authorization/AuthenticatedReactiveAuthorizationManagerTests.java
index 788fb05eb1..b9a333abbb 100644
--- a/core/src/test/java/org/springframework/security/authorization/AuthenticatedReactiveAuthorizationManagerTests.java
+++ b/core/src/test/java/org/springframework/security/authorization/AuthenticatedReactiveAuthorizationManagerTests.java
@@ -46,39 +46,32 @@ public class AuthenticatedReactiveAuthorizationManagerTests {
@Test
public void checkWhenAuthenticatedThenReturnTrue() {
given(this.authentication.isAuthenticated()).willReturn(true);
-
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isTrue();
}
@Test
public void checkWhenNotAuthenticatedThenReturnFalse() {
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isFalse();
}
@Test
public void checkWhenEmptyThenReturnFalse() {
boolean granted = this.manager.check(Mono.empty(), null).block().isGranted();
-
assertThat(granted).isFalse();
}
@Test
public void checkWhenAnonymousAuthenticatedThenReturnFalse() {
AnonymousAuthenticationToken anonymousAuthenticationToken = mock(AnonymousAuthenticationToken.class);
-
boolean granted = this.manager.check(Mono.just(anonymousAuthenticationToken), null).block().isGranted();
-
assertThat(granted).isFalse();
}
@Test
public void checkWhenErrorThenError() {
Mono result = this.manager.check(Mono.error(new RuntimeException("ooops")), null);
-
StepVerifier.create(result).expectError().verify();
}
diff --git a/core/src/test/java/org/springframework/security/authorization/AuthorityReactiveAuthorizationManagerTests.java b/core/src/test/java/org/springframework/security/authorization/AuthorityReactiveAuthorizationManagerTests.java
index eeb5fe479d..096e983924 100644
--- a/core/src/test/java/org/springframework/security/authorization/AuthorityReactiveAuthorizationManagerTests.java
+++ b/core/src/test/java/org/springframework/security/authorization/AuthorityReactiveAuthorizationManagerTests.java
@@ -46,21 +46,18 @@ public class AuthorityReactiveAuthorizationManagerTests {
@Test
public void checkWhenHasAuthorityAndNotAuthenticatedThenReturnFalse() {
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isFalse();
}
@Test
public void checkWhenHasAuthorityAndEmptyThenReturnFalse() {
boolean granted = this.manager.check(Mono.empty(), null).block().isGranted();
-
assertThat(granted).isFalse();
}
@Test
public void checkWhenHasAuthorityAndErrorThenError() {
Mono result = this.manager.check(Mono.error(new RuntimeException("ooops")), null);
-
StepVerifier.create(result).expectError().verify();
}
@@ -68,27 +65,21 @@ public class AuthorityReactiveAuthorizationManagerTests {
public void checkWhenHasAuthorityAndAuthenticatedAndNoAuthoritiesThenReturnFalse() {
given(this.authentication.isAuthenticated()).willReturn(true);
given(this.authentication.getAuthorities()).willReturn(Collections.emptyList());
-
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isFalse();
}
@Test
public void checkWhenHasAuthorityAndAuthenticatedAndWrongAuthoritiesThenReturnFalse() {
this.authentication = new TestingAuthenticationToken("rob", "secret", "ROLE_ADMIN");
-
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isFalse();
}
@Test
public void checkWhenHasAuthorityAndAuthorizedThenReturnTrue() {
this.authentication = new TestingAuthenticationToken("rob", "secret", "ADMIN");
-
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isTrue();
}
@@ -96,9 +87,7 @@ public class AuthorityReactiveAuthorizationManagerTests {
public void checkWhenHasRoleAndAuthorizedThenReturnTrue() {
this.manager = AuthorityReactiveAuthorizationManager.hasRole("ADMIN");
this.authentication = new TestingAuthenticationToken("rob", "secret", "ROLE_ADMIN");
-
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isTrue();
}
@@ -106,9 +95,7 @@ public class AuthorityReactiveAuthorizationManagerTests {
public void checkWhenHasRoleAndNotAuthorizedThenReturnFalse() {
this.manager = AuthorityReactiveAuthorizationManager.hasRole("ADMIN");
this.authentication = new TestingAuthenticationToken("rob", "secret", "ADMIN");
-
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isFalse();
}
@@ -117,9 +104,7 @@ public class AuthorityReactiveAuthorizationManagerTests {
this.manager = AuthorityReactiveAuthorizationManager.hasAnyRole("GENERAL", "USER", "TEST");
this.authentication = new TestingAuthenticationToken("rob", "secret", "ROLE_USER", "ROLE_AUDITING",
"ROLE_ADMIN");
-
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isTrue();
}
@@ -127,9 +112,7 @@ public class AuthorityReactiveAuthorizationManagerTests {
public void checkWhenHasAnyRoleAndNotAuthorizedThenReturnFalse() {
this.manager = AuthorityReactiveAuthorizationManager.hasAnyRole("GENERAL", "USER", "TEST");
this.authentication = new TestingAuthenticationToken("rob", "secret", "USER", "AUDITING", "ADMIN");
-
boolean granted = this.manager.check(Mono.just(this.authentication), null).block().isGranted();
-
assertThat(granted).isFalse();
}
diff --git a/core/src/test/java/org/springframework/security/concurrent/DelegatingSecurityContextRunnableTests.java b/core/src/test/java/org/springframework/security/concurrent/DelegatingSecurityContextRunnableTests.java
index 265ab85f16..3c47bc6416 100644
--- a/core/src/test/java/org/springframework/security/concurrent/DelegatingSecurityContextRunnableTests.java
+++ b/core/src/test/java/org/springframework/security/concurrent/DelegatingSecurityContextRunnableTests.java
@@ -66,7 +66,6 @@ public class DelegatingSecurityContextRunnableTests {
assertThat(SecurityContextHolder.getContext()).isEqualTo(this.securityContext);
return null;
}).given(this.delegate).run();
-
this.executor = Executors.newFixedThreadPool(1);
}
diff --git a/core/src/test/java/org/springframework/security/context/DelegatingApplicationListenerTests.java b/core/src/test/java/org/springframework/security/context/DelegatingApplicationListenerTests.java
index 7f087dfbab..86d242ad66 100644
--- a/core/src/test/java/org/springframework/security/context/DelegatingApplicationListenerTests.java
+++ b/core/src/test/java/org/springframework/security/context/DelegatingApplicationListenerTests.java
@@ -51,7 +51,6 @@ public class DelegatingApplicationListenerTests {
@Test
public void processEventNull() {
this.listener.onApplicationEvent(null);
-
verify(this.delegate, never()).onApplicationEvent(any(ApplicationEvent.class));
}
@@ -60,14 +59,12 @@ public class DelegatingApplicationListenerTests {
given(this.delegate.supportsEventType(this.event.getClass())).willReturn(true);
given(this.delegate.supportsSourceType(this.event.getSource().getClass())).willReturn(true);
this.listener.onApplicationEvent(this.event);
-
verify(this.delegate).onApplicationEvent(this.event);
}
@Test
public void processEventEventTypeNotSupported() {
this.listener.onApplicationEvent(this.event);
-
verify(this.delegate, never()).onApplicationEvent(any(ApplicationEvent.class));
}
@@ -75,7 +72,6 @@ public class DelegatingApplicationListenerTests {
public void processEventSourceTypeNotSupported() {
given(this.delegate.supportsEventType(this.event.getClass())).willReturn(true);
this.listener.onApplicationEvent(this.event);
-
verify(this.delegate, never()).onApplicationEvent(any(ApplicationEvent.class));
}
diff --git a/core/src/test/java/org/springframework/security/core/SpringSecurityCoreVersionTests.java b/core/src/test/java/org/springframework/security/core/SpringSecurityCoreVersionTests.java
index 292c9d1680..33b297c385 100644
--- a/core/src/test/java/org/springframework/security/core/SpringSecurityCoreVersionTests.java
+++ b/core/src/test/java/org/springframework/security/core/SpringSecurityCoreVersionTests.java
@@ -63,20 +63,16 @@ public class SpringSecurityCoreVersionTests {
public void springVersionIsUpToDate() {
// Property is set by the build script
String springVersion = System.getProperty("springVersion");
-
assertThat(SpringSecurityCoreVersion.MIN_SPRING_VERSION).isEqualTo(springVersion);
}
@Test
public void serialVersionMajorAndMinorVersionMatchBuildVersion() {
String version = System.getProperty("springSecurityVersion");
-
// Strip patch version
String serialVersion = String.valueOf(SpringSecurityCoreVersion.SERIAL_VERSION_UID).substring(0, 2);
-
assertThat(serialVersion.charAt(0)).isEqualTo(version.charAt(0));
assertThat(serialVersion.charAt(1)).isEqualTo(version.charAt(2));
-
}
// SEC-2295
@@ -87,9 +83,7 @@ public class SpringSecurityCoreVersionTests {
PowerMockito.spy(SpringVersion.class);
PowerMockito.doReturn(version).when(SpringSecurityCoreVersion.class, "getVersion");
PowerMockito.doReturn(version).when(SpringVersion.class, "getVersion");
-
performChecks();
-
verifyZeroInteractions(this.logger);
}
@@ -99,9 +93,7 @@ public class SpringSecurityCoreVersionTests {
PowerMockito.spy(SpringVersion.class);
PowerMockito.doReturn("1").when(SpringSecurityCoreVersion.class, "getVersion");
PowerMockito.doReturn(null).when(SpringVersion.class, "getVersion");
-
performChecks();
-
verifyZeroInteractions(this.logger);
}
@@ -111,9 +103,7 @@ public class SpringSecurityCoreVersionTests {
PowerMockito.spy(SpringVersion.class);
PowerMockito.doReturn("3").when(SpringSecurityCoreVersion.class, "getVersion");
PowerMockito.doReturn("2").when(SpringVersion.class, "getVersion");
-
performChecks();
-
verify(this.logger, times(1)).warn(any());
}
@@ -123,9 +113,7 @@ public class SpringSecurityCoreVersionTests {
PowerMockito.spy(SpringVersion.class);
PowerMockito.doReturn("4.0.0.RELEASE").when(SpringSecurityCoreVersion.class, "getVersion");
PowerMockito.doReturn("4.0.0.RELEASE").when(SpringVersion.class, "getVersion");
-
performChecks();
-
verify(this.logger, never()).warn(any());
}
@@ -137,9 +125,7 @@ public class SpringSecurityCoreVersionTests {
PowerMockito.spy(SpringVersion.class);
PowerMockito.doReturn("3.2.0.RELEASE").when(SpringSecurityCoreVersion.class, "getVersion");
PowerMockito.doReturn("3.2.10.RELEASE").when(SpringVersion.class, "getVersion");
-
performChecks(minSpringVersion);
-
verify(this.logger, never()).warn(any());
}
@@ -150,9 +136,7 @@ public class SpringSecurityCoreVersionTests {
PowerMockito.doReturn("3").when(SpringSecurityCoreVersion.class, "getVersion");
PowerMockito.doReturn("2").when(SpringVersion.class, "getVersion");
System.setProperty(getDisableChecksProperty(), Boolean.TRUE.toString());
-
performChecks();
-
verifyZeroInteractions(this.logger);
}
diff --git a/core/src/test/java/org/springframework/security/core/SpringSecurityMessageSourceTests.java b/core/src/test/java/org/springframework/security/core/SpringSecurityMessageSourceTests.java
index e9de5e9787..b795c3609b 100644
--- a/core/src/test/java/org/springframework/security/core/SpringSecurityMessageSourceTests.java
+++ b/core/src/test/java/org/springframework/security/core/SpringSecurityMessageSourceTests.java
@@ -42,12 +42,10 @@ public class SpringSecurityMessageSourceTests {
// Change Locale to English
Locale before = LocaleContextHolder.getLocale();
LocaleContextHolder.setLocale(Locale.FRENCH);
-
// Cause a message to be generated
MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor();
assertThat("Le jeton nonce est compromis FOOBAR").isEqualTo(messages.getMessage(
"DigestAuthenticationFilter.nonceCompromised", new Object[] { "FOOBAR" }, "ERROR - FAILED TO LOOKUP"));
-
// Revert to original Locale
LocaleContextHolder.setLocale(before);
}
@@ -57,14 +55,11 @@ public class SpringSecurityMessageSourceTests {
public void germanSystemLocaleWithEnglishLocaleContextHolder() {
Locale beforeSystem = Locale.getDefault();
Locale.setDefault(Locale.GERMAN);
-
Locale beforeHolder = LocaleContextHolder.getLocale();
LocaleContextHolder.setLocale(Locale.US);
-
MessageSourceAccessor msgs = SpringSecurityMessageSource.getAccessor();
assertThat("Access is denied")
.isEqualTo(msgs.getMessage("AbstractAccessDecisionManager.accessDenied", "Ooops"));
-
// Revert to original Locale
Locale.setDefault(beforeSystem);
LocaleContextHolder.setLocale(beforeHolder);
diff --git a/core/src/test/java/org/springframework/security/core/authority/AuthorityUtilsTests.java b/core/src/test/java/org/springframework/security/core/authority/AuthorityUtilsTests.java
index 5d3ff6a689..34af08348f 100644
--- a/core/src/test/java/org/springframework/security/core/authority/AuthorityUtilsTests.java
+++ b/core/src/test/java/org/springframework/security/core/authority/AuthorityUtilsTests.java
@@ -34,9 +34,7 @@ public class AuthorityUtilsTests {
public void commaSeparatedStringIsParsedCorrectly() {
List authorityArray = AuthorityUtils
.commaSeparatedStringToAuthorityList(" ROLE_A, B, C, ROLE_D\n,\n E ");
-
Set authorities = AuthorityUtils.authorityListToSet(authorityArray);
-
assertThat(authorities.contains("B")).isTrue();
assertThat(authorities.contains("C")).isTrue();
assertThat(authorities.contains("E")).isTrue();
diff --git a/core/src/test/java/org/springframework/security/core/authority/SimpleGrantedAuthorityTests.java b/core/src/test/java/org/springframework/security/core/authority/SimpleGrantedAuthorityTests.java
index 5380b81d71..09177a9fef 100644
--- a/core/src/test/java/org/springframework/security/core/authority/SimpleGrantedAuthorityTests.java
+++ b/core/src/test/java/org/springframework/security/core/authority/SimpleGrantedAuthorityTests.java
@@ -35,14 +35,10 @@ public class SimpleGrantedAuthorityTests {
SimpleGrantedAuthority auth1 = new SimpleGrantedAuthority("TEST");
assertThat(auth1).isEqualTo(auth1);
assertThat(new SimpleGrantedAuthority("TEST")).isEqualTo(auth1);
-
assertThat(auth1.equals("TEST")).isFalse();
-
SimpleGrantedAuthority auth3 = new SimpleGrantedAuthority("NOT_EQUAL");
assertThat(!auth1.equals(auth3)).isTrue();
-
assertThat(auth1.equals(mock(GrantedAuthority.class))).isFalse();
-
assertThat(auth1.equals(222)).isFalse();
}
diff --git a/core/src/test/java/org/springframework/security/core/authority/mapping/SimpleAuthoritiesMapperTests.java b/core/src/test/java/org/springframework/security/core/authority/mapping/SimpleAuthoritiesMapperTests.java
index f1515a3661..35781b5f30 100644
--- a/core/src/test/java/org/springframework/security/core/authority/mapping/SimpleAuthoritiesMapperTests.java
+++ b/core/src/test/java/org/springframework/security/core/authority/mapping/SimpleAuthoritiesMapperTests.java
@@ -57,13 +57,11 @@ public class SimpleAuthoritiesMapperTests {
assertThat(mapped).hasSize(2);
assertThat(mapped.contains("AaA")).isTrue();
assertThat(mapped.contains("Bbb")).isTrue();
-
mapper.setConvertToLowerCase(true);
mapped = AuthorityUtils.authorityListToSet(mapper.mapAuthorities(toMap));
assertThat(mapped).hasSize(2);
assertThat(mapped.contains("aaa")).isTrue();
assertThat(mapped.contains("bbb")).isTrue();
-
mapper.setConvertToLowerCase(false);
mapper.setConvertToUpperCase(true);
mapped = AuthorityUtils.authorityListToSet(mapper.mapAuthorities(toMap));
@@ -76,7 +74,6 @@ public class SimpleAuthoritiesMapperTests {
public void duplicatesAreRemoved() {
SimpleAuthorityMapper mapper = new SimpleAuthorityMapper();
mapper.setConvertToUpperCase(true);
-
Set mapped = AuthorityUtils
.authorityListToSet(mapper.mapAuthorities(AuthorityUtils.createAuthorityList("AaA", "AAA")));
assertThat(mapped).hasSize(1);
diff --git a/core/src/test/java/org/springframework/security/core/context/ReactiveSecurityContextHolderTests.java b/core/src/test/java/org/springframework/security/core/context/ReactiveSecurityContextHolderTests.java
index eb915d7e32..0cbad90105 100644
--- a/core/src/test/java/org/springframework/security/core/context/ReactiveSecurityContextHolderTests.java
+++ b/core/src/test/java/org/springframework/security/core/context/ReactiveSecurityContextHolderTests.java
@@ -32,7 +32,6 @@ public class ReactiveSecurityContextHolderTests {
@Test
public void getContextWhenEmpty() {
Mono context = ReactiveSecurityContextHolder.getContext();
-
StepVerifier.create(context).verifyComplete();
}
@@ -40,23 +39,19 @@ public class ReactiveSecurityContextHolderTests {
public void setContextAndGetContextThenEmitsContext() {
SecurityContext expectedContext = new SecurityContextImpl(
new TestingAuthenticationToken("user", "password", "ROLE_USER"));
-
Mono context = Mono.subscriberContext()
.flatMap((c) -> ReactiveSecurityContextHolder.getContext())
.subscriberContext(ReactiveSecurityContextHolder.withSecurityContext(Mono.just(expectedContext)));
-
StepVerifier.create(context).expectNext(expectedContext).verifyComplete();
}
@Test
public void demo() {
Authentication authentication = new TestingAuthenticationToken("user", "password", "ROLE_USER");
-
Mono messageByUsername = ReactiveSecurityContextHolder.getContext()
.map(SecurityContext::getAuthentication).map(Authentication::getName)
.flatMap(this::findMessageByUsername)
.subscriberContext(ReactiveSecurityContextHolder.withAuthentication(authentication));
-
StepVerifier.create(messageByUsername).expectNext("Hi user").verifyComplete();
}
@@ -68,23 +63,19 @@ public class ReactiveSecurityContextHolderTests {
public void setContextAndClearAndGetContextThenEmitsEmpty() {
SecurityContext expectedContext = new SecurityContextImpl(
new TestingAuthenticationToken("user", "password", "ROLE_USER"));
-
Mono context = Mono.subscriberContext()
.flatMap((c) -> ReactiveSecurityContextHolder.getContext())
.subscriberContext(ReactiveSecurityContextHolder.clearContext())
.subscriberContext(ReactiveSecurityContextHolder.withSecurityContext(Mono.just(expectedContext)));
-
StepVerifier.create(context).verifyComplete();
}
@Test
public void setAuthenticationAndGetContextThenEmitsContext() {
Authentication expectedAuthentication = new TestingAuthenticationToken("user", "password", "ROLE_USER");
-
Mono authentication = Mono.subscriberContext()
.flatMap((c) -> ReactiveSecurityContextHolder.getContext()).map(SecurityContext::getAuthentication)
.subscriberContext(ReactiveSecurityContextHolder.withAuthentication(expectedAuthentication));
-
StepVerifier.create(authentication).expectNext(expectedAuthentication).verifyComplete();
}
diff --git a/core/src/test/java/org/springframework/security/core/context/SecurityContextHolderTests.java b/core/src/test/java/org/springframework/security/core/context/SecurityContextHolderTests.java
index c8a22279cb..7ea8a2eca8 100644
--- a/core/src/test/java/org/springframework/security/core/context/SecurityContextHolderTests.java
+++ b/core/src/test/java/org/springframework/security/core/context/SecurityContextHolderTests.java
@@ -60,7 +60,6 @@ public class SecurityContextHolderTests {
fail("Should have rejected null");
}
catch (IllegalArgumentException expected) {
-
}
}
diff --git a/core/src/test/java/org/springframework/security/core/parameters/DefaultSecurityParameterNameDiscovererTests.java b/core/src/test/java/org/springframework/security/core/parameters/DefaultSecurityParameterNameDiscovererTests.java
index 8f1cb7ee62..bbaf08c7a1 100644
--- a/core/src/test/java/org/springframework/security/core/parameters/DefaultSecurityParameterNameDiscovererTests.java
+++ b/core/src/test/java/org/springframework/security/core/parameters/DefaultSecurityParameterNameDiscovererTests.java
@@ -48,15 +48,12 @@ public class DefaultSecurityParameterNameDiscovererTests {
public void constructorDefault() {
List discoverers = (List) ReflectionTestUtils
.getField(this.discoverer, "parameterNameDiscoverers");
-
assertThat(discoverers).hasSize(2);
-
ParameterNameDiscoverer annotationDisc = discoverers.get(0);
assertThat(annotationDisc).isInstanceOf(AnnotationParameterNameDiscoverer.class);
Set annotationsToUse = (Set) ReflectionTestUtils.getField(annotationDisc,
"annotationClassesToUse");
assertThat(annotationsToUse).containsOnly("org.springframework.security.access.method.P", P.class.getName());
-
assertThat(discoverers.get(1).getClass()).isEqualTo(DefaultParameterNameDiscoverer.class);
}
@@ -64,19 +61,15 @@ public class DefaultSecurityParameterNameDiscovererTests {
public void constructorDiscoverers() {
this.discoverer = new DefaultSecurityParameterNameDiscoverer(
Arrays.asList(new LocalVariableTableParameterNameDiscoverer()));
-
List discoverers = (List) ReflectionTestUtils
.getField(this.discoverer, "parameterNameDiscoverers");
-
assertThat(discoverers).hasSize(3);
assertThat(discoverers.get(0)).isInstanceOf(LocalVariableTableParameterNameDiscoverer.class);
-
ParameterNameDiscoverer annotationDisc = discoverers.get(1);
assertThat(annotationDisc).isInstanceOf(AnnotationParameterNameDiscoverer.class);
Set annotationsToUse = (Set) ReflectionTestUtils.getField(annotationDisc,
"annotationClassesToUse");
assertThat(annotationsToUse).containsOnly("org.springframework.security.access.method.P", P.class.getName());
-
assertThat(discoverers.get(2)).isInstanceOf(DefaultParameterNameDiscoverer.class);
}
diff --git a/core/src/test/java/org/springframework/security/core/session/SessionInformationTests.java b/core/src/test/java/org/springframework/security/core/session/SessionInformationTests.java
index f2d1cbbcaf..626fcea0ed 100644
--- a/core/src/test/java/org/springframework/security/core/session/SessionInformationTests.java
+++ b/core/src/test/java/org/springframework/security/core/session/SessionInformationTests.java
@@ -34,16 +34,12 @@ public class SessionInformationTests {
Object principal = "Some principal object";
String sessionId = "1234567890";
Date currentDate = new Date();
-
SessionInformation info = new SessionInformation(principal, sessionId, currentDate);
assertThat(info.getPrincipal()).isEqualTo(principal);
assertThat(info.getSessionId()).isEqualTo(sessionId);
assertThat(info.getLastRequest()).isEqualTo(currentDate);
-
Thread.sleep(10);
-
info.refreshLastRequest();
-
assertThat(info.getLastRequest().after(currentDate)).isTrue();
}
diff --git a/core/src/test/java/org/springframework/security/core/session/SessionRegistryImplTests.java b/core/src/test/java/org/springframework/security/core/session/SessionRegistryImplTests.java
index 404722f8cb..df9ea8376d 100644
--- a/core/src/test/java/org/springframework/security/core/session/SessionRegistryImplTests.java
+++ b/core/src/test/java/org/springframework/security/core/session/SessionRegistryImplTests.java
@@ -44,10 +44,8 @@ public class SessionRegistryImplTests {
public void sessionDestroyedEventRemovesSessionFromRegistry() {
Object principal = "Some principal object";
final String sessionId = "zzzz";
-
// Register new Session
this.sessionRegistry.registerNewSession(sessionId, principal);
-
// De-register session via an ApplicationEvent
this.sessionRegistry.onApplicationEvent(new SessionDestroyedEvent("") {
@Override
@@ -60,7 +58,6 @@ public class SessionRegistryImplTests {
return null;
}
});
-
// Check attempts to retrieve cleared session return null
assertThat(this.sessionRegistry.getSessionInformation(sessionId)).isNull();
}
@@ -70,10 +67,8 @@ public class SessionRegistryImplTests {
Object principal = "Some principal object";
final String sessionId = "zzzz";
final String newSessionId = "123";
-
// Register new Session
this.sessionRegistry.registerNewSession(sessionId, principal);
-
// De-register session via an ApplicationEvent
this.sessionRegistry.onApplicationEvent(new SessionIdChangedEvent("") {
@Override
@@ -86,7 +81,6 @@ public class SessionRegistryImplTests {
return newSessionId;
}
});
-
assertThat(this.sessionRegistry.getSessionInformation(sessionId)).isNull();
assertThat(this.sessionRegistry.getSessionInformation(newSessionId)).isNotNull();
assertThat(this.sessionRegistry.getSessionInformation(newSessionId).getPrincipal()).isEqualTo(principal);
@@ -99,11 +93,9 @@ public class SessionRegistryImplTests {
String sessionId1 = "1234567890";
String sessionId2 = "9876543210";
String sessionId3 = "5432109876";
-
this.sessionRegistry.registerNewSession(sessionId1, principal1);
this.sessionRegistry.registerNewSession(sessionId2, principal1);
this.sessionRegistry.registerNewSession(sessionId3, principal2);
-
assertThat(this.sessionRegistry.getAllPrincipals()).hasSize(2);
assertThat(this.sessionRegistry.getAllPrincipals().contains(principal1)).isTrue();
assertThat(this.sessionRegistry.getAllPrincipals().contains(principal2)).isTrue();
@@ -115,32 +107,24 @@ public class SessionRegistryImplTests {
String sessionId = "1234567890";
// Register new Session
this.sessionRegistry.registerNewSession(sessionId, principal);
-
// Retrieve existing session by session ID
Date currentDateTime = this.sessionRegistry.getSessionInformation(sessionId).getLastRequest();
assertThat(this.sessionRegistry.getSessionInformation(sessionId).getPrincipal()).isEqualTo(principal);
assertThat(this.sessionRegistry.getSessionInformation(sessionId).getSessionId()).isEqualTo(sessionId);
assertThat(this.sessionRegistry.getSessionInformation(sessionId).getLastRequest()).isNotNull();
-
// Retrieve existing session by principal
assertThat(this.sessionRegistry.getAllSessions(principal, false)).hasSize(1);
-
// Sleep to ensure SessionRegistryImpl will update time
Thread.sleep(1000);
-
// Update request date/time
this.sessionRegistry.refreshLastRequest(sessionId);
-
Date retrieved = this.sessionRegistry.getSessionInformation(sessionId).getLastRequest();
assertThat(retrieved.after(currentDateTime)).isTrue();
-
// Check it retrieves correctly when looked up via principal
assertThat(this.sessionRegistry.getAllSessions(principal, false).get(0).getLastRequest()).isCloseTo(retrieved,
2000L);
-
// Clear session information
this.sessionRegistry.removeSessionInformation(sessionId);
-
// Check attempts to retrieve cleared session return null
assertThat(this.sessionRegistry.getSessionInformation(sessionId)).isNull();
assertThat(this.sessionRegistry.getAllSessions(principal, false)).isEmpty();
@@ -151,21 +135,17 @@ public class SessionRegistryImplTests {
Object principal = "Some principal object";
String sessionId1 = "1234567890";
String sessionId2 = "9876543210";
-
this.sessionRegistry.registerNewSession(sessionId1, principal);
List sessions = this.sessionRegistry.getAllSessions(principal, false);
assertThat(sessions).hasSize(1);
assertThat(contains(sessionId1, principal)).isTrue();
-
this.sessionRegistry.registerNewSession(sessionId2, principal);
sessions = this.sessionRegistry.getAllSessions(principal, false);
assertThat(sessions).hasSize(2);
assertThat(contains(sessionId2, principal)).isTrue();
-
// Expire one session
SessionInformation session = this.sessionRegistry.getSessionInformation(sessionId2);
session.expireNow();
-
// Check retrieval still correct
assertThat(this.sessionRegistry.getSessionInformation(sessionId2).isExpired()).isTrue();
assertThat(this.sessionRegistry.getSessionInformation(sessionId1).isExpired()).isFalse();
@@ -176,22 +156,18 @@ public class SessionRegistryImplTests {
Object principal = "Some principal object";
String sessionId1 = "1234567890";
String sessionId2 = "9876543210";
-
this.sessionRegistry.registerNewSession(sessionId1, principal);
List sessions = this.sessionRegistry.getAllSessions(principal, false);
assertThat(sessions).hasSize(1);
assertThat(contains(sessionId1, principal)).isTrue();
-
this.sessionRegistry.registerNewSession(sessionId2, principal);
sessions = this.sessionRegistry.getAllSessions(principal, false);
assertThat(sessions).hasSize(2);
assertThat(contains(sessionId2, principal)).isTrue();
-
this.sessionRegistry.removeSessionInformation(sessionId1);
sessions = this.sessionRegistry.getAllSessions(principal, false);
assertThat(sessions).hasSize(1);
assertThat(contains(sessionId2, principal)).isTrue();
-
this.sessionRegistry.removeSessionInformation(sessionId2);
assertThat(this.sessionRegistry.getSessionInformation(sessionId2)).isNull();
assertThat(this.sessionRegistry.getAllSessions(principal, false)).isEmpty();
@@ -199,13 +175,11 @@ public class SessionRegistryImplTests {
private boolean contains(String sessionId, Object principal) {
List info = this.sessionRegistry.getAllSessions(principal, false);
-
for (SessionInformation sessionInformation : info) {
if (sessionId.equals(sessionInformation.getSessionId())) {
return true;
}
}
-
return false;
}
diff --git a/core/src/test/java/org/springframework/security/core/token/DefaultTokenTests.java b/core/src/test/java/org/springframework/security/core/token/DefaultTokenTests.java
index 5a392720ac..1dc583b84b 100644
--- a/core/src/test/java/org/springframework/security/core/token/DefaultTokenTests.java
+++ b/core/src/test/java/org/springframework/security/core/token/DefaultTokenTests.java
@@ -35,7 +35,6 @@ public class DefaultTokenTests {
String key = "key";
long created = new Date().getTime();
String extendedInformation = "extended";
-
DefaultToken t1 = new DefaultToken(key, created, extendedInformation);
DefaultToken t2 = new DefaultToken(key, created, extendedInformation);
assertThat(t2).isEqualTo(t1);
@@ -52,7 +51,6 @@ public class DefaultTokenTests {
public void testEqualityWithDifferentExtendedInformation3() {
String key = "key";
long created = new Date().getTime();
-
DefaultToken t1 = new DefaultToken(key, created, "length1");
DefaultToken t2 = new DefaultToken(key, created, "longerLength2");
assertThat(t1).isNotEqualTo(t2);
diff --git a/core/src/test/java/org/springframework/security/core/userdetails/MapReactiveUserDetailsServiceTests.java b/core/src/test/java/org/springframework/security/core/userdetails/MapReactiveUserDetailsServiceTests.java
index f9d983a406..a6f8760871 100644
--- a/core/src/test/java/org/springframework/security/core/userdetails/MapReactiveUserDetailsServiceTests.java
+++ b/core/src/test/java/org/springframework/security/core/userdetails/MapReactiveUserDetailsServiceTests.java
@@ -33,7 +33,6 @@ public class MapReactiveUserDetailsServiceTests {
.roles("USER")
.build();
// @formatter:on
-
private MapReactiveUserDetailsService users = new MapReactiveUserDetailsService(Arrays.asList(USER_DETAILS));
@Test(expected = IllegalArgumentException.class)
@@ -71,7 +70,6 @@ public class MapReactiveUserDetailsServiceTests {
assertThat(foundUser.getPassword()).isNotEmpty();
foundUser.eraseCredentials();
assertThat(foundUser.getPassword()).isNull();
-
foundUser = this.users.findByUsername(USER_DETAILS.getUsername()).cast(User.class).block();
assertThat(foundUser.getPassword()).isNotEmpty();
}
diff --git a/core/src/test/java/org/springframework/security/core/userdetails/MockUserDetailsService.java b/core/src/test/java/org/springframework/security/core/userdetails/MockUserDetailsService.java
index 3a2a074971..5a771a6ed9 100644
--- a/core/src/test/java/org/springframework/security/core/userdetails/MockUserDetailsService.java
+++ b/core/src/test/java/org/springframework/security/core/userdetails/MockUserDetailsService.java
@@ -49,7 +49,6 @@ public class MockUserDetailsService implements UserDetailsService {
if (this.users.get(username) == null) {
throw new UsernameNotFoundException("User not found: " + username);
}
-
return this.users.get(username);
}
diff --git a/core/src/test/java/org/springframework/security/core/userdetails/UserTests.java b/core/src/test/java/org/springframework/security/core/userdetails/UserTests.java
index 920d6a249f..4ac32d65ba 100644
--- a/core/src/test/java/org/springframework/security/core/userdetails/UserTests.java
+++ b/core/src/test/java/org/springframework/security/core/userdetails/UserTests.java
@@ -44,7 +44,6 @@ public class UserTests {
@Test
public void equalsReturnsTrueIfUsernamesAreTheSame() {
User user1 = new User("rod", "koala", true, true, true, true, ROLE_12);
-
assertThat(user1).isNotNull();
assertThat(user1).isNotEqualTo("A STRING");
assertThat(user1).isEqualTo(user1);
@@ -56,7 +55,6 @@ public class UserTests {
User user1 = new User("rod", "koala", true, true, true, true, ROLE_12);
Set users = new HashSet<>();
users.add(user1);
-
assertThat(users).contains(new User("rod", "koala", true, true, true, true, ROLE_12));
assertThat(users).contains(new User("rod", "anotherpass", false, false, false, false,
AuthorityUtils.createAuthorityList("ROLE_X")));
@@ -66,7 +64,6 @@ public class UserTests {
@Test
public void testNoArgConstructorDoesntExist() {
Class clazz = User.class;
-
try {
clazz.getDeclaredConstructor((Class[]) null);
fail("Should have thrown NoSuchMethodException");
@@ -83,14 +80,12 @@ public class UserTests {
}
catch (IllegalArgumentException expected) {
}
-
try {
new User("rod", null, true, true, true, true, ROLE_12);
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
}
-
try {
List auths = AuthorityUtils.createAuthorityList("ROLE_ONE");
auths.add(null);
@@ -145,9 +140,7 @@ public class UserTests {
@Test
public void withUserDetailsWhenAllEnabled() {
User expected = new User("rob", "pass", true, true, true, true, ROLE_12);
-
UserDetails actual = User.withUserDetails(expected).build();
-
assertThat(actual.getUsername()).isEqualTo(expected.getUsername());
assertThat(actual.getPassword()).isEqualTo(expected.getPassword());
assertThat(actual.getAuthorities()).isEqualTo(expected.getAuthorities());
@@ -160,9 +153,7 @@ public class UserTests {
@Test
public void withUserDetailsWhenAllDisabled() {
User expected = new User("rob", "pass", false, false, false, false, ROLE_12);
-
UserDetails actual = User.withUserDetails(expected).build();
-
assertThat(actual.getUsername()).isEqualTo(expected.getUsername());
assertThat(actual.getPassword()).isEqualTo(expected.getPassword());
assertThat(actual.getAuthorities()).isEqualTo(expected.getAuthorities());
@@ -175,10 +166,8 @@ public class UserTests {
@Test
public void withUserWhenDetailsPasswordEncoderThenEncodes() {
UserDetails userDetails = User.withUsername("user").password("password").roles("USER").build();
-
UserDetails withEncodedPassword = User.withUserDetails(userDetails).passwordEncoder((p) -> p + "encoded")
.build();
-
assertThat(withEncodedPassword.getPassword()).isEqualTo("passwordencoded");
}
@@ -186,7 +175,6 @@ public class UserTests {
public void withUsernameWhenPasswordEncoderAndPasswordThenEncodes() {
UserDetails withEncodedPassword = User.withUsername("user").password("password")
.passwordEncoder((p) -> p + "encoded").roles("USER").build();
-
assertThat(withEncodedPassword.getPassword()).isEqualTo("passwordencoded");
}
@@ -199,7 +187,6 @@ public class UserTests {
.roles("USER")
.build();
// @formatter:on
-
assertThat(withEncodedPassword.getPassword()).isEqualTo("passwordencoded");
}
@@ -214,7 +201,6 @@ public class UserTests {
.roles("USER")
.build();
// @formatter:on
-
assertThat(withEncodedPassword.getPassword()).isEqualTo("passwordencoded");
}
diff --git a/core/src/test/java/org/springframework/security/core/userdetails/cache/EhCacheBasedUserCacheTests.java b/core/src/test/java/org/springframework/security/core/userdetails/cache/EhCacheBasedUserCacheTests.java
index 1d989dbe98..45f1887853 100644
--- a/core/src/test/java/org/springframework/security/core/userdetails/cache/EhCacheBasedUserCacheTests.java
+++ b/core/src/test/java/org/springframework/security/core/userdetails/cache/EhCacheBasedUserCacheTests.java
@@ -53,7 +53,6 @@ public class EhCacheBasedUserCacheTests {
private Ehcache getCache() {
Ehcache cache = cacheManager.getCache("ehcacheusercachetests");
cache.removeAll();
-
return cache;
}
@@ -67,15 +66,12 @@ public class EhCacheBasedUserCacheTests {
EhCacheBasedUserCache cache = new EhCacheBasedUserCache();
cache.setCache(getCache());
cache.afterPropertiesSet();
-
// Check it gets stored in the cache
cache.putUserInCache(getUser());
assertThat(getUser().getPassword()).isEqualTo(cache.getUserFromCache(getUser().getUsername()).getPassword());
-
// Check it gets removed from the cache
cache.removeUserFromCache(getUser());
assertThat(cache.getUserFromCache(getUser().getUsername())).isNull();
-
// Check it doesn't return values for null or unknown users
assertThat(cache.getUserFromCache(null)).isNull();
assertThat(cache.getUserFromCache("UNKNOWN_USER")).isNull();
@@ -84,10 +80,8 @@ public class EhCacheBasedUserCacheTests {
@Test(expected = IllegalArgumentException.class)
public void startupDetectsMissingCache() throws Exception {
EhCacheBasedUserCache cache = new EhCacheBasedUserCache();
-
cache.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
-
Ehcache myCache = getCache();
cache.setCache(myCache);
assertThat(cache.getCache()).isEqualTo(myCache);
diff --git a/core/src/test/java/org/springframework/security/core/userdetails/cache/SpringCacheBasedUserCacheTests.java b/core/src/test/java/org/springframework/security/core/userdetails/cache/SpringCacheBasedUserCacheTests.java
index 7fa442e322..44bf44bade 100644
--- a/core/src/test/java/org/springframework/security/core/userdetails/cache/SpringCacheBasedUserCacheTests.java
+++ b/core/src/test/java/org/springframework/security/core/userdetails/cache/SpringCacheBasedUserCacheTests.java
@@ -64,15 +64,12 @@ public class SpringCacheBasedUserCacheTests {
@Test
public void cacheOperationsAreSuccessful() throws Exception {
SpringCacheBasedUserCache cache = new SpringCacheBasedUserCache(getCache());
-
// Check it gets stored in the cache
cache.putUserInCache(getUser());
assertThat(getUser().getPassword()).isEqualTo(cache.getUserFromCache(getUser().getUsername()).getPassword());
-
// Check it gets removed from the cache
cache.removeUserFromCache(getUser());
assertThat(cache.getUserFromCache(getUser().getUsername())).isNull();
-
// Check it doesn't return values for null or unknown users
assertThat(cache.getUserFromCache(null)).isNull();
assertThat(cache.getUserFromCache("UNKNOWN_USER")).isNull();
diff --git a/core/src/test/java/org/springframework/security/core/userdetails/jdbc/JdbcDaoImplTests.java b/core/src/test/java/org/springframework/security/core/userdetails/jdbc/JdbcDaoImplTests.java
index bfad0a615e..90f45656b4 100644
--- a/core/src/test/java/org/springframework/security/core/userdetails/jdbc/JdbcDaoImplTests.java
+++ b/core/src/test/java/org/springframework/security/core/userdetails/jdbc/JdbcDaoImplTests.java
@@ -43,7 +43,6 @@ public class JdbcDaoImplTests {
JdbcDaoImpl dao = new JdbcDaoImpl();
dao.setDataSource(PopulatedDatabase.getDataSource());
dao.afterPropertiesSet();
-
return dao;
}
@@ -52,7 +51,6 @@ public class JdbcDaoImplTests {
dao.setDataSource(PopulatedDatabase.getDataSource());
dao.setRolePrefix("ARBITRARY_PREFIX_");
dao.afterPropertiesSet();
-
return dao;
}
@@ -63,7 +61,6 @@ public class JdbcDaoImplTests {
assertThat(user.getUsername()).isEqualTo("rod");
assertThat(user.getPassword()).isEqualTo("koala");
assertThat(user.isEnabled()).isTrue();
-
assertThat(AuthorityUtils.authorityListToSet(user.getAuthorities())).contains("ROLE_TELLER");
assertThat(AuthorityUtils.authorityListToSet(user.getAuthorities())).contains("ROLE_SUPERVISOR");
}
@@ -88,7 +85,6 @@ public class JdbcDaoImplTests {
JdbcDaoImpl dao = new JdbcDaoImpl();
dao.setAuthoritiesByUsernameQuery("SELECT * FROM FOO");
assertThat(dao.getAuthoritiesByUsernameQuery()).isEqualTo("SELECT * FROM FOO");
-
dao.setUsersByUsernameQuery("SELECT USERS FROM FOO");
assertThat(dao.getUsersByUsernameQuery()).isEqualTo("SELECT USERS FROM FOO");
}
@@ -96,7 +92,6 @@ public class JdbcDaoImplTests {
@Test
public void testLookupFailsIfUserHasNoGrantedAuthorities() throws Exception {
JdbcDaoImpl dao = makePopulatedJdbcDao();
-
try {
dao.loadUserByUsername("cooper");
fail("Should have thrown UsernameNotFoundException");
@@ -108,13 +103,11 @@ public class JdbcDaoImplTests {
@Test
public void testLookupFailsWithWrongUsername() throws Exception {
JdbcDaoImpl dao = makePopulatedJdbcDao();
-
try {
dao.loadUserByUsername("UNKNOWN_USER");
fail("Should have thrown UsernameNotFoundException");
}
catch (UsernameNotFoundException expected) {
-
}
}
@@ -129,11 +122,9 @@ public class JdbcDaoImplTests {
public void testRolePrefixWorks() throws Exception {
JdbcDaoImpl dao = makePopulatedJdbcDaoWithRolePrefix();
assertThat(dao.getRolePrefix()).isEqualTo("ARBITRARY_PREFIX_");
-
UserDetails user = dao.loadUserByUsername("rod");
assertThat(user.getUsername()).isEqualTo("rod");
assertThat(user.getAuthorities()).hasSize(2);
-
assertThat(AuthorityUtils.authorityListToSet(user.getAuthorities())).contains("ARBITRARY_PREFIX_ROLE_TELLER");
assertThat(AuthorityUtils.authorityListToSet(user.getAuthorities()))
.contains("ARBITRARY_PREFIX_ROLE_SUPERVISOR");
@@ -144,7 +135,6 @@ public class JdbcDaoImplTests {
JdbcDaoImpl dao = makePopulatedJdbcDao();
dao.setEnableAuthorities(false);
dao.setEnableGroups(true);
-
UserDetails jerry = dao.loadUserByUsername("jerry");
assertThat(jerry.getAuthorities()).hasSize(3);
}
@@ -162,34 +152,29 @@ public class JdbcDaoImplTests {
@Test
public void testStartupFailsIfDataSourceNotSet() {
JdbcDaoImpl dao = new JdbcDaoImpl();
-
try {
dao.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@Test
public void testStartupFailsIfUserMapSetToNull() {
JdbcDaoImpl dao = new JdbcDaoImpl();
-
try {
dao.setDataSource(null);
dao.afterPropertiesSet();
fail("Should have thrown IllegalArgumentException");
}
catch (IllegalArgumentException expected) {
-
}
}
@Test(expected = IllegalArgumentException.class)
public void setMessageSourceWhenNullThenThrowsException() {
JdbcDaoImpl dao = new JdbcDaoImpl();
-
dao.setMessageSource(null);
}
@@ -199,9 +184,7 @@ public class JdbcDaoImplTests {
JdbcDaoImpl dao = new JdbcDaoImpl();
dao.setMessageSource(source);
String code = "code";
-
dao.getMessages().getMessage(code);
-
verify(source).getMessage(eq(code), any(), any());
}
diff --git a/core/src/test/java/org/springframework/security/core/userdetails/memory/UserAttributeEditorTests.java b/core/src/test/java/org/springframework/security/core/userdetails/memory/UserAttributeEditorTests.java
index 757d05bbeb..1d700855e8 100644
--- a/core/src/test/java/org/springframework/security/core/userdetails/memory/UserAttributeEditorTests.java
+++ b/core/src/test/java/org/springframework/security/core/userdetails/memory/UserAttributeEditorTests.java
@@ -31,7 +31,6 @@ public class UserAttributeEditorTests {
public void testCorrectOperationWithTrailingSpaces() {
UserAttributeEditor editor = new UserAttributeEditor();
editor.setAsText("password ,ROLE_ONE,ROLE_TWO ");
-
UserAttribute user = (UserAttribute) editor.getValue();
assertThat(user.getPassword()).isEqualTo("password");
assertThat(user.getAuthorities()).hasSize(2);
@@ -43,7 +42,6 @@ public class UserAttributeEditorTests {
public void testCorrectOperationWithoutEnabledDisabledKeyword() {
UserAttributeEditor editor = new UserAttributeEditor();
editor.setAsText("password,ROLE_ONE,ROLE_TWO");
-
UserAttribute user = (UserAttribute) editor.getValue();
assertThat(user.isValid()).isTrue();
assertThat(user.isEnabled()).isTrue(); // default
@@ -57,7 +55,6 @@ public class UserAttributeEditorTests {
public void testDisabledKeyword() {
UserAttributeEditor editor = new UserAttributeEditor();
editor.setAsText("password,disabled,ROLE_ONE,ROLE_TWO");
-
UserAttribute user = (UserAttribute) editor.getValue();
assertThat(user.isValid()).isTrue();
assertThat(!user.isEnabled()).isTrue();
@@ -71,7 +68,6 @@ public class UserAttributeEditorTests {
public void testEmptyStringReturnsNull() {
UserAttributeEditor editor = new UserAttributeEditor();
editor.setAsText("");
-
UserAttribute user = (UserAttribute) editor.getValue();
assertThat(user == null).isTrue();
}
@@ -80,7 +76,6 @@ public class UserAttributeEditorTests {
public void testEnabledKeyword() {
UserAttributeEditor editor = new UserAttributeEditor();
editor.setAsText("password,ROLE_ONE,enabled,ROLE_TWO");
-
UserAttribute user = (UserAttribute) editor.getValue();
assertThat(user.isValid()).isTrue();
assertThat(user.isEnabled()).isTrue();
@@ -94,7 +89,6 @@ public class UserAttributeEditorTests {
public void testMalformedStringReturnsNull() {
UserAttributeEditor editor = new UserAttributeEditor();
editor.setAsText("MALFORMED_STRING");
-
UserAttribute user = (UserAttribute) editor.getValue();
assertThat(user == null).isTrue();
}
@@ -103,7 +97,6 @@ public class UserAttributeEditorTests {
public void testNoPasswordOrRolesReturnsNull() {
UserAttributeEditor editor = new UserAttributeEditor();
editor.setAsText("disabled");
-
UserAttribute user = (UserAttribute) editor.getValue();
assertThat(user == null).isTrue();
}
@@ -112,7 +105,6 @@ public class UserAttributeEditorTests {
public void testNoRolesReturnsNull() {
UserAttributeEditor editor = new UserAttributeEditor();
editor.setAsText("password,enabled");
-
UserAttribute user = (UserAttribute) editor.getValue();
assertThat(user == null).isTrue();
}
@@ -121,7 +113,6 @@ public class UserAttributeEditorTests {
public void testNullReturnsNull() {
UserAttributeEditor editor = new UserAttributeEditor();
editor.setAsText(null);
-
UserAttribute user = (UserAttribute) editor.getValue();
assertThat(user == null).isTrue();
}
diff --git a/core/src/test/java/org/springframework/security/jackson2/AnonymousAuthenticationTokenMixinTests.java b/core/src/test/java/org/springframework/security/jackson2/AnonymousAuthenticationTokenMixinTests.java
index 1efa6f4b62..924364f352 100644
--- a/core/src/test/java/org/springframework/security/jackson2/AnonymousAuthenticationTokenMixinTests.java
+++ b/core/src/test/java/org/springframework/security/jackson2/AnonymousAuthenticationTokenMixinTests.java
@@ -48,7 +48,6 @@ public class AnonymousAuthenticationTokenMixinTests extends AbstractMixinTests {
+ "\"authorities\": " + SimpleGrantedAuthorityMixinTests.AUTHORITIES_ARRAYLIST_JSON
+ "}";
// @formatter:on
-
@Test
public void serializeAnonymousAuthenticationTokenTest() throws JsonProcessingException, JSONException {
User user = createDefaultUser();
diff --git a/core/src/test/java/org/springframework/security/jackson2/BadCredentialsExceptionMixinTests.java b/core/src/test/java/org/springframework/security/jackson2/BadCredentialsExceptionMixinTests.java
index 2fcc882be4..91dbb6750e 100644
--- a/core/src/test/java/org/springframework/security/jackson2/BadCredentialsExceptionMixinTests.java
+++ b/core/src/test/java/org/springframework/security/jackson2/BadCredentialsExceptionMixinTests.java
@@ -41,7 +41,6 @@ public class BadCredentialsExceptionMixinTests extends AbstractMixinTests {
+ "\"suppressed\": [\"[Ljava.lang.Throwable;\",[]]"
+ "}";
// @formatter:on
-
@Test
public void serializeBadCredentialsExceptionMixinTest() throws JsonProcessingException, JSONException {
BadCredentialsException exception = new BadCredentialsException("message");
diff --git a/core/src/test/java/org/springframework/security/jackson2/RememberMeAuthenticationTokenMixinTests.java b/core/src/test/java/org/springframework/security/jackson2/RememberMeAuthenticationTokenMixinTests.java
index 9500354e97..85b05860e8 100644
--- a/core/src/test/java/org/springframework/security/jackson2/RememberMeAuthenticationTokenMixinTests.java
+++ b/core/src/test/java/org/springframework/security/jackson2/RememberMeAuthenticationTokenMixinTests.java
@@ -48,7 +48,6 @@ public class RememberMeAuthenticationTokenMixinTests extends AbstractMixinTests
+ "\"authorities\": " + SimpleGrantedAuthorityMixinTests.AUTHORITIES_ARRAYLIST_JSON
+ "}";
// @formatter:on
-
// @formatter:off
private static final String REMEMBERME_AUTH_STRINGPRINCIPAL_JSON = "{"
+ "\"@class\": \"org.springframework.security.authentication.RememberMeAuthenticationToken\","
@@ -59,7 +58,6 @@ public class RememberMeAuthenticationTokenMixinTests extends AbstractMixinTests
+ "\"authorities\": " + SimpleGrantedAuthorityMixinTests.AUTHORITIES_ARRAYLIST_JSON
+ "}";
// @formatter:on
-
@Test(expected = IllegalArgumentException.class)
public void testWithNullPrincipal() {
new RememberMeAuthenticationToken("key", null, Collections.emptyList());
diff --git a/core/src/test/java/org/springframework/security/jackson2/SecurityContextMixinTests.java b/core/src/test/java/org/springframework/security/jackson2/SecurityContextMixinTests.java
index ab9405c986..8f2806079f 100644
--- a/core/src/test/java/org/springframework/security/jackson2/SecurityContextMixinTests.java
+++ b/core/src/test/java/org/springframework/security/jackson2/SecurityContextMixinTests.java
@@ -44,7 +44,6 @@ public class SecurityContextMixinTests extends AbstractMixinTests {
+ "\"authentication\": " + UsernamePasswordAuthenticationTokenMixinTests.AUTHENTICATED_STRINGPRINCIPAL_JSON
+ "}";
// @formatter:on
-
@Test
public void securityContextSerializeTest() throws JsonProcessingException, JSONException {
SecurityContext context = new SecurityContextImpl();
diff --git a/core/src/test/java/org/springframework/security/jackson2/SecurityJackson2ModulesTests.java b/core/src/test/java/org/springframework/security/jackson2/SecurityJackson2ModulesTests.java
index d053a451b9..106750a1e6 100644
--- a/core/src/test/java/org/springframework/security/jackson2/SecurityJackson2ModulesTests.java
+++ b/core/src/test/java/org/springframework/security/jackson2/SecurityJackson2ModulesTests.java
@@ -58,7 +58,6 @@ public class SecurityJackson2ModulesTests {
public void readValueWhenExplicitDefaultTypingAfterSecuritySetupThenReadsAsSpecificType() throws Exception {
this.mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
String content = "{\"@class\":\"org.springframework.security.jackson2.SecurityJackson2ModulesTests$NotAllowlisted\",\"property\":\"bar\"}";
-
assertThat(this.mapper.readValue(content, Object.class)).isInstanceOf(NotAllowlisted.class);
}
@@ -68,14 +67,12 @@ public class SecurityJackson2ModulesTests {
this.mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
SecurityJackson2Modules.enableDefaultTyping(this.mapper);
String content = "{\"@class\":\"org.springframework.security.jackson2.SecurityJackson2ModulesTests$NotAllowlisted\",\"property\":\"bar\"}";
-
assertThat(this.mapper.readValue(content, Object.class)).isInstanceOf(NotAllowlisted.class);
}
@Test
public void readValueWhenAnnotatedThenReadsAsSpecificType() throws Exception {
String content = "{\"@class\":\"org.springframework.security.jackson2.SecurityJackson2ModulesTests$NotAllowlistedButAnnotated\",\"property\":\"bar\"}";
-
assertThat(this.mapper.readValue(content, Object.class)).isInstanceOf(NotAllowlistedButAnnotated.class);
}
@@ -83,7 +80,6 @@ public class SecurityJackson2ModulesTests {
public void readValueWhenMixinProvidedThenReadsAsSpecificType() throws Exception {
this.mapper.addMixIn(NotAllowlisted.class, NotAllowlistedMixin.class);
String content = "{\"@class\":\"org.springframework.security.jackson2.SecurityJackson2ModulesTests$NotAllowlisted\",\"property\":\"bar\"}";
-
assertThat(this.mapper.readValue(content, Object.class)).isInstanceOf(NotAllowlisted.class);
}
@@ -91,7 +87,6 @@ public class SecurityJackson2ModulesTests {
public void readValueWhenHashMapThenReadsAsSpecificType() throws Exception {
this.mapper.addMixIn(NotAllowlisted.class, NotAllowlistedMixin.class);
String content = "{\"@class\":\"java.util.HashMap\"}";
-
assertThat(this.mapper.readValue(content, Object.class)).isInstanceOf(HashMap.class);
}
diff --git a/core/src/test/java/org/springframework/security/jackson2/SimpleGrantedAuthorityMixinTests.java b/core/src/test/java/org/springframework/security/jackson2/SimpleGrantedAuthorityMixinTests.java
index 2786cd2b24..05d67d7323 100644
--- a/core/src/test/java/org/springframework/security/jackson2/SimpleGrantedAuthorityMixinTests.java
+++ b/core/src/test/java/org/springframework/security/jackson2/SimpleGrantedAuthorityMixinTests.java
@@ -36,18 +36,12 @@ public class SimpleGrantedAuthorityMixinTests extends AbstractMixinTests {
// @formatter:off
public static final String AUTHORITY_JSON = "{\"@class\": \"org.springframework.security.core.authority.SimpleGrantedAuthority\", \"authority\": \"ROLE_USER\"}";
-
public static final String AUTHORITIES_ARRAYLIST_JSON = "[\"java.util.Collections$UnmodifiableRandomAccessList\", [" + AUTHORITY_JSON + "]]";
-
public static final String AUTHORITIES_SET_JSON = "[\"java.util.Collections$UnmodifiableSet\", [" + AUTHORITY_JSON + "]]";
-
public static final String NO_AUTHORITIES_ARRAYLIST_JSON = "[\"java.util.Collections$UnmodifiableRandomAccessList\", []]";
-
public static final String EMPTY_AUTHORITIES_ARRAYLIST_JSON = "[\"java.util.Collections$EmptyList\", []]";
-
public static final String NO_AUTHORITIES_SET_JSON = "[\"java.util.Collections$UnmodifiableSet\", []]";
// @formatter:on
-
@Test
public void serializeSimpleGrantedAuthorityTest() throws JsonProcessingException, JSONException {
SimpleGrantedAuthority authority = new SimpleGrantedAuthority("ROLE_USER");
diff --git a/core/src/test/java/org/springframework/security/jackson2/UserDeserializerTests.java b/core/src/test/java/org/springframework/security/jackson2/UserDeserializerTests.java
index f7d902486b..299b4f9026 100644
--- a/core/src/test/java/org/springframework/security/jackson2/UserDeserializerTests.java
+++ b/core/src/test/java/org/springframework/security/jackson2/UserDeserializerTests.java
@@ -53,7 +53,6 @@ public class UserDeserializerTests extends AbstractMixinTests {
+ "\"authorities\": " + SimpleGrantedAuthorityMixinTests.AUTHORITIES_SET_JSON
+ "}";
// @formatter:on
-
@Test
public void serializeUserTest() throws JsonProcessingException, JSONException {
User user = createDefaultUser();
@@ -72,14 +71,12 @@ public class UserDeserializerTests extends AbstractMixinTests {
public void deserializeUserWithNullPasswordEmptyAuthorityTest() throws IOException {
String userJsonWithoutPasswordString = USER_JSON.replace(SimpleGrantedAuthorityMixinTests.AUTHORITIES_SET_JSON,
"[]");
-
this.mapper.readValue(userJsonWithoutPasswordString, User.class);
}
@Test
public void deserializeUserWithNullPasswordNoAuthorityTest() throws Exception {
String userJsonWithoutPasswordString = removeNode(userWithNoAuthoritiesJson(), this.mapper, "password");
-
User user = this.mapper.readValue(userJsonWithoutPasswordString, User.class);
assertThat(user).isNotNull();
assertThat(user.getUsername()).isEqualTo("admin");
@@ -107,7 +104,6 @@ public class UserDeserializerTests extends AbstractMixinTests {
private String removeNode(String json, ObjectMapper mapper, String toRemove) throws Exception {
ObjectNode node = mapper.getFactory().createParser(json).readValueAsTree();
node.remove(toRemove);
-
String result = mapper.writeValueAsString(node);
JSONAssert.assertNotEquals(json, result, false);
return result;
diff --git a/core/src/test/java/org/springframework/security/provisioning/InMemoryUserDetailsManagerTests.java b/core/src/test/java/org/springframework/security/provisioning/InMemoryUserDetailsManagerTests.java
index c3c4816c06..cca7f4d75b 100644
--- a/core/src/test/java/org/springframework/security/provisioning/InMemoryUserDetailsManagerTests.java
+++ b/core/src/test/java/org/springframework/security/provisioning/InMemoryUserDetailsManagerTests.java
@@ -44,7 +44,6 @@ public class InMemoryUserDetailsManagerTests {
@Test
public void changePasswordWhenUsernameIsNotInLowercase() {
UserDetails userNotLowerCase = User.withUserDetails(PasswordEncodedUser.user()).username("User").build();
-
String newPassword = "newPassword";
this.manager.updatePassword(userNotLowerCase, newPassword);
assertThat(this.manager.loadUserByUsername(userNotLowerCase.getUsername()).getPassword())
diff --git a/core/src/test/java/org/springframework/security/provisioning/JdbcUserDetailsManagerTests.java b/core/src/test/java/org/springframework/security/provisioning/JdbcUserDetailsManagerTests.java
index 413bff2c53..ddb9a46d7e 100644
--- a/core/src/test/java/org/springframework/security/provisioning/JdbcUserDetailsManagerTests.java
+++ b/core/src/test/java/org/springframework/security/provisioning/JdbcUserDetailsManagerTests.java
@@ -97,7 +97,6 @@ public class JdbcUserDetailsManagerTests {
this.manager.setChangePasswordSql(JdbcUserDetailsManager.DEF_CHANGE_PASSWORD_SQL);
this.manager.initDao();
this.template = this.manager.getJdbcTemplate();
-
this.template.execute("create table users(username varchar(20) not null primary key,"
+ "password varchar(20) not null, enabled boolean not null)");
this.template
@@ -121,7 +120,6 @@ public class JdbcUserDetailsManagerTests {
this.template.execute("alter table users add column acc_locked boolean default false not null");
this.template.execute("alter table users add column acc_expired boolean default false not null");
this.template.execute("alter table users add column creds_expired boolean default false not null");
-
this.manager.setUsersByUsernameQuery(
"select username,password,enabled, acc_locked, acc_expired, creds_expired from users where username = ?");
this.manager.setCreateUserSql(
@@ -133,22 +131,17 @@ public class JdbcUserDetailsManagerTests {
@Test
public void createUserInsertsCorrectData() {
this.manager.createUser(joe);
-
UserDetails joe2 = this.manager.loadUserByUsername("joe");
-
assertThat(joe2).isEqualTo(joe);
}
@Test
public void createUserInsertsCorrectDataWithLocking() {
setUpAccLockingColumns();
-
UserDetails user = new User("joe", "pass", true, false, true, false,
AuthorityUtils.createAuthorityList("A", "B"));
this.manager.createUser(user);
-
UserDetails user2 = this.manager.loadUserByUsername(user.getUsername());
-
assertThat(user2).isEqualToComparingFieldByField(user);
}
@@ -156,7 +149,6 @@ public class JdbcUserDetailsManagerTests {
public void deleteUserRemovesUserDataAndAuthoritiesAndClearsCache() {
insertJoe();
this.manager.deleteUser("joe");
-
assertThat(this.template.queryForList(SELECT_JOE_SQL)).isEmpty();
assertThat(this.template.queryForList(SELECT_JOE_AUTHORITIES_SQL)).isEmpty();
assertThat(this.cache.getUserMap().containsKey("joe")).isFalse();
@@ -167,11 +159,8 @@ public class JdbcUserDetailsManagerTests {
insertJoe();
User newJoe = new User("joe", "newpassword", false, true, true, true,
AuthorityUtils.createAuthorityList(new String[] { "D", "F", "E" }));
-
this.manager.updateUser(newJoe);
-
UserDetails joe = this.manager.loadUserByUsername("joe");
-
assertThat(joe).isEqualTo(newJoe);
assertThat(this.cache.getUserMap().containsKey("joe")).isFalse();
}
@@ -179,16 +168,11 @@ public class JdbcUserDetailsManagerTests {
@Test
public void updateUserChangesDataCorrectlyAndClearsCacheWithLocking() {
setUpAccLockingColumns();
-
insertJoe();
-
User newJoe = new User("joe", "newpassword", false, false, false, true,
AuthorityUtils.createAuthorityList("D", "F", "E"));
-
this.manager.updateUser(newJoe);
-
UserDetails joe = this.manager.loadUserByUsername(newJoe.getUsername());
-
assertThat(joe).isEqualToComparingFieldByField(newJoe);
assertThat(this.cache.getUserMap().containsKey(newJoe.getUsername())).isFalse();
}
@@ -216,7 +200,6 @@ public class JdbcUserDetailsManagerTests {
authenticateJoe();
this.manager.changePassword("wrongpassword", "newPassword");
UserDetails newJoe = this.manager.loadUserByUsername("joe");
-
assertThat(newJoe.getPassword()).isEqualTo("newPassword");
assertThat(this.cache.getUserMap().containsKey("joe")).isFalse();
}
@@ -227,11 +210,9 @@ public class JdbcUserDetailsManagerTests {
Authentication currentAuth = authenticateJoe();
AuthenticationManager am = mock(AuthenticationManager.class);
given(am.authenticate(currentAuth)).willReturn(currentAuth);
-
this.manager.setAuthenticationManager(am);
this.manager.changePassword("password", "newPassword");
UserDetails newJoe = this.manager.loadUserByUsername("joe");
-
assertThat(newJoe.getPassword()).isEqualTo("newPassword");
// The password in the context should also be altered
Authentication newAuth = SecurityContextHolder.getContext().getAuthentication();
@@ -247,16 +228,13 @@ public class JdbcUserDetailsManagerTests {
authenticateJoe();
AuthenticationManager am = mock(AuthenticationManager.class);
given(am.authenticate(any(Authentication.class))).willThrow(new BadCredentialsException(""));
-
this.manager.setAuthenticationManager(am);
-
try {
this.manager.changePassword("password", "newPassword");
fail("Expected BadCredentialsException");
}
catch (BadCredentialsException expected) {
}
-
// Check password hasn't changed.
UserDetails newJoe = this.manager.loadUserByUsername("joe");
assertThat(newJoe.getPassword()).isEqualTo("password");
@@ -268,7 +246,6 @@ public class JdbcUserDetailsManagerTests {
public void findAllGroupsReturnsExpectedGroupNames() {
List groups = this.manager.findAllGroups();
assertThat(groups).hasSize(4);
-
Collections.sort(groups);
assertThat(groups.get(0)).isEqualTo("GROUP_0");
assertThat(groups.get(1)).isEqualTo("GROUP_1");
@@ -289,10 +266,8 @@ public class JdbcUserDetailsManagerTests {
@SuppressWarnings("unchecked")
public void createGroupInsertsCorrectData() {
this.manager.createGroup("TEST_GROUP", AuthorityUtils.createAuthorityList("ROLE_X", "ROLE_Y"));
-
List roles = this.template.queryForList("select ga.authority from groups g, group_authorities ga "
+ "where ga.group_id = g.id " + "and g.group_name = 'TEST_GROUP'");
-
assertThat(roles).hasSize(2);
}
@@ -302,7 +277,6 @@ public class JdbcUserDetailsManagerTests {
this.manager.deleteGroup("GROUP_1");
this.manager.deleteGroup("GROUP_2");
this.manager.deleteGroup("GROUP_3");
-
assertThat(this.template.queryForList("select * from group_authorities")).isEmpty();
assertThat(this.template.queryForList("select * from group_members")).isEmpty();
assertThat(this.template.queryForList("select id from groups")).isEmpty();
@@ -311,7 +285,6 @@ public class JdbcUserDetailsManagerTests {
@Test
public void renameGroupIsSuccessful() {
this.manager.renameGroup("GROUP_0", "GROUP_X");
-
assertThat(this.template.queryForObject("select id from groups where group_name = 'GROUP_X'", Integer.class))
.isZero();
}
@@ -319,14 +292,12 @@ public class JdbcUserDetailsManagerTests {
@Test
public void addingGroupUserSetsCorrectData() {
this.manager.addUserToGroup("tom", "GROUP_0");
-
assertThat(this.template.queryForList("select username from group_members where group_id = 0")).hasSize(2);
}
@Test
public void removeUserFromGroupDeletesGroupMemberRow() {
this.manager.removeUserFromGroup("jerry", "GROUP_1");
-
assertThat(this.template.queryForList("select group_id from group_members where username = 'jerry'"))
.hasSize(1);
}
@@ -341,7 +312,6 @@ public class JdbcUserDetailsManagerTests {
public void addGroupAuthorityInsertsCorrectGroupAuthorityRow() {
GrantedAuthority auth = new SimpleGrantedAuthority("ROLE_X");
this.manager.addGroupAuthority("GROUP_0", auth);
-
this.template.queryForObject(
"select authority from group_authorities where authority = 'ROLE_X' and group_id = 0", String.class);
}
@@ -351,7 +321,6 @@ public class JdbcUserDetailsManagerTests {
GrantedAuthority auth = new SimpleGrantedAuthority("ROLE_A");
this.manager.removeGroupAuthority("GROUP_0", auth);
assertThat(this.template.queryForList("select authority from group_authorities where group_id = 0")).isEmpty();
-
this.manager.removeGroupAuthority("GROUP_2", auth);
assertThat(this.template.queryForList("select authority from group_authorities where group_id = 2")).hasSize(2);
}
@@ -388,7 +357,6 @@ public class JdbcUserDetailsManagerTests {
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken("joe", "password",
joe.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(auth);
-
return auth;
}
diff --git a/core/src/test/java/org/springframework/security/util/FieldUtilsTests.java b/core/src/test/java/org/springframework/security/util/FieldUtilsTests.java
index 51835d2133..2d7317b7a1 100644
--- a/core/src/test/java/org/springframework/security/util/FieldUtilsTests.java
+++ b/core/src/test/java/org/springframework/security/util/FieldUtilsTests.java
@@ -28,12 +28,10 @@ public class FieldUtilsTests {
@Test
public void gettingAndSettingProtectedFieldIsSuccessful() throws Exception {
Object tc = new TestClass();
-
assertThat(FieldUtils.getProtectedFieldValue("protectedField", tc)).isEqualTo("x");
assertThat(FieldUtils.getFieldValue(tc, "nested.protectedField")).isEqualTo("z");
FieldUtils.setProtectedFieldValue("protectedField", tc, "y");
assertThat(FieldUtils.getProtectedFieldValue("protectedField", tc)).isEqualTo("y");
-
try {
FieldUtils.getProtectedFieldValue("nonExistentField", tc);
}
diff --git a/core/src/test/java/org/springframework/security/util/MethodInvocationUtilsTests.java b/core/src/test/java/org/springframework/security/util/MethodInvocationUtilsTests.java
index aa099fb9c0..7bc823f2bb 100644
--- a/core/src/test/java/org/springframework/security/util/MethodInvocationUtilsTests.java
+++ b/core/src/test/java/org/springframework/security/util/MethodInvocationUtilsTests.java
@@ -61,14 +61,11 @@ public class MethodInvocationUtilsTests {
AdvisedTarget t = new AdvisedTarget();
// Just lie about interfaces
t.setInterfaces(new Class[] { Serializable.class, MethodInvocation.class, Blah.class });
-
MethodInvocation mi = MethodInvocationUtils.create(t, "blah");
assertThat(mi).isNotNull();
-
t.setProxyTargetClass(true);
mi = MethodInvocationUtils.create(t, "blah");
assertThat(mi).isNotNull();
-
assertThat(MethodInvocationUtils.create(t, "blah", "non-existent arg")).isNull();
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/argon2/Argon2PasswordEncoderTests.java b/crypto/src/test/java/org/springframework/security/crypto/argon2/Argon2PasswordEncoderTests.java
index dce328f4b3..23fde39954 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/argon2/Argon2PasswordEncoderTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/argon2/Argon2PasswordEncoderTests.java
@@ -89,7 +89,6 @@ public class Argon2PasswordEncoderTests {
public void matchesWhenGeneratedWithDifferentEncoderThenTrue() {
Argon2PasswordEncoder oldEncoder = new Argon2PasswordEncoder(20, 64, 4, 256, 4);
Argon2PasswordEncoder newEncoder = new Argon2PasswordEncoder();
-
String password = "secret";
String oldEncodedPassword = oldEncoder.encode(password);
assertThat(newEncoder.matches(password, oldEncodedPassword)).isTrue();
@@ -113,9 +112,7 @@ public class Argon2PasswordEncoderTests {
@Test
public void encodeWhenUsingPredictableSaltThenEqualTestHash() throws Exception {
injectPredictableSaltGen();
-
String hash = this.encoder.encode("sometestpassword");
-
assertThat(hash).isEqualTo(
"$argon2id$v=19$m=4096,t=3,p=1$QUFBQUFBQUFBQUFBQUFBQQ$hmmTNyJlwbb6HAvFoHFWF+u03fdb0F2qA+39oPlcAqo");
}
@@ -125,7 +122,6 @@ public class Argon2PasswordEncoderTests {
this.encoder = new Argon2PasswordEncoder(16, 32, 4, 512, 5);
injectPredictableSaltGen();
String hash = this.encoder.encode("sometestpassword");
-
assertThat(hash).isEqualTo(
"$argon2id$v=19$m=512,t=5,p=4$QUFBQUFBQUFBQUFBQUFBQQ$PNv4C3K50bz3rmON+LtFpdisD7ePieLNq+l5iUHgc1k");
}
@@ -133,16 +129,13 @@ public class Argon2PasswordEncoderTests {
@Test
public void upgradeEncodingWhenSameEncodingThenFalse() {
String hash = this.encoder.encode("password");
-
assertThat(this.encoder.upgradeEncoding(hash)).isFalse();
}
@Test
public void upgradeEncodingWhenSameStandardParamsThenFalse() {
Argon2PasswordEncoder newEncoder = new Argon2PasswordEncoder();
-
String hash = this.encoder.encode("password");
-
assertThat(newEncoder.upgradeEncoding(hash)).isFalse();
}
@@ -150,9 +143,7 @@ public class Argon2PasswordEncoderTests {
public void upgradeEncodingWhenSameCustomParamsThenFalse() {
Argon2PasswordEncoder oldEncoder = new Argon2PasswordEncoder(20, 64, 4, 256, 4);
Argon2PasswordEncoder newEncoder = new Argon2PasswordEncoder(20, 64, 4, 256, 4);
-
String hash = oldEncoder.encode("password");
-
assertThat(newEncoder.upgradeEncoding(hash)).isFalse();
}
@@ -160,9 +151,7 @@ public class Argon2PasswordEncoderTests {
public void upgradeEncodingWhenHashHasLowerMemoryThenTrue() {
Argon2PasswordEncoder oldEncoder = new Argon2PasswordEncoder(20, 64, 4, 256, 4);
Argon2PasswordEncoder newEncoder = new Argon2PasswordEncoder(20, 64, 4, 512, 4);
-
String hash = oldEncoder.encode("password");
-
assertThat(newEncoder.upgradeEncoding(hash)).isTrue();
}
@@ -170,9 +159,7 @@ public class Argon2PasswordEncoderTests {
public void upgradeEncodingWhenHashHasLowerIterationsThenTrue() {
Argon2PasswordEncoder oldEncoder = new Argon2PasswordEncoder(20, 64, 4, 256, 4);
Argon2PasswordEncoder newEncoder = new Argon2PasswordEncoder(20, 64, 4, 256, 5);
-
String hash = oldEncoder.encode("password");
-
assertThat(newEncoder.upgradeEncoding(hash)).isTrue();
}
@@ -180,9 +167,7 @@ public class Argon2PasswordEncoderTests {
public void upgradeEncodingWhenHashHasHigherParamsThenFalse() {
Argon2PasswordEncoder oldEncoder = new Argon2PasswordEncoder(20, 64, 4, 256, 4);
Argon2PasswordEncoder newEncoder = new Argon2PasswordEncoder(20, 64, 4, 128, 3);
-
String hash = oldEncoder.encode("password");
-
assertThat(newEncoder.upgradeEncoding(hash)).isFalse();
}
@@ -205,7 +190,6 @@ public class Argon2PasswordEncoderTests {
byte[] bytes = new byte[16];
Arrays.fill(bytes, (byte) 0x41);
Mockito.when(this.keyGeneratorMock.generateKey()).thenReturn(bytes);
-
// we can't use the @InjectMock-annotation because the salt-generator is set in
// the constructor
// and Mockito will only inject mocks if they are null
diff --git a/crypto/src/test/java/org/springframework/security/crypto/bcrypt/BCryptPasswordEncoderTests.java b/crypto/src/test/java/org/springframework/security/crypto/bcrypt/BCryptPasswordEncoderTests.java
index 1b88c0fc09..b9c9c1072f 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/bcrypt/BCryptPasswordEncoderTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/bcrypt/BCryptPasswordEncoderTests.java
@@ -113,7 +113,6 @@ public class BCryptPasswordEncoderTests {
BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(8);
String result = encoder.encode("password");
assertThat(encoder.matches("password", result)).isTrue();
-
}
@Test
@@ -169,10 +168,8 @@ public class BCryptPasswordEncoderTests {
public void upgradeFromLowerStrength() {
BCryptPasswordEncoder weakEncoder = new BCryptPasswordEncoder(5);
BCryptPasswordEncoder strongEncoder = new BCryptPasswordEncoder(15);
-
String weakPassword = weakEncoder.encode("password");
String strongPassword = strongEncoder.encode("password");
-
assertThat(weakEncoder.upgradeEncoding(strongPassword)).isFalse();
assertThat(strongEncoder.upgradeEncoding(weakPassword)).isTrue();
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/bcrypt/BCryptTests.java b/crypto/src/test/java/org/springframework/security/crypto/bcrypt/BCryptTests.java
index 7fcd8739c9..010c1e9c8e 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/bcrypt/BCryptTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/bcrypt/BCryptTests.java
@@ -11,7 +11,6 @@
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
package org.springframework.security.crypto.bcrypt;
import java.util.ArrayList;
@@ -141,7 +140,6 @@ public class BCryptTests {
"$2y$06$sYDFHqOcXTjBgOsqC0WCKeMd3T1UhHuWQSxncLGtXDLMrcE6vFDti"));
testObjectsString.add(new TestObject<>("~!@#$%^&*() ~!@#$%^&*()PNBFRD", "$2y$06$6Xm0gCw4g7ZNDCEp4yTise",
"$2y$06$6Xm0gCw4g7ZNDCEp4yTisez0kSdpXEl66MvdxGidnmChIe8dFmMnq"));
-
testObjectsByteArray = new ArrayList<>();
testObjectsByteArray.add(new TestObject<>(new byte[] {}, "$2a$06$fPIsBO8qRqkjj273rfaOI.",
"$2a$06$fPIsBO8qRqkjj273rfaOI.uiVGfgi6Z1Iz.vZr11mi/38o09TUVCy"));
@@ -315,11 +313,9 @@ public class BCryptTests {
print("BCrypt.hashpw w/ international chars: ");
String pw1 = "ππππππππ";
String pw2 = "????????";
-
String h1 = BCrypt.hashpw(pw1, BCrypt.gensalt());
assertThat(BCrypt.checkpw(pw2, h1)).isFalse();
print(".");
-
String h2 = BCrypt.hashpw(pw2, BCrypt.gensalt());
assertThat(BCrypt.checkpw(pw1, h2)).isFalse();
print(".");
@@ -386,15 +382,12 @@ public class BCryptTests {
@Test
public void testBase64EncodeDecode() {
byte[] ba = new byte[3];
-
for (int b = 0; b <= 0xFF; b++) {
for (int i = 0; i < ba.length; i++) {
Arrays.fill(ba, (byte) 0);
ba[i] = (byte) b;
-
String s = encode_base64(ba, 3);
assertThat(s.length()).isEqualTo(4);
-
byte[] decoded = BCrypt.decode_base64(s, 3);
assertThat(decoded).isEqualTo(ba);
}
@@ -452,10 +445,8 @@ public class BCryptTests {
public void equalsOnStringsIsCorrect() {
assertThat(BCrypt.equalsNoEarlyReturn("", "")).isTrue();
assertThat(BCrypt.equalsNoEarlyReturn("test", "test")).isTrue();
-
assertThat(BCrypt.equalsNoEarlyReturn("test", "")).isFalse();
assertThat(BCrypt.equalsNoEarlyReturn("", "test")).isFalse();
-
assertThat(BCrypt.equalsNoEarlyReturn("test", "pass")).isFalse();
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java b/crypto/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java
index 9a66e090d9..4c1b202df8 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/codec/Utf8Tests.java
@@ -33,9 +33,7 @@ public class Utf8Tests {
byte[] bytes = Utf8.encode("6048b75ed560785c");
assertThat(bytes).hasSize(16);
assertThat(Arrays.equals("6048b75ed560785c".getBytes("UTF-8"), bytes)).isTrue();
-
String decoded = Utf8.decode(bytes);
-
assertThat(decoded).isEqualTo("6048b75ed560785c");
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/encrypt/AesBytesEncryptorTests.java b/crypto/src/test/java/org/springframework/security/crypto/encrypt/AesBytesEncryptorTests.java
index 0d1a9b678b..d806b028cb 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/encrypt/AesBytesEncryptorTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/encrypt/AesBytesEncryptorTests.java
@@ -67,7 +67,6 @@ public class AesBytesEncryptorTests {
byte[] encryption = encryptor.encrypt(this.secret.getBytes());
assertThat(new String(Hex.encode(encryption)))
.isEqualTo("4b0febebd439db7ca77153cb254520c3b7232ac29355d07869433f1ecf55fe94");
-
byte[] decryption = encryptor.decrypt(encryption);
assertThat(new String(decryption)).isEqualTo(this.secret);
}
@@ -77,11 +76,9 @@ public class AesBytesEncryptorTests {
CryptoAssumptions.assumeGCMJCE();
AesBytesEncryptor encryptor = new AesBytesEncryptor(this.password, this.hexSalt, this.generator,
CipherAlgorithm.GCM);
-
byte[] encryption = encryptor.encrypt(this.secret.getBytes());
assertThat(new String(Hex.encode(encryption)))
.isEqualTo("4b0febebd439db7ca77153cb254520c3e4d61ae38207b4e42b820d311dc3d4e0e2f37ed5ee");
-
byte[] decryption = encryptor.decrypt(encryption);
assertThat(new String(decryption)).isEqualTo(this.secret);
}
@@ -92,11 +89,9 @@ public class AesBytesEncryptorTests {
PBEKeySpec keySpec = new PBEKeySpec(this.password.toCharArray(), Hex.decode(this.hexSalt), 1024, 256);
SecretKey secretKey = CipherUtils.newSecretKey(SecretKeyFactoryAlgorithm.PBKDF2WithHmacSHA1.name(), keySpec);
AesBytesEncryptor encryptor = new AesBytesEncryptor(secretKey, this.generator, CipherAlgorithm.GCM);
-
byte[] encryption = encryptor.encrypt(this.secret.getBytes());
assertThat(new String(Hex.encode(encryption)))
.isEqualTo("4b0febebd439db7ca77153cb254520c3e4d61ae38207b4e42b820d311dc3d4e0e2f37ed5ee");
-
byte[] decryption = encryptor.decrypt(encryption);
assertThat(new String(decryption)).isEqualTo(this.secret);
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/encrypt/BouncyCastleAesBytesEncryptorEquivalencyTests.java b/crypto/src/test/java/org/springframework/security/crypto/encrypt/BouncyCastleAesBytesEncryptorEquivalencyTests.java
index 56a70c073d..44506004d1 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/encrypt/BouncyCastleAesBytesEncryptorEquivalencyTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/encrypt/BouncyCastleAesBytesEncryptorEquivalencyTests.java
@@ -102,7 +102,6 @@ public class BouncyCastleAesBytesEncryptorEquivalencyTests {
Assert.assertArrayEquals(this.testData, leftDecrypted);
Assert.assertArrayEquals(this.testData, rightDecrypted);
}
-
}
private void testCompatibility(BytesEncryptor left, BytesEncryptor right) {
diff --git a/crypto/src/test/java/org/springframework/security/crypto/encrypt/CryptoAssumptions.java b/crypto/src/test/java/org/springframework/security/crypto/encrypt/CryptoAssumptions.java
index 3feeb87868..3fca2601c8 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/encrypt/CryptoAssumptions.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/encrypt/CryptoAssumptions.java
@@ -52,7 +52,6 @@ public final class CryptoAssumptions {
throw new AssumptionViolatedException(cipherAlgorithm + " padding not available, skipping test", ex);
}
Assume.assumeTrue("AES key length of 256 not allowed, skipping test", aes256Available);
-
}
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/factory/PasswordEncoderFactoriesTests.java b/crypto/src/test/java/org/springframework/security/crypto/factory/PasswordEncoderFactoriesTests.java
index 7aff4acdd3..89143fae4e 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/factory/PasswordEncoderFactoriesTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/factory/PasswordEncoderFactoriesTests.java
@@ -35,7 +35,6 @@ public class PasswordEncoderFactoriesTests {
@Test
public void encodeWhenDefaultThenBCryptUsed() {
String encodedPassword = this.encoder.encode(this.rawPassword);
-
assertThat(encodedPassword).startsWith("{bcrypt}");
assertThat(this.encoder.matches(this.rawPassword, encodedPassword)).isTrue();
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/password/DelegatingPasswordEncoderTests.java b/crypto/src/test/java/org/springframework/security/crypto/password/DelegatingPasswordEncoderTests.java
index e53288afcc..c98fd1016b 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/password/DelegatingPasswordEncoderTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/password/DelegatingPasswordEncoderTests.java
@@ -69,7 +69,6 @@ public class DelegatingPasswordEncoderTests {
this.delegates = new HashMap<>();
this.delegates.put(this.bcryptId, this.bcrypt);
this.delegates.put("noop", this.noop);
-
this.passwordEncoder = new DelegatingPasswordEncoder(this.bcryptId, this.delegates);
}
@@ -92,9 +91,7 @@ public class DelegatingPasswordEncoderTests {
public void matchesWhenCustomDefaultPasswordEncoderForMatchesThenDelegates() {
String encodedPassword = "{unmapped}" + this.rawPassword;
this.passwordEncoder.setDefaultPasswordEncoderForMatches(this.invalidId);
-
assertThat(this.passwordEncoder.matches(this.rawPassword, encodedPassword)).isFalse();
-
verify(this.invalidId).matches(this.rawPassword, encodedPassword);
verifyZeroInteractions(this.bcrypt, this.noop);
}
@@ -102,16 +99,13 @@ public class DelegatingPasswordEncoderTests {
@Test
public void encodeWhenValidThenUsesIdForEncode() {
given(this.bcrypt.encode(this.rawPassword)).willReturn(this.encodedPassword);
-
assertThat(this.passwordEncoder.encode(this.rawPassword)).isEqualTo(this.bcryptEncodedPassword);
}
@Test
public void matchesWhenBCryptThenDelegatesToBCrypt() {
given(this.bcrypt.matches(this.rawPassword, this.encodedPassword)).willReturn(true);
-
assertThat(this.passwordEncoder.matches(this.rawPassword, this.bcryptEncodedPassword)).isTrue();
-
verify(this.bcrypt).matches(this.rawPassword, this.encodedPassword);
verifyZeroInteractions(this.noop);
}
@@ -119,9 +113,7 @@ public class DelegatingPasswordEncoderTests {
@Test
public void matchesWhenNoopThenDelegatesToNoop() {
given(this.noop.matches(this.rawPassword, this.encodedPassword)).willReturn(true);
-
assertThat(this.passwordEncoder.matches(this.rawPassword, this.noopEncodedPassword)).isTrue();
-
verify(this.noop).matches(this.rawPassword, this.encodedPassword);
verifyZeroInteractions(this.bcrypt);
}
@@ -131,7 +123,6 @@ public class DelegatingPasswordEncoderTests {
assertThatThrownBy(() -> this.passwordEncoder.matches(this.rawPassword, "{unmapped}" + this.rawPassword))
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("There is no PasswordEncoder mapped for the id \"unmapped\"");
-
verifyZeroInteractions(this.bcrypt, this.noop);
}
@@ -140,7 +131,6 @@ public class DelegatingPasswordEncoderTests {
assertThatThrownBy(() -> this.passwordEncoder.matches(this.rawPassword, "{bcrypt" + this.rawPassword))
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("There is no PasswordEncoder mapped for the id \"null\"");
-
verifyZeroInteractions(this.bcrypt, this.noop);
}
@@ -149,7 +139,6 @@ public class DelegatingPasswordEncoderTests {
assertThatThrownBy(() -> this.passwordEncoder.matches(this.rawPassword, "bcrypt}" + this.rawPassword))
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("There is no PasswordEncoder mapped for the id \"null\"");
-
verifyZeroInteractions(this.bcrypt, this.noop);
}
@@ -158,7 +147,6 @@ public class DelegatingPasswordEncoderTests {
assertThatThrownBy(() -> this.passwordEncoder.matches(this.rawPassword, "{}" + this.rawPassword))
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("There is no PasswordEncoder mapped for the id \"\"");
-
verifyZeroInteractions(this.bcrypt, this.noop);
}
@@ -167,20 +155,16 @@ public class DelegatingPasswordEncoderTests {
assertThatThrownBy(() -> this.passwordEncoder.matches(this.rawPassword, "invalid" + this.bcryptEncodedPassword))
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("There is no PasswordEncoder mapped for the id \"null\"");
-
verifyZeroInteractions(this.bcrypt, this.noop);
}
@Test
public void matchesWhenIdIsNullThenFalse() {
this.delegates = new Hashtable<>(this.delegates);
-
DelegatingPasswordEncoder passwordEncoder = new DelegatingPasswordEncoder(this.bcryptId, this.delegates);
-
assertThatThrownBy(() -> passwordEncoder.matches(this.rawPassword, this.rawPassword))
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("There is no PasswordEncoder mapped for the id \"null\"");
-
verifyZeroInteractions(this.bcrypt, this.noop);
}
@@ -189,9 +173,7 @@ public class DelegatingPasswordEncoderTests {
this.delegates.put(null, this.invalidId);
this.passwordEncoder = new DelegatingPasswordEncoder(this.bcryptId, this.delegates);
given(this.invalidId.matches(this.rawPassword, this.encodedPassword)).willReturn(true);
-
assertThat(this.passwordEncoder.matches(this.rawPassword, this.encodedPassword)).isTrue();
-
verify(this.invalidId).matches(this.rawPassword, this.encodedPassword);
verifyZeroInteractions(this.bcrypt, this.noop);
}
@@ -219,23 +201,19 @@ public class DelegatingPasswordEncoderTests {
@Test
public void upgradeEncodingWhenSameIdAndEncoderFalseThenEncoderDecidesFalse() {
assertThat(this.passwordEncoder.upgradeEncoding(this.bcryptEncodedPassword)).isFalse();
-
verify(this.bcrypt).upgradeEncoding(this.encodedPassword);
}
@Test
public void upgradeEncodingWhenSameIdAndEncoderTrueThenEncoderDecidesTrue() {
given(this.bcrypt.upgradeEncoding(any())).willReturn(true);
-
assertThat(this.passwordEncoder.upgradeEncoding(this.bcryptEncodedPassword)).isTrue();
-
verify(this.bcrypt).upgradeEncoding(this.encodedPassword);
}
@Test
public void upgradeEncodingWhenDifferentIdThenTrue() {
assertThat(this.passwordEncoder.upgradeEncoding(this.noopEncodedPassword)).isTrue();
-
verifyZeroInteractions(this.bcrypt);
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/password/LdapShaPasswordEncoderTests.java b/crypto/src/test/java/org/springframework/security/crypto/password/LdapShaPasswordEncoderTests.java
index dfd72f22af..c2ba10087f 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/password/LdapShaPasswordEncoderTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/password/LdapShaPasswordEncoderTests.java
@@ -83,14 +83,11 @@ public class LdapShaPasswordEncoderTests {
public void correctPrefixCaseIsUsed() {
this.sha.setForceLowerCasePrefix(false);
assertThat(this.sha.encode("somepassword").startsWith("{SSHA}"));
-
this.sha.setForceLowerCasePrefix(true);
assertThat(this.sha.encode("somepassword").startsWith("{ssha}"));
-
this.sha = new LdapShaPasswordEncoder(KeyGenerators.shared(0));
this.sha.setForceLowerCasePrefix(false);
assertThat(this.sha.encode("somepassword").startsWith("{SHA}"));
-
this.sha.setForceLowerCasePrefix(true);
assertThat(this.sha.encode("somepassword").startsWith("{SSHA}"));
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/password/Md4PasswordEncoderTests.java b/crypto/src/test/java/org/springframework/security/crypto/password/Md4PasswordEncoderTests.java
index b36ac74940..a1de26c6c3 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/password/Md4PasswordEncoderTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/password/Md4PasswordEncoderTests.java
@@ -62,7 +62,6 @@ public class Md4PasswordEncoderTests {
String rawPassword = "password";
Md4PasswordEncoder md4 = new Md4PasswordEncoder();
String encodedPassword = md4.encode(rawPassword);
-
assertThat(md4.matches(rawPassword, encodedPassword)).isTrue();
}
diff --git a/crypto/src/test/java/org/springframework/security/crypto/password/MessageDigestPasswordEncoderTests.java b/crypto/src/test/java/org/springframework/security/crypto/password/MessageDigestPasswordEncoderTests.java
index a430e8108e..057545ca41 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/password/MessageDigestPasswordEncoderTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/password/MessageDigestPasswordEncoderTests.java
@@ -95,7 +95,6 @@ public class MessageDigestPasswordEncoderTests {
MessageDigestPasswordEncoder pe = new MessageDigestPasswordEncoder("SHA-1");
String raw = "abc123";
assertThat(pe.matches(raw, "{THIS_IS_A_SALT}b2f50ffcbd3407fe9415c062d55f54731f340d32"));
-
}
@Test
diff --git a/crypto/src/test/java/org/springframework/security/crypto/password/Pbkdf2PasswordEncoderTests.java b/crypto/src/test/java/org/springframework/security/crypto/password/Pbkdf2PasswordEncoderTests.java
index 3da34c5daf..bd54171718 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/password/Pbkdf2PasswordEncoderTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/password/Pbkdf2PasswordEncoderTests.java
@@ -71,14 +71,12 @@ public class Pbkdf2PasswordEncoderTests {
byte[] originalBytes = Hex.decode(originalEncodedPassword);
byte[] fixedBytes = Arrays.copyOfRange(originalBytes, saltLength, originalBytes.length);
String fixedHex = String.valueOf(Hex.encode(fixedBytes));
-
assertThat(fixedHex).isEqualTo(encodedPassword);
}
@Test
public void encodeAndMatchWhenBase64ThenSuccess() {
this.encoder.setEncodeHashAsBase64(true);
-
String rawPassword = "password";
String encodedPassword = this.encoder.encode(rawPassword);
assertThat(this.encoder.matches(rawPassword, encodedPassword)).isTrue();
@@ -89,7 +87,6 @@ public class Pbkdf2PasswordEncoderTests {
this.encoder.setEncodeHashAsBase64(true);
String rawPassword = "password";
String encodedPassword = "3FOwOMcDgxP+z1x/sv184LFY2WVD+ZGMgYP3LPOSmCcDmk1XPYvcCQ==";
-
assertThat(this.encoder.matches(rawPassword, encodedPassword)).isTrue();
java.util.Base64.getDecoder().decode(encodedPassword); // validate can decode as
// Base64
@@ -98,7 +95,6 @@ public class Pbkdf2PasswordEncoderTests {
@Test
public void encodeAndMatchWhenSha256ThenSuccess() {
this.encoder.setAlgorithm(Pbkdf2PasswordEncoder.SecretKeyFactoryAlgorithm.PBKDF2WithHmacSHA256);
-
String rawPassword = "password";
String encodedPassword = this.encoder.encode(rawPassword);
assertThat(this.encoder.matches(rawPassword, encodedPassword)).isTrue();
@@ -107,7 +103,6 @@ public class Pbkdf2PasswordEncoderTests {
@Test
public void matchWhenSha256ThenSuccess() {
this.encoder.setAlgorithm(Pbkdf2PasswordEncoder.SecretKeyFactoryAlgorithm.PBKDF2WithHmacSHA256);
-
String rawPassword = "password";
String encodedPassword = "821447f994e2b04c5014e31fa9fca4ae1cc9f2188c4ed53d3ddb5ba7980982b51a0ecebfc0b81a79";
assertThat(this.encoder.matches(rawPassword, encodedPassword)).isTrue();
diff --git a/crypto/src/test/java/org/springframework/security/crypto/scrypt/SCryptPasswordEncoderTests.java b/crypto/src/test/java/org/springframework/security/crypto/scrypt/SCryptPasswordEncoderTests.java
index 22fa4d5ffe..6dcd99865a 100644
--- a/crypto/src/test/java/org/springframework/security/crypto/scrypt/SCryptPasswordEncoderTests.java
+++ b/crypto/src/test/java/org/springframework/security/crypto/scrypt/SCryptPasswordEncoderTests.java
@@ -68,7 +68,6 @@ public class SCryptPasswordEncoderTests {
public void samePasswordWithDifferentParams() {
SCryptPasswordEncoder oldEncoder = new SCryptPasswordEncoder(16384, 8, 1, 32, 64);
SCryptPasswordEncoder newEncoder = new SCryptPasswordEncoder();
-
String password = "secret";
String oldEncodedPassword = oldEncoder.encode(password);
assertThat(newEncoder.matches(password, oldEncodedPassword)).isTrue();
@@ -140,10 +139,8 @@ public class SCryptPasswordEncoderTests {
public void upgradeEncodingWhenWeakerToStrongerThenFalse() {
SCryptPasswordEncoder weakEncoder = new SCryptPasswordEncoder((int) Math.pow(2, 10), 4, 1, 32, 64);
SCryptPasswordEncoder strongEncoder = new SCryptPasswordEncoder((int) Math.pow(2, 16), 8, 1, 32, 64);
-
String weakPassword = weakEncoder.encode("password");
String strongPassword = strongEncoder.encode("password");
-
assertThat(weakEncoder.upgradeEncoding(strongPassword)).isFalse();
}
@@ -151,10 +148,8 @@ public class SCryptPasswordEncoderTests {
public void upgradeEncodingWhenStrongerToWeakerThenTrue() {
SCryptPasswordEncoder weakEncoder = new SCryptPasswordEncoder((int) Math.pow(2, 10), 4, 1, 32, 64);
SCryptPasswordEncoder strongEncoder = new SCryptPasswordEncoder((int) Math.pow(2, 16), 8, 1, 32, 64);
-
String weakPassword = weakEncoder.encode("password");
String strongPassword = strongEncoder.encode("password");
-
assertThat(strongEncoder.upgradeEncoding(weakPassword)).isTrue();
}
diff --git a/data/src/test/java/org/springframework/security/data/repository/query/SecurityEvaluationContextExtensionTests.java b/data/src/test/java/org/springframework/security/data/repository/query/SecurityEvaluationContextExtensionTests.java
index 38cd7e3f01..b4937afebb 100644
--- a/data/src/test/java/org/springframework/security/data/repository/query/SecurityEvaluationContextExtensionTests.java
+++ b/data/src/test/java/org/springframework/security/data/repository/query/SecurityEvaluationContextExtensionTests.java
@@ -49,7 +49,6 @@ public class SecurityEvaluationContextExtensionTests {
public void getRootObjectSecurityContextHolderAuthentication() {
TestingAuthenticationToken authentication = new TestingAuthenticationToken("user", "password", "ROLE_USER");
SecurityContextHolder.getContext().setAuthentication(authentication);
-
assertThat(getRoot().getAuthentication()).isSameAs(authentication);
}
@@ -57,10 +56,8 @@ public class SecurityEvaluationContextExtensionTests {
public void getRootObjectExplicitAuthenticationOverridesSecurityContextHolder() {
TestingAuthenticationToken explicit = new TestingAuthenticationToken("explicit", "password", "ROLE_EXPLICIT");
this.securityExtension = new SecurityEvaluationContextExtension(explicit);
-
TestingAuthenticationToken authentication = new TestingAuthenticationToken("user", "password", "ROLE_USER");
SecurityContextHolder.getContext().setAuthentication(authentication);
-
assertThat(getRoot().getAuthentication()).isSameAs(explicit);
}
@@ -68,7 +65,6 @@ public class SecurityEvaluationContextExtensionTests {
public void getRootObjectExplicitAuthentication() {
TestingAuthenticationToken explicit = new TestingAuthenticationToken("explicit", "password", "ROLE_EXPLICIT");
this.securityExtension = new SecurityEvaluationContextExtension(explicit);
-
assertThat(getRoot().getAuthentication()).isSameAs(explicit);
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/LdapUtilsTests.java b/ldap/src/test/java/org/springframework/security/ldap/LdapUtilsTests.java
index 7978c18b4b..ae84d19654 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/LdapUtilsTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/LdapUtilsTests.java
@@ -37,16 +37,13 @@ public class LdapUtilsTests {
public void testCloseContextSwallowsNamingException() throws Exception {
final DirContext dirCtx = mock(DirContext.class);
willThrow(new NamingException()).given(dirCtx).close();
-
LdapUtils.closeContext(dirCtx);
}
@Test
public void testGetRelativeNameReturnsEmptyStringForDnEqualToBaseName() throws Exception {
final DirContext mockCtx = mock(DirContext.class);
-
given(mockCtx.getNameInNamespace()).willReturn("dc=springframework,dc=org");
-
assertThat(LdapUtils.getRelativeName("dc=springframework,dc=org", mockCtx)).isEqualTo("");
}
@@ -54,7 +51,6 @@ public class LdapUtilsTests {
public void testGetRelativeNameReturnsFullDnWithEmptyBaseName() throws Exception {
final DirContext mockCtx = mock(DirContext.class);
given(mockCtx.getNameInNamespace()).willReturn("");
-
assertThat(LdapUtils.getRelativeName("cn=jane,dc=springframework,dc=org", mockCtx))
.isEqualTo("cn=jane,dc=springframework,dc=org");
}
@@ -63,7 +59,6 @@ public class LdapUtilsTests {
public void testGetRelativeNameWorksWithArbitrarySpaces() throws Exception {
final DirContext mockCtx = mock(DirContext.class);
given(mockCtx.getNameInNamespace()).willReturn("dc=springsecurity,dc = org");
-
assertThat(LdapUtils.getRelativeName("cn=jane smith, dc = springsecurity , dc=org", mockCtx))
.isEqualTo("cn=jane smith");
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/SpringSecurityAuthenticationSourceTests.java b/ldap/src/test/java/org/springframework/security/ldap/SpringSecurityAuthenticationSourceTests.java
index e7e0b487f1..1b8f25afad 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/SpringSecurityAuthenticationSourceTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/SpringSecurityAuthenticationSourceTests.java
@@ -52,7 +52,6 @@ public class SpringSecurityAuthenticationSourceTests {
@Test
public void principalIsEmptyForAnonymousUser() {
AuthenticationSource source = new SpringSecurityAuthenticationSource();
-
SecurityContextHolder.getContext().setAuthentication(
new AnonymousAuthenticationToken("key", "anonUser", AuthorityUtils.createAuthorityList("ignored")));
assertThat(source.getPrincipal()).isEqualTo("");
@@ -62,7 +61,6 @@ public class SpringSecurityAuthenticationSourceTests {
public void getPrincipalRejectsNonLdapUserDetailsObject() {
AuthenticationSource source = new SpringSecurityAuthenticationSource();
SecurityContextHolder.getContext().setAuthentication(new TestingAuthenticationToken(new Object(), "password"));
-
source.getPrincipal();
}
@@ -70,7 +68,6 @@ public class SpringSecurityAuthenticationSourceTests {
public void expectedCredentialsAreReturned() {
AuthenticationSource source = new SpringSecurityAuthenticationSource();
SecurityContextHolder.getContext().setAuthentication(new TestingAuthenticationToken(new Object(), "password"));
-
assertThat(source.getCredentials()).isEqualTo("password");
}
@@ -82,7 +79,6 @@ public class SpringSecurityAuthenticationSourceTests {
AuthenticationSource source = new SpringSecurityAuthenticationSource();
SecurityContextHolder.getContext()
.setAuthentication(new TestingAuthenticationToken(user.createUserDetails(), null));
-
assertThat(source.getPrincipal()).isEqualTo("uid=joe,ou=users");
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/SpringSecurityLdapTemplateTests.java b/ldap/src/test/java/org/springframework/security/ldap/SpringSecurityLdapTemplateTests.java
index 082392d6d5..5494ae1490 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/SpringSecurityLdapTemplateTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/SpringSecurityLdapTemplateTests.java
@@ -60,16 +60,13 @@ public class SpringSecurityLdapTemplateTests {
String searchResultName = "ldap://example.com/dc=springframework,dc=org";
Object[] params = new Object[] {};
DirContextAdapter searchResultObject = mock(DirContextAdapter.class);
-
given(this.ctx.search(any(DistinguishedName.class), eq(filter), eq(params), this.searchControls.capture()))
.willReturn(this.resultsEnum);
given(this.resultsEnum.hasMore()).willReturn(true, false);
given(this.resultsEnum.next()).willReturn(this.searchResult);
given(this.searchResult.getObject()).willReturn(searchResultObject);
-
SpringSecurityLdapTemplate.searchForSingleEntryInternal(this.ctx, mock(SearchControls.class), base, filter,
params);
-
assertThat(this.searchControls.getValue().getReturningObjFlag()).isTrue();
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/authentication/LdapAuthenticationProviderTests.java b/ldap/src/test/java/org/springframework/security/ldap/authentication/LdapAuthenticationProviderTests.java
index fc090ac0a7..cf6b6eefcc 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/authentication/LdapAuthenticationProviderTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/authentication/LdapAuthenticationProviderTests.java
@@ -53,7 +53,6 @@ public class LdapAuthenticationProviderTests {
public void testSupportsUsernamePasswordAuthenticationToken() {
LdapAuthenticationProvider ldapProvider = new LdapAuthenticationProvider(new MockAuthenticator(),
new MockAuthoritiesPopulator());
-
assertThat(ldapProvider.supports(UsernamePasswordAuthenticationToken.class)).isTrue();
}
@@ -61,7 +60,6 @@ public class LdapAuthenticationProviderTests {
public void testDefaultMapperIsSet() {
LdapAuthenticationProvider ldapProvider = new LdapAuthenticationProvider(new MockAuthenticator(),
new MockAuthoritiesPopulator());
-
assertThat(ldapProvider.getUserDetailsContextMapper() instanceof LdapUserDetailsMapper).isTrue();
}
@@ -69,14 +67,12 @@ public class LdapAuthenticationProviderTests {
public void testEmptyOrNullUserNameThrowsException() {
LdapAuthenticationProvider ldapProvider = new LdapAuthenticationProvider(new MockAuthenticator(),
new MockAuthoritiesPopulator());
-
try {
ldapProvider.authenticate(new UsernamePasswordAuthenticationToken(null, "password"));
fail("Expected BadCredentialsException for empty username");
}
catch (BadCredentialsException expected) {
}
-
try {
ldapProvider.authenticate(new UsernamePasswordAuthenticationToken("", "bobspassword"));
fail("Expected BadCredentialsException for null username");
@@ -90,7 +86,6 @@ public class LdapAuthenticationProviderTests {
final LdapAuthenticator authenticator = mock(LdapAuthenticator.class);
final UsernamePasswordAuthenticationToken joe = new UsernamePasswordAuthenticationToken("joe", "password");
given(authenticator.authenticate(joe)).willThrow(new UsernameNotFoundException("nobody"));
-
LdapAuthenticationProvider provider = new LdapAuthenticationProvider(authenticator);
provider.authenticate(joe);
}
@@ -100,7 +95,6 @@ public class LdapAuthenticationProviderTests {
final LdapAuthenticator authenticator = mock(LdapAuthenticator.class);
final UsernamePasswordAuthenticationToken joe = new UsernamePasswordAuthenticationToken("joe", "password");
given(authenticator.authenticate(joe)).willThrow(new UsernameNotFoundException("nobody"));
-
LdapAuthenticationProvider provider = new LdapAuthenticationProvider(authenticator);
provider.setHideUserNotFoundExceptions(false);
provider.authenticate(joe);
@@ -113,9 +107,7 @@ public class LdapAuthenticationProviderTests {
LdapUserDetailsMapper userMapper = new LdapUserDetailsMapper();
userMapper.setRoleAttributes(new String[] { "ou" });
ldapProvider.setUserDetailsContextMapper(userMapper);
-
assertThat(ldapProvider.getAuthoritiesPopulator()).isNotNull();
-
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken("ben",
"benspassword");
Object authDetails = new Object();
@@ -128,7 +120,6 @@ public class LdapAuthenticationProviderTests {
assertThat(user.getPassword()).isEqualTo("{SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ=");
assertThat(user.getUsername()).isEqualTo("ben");
assertThat(populator.getRequestedUsername()).isEqualTo("ben");
-
assertThat(AuthorityUtils.authorityListToSet(user.getAuthorities())).contains("ROLE_FROM_ENTRY");
assertThat(AuthorityUtils.authorityListToSet(user.getAuthorities())).contains("ROLE_FROM_POPULATOR");
}
@@ -138,12 +129,10 @@ public class LdapAuthenticationProviderTests {
LdapAuthenticationProvider ldapProvider = new LdapAuthenticationProvider(new MockAuthenticator(),
new MockAuthoritiesPopulator());
ldapProvider.setUseAuthenticationRequestCredentials(false);
-
UsernamePasswordAuthenticationToken authRequest = new UsernamePasswordAuthenticationToken("ben",
"benspassword");
Authentication authResult = ldapProvider.authenticate(authRequest);
assertThat(authResult.getCredentials()).isEqualTo("{SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ=");
-
}
@Test
@@ -166,7 +155,6 @@ public class LdapAuthenticationProviderTests {
LdapAuthenticator mockAuthenticator = mock(LdapAuthenticator.class);
CommunicationException expectedCause = new CommunicationException(new javax.naming.CommunicationException());
given(mockAuthenticator.authenticate(authRequest)).willThrow(expectedCause);
-
LdapAuthenticationProvider ldapProvider = new LdapAuthenticationProvider(mockAuthenticator);
try {
ldapProvider.authenticate(authRequest);
@@ -185,19 +173,15 @@ public class LdapAuthenticationProviderTests {
ctx.setAttributeValue("ou", "FROM_ENTRY");
String username = authentication.getName();
String password = (String) authentication.getCredentials();
-
if (username.equals("ben") && password.equals("benspassword")) {
ctx.setDn(new DistinguishedName("cn=ben,ou=people,dc=springframework,dc=org"));
ctx.setAttributeValue("userPassword", "{SHA}nFCebWjxfaLbHHG1Qk5UU4trbvQ=");
-
return ctx;
}
else if (username.equals("jen") && password.equals("")) {
ctx.setDn(new DistinguishedName("cn=jen,ou=people,dc=springframework,dc=org"));
-
return ctx;
}
-
throw new BadCredentialsException("Authentication failed.");
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/authentication/PasswordComparisonAuthenticatorMockTests.java b/ldap/src/test/java/org/springframework/security/ldap/authentication/PasswordComparisonAuthenticatorMockTests.java
index e5c10d8798..7a1a8e35bd 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/authentication/PasswordComparisonAuthenticatorMockTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/authentication/PasswordComparisonAuthenticatorMockTests.java
@@ -43,22 +43,16 @@ public class PasswordComparisonAuthenticatorMockTests {
final BaseLdapPathContextSource source = mock(BaseLdapPathContextSource.class);
final BasicAttributes attrs = new BasicAttributes();
attrs.put(new BasicAttribute("uid", "bob"));
-
PasswordComparisonAuthenticator authenticator = new PasswordComparisonAuthenticator(source);
-
authenticator.setUserDnPatterns(new String[] { "cn={0},ou=people" });
-
// Get the mock to return an empty attribute set
given(source.getReadOnlyContext()).willReturn(dirCtx);
given(dirCtx.getAttributes(eq("cn=Bob,ou=people"), any(String[].class))).willReturn(attrs);
given(dirCtx.getNameInNamespace()).willReturn("dc=springframework,dc=org");
-
// Setup a single return value (i.e. success)
final NamingEnumeration searchResults = new BasicAttributes("", null).getAll();
-
given(dirCtx.search(eq("cn=Bob,ou=people"), eq("(userPassword={0})"), any(Object[].class),
any(SearchControls.class))).willReturn(searchResults);
-
authenticator.authenticate(new UsernamePasswordAuthenticationToken("Bob", "bobspassword"));
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/authentication/ad/ActiveDirectoryLdapAuthenticationProviderTests.java b/ldap/src/test/java/org/springframework/security/ldap/authentication/ad/ActiveDirectoryLdapAuthenticationProviderTests.java
index b3c3a78d34..8272ec247f 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/authentication/ad/ActiveDirectoryLdapAuthenticationProviderTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/authentication/ad/ActiveDirectoryLdapAuthenticationProviderTests.java
@@ -98,43 +98,33 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
@Test
public void customSearchFilterIsUsedForSuccessfulAuthentication() throws Exception {
String customSearchFilter = "(&(objectClass=user)(sAMAccountName={0}))";
-
DirContext ctx = mock(DirContext.class);
given(ctx.getNameInNamespace()).willReturn("");
-
DirContextAdapter dca = new DirContextAdapter();
SearchResult sr = new SearchResult("CN=Joe Jannsen,CN=Users", dca, dca.getAttributes());
given(ctx.search(any(Name.class), eq(customSearchFilter), any(Object[].class), any(SearchControls.class)))
.willReturn(new MockNamingEnumeration(sr));
-
ActiveDirectoryLdapAuthenticationProvider customProvider = new ActiveDirectoryLdapAuthenticationProvider(
"mydomain.eu", "ldap://192.168.1.200/");
customProvider.contextFactory = createContextFactoryReturning(ctx);
-
customProvider.setSearchFilter(customSearchFilter);
Authentication result = customProvider.authenticate(this.joe);
-
assertThat(result.isAuthenticated()).isTrue();
}
@Test
public void defaultSearchFilter() throws Exception {
final String defaultSearchFilter = "(&(objectClass=user)(userPrincipalName={0}))";
-
DirContext ctx = mock(DirContext.class);
given(ctx.getNameInNamespace()).willReturn("");
-
DirContextAdapter dca = new DirContextAdapter();
SearchResult sr = new SearchResult("CN=Joe Jannsen,CN=Users", dca, dca.getAttributes());
given(ctx.search(any(Name.class), eq(defaultSearchFilter), any(Object[].class), any(SearchControls.class)))
.willReturn(new MockNamingEnumeration(sr));
-
ActiveDirectoryLdapAuthenticationProvider customProvider = new ActiveDirectoryLdapAuthenticationProvider(
"mydomain.eu", "ldap://192.168.1.200/");
customProvider.contextFactory = createContextFactoryReturning(ctx);
-
Authentication result = customProvider.authenticate(this.joe);
-
assertThat(result.isAuthenticated()).isTrue();
verify(ctx).search(any(DistinguishedName.class), eq(defaultSearchFilter), any(Object[].class),
any(SearchControls.class));
@@ -145,21 +135,16 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
public void bindPrincipalAndUsernameUsed() throws Exception {
final String defaultSearchFilter = "(&(objectClass=user)(userPrincipalName={0}))";
ArgumentCaptor captor = ArgumentCaptor.forClass(Object[].class);
-
DirContext ctx = mock(DirContext.class);
given(ctx.getNameInNamespace()).willReturn("");
-
DirContextAdapter dca = new DirContextAdapter();
SearchResult sr = new SearchResult("CN=Joe Jannsen,CN=Users", dca, dca.getAttributes());
given(ctx.search(any(Name.class), eq(defaultSearchFilter), captor.capture(), any(SearchControls.class)))
.willReturn(new MockNamingEnumeration(sr));
-
ActiveDirectoryLdapAuthenticationProvider customProvider = new ActiveDirectoryLdapAuthenticationProvider(
"mydomain.eu", "ldap://192.168.1.200/");
customProvider.contextFactory = createContextFactoryReturning(ctx);
-
Authentication result = customProvider.authenticate(this.joe);
-
assertThat(captor.getValue()).containsExactly("joe@mydomain.eu", "joe");
assertThat(result.isAuthenticated()).isTrue();
}
@@ -179,20 +164,17 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
this.provider = new ActiveDirectoryLdapAuthenticationProvider(null, "ldap://192.168.1.200/");
DirContext ctx = mock(DirContext.class);
given(ctx.getNameInNamespace()).willReturn("");
-
DirContextAdapter dca = new DirContextAdapter();
SearchResult sr = new SearchResult("CN=Joe Jannsen,CN=Users", dca, dca.getAttributes());
given(ctx.search(eq(new DistinguishedName("DC=mydomain,DC=eu")), any(String.class), any(Object[].class),
any(SearchControls.class))).willReturn(new MockNamingEnumeration(sr));
this.provider.contextFactory = createContextFactoryReturning(ctx);
-
try {
this.provider.authenticate(this.joe);
fail("Expected BadCredentialsException for user with no domain information");
}
catch (BadCredentialsException expected) {
}
-
this.provider.authenticate(new UsernamePasswordAuthenticationToken("joe@mydomain.eu", "password"));
}
@@ -202,9 +184,7 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
given(ctx.getNameInNamespace()).willReturn("");
given(ctx.search(any(Name.class), any(String.class), any(Object[].class), any(SearchControls.class)))
.willThrow(new NameNotFoundException());
-
this.provider.contextFactory = createContextFactoryReturning(ctx);
-
this.provider.authenticate(this.joe);
}
@@ -215,9 +195,7 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
given(ctx.getNameInNamespace()).willReturn("");
given(ctx.search(any(Name.class), any(String.class), any(Object[].class), any(SearchControls.class)))
.willReturn(new EmptyEnumeration<>());
-
this.provider.contextFactory = createContextFactoryReturning(ctx);
-
this.provider.authenticate(this.joe);
}
@@ -239,9 +217,7 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
given(searchResults.next()).willReturn(searchResult);
given(ctx.search(any(Name.class), any(String.class), any(Object[].class), any(SearchControls.class)))
.willReturn(searchResults);
-
this.provider.contextFactory = createContextFactoryReturning(ctx);
-
this.provider.authenticate(this.joe);
}
@@ -274,7 +250,6 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
this.provider.contextFactory = createContextFactoryThrowing(
new AuthenticationException(msg + dataCode + ", xxxx]"));
this.provider.setConvertSubErrorCodesToExceptions(true);
-
this.thrown.expect(BadCredentialsException.class);
this.thrown.expect(new BaseMatcher() {
private Matcher causeInstance = CoreMatchers
@@ -297,21 +272,18 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
this.causeDataCode.describeTo(desc);
}
});
-
this.provider.authenticate(this.joe);
}
@Test(expected = CredentialsExpiredException.class)
public void expiredPasswordIsCorrectlyMapped() {
this.provider.contextFactory = createContextFactoryThrowing(new AuthenticationException(msg + "532, xxxx]"));
-
try {
this.provider.authenticate(this.joe);
fail("BadCredentialsException should had been thrown");
}
catch (BadCredentialsException expected) {
}
-
this.provider.setConvertSubErrorCodesToExceptions(true);
this.provider.authenticate(this.joe);
}
@@ -379,7 +351,6 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
ActiveDirectoryLdapAuthenticationProvider provider = new ActiveDirectoryLdapAuthenticationProvider(
"mydomain.eu", EXISTING_LDAP_PROVIDER, "dc=ad,dc=eu,dc=mydomain");
checkAuthentication("dc=ad,dc=eu,dc=mydomain", provider);
-
}
@Test(expected = IllegalArgumentException.class)
@@ -395,10 +366,8 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
@Test
public void contextEnvironmentPropertiesUsed() {
Hashtable env = new Hashtable<>();
-
env.put("java.naming.ldap.factory.socket", "unknown.package.NonExistingSocketFactory");
this.provider.setContextEnvironmentProperties(env);
-
try {
this.provider.authenticate(this.joe);
fail("CommunicationException was expected with a root cause of ClassNotFoundException");
@@ -433,24 +402,17 @@ public class ActiveDirectoryLdapAuthenticationProviderTests {
throws NamingException {
DirContext ctx = mock(DirContext.class);
given(ctx.getNameInNamespace()).willReturn("");
-
DirContextAdapter dca = new DirContextAdapter();
SearchResult sr = new SearchResult("CN=Joe Jannsen,CN=Users", dca, dca.getAttributes());
@SuppressWarnings("deprecation")
DistinguishedName searchBaseDn = new DistinguishedName(rootDn);
given(ctx.search(eq(searchBaseDn), any(String.class), any(Object[].class), any(SearchControls.class)))
.willReturn(new MockNamingEnumeration(sr)).willReturn(new MockNamingEnumeration(sr));
-
provider.contextFactory = createContextFactoryReturning(ctx);
-
Authentication result = provider.authenticate(this.joe);
-
assertThat(result.getAuthorities()).isEmpty();
-
dca.addAttributeValue("memberOf", "CN=Admin,CN=Users,DC=mydomain,DC=eu");
-
result = provider.authenticate(this.joe);
-
assertThat(result.getAuthorities()).hasSize(1);
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyAwareContextSourceTests.java b/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyAwareContextSourceTests.java
index 0f0ffef89f..84cc77f851 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyAwareContextSourceTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyAwareContextSourceTests.java
@@ -54,7 +54,6 @@ public class PasswordPolicyAwareContextSourceTests {
if ("manager".equals(env.get(Context.SECURITY_PRINCIPAL))) {
return PasswordPolicyAwareContextSourceTests.this.ctx;
}
-
return null;
}
};
@@ -71,7 +70,6 @@ public class PasswordPolicyAwareContextSourceTests {
@Test(expected = UncategorizedLdapException.class)
public void standardExceptionIsPropagatedWhenExceptionRaisedAndNoControlsAreSet() throws Exception {
willThrow(new NamingException("some LDAP exception")).given(this.ctx).reconnect(any(Control[].class));
-
this.ctxSource.getContext("user", "ignored");
}
@@ -79,9 +77,7 @@ public class PasswordPolicyAwareContextSourceTests {
public void lockedPasswordPolicyControlRaisesPasswordPolicyException() throws Exception {
given(this.ctx.getResponseControls()).willReturn(new Control[] {
new PasswordPolicyResponseControl(PasswordPolicyResponseControlTests.OPENLDAP_LOCKED_CTRL) });
-
willThrow(new NamingException("locked message")).given(this.ctx).reconnect(any(Control[].class));
-
this.ctxSource.getContext("user", "ignored");
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyControlFactoryTests.java b/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyControlFactoryTests.java
index 2572727594..50babf5437 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyControlFactoryTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyControlFactoryTests.java
@@ -33,7 +33,6 @@ public class PasswordPolicyControlFactoryTests {
public void returnsNullForUnrecognisedOID() {
PasswordPolicyControlFactory ctrlFactory = new PasswordPolicyControlFactory();
Control wrongCtrl = mock(Control.class);
-
given(wrongCtrl.getID()).willReturn("wrongId");
assertThat(ctrlFactory.getControlInstance(wrongCtrl)).isNull();
}
@@ -42,7 +41,6 @@ public class PasswordPolicyControlFactoryTests {
public void returnsControlForCorrectOID() {
PasswordPolicyControlFactory ctrlFactory = new PasswordPolicyControlFactory();
Control control = mock(Control.class);
-
given(control.getID()).willReturn(PasswordPolicyControl.OID);
given(control.getEncodedValue()).willReturn(PasswordPolicyResponseControlTests.OPENLDAP_LOCKED_CTRL);
Control result = ctrlFactory.getControlInstance(control);
diff --git a/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyResponseControlTests.java b/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyResponseControlTests.java
index ebca7d35ba..0422f10ef7 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyResponseControlTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/ppolicy/PasswordPolicyResponseControlTests.java
@@ -66,7 +66,6 @@ public class PasswordPolicyResponseControlTests {
//
// //com.sun.jndi.ldap.LdapPoolManager.showStats(System.out);
// }
-
// private PasswordPolicyResponseControl getPPolicyResponseCtl(InitialLdapContext ctx)
// throws NamingException {
// Control[] ctrls = ctx.getResponseControls();
@@ -79,13 +78,10 @@ public class PasswordPolicyResponseControlTests {
//
// return null;
// }
-
@Test
public void openLDAP33SecondsTillPasswordExpiryCtrlIsParsedCorrectly() {
byte[] ctrlBytes = { 0x30, 0x05, (byte) 0xA0, 0x03, (byte) 0xA0, 0x1, 0x21 };
-
PasswordPolicyResponseControl ctrl = new PasswordPolicyResponseControl(ctrlBytes);
-
assertThat(ctrl.hasWarning()).isTrue();
assertThat(ctrl.getTimeBeforeExpiration()).isEqualTo(33);
}
@@ -93,9 +89,7 @@ public class PasswordPolicyResponseControlTests {
@Test
public void openLDAP496GraceLoginsRemainingCtrlIsParsedCorrectly() {
byte[] ctrlBytes = { 0x30, 0x06, (byte) 0xA0, 0x04, (byte) 0xA1, 0x02, 0x01, (byte) 0xF0 };
-
PasswordPolicyResponseControl ctrl = new PasswordPolicyResponseControl(ctrlBytes);
-
assertThat(ctrl.hasWarning()).isTrue();
assertThat(ctrl.getGraceLoginsRemaining()).isEqualTo(496);
}
@@ -105,7 +99,6 @@ public class PasswordPolicyResponseControlTests {
@Test
public void openLDAP5GraceLoginsRemainingCtrlIsParsedCorrectly() {
PasswordPolicyResponseControl ctrl = new PasswordPolicyResponseControl(OPENLDAP_5_LOGINS_REMAINING_CTRL);
-
assertThat(ctrl.hasWarning()).isTrue();
assertThat(ctrl.getGraceLoginsRemaining()).isEqualTo(5);
}
@@ -115,7 +108,6 @@ public class PasswordPolicyResponseControlTests {
@Test
public void openLDAPAccountLockedCtrlIsParsedCorrectly() {
PasswordPolicyResponseControl ctrl = new PasswordPolicyResponseControl(OPENLDAP_LOCKED_CTRL);
-
assertThat(ctrl.hasError() && ctrl.isLocked()).isTrue();
assertThat(ctrl.hasWarning()).isFalse();
}
@@ -123,9 +115,7 @@ public class PasswordPolicyResponseControlTests {
@Test
public void openLDAPPasswordExpiredCtrlIsParsedCorrectly() {
byte[] ctrlBytes = { 0x30, 0x03, (byte) 0xA1, 0x01, 0x00 };
-
PasswordPolicyResponseControl ctrl = new PasswordPolicyResponseControl(ctrlBytes);
-
assertThat(ctrl.hasError() && ctrl.isExpired()).isTrue();
assertThat(ctrl.hasWarning()).isFalse();
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/userdetails/InetOrgPersonTests.java b/ldap/src/test/java/org/springframework/security/ldap/userdetails/InetOrgPersonTests.java
index 1f1e767efe..5e007f84ed 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/userdetails/InetOrgPersonTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/userdetails/InetOrgPersonTests.java
@@ -35,7 +35,6 @@ public class InetOrgPersonTests {
public void testUsernameIsMappedFromContextUidIfNotSet() {
InetOrgPerson.Essence essence = new InetOrgPerson.Essence(createUserContext());
InetOrgPerson p = (InetOrgPerson) essence.createUserDetails();
-
assertThat(p.getUsername()).isEqualTo("ghengis");
}
@@ -55,7 +54,6 @@ public class InetOrgPersonTests {
InetOrgPerson.Essence essence = new InetOrgPerson.Essence(createUserContext());
essence.setUsername("joe");
InetOrgPerson p = (InetOrgPerson) essence.createUserDetails();
-
assertThat(p.getUsername()).isEqualTo("joe");
assertThat(p.getUid()).isEqualTo("ghengis");
}
@@ -64,7 +62,6 @@ public class InetOrgPersonTests {
public void attributesMapCorrectlyFromContext() {
InetOrgPerson.Essence essence = new InetOrgPerson.Essence(createUserContext());
InetOrgPerson p = (InetOrgPerson) essence.createUserDetails();
-
assertThat(p.getCarLicense()).isEqualTo("HORS1");
assertThat(p.getMail()).isEqualTo("ghengis@mongolia");
assertThat(p.getGivenName()).isEqualTo("Ghengis");
@@ -89,7 +86,6 @@ public class InetOrgPersonTests {
public void testPasswordIsSetFromContextUserPassword() {
InetOrgPerson.Essence essence = new InetOrgPerson.Essence(createUserContext());
InetOrgPerson p = (InetOrgPerson) essence.createUserDetails();
-
assertThat(p.getPassword()).isEqualTo("pillage");
}
@@ -102,7 +98,6 @@ public class InetOrgPersonTests {
ctx2.setDn(new DistinguishedName("ignored=ignored"));
InetOrgPerson p = (InetOrgPerson) (new InetOrgPerson.Essence(ctx1)).createUserDetails();
p.populateContext(ctx2);
-
assertThat(ctx2).isEqualTo(ctx1);
}
@@ -116,13 +111,11 @@ public class InetOrgPersonTests {
InetOrgPerson p = (InetOrgPerson) (new InetOrgPerson.Essence(ctx1)).createUserDetails();
InetOrgPerson p2 = (InetOrgPerson) new InetOrgPerson.Essence(p).createUserDetails();
p2.populateContext(ctx2);
-
assertThat(ctx2).isEqualTo(ctx1);
}
private DirContextAdapter createUserContext() {
DirContextAdapter ctx = new DirContextAdapter();
-
ctx.setDn(new DistinguishedName("ignored=ignored"));
ctx.setAttributeValue("uid", "ghengis");
ctx.setAttributeValue("userPassword", "pillage");
@@ -147,7 +140,6 @@ public class InetOrgPersonTests {
ctx.setAttributeValue("sn", "Khan");
ctx.setAttributeValue("street", "Westward Avenue");
ctx.setAttributeValue("telephoneNumber", "+442075436521");
-
return ctx;
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsImplTests.java b/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsImplTests.java
index 7671e06211..e803d89288 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsImplTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsImplTests.java
@@ -35,7 +35,6 @@ public class LdapUserDetailsImplTests {
mutableLdapUserDetails.setDn("uid=username1,ou=people,dc=example,dc=com");
mutableLdapUserDetails.setUsername("username1");
mutableLdapUserDetails.setPassword("password");
-
LdapUserDetails ldapUserDetails = mutableLdapUserDetails.createUserDetails();
assertThat(ldapUserDetails).isInstanceOf(CredentialsContainer.class);
ldapUserDetails.eraseCredentials();
diff --git a/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsMapperTests.java b/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsMapperTests.java
index 40dfe14fc9..e0205051e3 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsMapperTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsMapperTests.java
@@ -40,17 +40,12 @@ public class LdapUserDetailsMapperTests {
LdapUserDetailsMapper mapper = new LdapUserDetailsMapper();
mapper.setConvertToUpperCase(false);
mapper.setRolePrefix("");
-
mapper.setRoleAttributes(new String[] { "userRole" });
-
DirContextAdapter ctx = new DirContextAdapter();
-
ctx.setAttributeValues("userRole", new String[] { "X", "Y", "Z" });
ctx.setAttributeValue("uid", "ani");
-
LdapUserDetailsImpl user = (LdapUserDetailsImpl) mapper.mapUserFromContext(ctx, "ani",
AuthorityUtils.NO_AUTHORITIES);
-
assertThat(user.getAuthorities()).hasSize(3);
}
@@ -60,18 +55,13 @@ public class LdapUserDetailsMapperTests {
@Test
public void testNonRetrievedRoleAttributeIsIgnored() {
LdapUserDetailsMapper mapper = new LdapUserDetailsMapper();
-
mapper.setRoleAttributes(new String[] { "userRole", "nonRetrievedAttribute" });
-
BasicAttributes attrs = new BasicAttributes();
attrs.put(new BasicAttribute("userRole", "x"));
-
DirContextAdapter ctx = new DirContextAdapter(attrs, new DistinguishedName("cn=someName"));
ctx.setAttributeValue("uid", "ani");
-
LdapUserDetailsImpl user = (LdapUserDetailsImpl) mapper.mapUserFromContext(ctx, "ani",
AuthorityUtils.NO_AUTHORITIES);
-
assertThat(user.getAuthorities()).hasSize(1);
assertThat(AuthorityUtils.authorityListToSet(user.getAuthorities())).contains("ROLE_X");
}
@@ -79,17 +69,13 @@ public class LdapUserDetailsMapperTests {
@Test
public void testPasswordAttributeIsMappedCorrectly() {
LdapUserDetailsMapper mapper = new LdapUserDetailsMapper();
-
mapper.setPasswordAttributeName("myappsPassword");
BasicAttributes attrs = new BasicAttributes();
attrs.put(new BasicAttribute("myappsPassword", "mypassword".getBytes()));
-
DirContextAdapter ctx = new DirContextAdapter(attrs, new DistinguishedName("cn=someName"));
ctx.setAttributeValue("uid", "ani");
-
LdapUserDetails user = (LdapUserDetailsImpl) mapper.mapUserFromContext(ctx, "ani",
AuthorityUtils.NO_AUTHORITIES);
-
assertThat(user.getPassword()).isEqualTo("mypassword");
}
diff --git a/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsServiceTests.java b/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsServiceTests.java
index 5ef160ca9a..3dfd7c53dd 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsServiceTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/userdetails/LdapUserDetailsServiceTests.java
@@ -52,13 +52,10 @@ public class LdapUserDetailsServiceTests {
@Test
public void correctAuthoritiesAreReturned() {
DirContextAdapter userData = new DirContextAdapter(new DistinguishedName("uid=joe"));
-
LdapUserDetailsService service = new LdapUserDetailsService(new MockUserSearch(userData),
new MockAuthoritiesPopulator());
service.setUserDetailsMapper(new LdapUserDetailsMapper());
-
UserDetails user = service.loadUserByUsername("doesntmatterwegetjoeanyway");
-
Set authorities = AuthorityUtils.authorityListToSet(user.getAuthorities());
assertThat(authorities).hasSize(1);
assertThat(authorities.contains("ROLE_FROM_POPULATOR")).isTrue();
@@ -67,7 +64,6 @@ public class LdapUserDetailsServiceTests {
@Test
public void nullPopulatorConstructorReturnsEmptyAuthoritiesList() {
DirContextAdapter userData = new DirContextAdapter(new DistinguishedName("uid=joe"));
-
LdapUserDetailsService service = new LdapUserDetailsService(new MockUserSearch(userData));
UserDetails user = service.loadUserByUsername("doesntmatterwegetjoeanyway");
assertThat(user.getAuthorities()).isEmpty();
diff --git a/ldap/src/test/java/org/springframework/security/ldap/userdetails/UserDetailsServiceLdapAuthoritiesPopulatorTests.java b/ldap/src/test/java/org/springframework/security/ldap/userdetails/UserDetailsServiceLdapAuthoritiesPopulatorTests.java
index cfdb2267c4..09ea5382e6 100644
--- a/ldap/src/test/java/org/springframework/security/ldap/userdetails/UserDetailsServiceLdapAuthoritiesPopulatorTests.java
+++ b/ldap/src/test/java/org/springframework/security/ldap/userdetails/UserDetailsServiceLdapAuthoritiesPopulatorTests.java
@@ -44,10 +44,8 @@ public class UserDetailsServiceLdapAuthoritiesPopulatorTests {
given(uds.loadUserByUsername("joe")).willReturn(user);
List authorities = AuthorityUtils.createAuthorityList("ROLE_USER");
given(user.getAuthorities()).willReturn(authorities);
-
UserDetailsServiceLdapAuthoritiesPopulator populator = new UserDetailsServiceLdapAuthoritiesPopulator(uds);
Collection extends GrantedAuthority> auths = populator.getGrantedAuthorities(new DirContextAdapter(), "joe");
-
assertThat(auths).hasSize(1);
assertThat(AuthorityUtils.authorityListToSet(auths).contains("ROLE_USER")).isTrue();
}
diff --git a/messaging/src/test/java/org/springframework/security/messaging/access/expression/DefaultMessageSecurityExpressionHandlerTests.java b/messaging/src/test/java/org/springframework/security/messaging/access/expression/DefaultMessageSecurityExpressionHandlerTests.java
index 3a23553cca..13277bc737 100644
--- a/messaging/src/test/java/org/springframework/security/messaging/access/expression/DefaultMessageSecurityExpressionHandlerTests.java
+++ b/messaging/src/test/java/org/springframework/security/messaging/access/expression/DefaultMessageSecurityExpressionHandlerTests.java
@@ -56,7 +56,6 @@ public class DefaultMessageSecurityExpressionHandlerTests {
@Before
public void setup() {
this.handler = new DefaultMessageSecurityExpressionHandler<>();
-
this.message = new GenericMessage<>("");
this.authentication = new AnonymousAuthenticationToken("key", "anonymous",
AuthorityUtils.createAuthorityList("ROLE_ANONYMOUS"));
@@ -67,7 +66,6 @@ public class DefaultMessageSecurityExpressionHandlerTests {
public void trustResolverPopulated() {
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.message);
Expression expression = this.handler.getExpressionParser().parseExpression("authenticated");
-
assertThat(ExpressionUtils.evaluateAsBoolean(expression, context)).isFalse();
}
@@ -82,7 +80,6 @@ public class DefaultMessageSecurityExpressionHandlerTests {
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.message);
Expression expression = this.handler.getExpressionParser().parseExpression("authenticated");
given(this.trustResolver.isAnonymous(this.authentication)).willReturn(false);
-
assertThat(ExpressionUtils.evaluateAsBoolean(expression, context)).isTrue();
}
@@ -94,7 +91,6 @@ public class DefaultMessageSecurityExpressionHandlerTests {
this.handler.setRoleHierarchy(roleHierarchy);
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.message);
Expression expression = this.handler.getExpressionParser().parseExpression("hasRole('ROLE_USER')");
-
assertThat(ExpressionUtils.evaluateAsBoolean(expression, context)).isTrue();
}
@@ -104,7 +100,6 @@ public class DefaultMessageSecurityExpressionHandlerTests {
EvaluationContext context = this.handler.createEvaluationContext(this.authentication, this.message);
Expression expression = this.handler.getExpressionParser().parseExpression("hasPermission(message, 'read')");
given(this.permissionEvaluator.hasPermission(this.authentication, this.message, "read")).willReturn(true);
-
assertThat(ExpressionUtils.evaluateAsBoolean(expression, context)).isTrue();
}
diff --git a/messaging/src/test/java/org/springframework/security/messaging/access/expression/ExpressionBasedMessageSecurityMetadataSourceFactoryTests.java b/messaging/src/test/java/org/springframework/security/messaging/access/expression/ExpressionBasedMessageSecurityMetadataSourceFactoryTests.java
index 98a01be6b5..f4a66f8761 100644
--- a/messaging/src/test/java/org/springframework/security/messaging/access/expression/ExpressionBasedMessageSecurityMetadataSourceFactoryTests.java
+++ b/messaging/src/test/java/org/springframework/security/messaging/access/expression/ExpressionBasedMessageSecurityMetadataSourceFactoryTests.java
@@ -66,7 +66,6 @@ public class ExpressionBasedMessageSecurityMetadataSourceFactoryTests {
this.matcherToExpression = new LinkedHashMap<>();
this.matcherToExpression.put(this.matcher1, this.expression1);
this.matcherToExpression.put(this.matcher2, this.expression2);
-
this.source = ExpressionBasedMessageSecurityMetadataSourceFactory
.createExpressionMessageMetadataSource(this.matcherToExpression);
this.rootObject = new MessageSecurityExpressionRoot(this.authentication, this.message);
@@ -74,18 +73,14 @@ public class ExpressionBasedMessageSecurityMetadataSourceFactoryTests {
@Test
public void createExpressionMessageMetadataSourceNoMatch() {
-
Collection attrs = this.source.getAttributes(this.message);
-
assertThat(attrs).isNull();
}
@Test
public void createExpressionMessageMetadataSourceMatchFirst() {
given(this.matcher1.matches(this.message)).willReturn(true);
-
Collection attrs = this.source.getAttributes(this.message);
-
assertThat(attrs).hasSize(1);
ConfigAttribute attr = attrs.iterator().next();
assertThat(attr).isInstanceOf(MessageExpressionConfigAttribute.class);
@@ -96,9 +91,7 @@ public class ExpressionBasedMessageSecurityMetadataSourceFactoryTests {
@Test
public void createExpressionMessageMetadataSourceMatchSecond() {
given(this.matcher2.matches(this.message)).willReturn(true);
-
Collection attrs = this.source.getAttributes(this.message);
-
assertThat(attrs).hasSize(1);
ConfigAttribute attr = attrs.iterator().next();
assertThat(attr).isInstanceOf(MessageExpressionConfigAttribute.class);
diff --git a/messaging/src/test/java/org/springframework/security/messaging/access/expression/MessageExpressionConfigAttributeTests.java b/messaging/src/test/java/org/springframework/security/messaging/access/expression/MessageExpressionConfigAttributeTests.java
index 0add3f1d23..27918fa51a 100644
--- a/messaging/src/test/java/org/springframework/security/messaging/access/expression/MessageExpressionConfigAttributeTests.java
+++ b/messaging/src/test/java/org/springframework/security/messaging/access/expression/MessageExpressionConfigAttributeTests.java
@@ -74,7 +74,6 @@ public class MessageExpressionConfigAttributeTests {
@Test
public void toStringUsesExpressionString() {
given(this.expression.getExpressionString()).willReturn("toString");
-
assertThat(this.attribute.toString()).isEqualTo(this.expression.getExpressionString());
}
@@ -84,10 +83,8 @@ public class MessageExpressionConfigAttributeTests {
Message> message = MessageBuilder.withPayload("M")
.setHeader(SimpMessageHeaderAccessor.DESTINATION_HEADER, "/topics/someTopic/sub1").build();
EvaluationContext context = mock(EvaluationContext.class);
-
this.attribute = new MessageExpressionConfigAttribute(this.expression, matcher);
this.attribute.postProcess(context, message);
-
verify(context).setVariable("topic", "someTopic");
}
diff --git a/messaging/src/test/java/org/springframework/security/messaging/access/expression/MessageExpressionVoterTests.java b/messaging/src/test/java/org/springframework/security/messaging/access/expression/MessageExpressionVoterTests.java
index fcd38b0553..700e2714cb 100644
--- a/messaging/src/test/java/org/springframework/security/messaging/access/expression/MessageExpressionVoterTests.java
+++ b/messaging/src/test/java/org/springframework/security/messaging/access/expression/MessageExpressionVoterTests.java
@@ -71,7 +71,6 @@ public class MessageExpressionVoterTests {
public void setup() {
this.attributes = Arrays
.asList(new MessageExpressionConfigAttribute(this.expression, this.matcher));
-
this.voter = new MessageExpressionVoter();
}
@@ -127,10 +126,8 @@ public class MessageExpressionVoterTests {
given(this.expressionHandler.createEvaluationContext(this.authentication, this.message))
.willReturn(this.evaluationContext);
given(this.expression.getValue(this.evaluationContext, Boolean.class)).willReturn(true);
-
assertThat(this.voter.vote(this.authentication, this.message, this.attributes))
.isEqualTo(AccessDecisionVoter.ACCESS_GRANTED);
-
verify(this.expressionHandler).createEvaluationContext(this.authentication, this.message);
}
@@ -144,7 +141,6 @@ public class MessageExpressionVoterTests {
this.attributes = Arrays.asList(configAttribute);
given(configAttribute.postProcess(this.evaluationContext, this.message)).willReturn(this.evaluationContext);
given(this.expression.getValue(any(EvaluationContext.class), eq(Boolean.class))).willReturn(true);
-
assertThat(this.voter.vote(this.authentication, this.message, this.attributes))
.isEqualTo(AccessDecisionVoter.ACCESS_GRANTED);
verify(configAttribute).postProcess(this.evaluationContext, this.message);
diff --git a/messaging/src/test/java/org/springframework/security/messaging/access/intercept/ChannelSecurityInterceptorTests.java b/messaging/src/test/java/org/springframework/security/messaging/access/intercept/ChannelSecurityInterceptorTests.java
index 43da6ad2f6..94d546c32e 100644
--- a/messaging/src/test/java/org/springframework/security/messaging/access/intercept/ChannelSecurityInterceptorTests.java
+++ b/messaging/src/test/java/org/springframework/security/messaging/access/intercept/ChannelSecurityInterceptorTests.java
@@ -77,7 +77,6 @@ public class ChannelSecurityInterceptorTests {
this.interceptor = new ChannelSecurityInterceptor(this.source);
this.interceptor.setAccessDecisionManager(this.accessDecisionManager);
this.interceptor.setRunAsManager(this.runAsManager);
-
this.originalAuth = new TestingAuthenticationToken("user", "pass", "ROLE_USER");
SecurityContextHolder.getContext().setAuthentication(this.originalAuth);
}
@@ -110,9 +109,7 @@ public class ChannelSecurityInterceptorTests {
@Test
public void preSendGrant() {
given(this.source.getAttributes(this.message)).willReturn(this.attrs);
-
Message> result = this.interceptor.preSend(this.message, this.channel);
-
assertThat(result).isSameAs(this.message);
}
@@ -121,7 +118,6 @@ public class ChannelSecurityInterceptorTests {
given(this.source.getAttributes(this.message)).willReturn(this.attrs);
willThrow(new AccessDeniedException("")).given(this.accessDecisionManager).decide(any(Authentication.class),
eq(this.message), eq(this.attrs));
-
this.interceptor.preSend(this.message, this.channel);
}
@@ -131,13 +127,9 @@ public class ChannelSecurityInterceptorTests {
given(this.source.getAttributes(this.message)).willReturn(this.attrs);
given(this.runAsManager.buildRunAs(any(Authentication.class), any(), any(Collection.class)))
.willReturn(this.runAs);
-
Message> preSend = this.interceptor.preSend(this.message, this.channel);
-
assertThat(SecurityContextHolder.getContext().getAuthentication()).isSameAs(this.runAs);
-
this.interceptor.postSend(preSend, this.channel, true);
-
assertThat(SecurityContextHolder.getContext().getAuthentication()).isSameAs(this.originalAuth);
}
@@ -152,13 +144,9 @@ public class ChannelSecurityInterceptorTests {
given(this.source.getAttributes(this.message)).willReturn(this.attrs);
given(this.runAsManager.buildRunAs(any(Authentication.class), any(), any(Collection.class)))
.willReturn(this.runAs);
-
Message> preSend = this.interceptor.preSend(this.message, this.channel);
-
assertThat(SecurityContextHolder.getContext().getAuthentication()).isSameAs(this.runAs);
-
this.interceptor.afterSendCompletion(preSend, this.channel, true, new RuntimeException());
-
assertThat(SecurityContextHolder.getContext().getAuthentication()).isSameAs(this.originalAuth);
}
diff --git a/messaging/src/test/java/org/springframework/security/messaging/access/intercept/DefaultMessageSecurityMetadataSourceTests.java b/messaging/src/test/java/org/springframework/security/messaging/access/intercept/DefaultMessageSecurityMetadataSourceTests.java
index 037958cb4d..4bf00db940 100644
--- a/messaging/src/test/java/org/springframework/security/messaging/access/intercept/DefaultMessageSecurityMetadataSourceTests.java
+++ b/messaging/src/test/java/org/springframework/security/messaging/access/intercept/DefaultMessageSecurityMetadataSourceTests.java
@@ -63,7 +63,6 @@ public class DefaultMessageSecurityMetadataSourceTests {
this.messageMap = new LinkedHashMap<>();
this.messageMap.put(this.matcher1, Arrays.