|
@@ -31,7 +31,6 @@ import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequ
|
|
|
import org.springframework.test.context.TestContext;
|
|
|
import org.springframework.test.context.TestExecutionListener;
|
|
|
import org.springframework.test.context.support.AbstractTestExecutionListener;
|
|
|
-import org.springframework.test.util.MetaAnnotationUtils;
|
|
|
import org.springframework.test.web.servlet.MockMvc;
|
|
|
|
|
|
/**
|
|
@@ -61,10 +60,7 @@ public class WithSecurityContextTestExecutionListener extends AbstractTestExecut
|
|
|
*/
|
|
|
@Override
|
|
|
public void beforeTestMethod(TestContext testContext) {
|
|
|
- TestSecurityContext testSecurityContext = createTestSecurityContext(testContext.getTestMethod(), testContext);
|
|
|
- if (testSecurityContext == null) {
|
|
|
- testSecurityContext = createTestSecurityContext(testContext.getTestClass(), testContext);
|
|
|
- }
|
|
|
+ TestSecurityContext testSecurityContext = findTestSecurityContext(testContext);
|
|
|
if (testSecurityContext == null) {
|
|
|
return;
|
|
|
}
|
|
@@ -77,6 +73,21 @@ public class WithSecurityContextTestExecutionListener extends AbstractTestExecut
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private TestSecurityContext findTestSecurityContext(TestContext testContext) {
|
|
|
+ TestSecurityContext testSecurityContext = createTestSecurityContext(testContext.getTestMethod(), testContext);
|
|
|
+ if (testSecurityContext != null) {
|
|
|
+ return testSecurityContext;
|
|
|
+ }
|
|
|
+ for (Class<?> classToSearch = testContext.getTestClass(); classToSearch != null; classToSearch = classToSearch
|
|
|
+ .getEnclosingClass()) {
|
|
|
+ testSecurityContext = createTestSecurityContext(classToSearch, testContext);
|
|
|
+ if (testSecurityContext != null) {
|
|
|
+ return testSecurityContext;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* If configured before test execution sets the SecurityContext
|
|
|
* @since 5.1
|
|
@@ -97,10 +108,7 @@ public class WithSecurityContextTestExecutionListener extends AbstractTestExecut
|
|
|
}
|
|
|
|
|
|
private TestSecurityContext createTestSecurityContext(Class<?> annotated, TestContext context) {
|
|
|
- MetaAnnotationUtils.AnnotationDescriptor<WithSecurityContext> withSecurityContextDescriptor = MetaAnnotationUtils
|
|
|
- .findAnnotationDescriptor(annotated, WithSecurityContext.class);
|
|
|
- WithSecurityContext withSecurityContext = (withSecurityContextDescriptor != null)
|
|
|
- ? withSecurityContextDescriptor.getAnnotation() : null;
|
|
|
+ WithSecurityContext withSecurityContext = AnnotationUtils.findAnnotation(annotated, WithSecurityContext.class);
|
|
|
return createTestSecurityContext(annotated, withSecurityContext, context);
|
|
|
}
|
|
|
|