use of io.crnk.core.engine.filter.DocumentFilterContext in project crnk-framework by crnk-project.
the class MetaModule method setupModule.
@Override
public void setupModule(ModuleContext context) {
this.context = context;
informationBuilder = registerInformationBuilder(context.getPropertiesProvider());
if (context.isServer()) {
context.addFilter(new DocumentFilter() {
@Override
public Response filter(DocumentFilterContext filterRequestContext, DocumentFilterChain chain) {
try {
return chain.doFilter(filterRequestContext);
} finally {
lookupRequestLocal.remove();
}
}
});
} else {
context.addResourceLookup(new ResourceLookup() {
@SuppressWarnings("unchecked")
@Override
public Set<Class<?>> getResourceClasses() {
return (Set) collectMetaClasses();
}
});
}
}
use of io.crnk.core.engine.filter.DocumentFilterContext in project crnk-framework by crnk-project.
the class JsonApiActionResponseTest method setupFeature.
@Override
protected void setupFeature(CrnkTestFeature feature) {
filter = Mockito.spy(new DocumentFilter() {
@Override
public Response filter(DocumentFilterContext filterRequestContext, DocumentFilterChain chain) {
return chain.doFilter(filterRequestContext);
}
});
SimpleModule testModule = new SimpleModule("testFilter");
testModule.addFilter(filter);
feature.addModule(testModule);
}
use of io.crnk.core.engine.filter.DocumentFilterContext in project crnk-framework by crnk-project.
the class JsonApiActionResponseTest method testInvokeResourceAction.
@Test
public void testInvokeResourceAction() {
Schedule schedule = new Schedule();
schedule.setId(1L);
schedule.setName("scheduleName");
scheduleRepository.create(schedule);
String result = scheduleRepository.resourceAction(1, "hello");
Assert.assertEquals("{\"data\":\"resource action: hello@scheduleName\"}", result);
// check filters
ArgumentCaptor<DocumentFilterContext> contexts = ArgumentCaptor.forClass(DocumentFilterContext.class);
Mockito.verify(filter, Mockito.times(2)).filter(contexts.capture(), Mockito.any(DocumentFilterChain.class));
DocumentFilterContext actionContext = contexts.getAllValues().get(1);
Assert.assertEquals("GET", actionContext.getMethod());
Assert.assertTrue(actionContext.getJsonPath() instanceof ActionPath);
}
use of io.crnk.core.engine.filter.DocumentFilterContext in project crnk-framework by crnk-project.
the class InteroperabilityTest method testInvokeRepositoryActionWithResourceResult.
@Test
public void testInvokeRepositoryActionWithResourceResult() {
// resources should be received in json api format
String url = getBaseUri() + "schedules/repositoryActionWithResourceResult?msg=hello";
io.restassured.response.Response res = RestAssured.get(url);
Assert.assertEquals(200, res.getStatusCode());
res.then().assertThat().body("data.attributes.name", Matchers.equalTo("hello"));
// check filters
ArgumentCaptor<DocumentFilterContext> contexts = ArgumentCaptor.forClass(DocumentFilterContext.class);
Mockito.verify(filter, Mockito.times(1)).filter(contexts.capture(), Mockito.any(DocumentFilterChain.class));
DocumentFilterContext actionContext = contexts.getAllValues().get(0);
Assert.assertEquals("GET", actionContext.getMethod());
Assert.assertTrue(actionContext.getJsonPath() instanceof ActionPath);
}
use of io.crnk.core.engine.filter.DocumentFilterContext in project crnk-framework by crnk-project.
the class InteroperabilityTest method testInvokeRepositoryActionWithException.
@Test
public void testInvokeRepositoryActionWithException() {
// resources should be received in json api format
String url = getBaseUri() + "schedules/repositoryActionWithException?msg=hello";
io.restassured.response.Response res = RestAssured.get(url);
Assert.assertEquals(403, res.getStatusCode());
res.then().assertThat().body("errors[0].status", Matchers.equalTo("403"));
// check filters
ArgumentCaptor<DocumentFilterContext> contexts = ArgumentCaptor.forClass(DocumentFilterContext.class);
Mockito.verify(filter, Mockito.times(1)).filter(contexts.capture(), Mockito.any(DocumentFilterChain.class));
DocumentFilterContext actionContext = contexts.getAllValues().get(0);
Assert.assertEquals("GET", actionContext.getMethod());
Assert.assertTrue(actionContext.getJsonPath() instanceof ActionPath);
}
Aggregations