|
@@ -37,6 +37,7 @@ import org.springframework.security.saml2.provider.service.registration.TestRely
|
|
import org.springframework.security.saml2.provider.service.web.RelyingPartyRegistrationResolver;
|
|
import org.springframework.security.saml2.provider.service.web.RelyingPartyRegistrationResolver;
|
|
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
|
|
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
|
|
|
|
|
|
|
|
+import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.mockito.ArgumentMatchers.any;
|
|
import static org.mockito.ArgumentMatchers.any;
|
|
import static org.mockito.BDDMockito.given;
|
|
import static org.mockito.BDDMockito.given;
|
|
import static org.mockito.BDDMockito.mock;
|
|
import static org.mockito.BDDMockito.mock;
|
|
@@ -151,4 +152,23 @@ public class Saml2LogoutResponseFilterTests {
|
|
verifyNoInteractions(this.logoutSuccessHandler);
|
|
verifyNoInteractions(this.logoutSuccessHandler);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Test
|
|
|
|
+ public void doFilterWhenNoRelyingPartyLogoutThen401() throws Exception {
|
|
|
|
+ Authentication authentication = new TestingAuthenticationToken("user", "password");
|
|
|
|
+ SecurityContextHolder.getContext().setAuthentication(authentication);
|
|
|
|
+ MockHttpServletRequest request = new MockHttpServletRequest("POST", "/logout/saml2/slo");
|
|
|
|
+ request.setServletPath("/logout/saml2/slo");
|
|
|
|
+ request.setParameter(Saml2ParameterNames.SAML_RESPONSE, "response");
|
|
|
|
+ MockHttpServletResponse response = new MockHttpServletResponse();
|
|
|
|
+ RelyingPartyRegistration registration = TestRelyingPartyRegistrations.full().singleLogoutServiceLocation(null)
|
|
|
|
+ .singleLogoutServiceResponseLocation(null).build();
|
|
|
|
+ given(this.relyingPartyRegistrationResolver.resolve(any(), any())).willReturn(registration);
|
|
|
|
+ Saml2LogoutRequest logoutRequest = Saml2LogoutRequest.withRelyingPartyRegistration(registration)
|
|
|
|
+ .samlRequest("request").build();
|
|
|
|
+ given(this.logoutRequestRepository.removeLogoutRequest(request, response)).willReturn(logoutRequest);
|
|
|
|
+ this.logoutResponseProcessingFilter.doFilterInternal(request, response, new MockFilterChain());
|
|
|
|
+ assertThat(response.getStatus()).isEqualTo(401);
|
|
|
|
+ verifyNoInteractions(this.logoutSuccessHandler);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|