Additional test case added to check the text in the 'Back to application' link
This commit is contained in:
parent
c72ceadfce
commit
1c66ce7dd7
4 changed files with 81 additions and 8 deletions
|
@ -788,7 +788,11 @@ public class AccountService extends AbstractSecuredLocalService {
|
|||
}
|
||||
|
||||
if (referrerUri != null) {
|
||||
return new String[]{referrerClient.getName(), referrerUri};
|
||||
String referrerName = referrerClient.getName();
|
||||
if (Validation.isBlank(referrerName)) {
|
||||
referrerName = referrer;
|
||||
}
|
||||
return new String[]{referrerName, referrerUri};
|
||||
}
|
||||
} else if (referrerUri != null) {
|
||||
referrerClient = realm.getClientByClientId(referrer);
|
||||
|
|
|
@ -20,6 +20,7 @@ package org.keycloak.testsuite.pages;
|
|||
import org.keycloak.models.Constants;
|
||||
import org.keycloak.services.resources.RealmsResource;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.NoSuchElementException;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.openqa.selenium.support.FindBy;
|
||||
|
||||
|
@ -143,6 +144,24 @@ public class AccountUpdateProfilePage extends AbstractAccountPage {
|
|||
public void backToApplication() {
|
||||
backToApplicationLink.click();
|
||||
}
|
||||
|
||||
public String getBackToApplicationLinkText() {
|
||||
try {
|
||||
// Optional screen element, may not be present
|
||||
return backToApplicationLink.getText();
|
||||
} catch (NoSuchElementException ignored) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public String getBackToApplicationLinkHref() {
|
||||
try {
|
||||
// Optional screen element, may not be present
|
||||
return backToApplicationLink.getAttribute("href");
|
||||
} catch (NoSuchElementException ignored) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public String getSuccess(){
|
||||
return successMessage.getText();
|
||||
|
|
|
@ -16,16 +16,26 @@
|
|||
*/
|
||||
package org.keycloak.testsuite.account;
|
||||
|
||||
import static org.hamcrest.Matchers.containsInAnyOrder;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ws.rs.core.UriBuilder;
|
||||
|
||||
import org.jboss.arquillian.drone.api.annotation.Drone;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.Errors;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.models.utils.TimeBasedOTP;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.EventRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
|
@ -53,13 +63,6 @@ import org.keycloak.testsuite.util.UserBuilder;
|
|||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
|
||||
import javax.ws.rs.core.UriBuilder;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.hamcrest.Matchers.*;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
* @author Stan Silvert ssilvert@redhat.com (C) 2016 Red Hat Inc.
|
||||
|
@ -829,4 +832,40 @@ public class AccountTest extends TestRealmKeycloakTest {
|
|||
|
||||
events.clear();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testReferrerLinkContents() {
|
||||
RealmResource testRealm = testRealm();
|
||||
List<ClientRepresentation> foundClients = testRealm.clients().findByClientId("named-test-app");
|
||||
if (foundClients.isEmpty()) {
|
||||
Assert.fail("Unable to find named-test-app");
|
||||
}
|
||||
ClientRepresentation namedClient = foundClients.get(0);
|
||||
|
||||
driver.navigate().to(profilePage.getPath() + "?referrer=" + namedClient.getClientId());
|
||||
loginPage.login("test-user@localhost", "password");
|
||||
Assert.assertTrue(profilePage.isCurrent());
|
||||
// When a client has a name provided, the name should be available to the back link
|
||||
Assert.assertEquals("Back to " + namedClient.getName(), profilePage.getBackToApplicationLinkText());
|
||||
Assert.assertEquals(namedClient.getBaseUrl(), profilePage.getBackToApplicationLinkHref());
|
||||
|
||||
foundClients = testRealm.clients().findByClientId("test-app");
|
||||
if (foundClients.isEmpty()) {
|
||||
Assert.fail("Unable to find test-app");
|
||||
}
|
||||
ClientRepresentation namelessClient = foundClients.get(0);
|
||||
|
||||
driver.navigate().to(profilePage.getPath() + "?referrer=" + namelessClient.getClientId());
|
||||
Assert.assertTrue(profilePage.isCurrent());
|
||||
// When a client has no name provided, the client-id should be available to the back link
|
||||
Assert.assertEquals("Back to " + namelessClient.getClientId(), profilePage.getBackToApplicationLinkText());
|
||||
Assert.assertEquals(namelessClient.getBaseUrl(), profilePage.getBackToApplicationLinkHref());
|
||||
|
||||
driver.navigate().to(profilePage.getPath() + "?referrer=test-invalid");
|
||||
Assert.assertTrue(profilePage.isCurrent());
|
||||
// When a client is invalid, the back link should not exist
|
||||
Assert.assertNull(profilePage.getBackToApplicationLinkText());
|
||||
|
||||
events.clear();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -304,6 +304,17 @@
|
|||
"/test-app-authz/*"
|
||||
],
|
||||
"secret": "secret"
|
||||
},
|
||||
{
|
||||
"clientId": "named-test-app",
|
||||
"name": "My Named Test App",
|
||||
"enabled": true,
|
||||
"baseUrl": "http://localhost:8180/namedapp/base",
|
||||
"redirectUris": [
|
||||
"http://localhost:8180/namedapp/base/*"
|
||||
],
|
||||
"adminUrl": "http://localhost:8180/namedapp/base/admin",
|
||||
"secret": "password"
|
||||
}
|
||||
],
|
||||
"roles" : {
|
||||
|
|
Loading…
Reference in a new issue