use of org.alfresco.rest.framework.tests.api.mocks.Farmer in project alfresco-remote-api by Alfresco.
the class ParamsExtractorTests method testPostExtractor.
@SuppressWarnings("unchecked")
@Test
public void testPostExtractor() throws IOException {
// Put together the stubs
ResourceWebScriptPost extractor = new ResourceWebScriptPost();
extractor.setAssistant(assistant);
Map<String, String> templateVars = new HashMap<String, String>();
Content content = mock(Content.class);
when(content.getReader()).thenReturn(new StringReader(JsonJacksonTests.FARMER_JSON));
WebScriptRequest request = mock(WebScriptRequest.class);
when(request.getServiceMatch()).thenReturn(new Match(null, templateVars, null));
when(request.getContent()).thenReturn(content);
Params params = extractor.extractParams(mockEntity(), request);
assertNotNull(params);
assertNotNull(params.getFilter());
assertTrue("Default filter is BeanPropertiesFilter.AllProperties", BeanPropertiesFilter.AllProperties.class.equals(params.getFilter().getClass()));
Object passed = params.getPassedIn();
assertNotNull(passed);
assertTrue(List.class.isAssignableFrom(passed.getClass()));
List<Object> passedObjs = (List<Object>) passed;
assertTrue(passedObjs.size() == 1);
assertTrue("A Farmer was passed in.", Farmer.class.equals(passedObjs.get(0).getClass()));
// No entity id for POST
templateVars.put(ResourceLocator.ENTITY_ID, "1234");
try {
params = extractor.extractParams(mockEntity(), request);
fail("Should not get here. No entity id for POST");
} catch (UnsupportedResourceOperationException uoe) {
// Must throw this exception
assertNotNull(uoe);
}
// reset the reader
when(content.getReader()).thenReturn(new StringReader(JsonJacksonTests.FARMER_JSON));
params = extractor.extractParams(mockRelationship(), request);
assertNotNull(params);
assertEquals("1234", params.getEntityId());
passed = params.getPassedIn();
assertNotNull(passed);
passedObjs = (List<Object>) passed;
assertTrue(passedObjs.size() == 1);
assertTrue("A Farmer was passed in.", Farmer.class.equals(passedObjs.get(0).getClass()));
try {
// reset the reader
when(content.getReader()).thenReturn(new StringReader(JsonJacksonTests.FARMER_JSON));
templateVars.put(ResourceLocator.RELATIONSHIP_ID, "45678");
params = extractor.extractParams(mockRelationship(), request);
fail("Should not get here.");
} catch (UnsupportedResourceOperationException iae) {
// Must throw this exception
assertNotNull("POSTING to a relationship collection by id is not correct.", iae);
}
templateVars.clear();
// reset the reader
when(content.getReader()).thenReturn(new StringReader(JsonJacksonTests.FARMER_JSON));
templateVars.put(ResourceLocator.ENTITY_ID, "1234");
templateVars.put(ResourceLocator.RELATIONSHIP_ID, "codfish");
try {
// POST does not support addressed parameters.
params = extractor.extractParams(mockEntity(), request);
fail("Should not get here.");
} catch (UnsupportedResourceOperationException uoe) {
// Must throw this exception
assertNotNull(uoe);
}
testExtractOperationParams(templateVars, request, extractor);
templateVars.clear();
Method aMethod = ResourceInspector.findMethod(EntityResourceAction.Create.class, GrassEntityResource.class);
ResourceOperation op = ResourceInspector.inspectOperation(GrassEntityResource.class, aMethod, HttpMethod.POST);
List<ResourceMetadata> metainfo = ResourceInspector.inspect(GrassEntityResource.class);
assertNotNull(op);
assertTrue("Create method should have two params", op.getParameters().size() == 2);
ResourceParameter singleParam = op.getParameters().get(0);
assertTrue(ResourceParameter.KIND.HTTP_BODY_OBJECT.equals(singleParam.getParamType()));
assertFalse("Create grass does not support multiple grass creations", singleParam.isAllowMultiple());
assertFalse(singleParam.isRequired());
// Test context when the request body is null and 'required' webApiParam is false
when(request.getHeader("content-length")).thenReturn("0");
params = extractor.extractParams(metainfo.get(0), request);
assertNotNull(params);
// Test context when the request body is provided and 'required' property is false
when(content.getReader()).thenReturn(new StringReader(JsonJacksonTests.GRASS_JSON));
params = extractor.extractParams(metainfo.get(0), request);
assertNotNull(params);
}
use of org.alfresco.rest.framework.tests.api.mocks.Farmer in project alfresco-remote-api by Alfresco.
the class ParamsExtractorTests method testSpecialChars.
@Test
public void testSpecialChars() throws IOException {
String specialChars = new String(new char[] { (char) '香' }) + " 香蕉";
ResourceWebScriptPost extractor = new ResourceWebScriptPost();
extractor.setAssistant(assistant);
Map<String, String> templateVars = new HashMap<String, String>();
String mockMe = "{\"name\":\"" + specialChars + "\",\"created\":\"2012-03-23T15:56:18.552+0000\",\"age\":54,\"id\":\"1234A3\",\"farm\":\"LARGE\"}";
Content content = mock(Content.class);
when(content.getReader()).thenReturn(new StringReader(mockMe));
WebScriptRequest request = mock(WebScriptRequest.class);
when(request.getServiceMatch()).thenReturn(new Match(null, templateVars, null));
when(request.getContent()).thenReturn(content);
Params params = extractor.extractParams(mockEntity(), request);
assertNotNull(params);
Object passed = params.getPassedIn();
assertTrue(List.class.isAssignableFrom(passed.getClass()));
@SuppressWarnings("unchecked") List<Object> passedObjs = (List<Object>) passed;
assertTrue(passedObjs.size() == 1);
assertTrue("A Farmer was passed in.", Farmer.class.equals(passedObjs.get(0).getClass()));
Farmer f = (Farmer) passedObjs.get(0);
assertTrue(f.getName().equals("香 香蕉"));
// Test passing in special characters as a param.
ResourceWebScriptGet getExtractor = new ResourceWebScriptGet();
getExtractor.setAssistant(assistant);
Map<String, String> getTemplateVars = new HashMap<String, String>();
WebScriptRequest getRequest = mock(WebScriptRequest.class);
when(getRequest.getServiceMatch()).thenReturn(new Match(null, getTemplateVars, null));
when(getRequest.getParameterNames()).thenReturn(new String[] { "aParam" });
when(getRequest.getParameterValues("aParam")).thenReturn(new String[] { specialChars });
Params pGet = getExtractor.extractParams(mockEntity(), getRequest);
assertNotNull(pGet);
String pVal = pGet.getParameter("aParam");
assertTrue(pVal.equals("香 香蕉"));
}
use of org.alfresco.rest.framework.tests.api.mocks.Farmer in project alfresco-remote-api by Alfresco.
the class SerializeTests method testExpandRelations.
@Test
public void testExpandRelations() throws IOException {
assertNotNull(helper);
Map<String, BeanPropertiesFilter> rFilter = getRelationFilter("blacksheep,baaahh");
ExecutionResult res = (ExecutionResult) helper.processAdditionsToTheResponse(mock(WebScriptResponse.class), api, "sheep", ParamsExtender.valueOf(rFilter, "1"), new Farmer("180"));
assertNotNull(res);
String out = writeResponse(res);
assertTrue(Farmer.class.equals(res.getRoot().getClass()));
assertTrue("There must be json output", StringUtils.isNotBlank(out));
Paging pageRequest = Paging.valueOf(1, 2);
Object resultCollection = helper.processAdditionsToTheResponse(mock(WebScriptResponse.class), api, "sheep", ParamsExtender.valueOf(rFilter, "1"), CollectionWithPagingInfo.asPaged(pageRequest, Arrays.asList(new Farmer("180"), new Farmer("190"), new Farmer("280"))));
assertNotNull(resultCollection);
out = writeResponse(resultCollection);
assertTrue("There must be json output", StringUtils.isNotBlank(out));
}
use of org.alfresco.rest.framework.tests.api.mocks.Farmer in project alfresco-remote-api by Alfresco.
the class SerializeTests method testExpandEmbedded.
@Test
public void testExpandEmbedded() throws IOException {
assertNotNull(helper);
Farmer aFarmer = new Farmer("180");
aFarmer.setGoatId("1111");
aFarmer.setSheepId("2222");
ExecutionResult res = (ExecutionResult) helper.processAdditionsToTheResponse(mock(WebScriptResponse.class), api, null, Params.valueOf("notUsed", null, null), aFarmer);
assertNotNull(res);
assertTrue(Farmer.class.equals(res.getRoot().getClass()));
Map<String, Object> embeds = res.getEmbedded();
assertNotNull(embeds);
assertTrue(embeds.size() > 0);
ExecutionResult goat = (ExecutionResult) embeds.get("goat");
assertTrue(Goat.class.equals(goat.getRoot().getClass()));
ExecutionResult grassEmbed = (ExecutionResult) goat.getEmbedded().get("grass");
Grass grass = (Grass) grassEmbed.getRoot();
assertNotNull(grass);
assertTrue("Goat1111".equals(grass.getId()));
ExecutionResult sheep = (ExecutionResult) embeds.get("sheep");
assertTrue(Sheep.class.equals(sheep.getRoot().getClass()));
Sheep aSheep = (Sheep) sheep.getRoot();
assertTrue("2222".equals(aSheep.getId()));
String out = writeResponse(res);
assertTrue("There must be json output", StringUtils.isNotBlank(out));
}
use of org.alfresco.rest.framework.tests.api.mocks.Farmer in project alfresco-remote-api by Alfresco.
the class SerializeTests method testExpandRecursiveRelations.
@Test
public void testExpandRecursiveRelations() throws IOException {
ExecutionResult exec1 = new ExecutionResult(new Farmer("180"), null);
ExecutionResult exec2 = new ExecutionResult(new Farmer("456"), getFilter("age"));
CollectionWithPagingInfo<ExecutionResult> coll = CollectionWithPagingInfo.asPaged(null, Arrays.asList(exec1, exec2));
ExecutionResult execResult = new ExecutionResult(new Sheep("ssheep"), null);
Map<String, Object> related = new HashMap<String, Object>();
related.put("farmers", coll);
execResult.addRelated(related);
String out = writeResponse(execResult);
assertTrue("There must be json output", StringUtils.isNotBlank(out));
assertFalse("collections should be serialized correctly. There may be a problem with this one.", StringUtils.contains(out, "\"collection\":["));
assertTrue("collections should be serialized correctly. There should be embed relations", StringUtils.contains(out, "\"relations\":{\"farmers\":{\"list\":"));
}
Aggregations