use of org.keycloak.services.resources.account.resources.AbstractResourceService.Permission in project keycloak by keycloak.
the class ResourcesRestServiceTest method testGetPermissions.
@Test
public void testGetPermissions() throws Exception {
Resource resource = getMyResources().get(0);
List<Permission> shares = doGet("/" + resource.getId() + "/permissions", new TypeReference<List<Permission>>() {
});
assertEquals(1, shares.size());
Permission firstShare = shares.get(0);
List<Permission> permissions = new ArrayList<>();
assertTrue(userNames.contains(firstShare.getUsername()));
assertEquals(2, firstShare.getScopes().size());
List<String> users = new ArrayList<>(userNames);
users.remove(firstShare.getUsername());
for (String userName : users) {
Permission permission = new Permission();
permission.setUsername(userName);
permission.addScope("Scope D");
permissions.add(permission);
}
SimpleHttp.doPut(getAccountUrl("resources/" + resource.getId() + "/permissions"), httpClient).auth(tokenUtil.getToken()).json(permissions).asResponse();
shares = doGet("/" + resource.getId() + "/permissions", new TypeReference<List<Permission>>() {
});
assertEquals(3, shares.size());
for (Permission user : shares) {
assertTrue(userNames.contains(user.getUsername()));
if (firstShare.getUsername().equals(user.getUsername())) {
assertEquals(2, user.getScopes().size());
} else {
assertEquals(1, user.getScopes().size());
}
}
}
use of org.keycloak.services.resources.account.resources.AbstractResourceService.Permission in project keycloak by keycloak.
the class ResourcesRestServiceTest method testGetPermissionRequests.
@Test
public void testGetPermissionRequests() {
Resource resource = getMyResources().get(0);
List<Permission> requests = doGet("/" + resource.getId() + "/permissions/requests", new TypeReference<List<Permission>>() {
});
assertTrue(requests.isEmpty());
for (String userName : userNames) {
List<String> scopes = new ArrayList<>();
if ("bob".equals(userName)) {
scopes.add("Scope D");
} else if ("alice".equals(userName)) {
scopes.add("Scope C");
} else if ("jdoe".equals(userName)) {
scopes.add("Scope C");
scopes.add("Scope D");
}
for (String scope : scopes) {
PermissionTicketRepresentation ticket = new PermissionTicketRepresentation();
ticket.setGranted(false);
ticket.setOwner("test-user@localhost");
ticket.setRequesterName(userName);
ticket.setResource(resource.getId());
ticket.setScopeName(scope);
authzClient.protection("test-user@localhost", "password").permission().create(ticket);
}
}
requests = doGet("/" + resource.getId() + "/permissions/requests", new TypeReference<List<Permission>>() {
});
assertEquals(3, requests.size());
Iterator<Permission> iterator = requests.iterator();
while (iterator.hasNext()) {
Permission permission = iterator.next();
String username = permission.getUsername();
List<String> scopes = permission.getScopes();
if ("bob".equals(username)) {
assertEquals(1, scopes.size());
assertTrue(scopes.contains("Scope D"));
iterator.remove();
} else if ("alice".equals(username)) {
assertEquals(1, scopes.size());
assertTrue(scopes.contains("Scope C"));
iterator.remove();
} else if ("jdoe".equals(username)) {
assertEquals(2, scopes.size());
assertTrue(scopes.contains("Scope C"));
assertTrue(scopes.contains("Scope D"));
iterator.remove();
}
}
assertTrue(requests.isEmpty());
}
use of org.keycloak.services.resources.account.resources.AbstractResourceService.Permission in project keycloak by keycloak.
the class ResourcesRestServiceTest method testShareResource.
@Test
public void testShareResource() throws Exception {
List<String> users = new LinkedList<>(Arrays.asList("jdoe", "alice"));
List<Permission> permissions = new ArrayList<>();
AbstractResourceService.ResourcePermission sharedResource = null;
for (String user : users) {
sharedResource = getSharedWithMe(user).get(0);
assertNotNull(sharedResource);
assertEquals(2, sharedResource.getScopes().size());
}
permissions.add(new Permission(users.get(0), "Scope C", "Scope D"));
permissions.add(new Permission(users.get(users.size() - 1), "Scope A", "Scope B", "Scope C", "Scope D"));
String resourceId = sharedResource.getId();
SimpleHttp.Response response = SimpleHttp.doPut(getAccountUrl("resources/" + resourceId + "/permissions"), httpClient).auth(tokenUtil.getToken()).json(permissions).asResponse();
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), response.getStatus());
for (String user : users) {
sharedResource = getSharedWithMe(user).stream().filter(resource1 -> resource1.getId().equals(resourceId)).findAny().orElse(null);
assertNotNull(sharedResource);
if (user.equals(users.get(users.size() - 1))) {
assertEquals(4, sharedResource.getScopes().size());
} else {
assertEquals(2, sharedResource.getScopes().size());
}
}
}
use of org.keycloak.services.resources.account.resources.AbstractResourceService.Permission in project keycloak by keycloak.
the class ResourcesRestServiceTest method assertSharedWithOthersResponse.
private void assertSharedWithOthersResponse(List<AbstractResourceService.ResourcePermission> resources) {
for (AbstractResourceService.ResourcePermission resource : resources) {
String uri = resource.getUri();
int id = Integer.parseInt(uri.substring(uri.lastIndexOf('/') + 1));
assertNotNull(resource.getId());
assertEquals("Resource " + id, resource.getName());
assertEquals("Display Name " + id, resource.getDisplayName());
assertEquals("Icon Uri " + id, resource.getIconUri());
assertEquals("my-resource-server", resource.getClient().getClientId());
assertEquals("My Resource Server", resource.getClient().getName());
assertEquals("http://resourceserver.com", resource.getClient().getBaseUrl());
assertEquals(1, resource.getPermissions().size());
Permission user = resource.getPermissions().iterator().next();
assertTrue(userNames.contains(user.getUsername()));
assertEquals(2, user.getScopes().size());
}
}
use of org.keycloak.services.resources.account.resources.AbstractResourceService.Permission in project keycloak by keycloak.
the class ResourcesRestServiceTest method testRevokePermission.
@Test
public void testRevokePermission() throws Exception {
List<String> users = Arrays.asList("jdoe", "alice");
List<Permission> permissions = new ArrayList<>();
AbstractResourceService.ResourcePermission sharedResource = null;
for (String user : users) {
sharedResource = getSharedWithMe(user).get(0);
assertNotNull(sharedResource);
assertEquals(2, sharedResource.getScopes().size());
}
permissions.add(new Permission(users.get(0), "Scope C"));
permissions.add(new Permission(users.get(users.size() - 1), "Scope B", "Scope D"));
String resourceId = sharedResource.getId();
SimpleHttp.Response response = SimpleHttp.doPut(getAccountUrl("resources/" + resourceId + "/permissions"), httpClient).auth(tokenUtil.getToken()).json(permissions).asResponse();
assertEquals(Response.Status.NO_CONTENT.getStatusCode(), response.getStatus());
for (String user : users) {
sharedResource = getSharedWithMe(user).stream().filter(resource1 -> resource1.getId().equals(resourceId)).findAny().orElse(null);
assertNotNull(sharedResource);
if (user.equals(users.get(users.size() - 1))) {
assertEquals(2, sharedResource.getScopes().size());
} else {
assertEquals(1, sharedResource.getScopes().size());
}
}
}
Aggregations