From 5c8e37bceadaff531e570a32b63eecfdbd9b4431 Mon Sep 17 00:00:00 2001 From: YuriyZ Date: Tue, 2 Apr 2024 13:46:57 +0300 Subject: [PATCH] feat(jans-auth-server): added test when unmet_authentication_requirements error code is returned #7900 Signed-off-by: YuriyZ --- .../AuthorizeRestWebServiceValidatorTest.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/jans-auth-server/server/src/test/java/io/jans/as/server/authorize/ws/rs/AuthorizeRestWebServiceValidatorTest.java b/jans-auth-server/server/src/test/java/io/jans/as/server/authorize/ws/rs/AuthorizeRestWebServiceValidatorTest.java index 58c10a8a5ff..730688169ee 100644 --- a/jans-auth-server/server/src/test/java/io/jans/as/server/authorize/ws/rs/AuthorizeRestWebServiceValidatorTest.java +++ b/jans-auth-server/server/src/test/java/io/jans/as/server/authorize/ws/rs/AuthorizeRestWebServiceValidatorTest.java @@ -7,7 +7,12 @@ import io.jans.as.model.error.ErrorResponseFactory; import io.jans.as.server.security.Identity; import io.jans.as.server.service.*; +import io.jans.as.server.service.external.ExternalAuthenticationService; import io.jans.as.server.service.external.ExternalAuthzDetailTypeService; +import io.jans.model.AuthenticationScriptUsageType; +import io.jans.model.custom.script.conf.CustomScriptConfiguration; +import io.jans.model.custom.script.model.CustomScript; +import io.jans.model.custom.script.type.auth.DummyPersonAuthenticationType; import jakarta.servlet.http.HttpServletRequest; import jakarta.ws.rs.WebApplicationException; import org.mockito.InjectMocks; @@ -18,6 +23,7 @@ import org.testng.annotations.Test; import java.util.Collections; +import java.util.HashMap; import java.util.HashSet; import static org.mockito.Mockito.*; @@ -59,6 +65,46 @@ public class AuthorizeRestWebServiceValidatorTest { @Mock private ExternalAuthzDetailTypeService externalAuthzDetailTypeService; + @Mock + private ExternalAuthenticationService externalAuthenticationService; + + @Test + public void checkAcrScriptIsAvailable_forBuildInAcr_shouldPass() { + AuthzRequest authzRequest = new AuthzRequest(); + authzRequest.setAcrValues("simple_password_auth"); + + authorizeRestWebServiceValidator.checkAcrScriptIsAvailable(authzRequest); + } + + @Test + public void checkAcrScriptIsAvailable_whenScriptIsAvailable_shouldPass() { + AuthzRequest authzRequest = new AuthzRequest(); + authzRequest.setAcrValues("my_acr"); + + final CustomScriptConfiguration script = new CustomScriptConfiguration(new CustomScript(), new DummyPersonAuthenticationType(), new HashMap<>()); + when(externalAuthenticationService.determineCustomScriptConfiguration(AuthenticationScriptUsageType.INTERACTIVE, authzRequest.getAcrValuesList())).thenReturn(script); + + authorizeRestWebServiceValidator.checkAcrScriptIsAvailable(authzRequest); + } + + @Test + public void checkAcrScriptIsAvailable_whenScriptIsNotAvailable_shouldFail() { + RedirectUri redirectUri = mock(RedirectUri.class); + when(redirectUri.toString()).thenReturn("http://rp.com"); + + AuthzRequest authzRequest = new AuthzRequest(); + authzRequest.setAcrValues("my_acr"); + authzRequest.setRedirectUriResponse(new RedirectUriResponse(redirectUri, "", mock(HttpServletRequest.class), mock(ErrorResponseFactory.class))); + + try { + authorizeRestWebServiceValidator.checkAcrScriptIsAvailable(authzRequest); + } catch (WebApplicationException e) { + return; + } + + fail("Script is not available but exception is not thrown."); + } + @Test public void validateRequestParameterSupported_whenRequestIsEmpty_shouldPass() { AuthzRequest authzRequest = new AuthzRequest();