From bdf0615927ba92cb295197f89a57c9b78128a6e7 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 13 Apr 2016 20:47:38 +0200
Subject: [PATCH] OO-1949: selenium test for membership confirmation of a group
 with jump in url

---
 .../org/olat/selenium/BusinessGroupTest.java  | 44 +++++++++++++++----
 .../org/olat/selenium/page/LoginPage.java     | 13 ++++--
 .../olat/selenium/page/group/GroupPage.java   | 12 +++++
 3 files changed, 58 insertions(+), 11 deletions(-)

diff --git a/src/test/java/org/olat/selenium/BusinessGroupTest.java b/src/test/java/org/olat/selenium/BusinessGroupTest.java
index a6f450c8783..c6ec93da726 100644
--- a/src/test/java/org/olat/selenium/BusinessGroupTest.java
+++ b/src/test/java/org/olat/selenium/BusinessGroupTest.java
@@ -371,7 +371,13 @@ public class BusinessGroupTest {
 	 * 
 	 * A standard user create a group and add a participant.
 	 * The participant log-in and confirm its membership and
-	 * visit the group.
+	 * visit the group.<br>
+	 * 
+	 * A first user log in, confirm the membership and search
+	 * the group.<br>
+	 * 
+	 * A second user log in but with a rest url to the group
+	 * and jump to the group after confirming the membership.
 	 * 
 	 * @param loginPage
 	 * @throws IOException
@@ -381,9 +387,11 @@ public class BusinessGroupTest {
 	@RunAsClient
 	public void confirmMembershipByGroup(@InitialPage LoginPage loginPage,
 			@Drone @User WebDriver ryomouBrowser,
-			@Drone @Participant WebDriver participantBrowser)
+			@Drone @Participant WebDriver participantBrowser,
+			@Drone @Student WebDriver reiBrowser)
 	throws IOException, URISyntaxException {
 		UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou");
+		UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei");
 		UserVO participant = new UserRestClient(deploymentUrl).createRandomUser();
 		
 		//admin make the confirmation of membership mandatory
@@ -409,12 +417,20 @@ public class BusinessGroupTest {
 			.openGroups(ryomouBrowser)
 			.createGroup(groupName, "Confirmation group");
 		
-		MembersWizardPage members = group
-				.openAdministration()
-				.openAdminMembers()
-				.addMember();
-			
-		members.searchMember(participant, false)
+		String groupUrl = group
+			.openAdministration()
+			.getGroupURL();
+		
+		group.openAdminMembers()
+			.addMember()
+			.searchMember(participant, false)
+			.next()
+			.next()
+			.next()
+			.finish();
+		
+		group.addMember()
+			.searchMember(rei, false)
 			.next()
 			.next()
 			.next()
@@ -432,6 +448,18 @@ public class BusinessGroupTest {
 			.selectGroup(groupName)
 			.assertOnInfosPage(groupName);
 		
+		//second participant log in with rest url
+		reiBrowser.get(groupUrl);
+		new LoginPage(reiBrowser)
+			.loginAs(rei.getLogin(), rei.getPassword())
+			.assertOnMembershipConfirmation()
+			.confirmMembership();
+		NavigationPage reiNavBar = new NavigationPage(reiBrowser);
+		reiNavBar
+			.openGroups(reiBrowser)
+			.selectGroup(groupName)
+			.assertOnInfosPage(groupName);
+		
 		//reset the settings
 		administration.setGroupConfirmationForUser(false);
 	}
diff --git a/src/test/java/org/olat/selenium/page/LoginPage.java b/src/test/java/org/olat/selenium/page/LoginPage.java
index a40836a6de3..a7758940d50 100644
--- a/src/test/java/org/olat/selenium/page/LoginPage.java
+++ b/src/test/java/org/olat/selenium/page/LoginPage.java
@@ -62,11 +62,18 @@ public class LoginPage {
 	private WebDriver browser;
 	
 	public static LoginPage getLoginPage(WebDriver browser, URL deployemntUrl) {
-		LoginPage page = new LoginPage();
-		page.browser = browser;
-		page.browser.navigate().to(deployemntUrl);
+		LoginPage page = new LoginPage(browser);
+		browser.navigate().to(deployemntUrl);
 		return page;
 	}
+	
+	public LoginPage() {
+		//
+	}
+	
+	public LoginPage(WebDriver browser) {
+		this.browser = browser;
+	}
 
 	public LoginPage assertOnLoginPage() {
 		Assert.assertTrue(browser.findElement(loginFormBy).isDisplayed());
diff --git a/src/test/java/org/olat/selenium/page/group/GroupPage.java b/src/test/java/org/olat/selenium/page/group/GroupPage.java
index f162b4c21bf..8a25aed96db 100644
--- a/src/test/java/org/olat/selenium/page/group/GroupPage.java
+++ b/src/test/java/org/olat/selenium/page/group/GroupPage.java
@@ -180,6 +180,18 @@ public class GroupPage {
 		return this;
 	}
 	
+	/**
+	 * Grap the REST url of the group (only, you need
+	 * to be in administration > description changes.
+	 * @return
+	 */
+	public String getGroupURL() {
+		By urlBy = By.cssSelector("p.o_sel_group_url");
+		WebElement urlEl = browser.findElement(urlBy);
+		String url = urlEl.getText();
+		return url;
+	}
+	
 	public void close() {
 		By closeBy = By.cssSelector("a i.o_icon_close_tool");
 		browser.findElement(closeBy).click();
-- 
GitLab