@Test public void shouldReadResourceSet() throws Exception { // Given ServerContext context = mock(ServerContext.class); ReadRequest request = mock(ReadRequest.class); given(request.getFields()).willReturn(Arrays.asList(new JsonPointer("/fred"))); ResultHandler<Resource> handler = mock(ResultHandler.class); ResourceSetDescription resourceSet = new ResourceSetDescription(); resourceSet.setDescription(json(object())); Promise<ResourceSetDescription, ResourceException> resourceSetPromise = Promises.newSuccessfulPromise(resourceSet); given(contextHelper.getRealm(context)).willReturn("REALM"); given(contextHelper.getUserId(context)).willReturn("RESOURCE_OWNER_ID"); given( resourceSetService.getResourceSet( context, "REALM", "RESOURCE_SET_ID", "RESOURCE_OWNER_ID", false)) .willReturn(resourceSetPromise); // When resource.readInstance(context, "RESOURCE_SET_ID", request, handler); // Then verify(handler).handleResult(Matchers.<Resource>anyObject()); }
@Test public void nameQueryShouldBeSupported() throws Exception { // Given ServerContext context = mock(ServerContext.class); QueryRequest request = mock(QueryRequest.class); given(request.getFields()).willReturn(Arrays.asList(new JsonPointer("/fred"))); QueryResultHandler handler = mock(QueryResultHandler.class); ResourceSetDescription resourceSet = mock(ResourceSetDescription.class); QueryFilter queryFilter = QueryFilter.and( QueryFilter.equalTo("/name", "NAME"), QueryFilter.equalTo("/resourceServer", "myclient"), QueryFilter.equalTo("/policy/permissions/subject", "SUBJECT")); Promise<Collection<ResourceSetDescription>, ResourceException> resourceSetsPromise = Promises.newSuccessfulPromise((Collection<ResourceSetDescription>) asSet(resourceSet)); given(contextHelper.getRealm(context)).willReturn("REALM"); given(contextHelper.getUserId(context)).willReturn("RESOURCE_OWNER_ID"); given(request.getQueryFilter()).willReturn(queryFilter); given( resourceSetService.getResourceSets( eq(context), eq("REALM"), Matchers.<ResourceSetWithPolicyQuery>anyObject(), eq("RESOURCE_OWNER_ID"), eq(false))) .willReturn(resourceSetsPromise); // When resource.queryCollection(context, request, handler); // Then ArgumentCaptor<ResourceSetWithPolicyQuery> queryCaptor = ArgumentCaptor.forClass(ResourceSetWithPolicyQuery.class); verify(resourceSetService) .getResourceSets( eq(context), eq("REALM"), queryCaptor.capture(), eq("RESOURCE_OWNER_ID"), eq(false)); assertThat(queryCaptor.getValue().getOperator()).isEqualTo(AggregateQuery.Operator.AND); assertThat(queryCaptor.getValue().getPolicyQuery()) .isEqualTo(QueryFilter.equalTo("/permissions/subject", "SUBJECT")); assertThat(queryCaptor.getValue().getResourceSetQuery()) .isEqualTo( org.forgerock.util.query.QueryFilter.and( org.forgerock.util.query.QueryFilter.equalTo("name", "NAME"), org.forgerock.util.query.QueryFilter.equalTo("clientId", "myclient"))); verify(handler).handleResult(any(QueryResult.class)); }
@Test public void shouldRevokeAllUserPolicies() { // Given ServerContext context = mock(ServerContext.class); ActionRequest request = mock(ActionRequest.class); ResultHandler<JsonValue> handler = mock(ResultHandler.class); given(contextHelper.getRealm(context)).willReturn("REALM"); given(contextHelper.getUserId(context)).willReturn("RESOURCE_OWNER_ID"); given(request.getAction()).willReturn("revokeAll"); given(resourceSetService.revokeAllPolicies(context, "REALM", "RESOURCE_OWNER_ID")) .willReturn(Promises.<Void, ResourceException>newSuccessfulPromise(null)); // When resource.actionCollection(context, request, handler); // Then ArgumentCaptor<JsonValue> jsonCaptor = ArgumentCaptor.forClass(JsonValue.class); verify(handler).handleResult(jsonCaptor.capture()); verify(handler, never()).handleError(Matchers.<ResourceException>anyObject()); assertThat(jsonCaptor.getValue().asMap()).isEmpty(); }