use of com.linkedin.restli.server.twitter.LocationResource in project rest.li by linkedin.
the class TestRestLiMethodInvocation method testPost.
@Test
public void testPost() throws Exception {
Map<String, ResourceModel> resourceModelMap = buildResourceModels(StatusCollectionResource.class, RepliesCollectionResource.class, LocationResource.class, DiscoveredItemsResource.class);
ResourceModel statusResourceModel = resourceModelMap.get("/statuses");
ResourceModel repliesResourceModel = statusResourceModel.getSubResource("replies");
ResourceModel locationResourceModel = statusResourceModel.getSubResource("location");
ResourceModel discoveredItemsResourceModel = resourceModelMap.get("/discovereditems");
ResourceMethodDescriptor methodDescriptor;
StatusCollectionResource statusResource;
RepliesCollectionResource repliesResource;
LocationResource locationResource;
DiscoveredItemsResource discoveredItemsResource;
// #1
methodDescriptor = statusResourceModel.findMethod(ResourceMethod.CREATE);
statusResource = getMockResource(StatusCollectionResource.class);
EasyMock.expect(statusResource.create((Status) EasyMock.anyObject())).andReturn(null).once();
checkInvocation(statusResource, methodDescriptor, "POST", version, "/statuses", "{}");
// #1.1: different endpoint
methodDescriptor = repliesResourceModel.findMethod(ResourceMethod.CREATE);
repliesResource = getMockResource(RepliesCollectionResource.class);
EasyMock.expect(repliesResource.create((Status) EasyMock.anyObject())).andReturn(null).once();
checkInvocation(repliesResource, methodDescriptor, "POST", version, "/statuses/1/replies", "{}", buildPathKeys("statusID", 1L));
// #1.2: invalid entity
methodDescriptor = statusResourceModel.findMethod(ResourceMethod.CREATE);
statusResource = getMockResource(StatusCollectionResource.class);
EasyMock.expect(statusResource.create((Status) EasyMock.anyObject())).andReturn(null).once();
try {
checkInvocation(statusResource, methodDescriptor, "POST", version, "/statuses", "{");
fail("Expected exception");
} catch (RoutingException e) {
// expected
EasyMock.reset(statusResource);
}
// #2 Collection Partial Update
methodDescriptor = statusResourceModel.findMethod(ResourceMethod.PARTIAL_UPDATE);
statusResource = getMockResource(StatusCollectionResource.class);
PatchTree p = new PatchTree();
p.addOperation(new PathSpec("foo"), PatchOpFactory.setFieldOp(Integer.valueOf(42)));
PatchRequest<Status> expected = PatchRequest.createFromPatchDocument(p.getDataMap());
EasyMock.expect(statusResource.update(eq(1L), eq(expected))).andReturn(null).once();
checkInvocation(statusResource, methodDescriptor, "POST", version, "/statuses/1", "{\"patch\":{\"$set\":{\"foo\":42}}}", buildPathKeys("statusID", 1L));
// #3 Simple Resource Partial Update
methodDescriptor = locationResourceModel.findMethod(ResourceMethod.PARTIAL_UPDATE);
locationResource = getMockResource(LocationResource.class);
p = new PatchTree();
p.addOperation(new PathSpec("foo"), PatchOpFactory.setFieldOp(Integer.valueOf(51)));
PatchRequest<Location> expectedLocation = PatchRequest.createFromPatchDocument(p.getDataMap());
EasyMock.expect(locationResource.update(eq(expectedLocation))).andReturn(null).once();
checkInvocation(locationResource, methodDescriptor, "POST", version, "/statuses/1/location", "{\"patch\":{\"$set\":{\"foo\":51}}}", buildPathKeys("statusID", 1L));
// #4 Complex-key resource create
methodDescriptor = discoveredItemsResourceModel.findMethod(ResourceMethod.CREATE);
discoveredItemsResource = getMockResource(DiscoveredItemsResource.class);
EasyMock.expect(discoveredItemsResource.create((DiscoveredItem) EasyMock.anyObject())).andReturn(null).once();
checkInvocation(discoveredItemsResource, methodDescriptor, "POST", version, "/discovereditems", "{}");
// #5 Partial update on complex-key resource
methodDescriptor = discoveredItemsResourceModel.findMethod(ResourceMethod.PARTIAL_UPDATE);
discoveredItemsResource = getMockResource(DiscoveredItemsResource.class);
p = new PatchTree();
p.addOperation(new PathSpec("foo"), PatchOpFactory.setFieldOp(Integer.valueOf(43)));
PatchRequest<DiscoveredItem> expectedDiscoveredItem = PatchRequest.createFromPatchDocument(p.getDataMap());
ComplexResourceKey<DiscoveredItemKey, DiscoveredItemKeyParams> key = getDiscoveredItemComplexKey(1L, 2, 3L);
EasyMock.expect(discoveredItemsResource.update(eq(key), eq(expectedDiscoveredItem))).andReturn(null).once();
checkInvocation(discoveredItemsResource, methodDescriptor, "POST", version, "/discovereditems/(itemId:1,type:2,userId:3)", "{\"patch\":{\"$set\":{\"foo\":43}}}", buildPathKeys("discoveredItemId", key));
// TODO would be nice to verify that posting an invalid record type fails
}
use of com.linkedin.restli.server.twitter.LocationResource in project rest.li by linkedin.
the class TestRestLiMethodInvocation method testActionsOnResource.
@Test
public void testActionsOnResource() throws Exception {
ResourceModel repliesResourceModel = buildResourceModel(RepliesCollectionResource.class);
ResourceModel locationResourceModel = buildResourceModel(LocationResource.class);
ResourceModel discoveredItemsResourceModel = buildResourceModel(DiscoveredItemsResource.class);
ResourceMethodDescriptor methodDescriptor;
RepliesCollectionResource repliesResource;
LocationResource locationResource;
DiscoveredItemsResource discoveredItemsResource;
// #1 Action on collection resource
methodDescriptor = repliesResourceModel.findActionMethod("replyToAll", ResourceLevel.COLLECTION);
repliesResource = getMockResource(RepliesCollectionResource.class);
repliesResource.replyToAll("hello");
EasyMock.expectLastCall().once();
String jsonEntityBody = RestLiTestHelper.doubleQuote("{'status': 'hello'}");
MutablePathKeys pathKeys = new PathKeysImpl();
pathKeys.append("statusID", 1L);
checkInvocation(repliesResource, methodDescriptor, "POST", version, "/statuses/1/replies?action=replyToAll", jsonEntityBody, pathKeys);
// #2 Action on simple resource
methodDescriptor = locationResourceModel.findActionMethod("new_status_from_location", ResourceLevel.ENTITY);
locationResource = getMockResource(LocationResource.class);
locationResource.newStatusFromLocation(eq("hello"));
EasyMock.expectLastCall().once();
jsonEntityBody = RestLiTestHelper.doubleQuote("{'status': 'hello'}");
pathKeys = new PathKeysImpl();
pathKeys.append("statusID", 1L);
checkInvocation(locationResource, methodDescriptor, "POST", version, "/statuses/1/location?action=new_status_from_location", jsonEntityBody, pathKeys);
// #3 Action on complex-key resource
methodDescriptor = discoveredItemsResourceModel.findActionMethod("purge", ResourceLevel.COLLECTION);
discoveredItemsResource = getMockResource(DiscoveredItemsResource.class);
discoveredItemsResource.purge(12L);
EasyMock.expectLastCall().once();
jsonEntityBody = RestLiTestHelper.doubleQuote("{'user': 12}");
checkInvocation(discoveredItemsResource, methodDescriptor, "POST", version, "/discovereditems/action=purge", jsonEntityBody, buildPathKeys());
}
use of com.linkedin.restli.server.twitter.LocationResource in project rest.li by linkedin.
the class TestRestLiMethodInvocation method testDelete.
@Test
public void testDelete() throws Exception {
Map<String, ResourceModel> resourceModelMap = buildResourceModels(StatusCollectionResource.class, LocationResource.class, DiscoveredItemsResource.class);
ResourceModel statusResourceModel = resourceModelMap.get("/statuses");
ResourceModel locationResourceModel = statusResourceModel.getSubResource("location");
ResourceModel discoveredItemsResourceModel = resourceModelMap.get("/discovereditems");
ResourceMethodDescriptor methodDescriptor;
StatusCollectionResource statusResource;
LocationResource locationResource;
DiscoveredItemsResource discoveredItemsResource;
// #1 Delete on collection resource
methodDescriptor = statusResourceModel.findMethod(ResourceMethod.DELETE);
statusResource = getMockResource(StatusCollectionResource.class);
EasyMock.expect(statusResource.delete(eq(1L))).andReturn(null).once();
checkInvocation(statusResource, methodDescriptor, "DELETE", version, "/statuses/1", buildPathKeys("statusID", 1L));
// #2 Delete on simple resource
methodDescriptor = locationResourceModel.findMethod(ResourceMethod.DELETE);
locationResource = getMockResource(LocationResource.class);
EasyMock.expect(locationResource.delete()).andReturn(null).once();
checkInvocation(locationResource, methodDescriptor, "DELETE", version, "/statuses/1/location", buildPathKeys("statusID", 1L));
// #3 Delete on complex-key resource
methodDescriptor = discoveredItemsResourceModel.findMethod(ResourceMethod.DELETE);
discoveredItemsResource = getMockResource(DiscoveredItemsResource.class);
ComplexResourceKey<DiscoveredItemKey, DiscoveredItemKeyParams> key = getDiscoveredItemComplexKey(1L, 2, 3L);
EasyMock.expect(discoveredItemsResource.delete(eq(key))).andReturn(null).once();
checkInvocation(discoveredItemsResource, methodDescriptor, "DELETE", version, "/discovereditems/(itemId:1,type:2,userId:3)", buildPathKeys("discoveredItemId", key));
}
use of com.linkedin.restli.server.twitter.LocationResource in project rest.li by linkedin.
the class TestRestLiMethodInvocation method testGet.
@Test
public void testGet() throws Exception {
Map<String, ResourceModel> resourceModelMap = buildResourceModels(StatusCollectionResource.class, LocationResource.class, DiscoveredItemsResource.class);
ResourceModel statusResourceModel = resourceModelMap.get("/statuses");
ResourceModel discoveredItemsResourceModel = resourceModelMap.get("/discovereditems");
ResourceMethodDescriptor methodDescriptor;
StatusCollectionResource statusResource;
DiscoveredItemsResource discoveredItemsResource;
// #1: simple filter
methodDescriptor = statusResourceModel.findNamedMethod("public_timeline");
statusResource = getMockResource(StatusCollectionResource.class);
EasyMock.expect(statusResource.getPublicTimeline((PagingContext) EasyMock.anyObject())).andReturn(null).once();
checkInvocation(statusResource, methodDescriptor, "GET", version, "/statuses?q=public_timeline");
// #2: get
methodDescriptor = statusResourceModel.findMethod(ResourceMethod.GET);
statusResource = getMockResource(StatusCollectionResource.class);
EasyMock.expect(statusResource.get(eq(1L))).andReturn(null).once();
checkInvocation(statusResource, methodDescriptor, "GET", version, "/statuses/1", buildPathKeys("statusID", 1L));
// #3: get simple sub-resource
ResourceModel locationResourceModel = statusResourceModel.getSubResource("location");
LocationResource locationResource;
methodDescriptor = locationResourceModel.findMethod(ResourceMethod.GET);
locationResource = getMockResource(LocationResource.class);
EasyMock.expect(locationResource.get()).andReturn(null).once();
checkInvocation(locationResource, methodDescriptor, "GET", version, "/statuses/1/location", buildPathKeys("statusID", 1L));
// #4: get complex-key resource
methodDescriptor = discoveredItemsResourceModel.findMethod(ResourceMethod.GET);
discoveredItemsResource = getMockResource(DiscoveredItemsResource.class);
ComplexResourceKey<DiscoveredItemKey, DiscoveredItemKeyParams> key = getDiscoveredItemComplexKey(1L, 2, 3L);
EasyMock.expect(discoveredItemsResource.get(eq(key))).andReturn(null).once();
checkInvocation(discoveredItemsResource, methodDescriptor, "GET", version, "/discovereditems/(itemId:1,type:2,userId:3)", buildPathKeys("discoveredItemId", key));
}
use of com.linkedin.restli.server.twitter.LocationResource in project rest.li by linkedin.
the class TestRestLiMethodInvocation method testPut.
@Test
public void testPut() throws Exception {
Map<String, ResourceModel> resourceModelMap = buildResourceModels(StatusCollectionResource.class, LocationResource.class, DiscoveredItemsResource.class);
ResourceModel statusResourceModel = resourceModelMap.get("/statuses");
ResourceModel followsAssociationResourceModel = buildResourceModel(FollowsAssociativeResource.class);
ResourceModel locationResourceModel = statusResourceModel.getSubResource("location");
ResourceModel discoveredItemsResourceModel = resourceModelMap.get("/discovereditems");
ResourceMethodDescriptor methodDescriptor;
StatusCollectionResource statusResource;
FollowsAssociativeResource followsResource;
LocationResource locationResource;
DiscoveredItemsResource discoveredItemsResource;
// #1 Update on collection resource
methodDescriptor = statusResourceModel.findMethod(ResourceMethod.UPDATE);
statusResource = getMockResource(StatusCollectionResource.class);
long id = eq(1L);
Status status = (Status) EasyMock.anyObject();
EasyMock.expect(statusResource.update(id, status)).andReturn(null).once();
checkInvocation(statusResource, methodDescriptor, "PUT", version, "/statuses/1", "{}", buildPathKeys("statusID", 1L));
// #2 Update on association resource
methodDescriptor = followsAssociationResourceModel.findMethod(ResourceMethod.UPDATE);
followsResource = getMockResource(FollowsAssociativeResource.class);
CompoundKey rawKey = new CompoundKey();
rawKey.append("followerID", 1L);
rawKey.append("followeeID", 2L);
CompoundKey key = eq(rawKey);
Followed followed = (Followed) EasyMock.anyObject();
EasyMock.expect(followsResource.update(key, followed)).andReturn(null).once();
checkInvocation(followsResource, methodDescriptor, "PUT", version, "/follows/(followerID:1,followeeID:2)", "{}", buildPathKeys("followerID", 1L, "followeeID", 2L, followsAssociationResourceModel.getKeyName(), rawKey));
// #3 Update on simple resource
methodDescriptor = locationResourceModel.findMethod(ResourceMethod.UPDATE);
locationResource = getMockResource(LocationResource.class);
Location location = (Location) EasyMock.anyObject();
EasyMock.expect(locationResource.update(location)).andReturn(null).once();
checkInvocation(locationResource, methodDescriptor, "PUT", version, "/statuses/1/location", "{}", buildPathKeys("statusID", 1L));
// #4 Update on complex-key resource
methodDescriptor = discoveredItemsResourceModel.findMethod(ResourceMethod.UPDATE);
discoveredItemsResource = getMockResource(DiscoveredItemsResource.class);
ComplexResourceKey<DiscoveredItemKey, DiscoveredItemKeyParams> complexKey = getDiscoveredItemComplexKey(1L, 2, 3L);
EasyMock.expect(discoveredItemsResource.update(eq(complexKey), (DiscoveredItem) EasyMock.anyObject())).andReturn(null).once();
checkInvocation(discoveredItemsResource, methodDescriptor, "PUT", version, "/discovereditems/(itemId:1,type:2,userId:3)", "{}", buildPathKeys("discoveredItemId", complexKey));
// TODO would be nice to verify that posting an invalid record type fails
}
Aggregations