use of com.linkedin.restli.examples.greetings.api.Greeting in project rest.li by linkedin.
the class TestFilters method testGetOldBuilders.
/**
* This is a simple test that verifies the behavior of request and response filters. This test
* hooks up two filters, one request filter and one response filter to the greeting resource.
*
* The behavior of the request filter is such that if the incoming request is of type create, the
* filter modifies the incoming create request as follows:
*
* 1. If the tone of the incoming greeting is friendly, the filter modifies it to sincere.
*
* 2. If the tone of the incoming greeting is sincere, the filter modifies it to insulting.
*
* 3. If the tone of the incoming greeting is insulting, the filter throws an exception saying
* that creation of a greeting with an insulting tone is not permitted. The HTTP status code is
* set to 403.
*
* The behavior of the response filter is as follows:
*
* 1. If the response is an error, and the HTTP status code is 403, the filter updates the
* outgoing error message and sets the status code to 400.
*
* 2. If the response is not an error, and the incoming request is a get, then the response filter
* modifies the tone of the outgoing greeting message as follows:
*
* a. If the tone of the outgoing greeting from the resource is sincere, the filter modifies it to
* friendly.
*
* b. If the tone of the outgoing greeting from the resource is insulting, the filter modifies it
* to sincere.
*
* @param builders type of request builder.
* @param tone tone of the greeting to be created.
* @param responseFilter flag indicating whether or not the response filter is to be hooked up. NOTE: The
* request filter is always hooked up.
* @param responseFilterException the exception the response filter will throw.
* @throws Exception if anything unexpected happens.
*/
@Test(dataProvider = "requestBuilderDataProvider")
public void testGetOldBuilders(RootBuilderWrapper<Long, Greeting> builders, Tone tone, boolean responseFilter, RuntimeException responseFilterException) throws Exception {
setupFilters(responseFilter, responseFilterException);
Greeting greeting = generateTestGreeting("Test greeting.....", tone);
Long createdId = null;
try {
createdId = createTestData(builders, greeting);
} catch (RestLiResponseException e) {
if (tone != Tone.INSULTING) {
fail();
}
if (responseFilter) {
assertEquals(e.getServiceErrorMessage(), RESP_FILTER_ERROR_MESSAGE);
assertEquals(e.getResponse().getStatus(), RESP_FILTER_ERROR_STATUS.getCode());
} else {
assertEquals(e.getServiceErrorMessage(), REQ_FILTER_ERROR_MESSAGE);
assertEquals(e.getResponse().getStatus(), REQ_FILTER_ERROR_STATUS.getCode());
}
verifyFilters(tone, responseFilter);
return;
}
if (tone == Tone.INSULTING) {
fail();
}
if (!responseFilter) {
greeting.setTone(mapToneForIncomingRequest(tone));
}
greeting.setId(createdId);
Request<Greeting> getRequest = builders.get().id(createdId).build();
Greeting getReturnedGreeting = getClient().sendRequest(getRequest).getResponse().getEntity();
ValidateDataAgainstSchema.validate(getReturnedGreeting.data(), getReturnedGreeting.schema(), new ValidationOptions());
assertEquals(getReturnedGreeting, greeting);
deleteAndVerifyTestData(builders, createdId);
verifyFilters(tone, responseFilter);
}
use of com.linkedin.restli.examples.greetings.api.Greeting in project rest.li by linkedin.
the class TestGreetingClientContentTypes method testBatchGetEntity.
@Test(dataProvider = com.linkedin.restli.internal.common.TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "clientDataBatchDataProvider")
public void testBatchGetEntity(RestClient restClient, RestliRequestOptions requestOptions) throws RemoteInvocationException {
List<Long> ids = Arrays.asList(1L, 2L, 3L, 4L);
Request<BatchKVResponse<Long, EntityResponse<Greeting>>> request = new GreetingsRequestBuilders(requestOptions).batchGet().ids(ids).build();
Response<BatchKVResponse<Long, EntityResponse<Greeting>>> response = restClient.sendRequest(request).getResponse();
BatchKVResponse<Long, EntityResponse<Greeting>> batchResponse = response.getEntity();
Assert.assertEquals(batchResponse.getResults().size(), ids.size());
}
use of com.linkedin.restli.examples.greetings.api.Greeting in project rest.li by linkedin.
the class TestGreetingClientContentTypes method testUpdate.
@Test(dataProvider = com.linkedin.restli.internal.common.TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "clientDataDataProvider")
public void testUpdate(RestClient restClient, RootBuilderWrapper<Long, Greeting> builders) throws RemoteInvocationException, CloneNotSupportedException {
// GET
Request<Greeting> request = builders.get().id(1L).build();
Response<Greeting> greetingResponse1 = restClient.sendRequest(request).getResponse();
String response1 = greetingResponse1.getEntity().getMessage();
Assert.assertNotNull(response1);
// POST
Greeting greeting = new Greeting(greetingResponse1.getEntity().data().copy());
greeting.setMessage(response1 + "Again");
Request<EmptyRecord> writeRequest = builders.update().id(1L).input(greeting).build();
Response<EmptyRecord> updateResponse = restClient.sendRequest(writeRequest).getResponse();
Assert.assertNull(updateResponse.getHeader(RestConstants.HEADER_CONTENT_TYPE));
// GET again, to verify that our POST worked.
Request<Greeting> request2 = builders.get().id(1L).build();
Response<Greeting> greetingResponse2 = restClient.sendRequest(request2).getResponse();
String response2 = greetingResponse2.getEntity().getMessage();
Assert.assertEquals(response2, response1 + "Again");
}
use of com.linkedin.restli.examples.greetings.api.Greeting in project rest.li by linkedin.
the class TestGreetingClientContentTypes method testAction.
@Test(dataProvider = com.linkedin.restli.internal.common.TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "clientDataDataProvider")
public void testAction(RestClient restClient, RootBuilderWrapper<Long, Greeting> builders) throws RemoteInvocationException {
Request<Greeting> request = builders.<Greeting>action("SomeAction").id(1L).setActionParam("A", 1).setActionParam("B", "").setActionParam("C", new TransferOwnershipRequest()).setActionParam("D", new TransferOwnershipRequest()).setActionParam("E", 3).build();
Response<Greeting> response = restClient.sendRequest(request).getResponse();
Greeting greeting = response.getEntity();
Assert.assertEquals(greeting.getMessage(), "This is a newly created greeting");
}
use of com.linkedin.restli.examples.greetings.api.Greeting in project rest.li by linkedin.
the class TestGreetingClientContentTypes method testCreateId.
@Test(dataProvider = com.linkedin.restli.internal.common.TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "buildersClientDataDataProvider")
public void testCreateId(RestClient restClient, RestliRequestOptions requestOptions) throws RemoteInvocationException {
Greeting greeting = new Greeting();
greeting.setMessage("Hello there!");
greeting.setTone(Tone.FRIENDLY);
final GreetingsRequestBuilders builders = new GreetingsRequestBuilders(requestOptions);
CreateIdRequest<Long, Greeting> createRequest = builders.create().input(greeting).build();
Response<IdResponse<Long>> response = restClient.sendRequest(createRequest).getResponse();
Assert.assertNull(response.getHeader(RestConstants.HEADER_CONTENT_TYPE));
@SuppressWarnings("unchecked") long id = response.getEntity().getId();
@SuppressWarnings("deprecation") String stringId = response.getId();
Assert.assertEquals(id, Long.parseLong(stringId));
Request<Greeting> getRequest = builders.get().id(id).build();
Response<Greeting> getResponse = restClient.sendRequest(getRequest).getResponse();
Greeting responseGreeting = getResponse.getEntity();
Assert.assertEquals(responseGreeting.getMessage(), greeting.getMessage());
Assert.assertEquals(responseGreeting.getTone(), greeting.getTone());
}
Aggregations