From e093fa218da153b0421d553c284c1e31d5e86b55 Mon Sep 17 00:00:00 2001 From: Erik Jan de Wit Date: Tue, 31 Mar 2020 17:13:42 +0200 Subject: [PATCH] Fixed console for test --- .../account/resources/ResourcesService.java | 6 +- .../ui/account2/MyResourcesTest.java | 74 +++--- .../ui/account2/page/MyResourcesPage.java | 41 +++- .../ui/account2/page/PhotozPage.java | 4 - themes/pom.xml | 7 + .../theme/keycloak-preview/account/index.ftl | 8 +- .../my-resources-page/EditTheResource.tsx | 3 +- .../my-resources-page/ResourcesTable.tsx | 4 +- .../my-resources-page/ShareTheResource.tsx | 5 +- .../account/resources/package-lock.json | 214 +++++++++--------- 10 files changed, 216 insertions(+), 150 deletions(-) delete mode 100644 testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/page/PhotozPage.java diff --git a/services/src/main/java/org/keycloak/services/resources/account/resources/ResourcesService.java b/services/src/main/java/org/keycloak/services/resources/account/resources/ResourcesService.java index e55412f55c5..46585fcabe9 100644 --- a/services/src/main/java/org/keycloak/services/resources/account/resources/ResourcesService.java +++ b/services/src/main/java/org/keycloak/services/resources/account/resources/ResourcesService.java @@ -25,7 +25,11 @@ import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Link; import javax.ws.rs.core.Response; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.function.BiFunction; import java.util.stream.Collectors; import java.util.stream.Stream; diff --git a/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/MyResourcesTest.java b/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/MyResourcesTest.java index 63d6941b48f..958d27e96b2 100644 --- a/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/MyResourcesTest.java +++ b/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/MyResourcesTest.java @@ -19,7 +19,6 @@ import org.keycloak.representations.idm.RealmRepresentation; import org.keycloak.representations.idm.UserRepresentation; import org.keycloak.representations.idm.authorization.PermissionTicketRepresentation; import org.keycloak.representations.idm.authorization.ResourceRepresentation; -import org.keycloak.testsuite.ui.account2.page.AbstractLoggedInPage; import org.keycloak.testsuite.ui.account2.page.MyResourcesPage; import org.keycloak.testsuite.util.ClientBuilder; import org.keycloak.testsuite.util.UserBuilder; @@ -34,15 +33,15 @@ import java.util.Map; import static java.util.Collections.singletonList; import static org.junit.Assert.assertEquals; +import static org.keycloak.representations.idm.CredentialRepresentation.PASSWORD; import static org.keycloak.testsuite.auth.page.AuthRealm.TEST; -public class MyResourcesTest extends BaseAccountPageTest { - private static final String[] userNames = new String[]{"alice", "jdoe", "bob"}; +public class MyResourcesTest extends AbstractAccountTest { + private static final String[] userNames = new String[]{"alice", "jdoe"}; @Page private MyResourcesPage myResourcesPage; - private AuthzClient authzClient; private RealmRepresentation testRealm; private CloseableHttpClient httpClient; @@ -53,7 +52,7 @@ public class MyResourcesTest extends BaseAccountPageTest { testRealm.setUserManagedAccessAllowed(true); testRealm.setUsers(Arrays.asList(createUser("alice"), - createUser("jdoe"), createUser("bob"))); + createUser("jdoe"))); ClientRepresentation client = ClientBuilder.create() .clientId("my-resource-server") @@ -71,37 +70,35 @@ public class MyResourcesTest extends BaseAccountPageTest { return UserBuilder.create() .username(userName) .enabled(true) - .password("password") + .password(PASSWORD) .role("account", AccountRoles.MANAGE_ACCOUNT) .build(); } - @Before - public void before() { - httpClient = HttpClientBuilder.create().build(); - } - @After public void after() { - try { - httpClient.close(); - } catch (IOException e) { - throw new RuntimeException(e); + if (httpClient != null) { + try { + httpClient.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } } } @Before public void setup() throws Exception { + if (this.testRealm == null) return; ClientResource resourceServer = getResourceServer(); - authzClient = createAuthzClient(resourceServer.toRepresentation()); + AuthzClient authzClient = createAuthzClient(resourceServer.toRepresentation()); AuthorizationResource authorization = resourceServer.authorization(); - for (int i = 0; i < 30; i++) { + for (int i = 0; i < 15; i++) { ResourceRepresentation resource = new ResourceRepresentation(); resource.setOwnerManagedAccess(true); - final byte[] content = new JWSInput(authzClient.obtainAccessToken("jdoe", "password").getToken()).getContent(); + final byte[] content = new JWSInput(authzClient.obtainAccessToken("jdoe", PASSWORD).getToken()).getContent(); final AccessToken accessToken = JsonSerialization.readValue(content, AccessToken.class); resource.setOwner(accessToken.getSubject()); @@ -124,22 +121,52 @@ public class MyResourcesTest extends BaseAccountPageTest { ticket.setResource(resource.getId()); ticket.setScopeName(scope); - authzClient.protection("jdoe", "password").permission().create(ticket); + authzClient.protection("jdoe", PASSWORD).permission().create(ticket); } } } @Test - public void shouldShowMyResourcesInTable() { + public void shouldShowMyResourcesAndUpdatePermissions() { + myResourcesPage.navigateTo(); + loginPage.form().login(createUser("jdoe")); myResourcesPage.assertCurrent(); - assertEquals(10, myResourcesPage.getResourcesListCount()); + assertEquals(6, myResourcesPage.getResourcesListCount()); + + final int row = 2; + myResourcesPage.clickExpandButton(row); + + assertEquals("Resource is shared with alice.", myResourcesPage.getSharedWith(row)); + + myResourcesPage.clickEditButton(row); + myResourcesPage.removeAllPermissions(); + + assertEquals("This resource is not shared.", myResourcesPage.getSharedWith(row)); + } + + @Test + public void shouldShowMyResourcesAndShare() { + myResourcesPage.navigateTo(); + loginPage.form().login(createUser("jdoe")); + myResourcesPage.assertCurrent(); + + final int row = 3; + myResourcesPage.clickExpandButton(row); + + assertEquals("Resource is shared with jdoe.", myResourcesPage.getSharedWith(row)); + + myResourcesPage.clickShareButton(row); + myResourcesPage.createShare("alice"); + + assertEquals("Resource is shared with alice and 1 other users.", myResourcesPage.getSharedWith(row)); } private AuthzClient createAuthzClient(ClientRepresentation client) { Map credentials = new HashMap<>(); credentials.put("secret", "secret"); + httpClient = HttpClientBuilder.create().build(); return AuthzClient .create(new Configuration(suiteContext.getAuthServerInfo().getContextRoot().toString() + "/auth", @@ -151,9 +178,4 @@ public class MyResourcesTest extends BaseAccountPageTest { ClientsResource clients = adminClient.realm(TEST).clients(); return clients.get(clients.findByClientId("my-resource-server").get(0).getId()); } - - @Override - protected AbstractLoggedInPage getAccountPage() { - return myResourcesPage; - } } diff --git a/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/page/MyResourcesPage.java b/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/page/MyResourcesPage.java index 33c58feb624..cd780f9ac8c 100644 --- a/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/page/MyResourcesPage.java +++ b/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/page/MyResourcesPage.java @@ -1,5 +1,6 @@ package org.keycloak.testsuite.ui.account2.page; +import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -7,7 +8,7 @@ import java.util.List; public class MyResourcesPage extends AbstractLoggedInPage { - @FindBy(id = "resourcesList") + @FindBy(xpath = "//ul[@id='resourcesList']/li") private List resourcesList; @Override @@ -18,4 +19,42 @@ public class MyResourcesPage extends AbstractLoggedInPage { public int getResourcesListCount() { return resourcesList.size(); } + + public void clickExpandButton(int row) { + driver.findElement(By.id("resourceToggle-" + row)).click(); + } + + public String getSharedWith(int row) { + final WebElement element = driver.findElement(By.id("shared-with-user-message-" + row)); + return element.getText(); + } + + public void clickShareButton(int row) { + //first row is the header + final WebElement webElement = resourcesList.get(row + 1); + + //first button is the toggle second is share + webElement.findElements(By.tagName("button")).get(1).click(); + } + + public void clickEditButton(int row) { + //first row is the header + final WebElement webElement = resourcesList.get(row + 1); + + //first button is the toggle second is share 3rd is the edit button + webElement.findElements(By.tagName("button")).get(2).click(); + } + + public void createShare(String userName) { + driver.findElement(By.id("username")).sendKeys(userName); + driver.findElement(By.id("add")).click(); + driver.findElement(By.id("remove_pf-random-id-0")).click(); + driver.findElement(By.id("done")).click(); + } + + public void removeAllPermissions() { + driver.findElement(By.id("remove_pf-random-id-0")).click(); + driver.findElement(By.id("remove_pf-random-id-1")).click(); + driver.findElement(By.id("done")).click(); + } } diff --git a/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/page/PhotozPage.java b/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/page/PhotozPage.java deleted file mode 100644 index 8bde2f83bef..00000000000 --- a/testsuite/integration-arquillian/tests/other/base-ui/src/test/java/org/keycloak/testsuite/ui/account2/page/PhotozPage.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.keycloak.testsuite.ui.account2.page; - -public class PhotozPage { -} diff --git a/themes/pom.xml b/themes/pom.xml index 908c3291f51..85d34d036b9 100755 --- a/themes/pom.xml +++ b/themes/pom.xml @@ -143,6 +143,13 @@ **/node_modules/systemjs/dist/system.src.js **/node_modules/tippy.js/dist/tippy.min.js **/node_modules/upper-case/upper-case.js + **/node_modules/parse-link-header/index.js + **/node_modules/querystring/*.js + **/node_modules/url/url.js + **/node_modules/url/util.js + **/node_modules/xtend/*.js + **/node_modules/punycode/punycode.js + **/node_modules/object-keys/*.js **/node_modules/@patternfly/patternfly/assets/fonts/overpass-webfont/overpass-bold.ttf **/node_modules/@patternfly/patternfly/assets/fonts/overpass-webfont/overpass-bold.woff2 **/node_modules/@patternfly/patternfly/assets/fonts/overpass-webfont/overpass-bold.woff diff --git a/themes/src/main/resources/theme/keycloak-preview/account/index.ftl b/themes/src/main/resources/theme/keycloak-preview/account/index.ftl index db90b2480c4..dba85177d73 100644 --- a/themes/src/main/resources/theme/keycloak-preview/account/index.ftl +++ b/themes/src/main/resources/theme/keycloak-preview/account/index.ftl @@ -229,7 +229,7 @@ -