public boolean isDefaultGroup(String groupId) { for (ScimGroup g : getDefaultUserGroups(IdentityZoneHolder.get())) { if (g.getId().equals(groupId)) { return true; } } return false; }
@Test public void testApprovingAnApp() throws Exception { ResponseEntity<SearchResults<ScimGroup>> getGroups = restTemplate.exchange( baseUrl + "/Groups?filter=displayName eq '{displayName}'", HttpMethod.GET, null, new ParameterizedTypeReference<SearchResults<ScimGroup>>() {}, "cloud_controller.read"); ScimGroup group = getGroups.getBody().getResources().stream().findFirst().get(); group.setDescription("Read about your clouds."); HttpHeaders headers = new HttpHeaders(); headers.add("If-Match", Integer.toString(group.getVersion())); HttpEntity request = new HttpEntity(group, headers); restTemplate.exchange( baseUrl + "/Groups/{group-id}", HttpMethod.PUT, request, Object.class, group.getId()); ScimUser user = createUnapprovedUser(); // Visit app webDriver.get(appUrl); // Sign in to login server webDriver.findElement(By.name("username")).sendKeys(user.getUserName()); webDriver.findElement(By.name("password")).sendKeys(user.getPassword()); webDriver.findElement(By.xpath("//input[@value='Sign in']")).click(); // Authorize the app for some scopes Assert.assertEquals( "Application Authorization", webDriver.findElement(By.cssSelector("h1")).getText()); webDriver .findElement(By.xpath("//label[text()='Change your password']/preceding-sibling::input")) .click(); webDriver .findElement( By.xpath( "//label[text()='Read user IDs and retrieve users by ID']/preceding-sibling::input")) .click(); webDriver.findElement( By.xpath("//label[text()='Read about your clouds.']/preceding-sibling::input")); webDriver.findElement(By.xpath("//button[text()='Authorize']")).click(); Assert.assertEquals("Sample Home Page", webDriver.findElement(By.cssSelector("h1")).getText()); // View profile on the login server webDriver.get(baseUrl + "/profile"); Assert.assertFalse( webDriver.findElement(By.xpath("//input[@value='app-password.write']")).isSelected()); Assert.assertFalse( webDriver.findElement(By.xpath("//input[@value='app-scim.userids']")).isSelected()); Assert.assertTrue( webDriver .findElement(By.xpath("//input[@value='app-cloud_controller.read']")) .isSelected()); Assert.assertTrue( webDriver .findElement(By.xpath("//input[@value='app-cloud_controller.write']")) .isSelected()); // Add approvals webDriver.findElement(By.xpath("//input[@value='app-password.write']")).click(); webDriver.findElement(By.xpath("//input[@value='app-scim.userids']")).click(); webDriver.findElement(By.xpath("//button[text()='Update']")).click(); Assert.assertTrue( webDriver.findElement(By.xpath("//input[@value='app-password.write']")).isSelected()); Assert.assertTrue( webDriver.findElement(By.xpath("//input[@value='app-scim.userids']")).isSelected()); Assert.assertTrue( webDriver .findElement(By.xpath("//input[@value='app-cloud_controller.read']")) .isSelected()); Assert.assertTrue( webDriver .findElement(By.xpath("//input[@value='app-cloud_controller.write']")) .isSelected()); // Revoke app webDriver.findElement(By.linkText("Revoke Access")).click(); Assert.assertEquals( "Are you sure you want to revoke access to The Ultimate Oauth App?", webDriver.findElement(By.cssSelector(".revocation-modal p")).getText()); // click cancel webDriver.findElement(By.cssSelector("#app-form .revocation-cancel")).click(); webDriver.findElement(By.linkText("Revoke Access")).click(); // click confirm webDriver.findElement(By.cssSelector("#app-form .revocation-confirm")).click(); Assert.assertThat( webDriver.findElements(By.xpath("//input[@value='app-password.write']")), Matchers.empty()); }