use of org.forgerock.http.Handler in project OpenAM by OpenRock.
the class CrestProtocolEnforcementFilterTest method requestWithCorrectProtocolVersionShouldCallHandler.
@Test
public void requestWithCorrectProtocolVersionShouldCallHandler() {
//Given
Context context = mock(Context.class);
Request request = new Request();
Handler next = mock(Handler.class);
request.getHeaders().put(AcceptApiVersionHeader.valueOf("protocol=1"));
//When
filter.filter(context, request, next);
//Then
assertThat(AcceptApiVersionHeader.valueOf(request).getProtocolVersion()).isEqualTo(version(1));
verify(next).handle(context, request);
}
use of org.forgerock.http.Handler in project OpenAM by OpenRock.
the class CrestProtocolEnforcementFilterTest method requestWithIncorrectProtocolMajorVersionShouldReturnBadRequestResponse.
@Test
public void requestWithIncorrectProtocolMajorVersionShouldReturnBadRequestResponse() throws IOException {
//Given
Context context = mock(Context.class);
Request request = new Request();
Handler next = mock(Handler.class);
request.getHeaders().put(AcceptApiVersionHeader.valueOf("protocol=2"));
//When
Response response = filter.filter(context, request, next).getOrThrowUninterruptibly();
//Then
assertThat(getUnsupportedMajorVersionExceptionJson(version(2))).isEqualTo(response.getEntity().getJson());
assertThat(AcceptApiVersionHeader.valueOf(request).getProtocolVersion()).isEqualTo(version(2));
verify(next, never()).handle(context, request);
}
use of org.forgerock.http.Handler in project OpenAM by OpenRock.
the class RealmContextFilterTest method filterShouldConsumeRealmFromCRUDPAQRequestWithSubrealm.
@Test(dataProvider = "CRUDPAQ")
public void filterShouldConsumeRealmFromCRUDPAQRequestWithSubrealm(Request request, String postURIString) throws Exception {
//Given
RequestHandler requestHandler = mock(RequestHandler.class);
String path = SUB_REALM + "/" + ENDPOINT_PATH_ELEMENT;
Context context = mockContext(path);
request.setUri(createRequestURI(HOSTNAME, path, postURIString));
mockDnsAlias(HOSTNAME, "/");
mockRealmAlias("/" + SUB_REALM, "/" + SUB_REALM);
//When
Handler httpHandler = getHttpHandler(requestHandler);
httpHandler.handle(context, request).getOrThrowUninterruptibly();
//Then
ArgumentCaptor<Context> contextCaptor = ArgumentCaptor.forClass(Context.class);
ArgumentCaptor<org.forgerock.json.resource.Request> requestCaptor = ArgumentCaptor.forClass(org.forgerock.json.resource.Request.class);
collectCRUDPAQArguments(requestHandler, contextCaptor, requestCaptor);
verifyRealmContext(contextCaptor.getValue(), "", "/" + SUB_REALM, null);
verifyUriRouterContext(contextCaptor.getValue(), SUB_REALM);
verifyResolvedResourcePath(requestCaptor.getValue(), ENDPOINT_PATH_ELEMENT);
}
use of org.forgerock.http.Handler in project OpenAM by OpenRock.
the class Endpoints method from.
/**
* Produce a {@code Handler} from the annotated methods on the provided object.
* <p>
* This method currently only distinguishes requests by their method type. In future this
* should be extended to support selection by request and response media types, and request
* path.
* @param obj The object containing annotated methods.
* @return A new {@code Handler}.
*/
public static Handler from(final Object obj) {
final Map<String, AnnotatedMethod> methods = new HashMap<>();
methods.put("DELETE", AnnotatedMethod.findMethod(obj, Delete.class));
methods.put("GET", AnnotatedMethod.findMethod(obj, Get.class));
methods.put("POST", AnnotatedMethod.findMethod(obj, Post.class));
methods.put("PUT", AnnotatedMethod.findMethod(obj, Put.class));
return new Handler() {
@Override
public Promise<Response, NeverThrowsException> handle(Context context, Request request) {
AnnotatedMethod method = methods.get(getMethod(request));
if (method == null) {
Response response = new Response(Status.METHOD_NOT_ALLOWED);
response.setEntity(new NotSupportedException().toJsonValue().getObject());
return newResultPromise(response);
}
return method.invoke(context, request);
}
};
}
use of org.forgerock.http.Handler in project OpenAM by OpenRock.
the class AbstractHttpAccessAuditFilterTest method shouldAuditAccessAttemptAndResult.
@Test(dataProvider = "handlerResponses")
public void shouldAuditAccessAttemptAndResult(Status responseStatus) throws AuditException {
//Given
Context context = new RequestAuditContext(mockContext());
Request request = new Request().setMethod("GET").setUri(URI.create("http://example.com:8080?query=value"));
request.getHeaders().put(ContentTypeHeader.valueOf("CONTENT_TYPE"));
enableAccessTopicAuditing();
Handler handler = mockHandler(context, request, responseStatus);
//When
auditFilter.filter(context, request, handler);
//Then
ArgumentCaptor<AuditEvent> auditEventCaptor = ArgumentCaptor.forClass(AuditEvent.class);
verify(eventPublisher, times(2)).tryPublish(eq(AuditConstants.ACCESS_TOPIC), auditEventCaptor.capture());
verifyAccessAttemptAuditEvent(auditEventCaptor.getAllValues().get(0).getValue());
if (responseStatus.isSuccessful()) {
verifyAccessSuccessAuditEvent(auditEventCaptor.getAllValues().get(1).getValue());
} else {
verifyAccessFailedAuditEvent(auditEventCaptor.getAllValues().get(1).getValue());
}
}
Aggregations