use of com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent in project di-authentication-api by alphagov.
the class AuthorisationHandlerTest method shouldReturn400WhenAuthorisationRequestCannotBeParsed.
@Test
void shouldReturn400WhenAuthorisationRequestCannotBeParsed() {
APIGatewayProxyRequestEvent event = new APIGatewayProxyRequestEvent();
event.setQueryStringParameters(Map.of("client_id", CLIENT_ID.getValue(), "redirect_uri", REDIRECT_URI, "scope", SCOPE, "invalid_parameter", "nonsense", "state", STATE.getValue()));
event.setRequestContext(new ProxyRequestContext().withIdentity(new RequestIdentity().withSourceIp("123.123.123.123")));
APIGatewayProxyResponseEvent response = makeHandlerRequest(event);
assertThat(response, hasStatus(302));
assertEquals("https://localhost:8080?error=invalid_request&error_description=Invalid+request%3A+Missing+response_type+parameter&state=" + STATE.getValue(), response.getHeaders().get(ResponseHeaders.LOCATION));
verify(auditService).submitAuditEvent(AUTHORISATION_REQUEST_ERROR, AWS_REQUEST_ID, "", "", "", "", "123.123.123.123", "", PERSISTENT_SESSION_ID, pair("description", "Invalid request: Missing response_type parameter"));
}
use of com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent in project di-authentication-api by alphagov.
the class JwksHandlerTest method shouldReturn200WhenRequestIsSuccessful.
@Test
public void shouldReturn200WhenRequestIsSuccessful() throws JOSEException {
JWK opaqueSigningKey = new RSAKeyGenerator(2048).keyID(UUID.randomUUID().toString()).generate();
when(tokenValidationService.getPublicJwkWithOpaqueId()).thenReturn(opaqueSigningKey);
APIGatewayProxyRequestEvent event = new APIGatewayProxyRequestEvent();
APIGatewayProxyResponseEvent result = handler.handleRequest(event, context);
JWKSet expectedJWKSet = new JWKSet(opaqueSigningKey);
assertThat(result, hasStatus(200));
assertThat(result, hasBody(expectedJWKSet.toString(true)));
}
use of com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent in project di-authentication-api by alphagov.
the class JwksHandlerTest method shouldReturn500WhenSigningKeyIsNotPresent.
@Test
public void shouldReturn500WhenSigningKeyIsNotPresent() {
when(tokenValidationService.getPublicJwkWithOpaqueId()).thenReturn(null);
APIGatewayProxyRequestEvent event = new APIGatewayProxyRequestEvent();
APIGatewayProxyResponseEvent result = handler.handleRequest(event, context);
assertThat(result, hasStatus(500));
assertThat(result, hasBody("Error providing JWKs data"));
}
use of com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent in project di-authentication-api by alphagov.
the class LogoutHandlerTest method shouldDeleteSessionAndRedirectToClientLogoutUriForValidLogoutRequest.
@Test
public void shouldDeleteSessionAndRedirectToClientLogoutUriForValidLogoutRequest() {
when(dynamoClientService.getClient("client-id")).thenReturn(Optional.of(createClientRegistry()));
when(tokenValidationService.isTokenSignatureValid(signedIDToken.serialize())).thenReturn(true);
APIGatewayProxyRequestEvent event = generateRequestEvent(Map.of("id_token_hint", signedIDToken.serialize(), "post_logout_redirect_uri", CLIENT_LOGOUT_URI.toString(), "state", STATE.toString()));
setupSessions();
APIGatewayProxyResponseEvent response = handler.handleRequest(event, context);
verifySessions();
assertThat(response, hasStatus(302));
assertThat(response.getHeaders().get(ResponseHeaders.LOCATION), equalTo(CLIENT_LOGOUT_URI + "?state=" + STATE));
verify(auditService).submitAuditEvent(OidcAuditableEvent.LOG_OUT_SUCCESS, "aws-session-id", SESSION_ID, "client-id", AuditService.UNKNOWN, AuditService.UNKNOWN, "123.123.123.123", AuditService.UNKNOWN, PERSISTENT_SESSION_ID);
}
use of com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent in project di-authentication-api by alphagov.
the class LogoutHandlerTest method shouldRedirectToDefaultLogoutUriWithErrorMessageWhenClientSessionIdIsNotFoundInSession.
@Test
public void shouldRedirectToDefaultLogoutUriWithErrorMessageWhenClientSessionIdIsNotFoundInSession() throws URISyntaxException {
APIGatewayProxyRequestEvent event = new APIGatewayProxyRequestEvent();
event.setQueryStringParameters(Map.of("post_logout_redirect_uri", CLIENT_LOGOUT_URI.toString(), "state", STATE.toString()));
event.setRequestContext(contextWithSourceIp("123.123.123.123"));
event.setHeaders(Map.of(COOKIE, buildCookieString("invalid-client-session-id")));
generateSessionFromCookie(session);
APIGatewayProxyResponseEvent response = handler.handleRequest(event, context);
assertThat(response, hasStatus(302));
ErrorObject errorObject = new ErrorObject(OAuth2Error.INVALID_REQUEST_CODE, "invalid session");
URIBuilder uriBuilder = new URIBuilder(DEFAULT_LOGOUT_URI);
uriBuilder.addParameter("error_code", errorObject.getCode());
uriBuilder.addParameter("error_description", errorObject.getDescription());
URI expectedUri = uriBuilder.build();
assertThat(response.getHeaders().get(ResponseHeaders.LOCATION), equalTo(expectedUri.toString()));
verify(auditService).submitAuditEvent(OidcAuditableEvent.LOG_OUT_SUCCESS, "aws-session-id", SESSION_ID, AuditService.UNKNOWN, AuditService.UNKNOWN, AuditService.UNKNOWN, "123.123.123.123", AuditService.UNKNOWN, PERSISTENT_SESSION_ID);
}
Aggregations