Skip to content

Commit 0fba31f

Browse files
committed
Permission validation for related issues
1 parent 4362609 commit 0fba31f

1 file changed

Lines changed: 40 additions & 2 deletions

File tree

src/org/labkey/test/tests/issues/IssuesTest.java

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,14 @@ public class IssuesTest extends BaseWebDriverTest
8383
private static final String USER1 = "[email protected]";
8484
private static final String USER2 = "[email protected]";
8585
private static final String USER3 = "[email protected]";
86+
private static final String CLIENT_USER1 = "[email protected]";
8687
private static final String user = "[email protected]";
8788
private static final Map<String, String> ISSUE_0 = new HashMap<>(Maps.of("title", ISSUE_TITLE_0, "priority", "2", "comment", "a bright flash of light"));
8889
private static final Map<String, String> ISSUE_1 = new HashMap<>(Maps.of("title", ISSUE_TITLE_1, "priority", "1", "comment", "alien autopsy"));
8990
private static final String ISSUE_SUMMARY_WEBPART_NAME = "Issues Summary";
9091
private static final String ISSUE_LIST_REGION_NAME = "issues-issues";
9192
private static final String TEST_GROUP = "testers";
93+
private static final String CLIENT_GROUP = "clients";
9294
private static final String TEST_EMAIL_TEMPLATE =
9395
"You can review this issue here: ^detailsURL^\n" +
9496
"Modified by: ^user^\n" +
@@ -102,6 +104,7 @@ public class IssuesTest extends BaseWebDriverTest
102104
private static String NAME;
103105
protected IssuesHelper _issuesHelper;
104106
private final ApiPermissionsHelper _permissionsHelper = new ApiPermissionsHelper(this);
107+
private static String CLIENT_PORTAL = "Client Issues";
105108

106109
public IssuesTest()
107110
{
@@ -155,8 +158,9 @@ protected String getProjectName()
155158
@Override
156159
protected void doCleanup(boolean afterTest) throws TestTimeoutException
157160
{
158-
_userHelper.deleteUsers(false, USER1, USER2);
161+
_userHelper.deleteUsers(false, USER1, USER2, USER3, CLIENT_USER1);
159162
_containerHelper.deleteProject(getProjectName(), afterTest);
163+
_containerHelper.deleteProject(CLIENT_PORTAL, afterTest);
160164
}
161165

162166
public void doInit()
@@ -188,6 +192,15 @@ public void doInit()
188192
waitAndClickAndWait(Locator.linkContainingText(ISSUE_SUMMARY_WEBPART_NAME));
189193
_issuesHelper.addIssue(ISSUE_0);
190194
_issuesHelper.addIssue(ISSUE_1);
195+
196+
// Create a second project with different permissions
197+
_containerHelper.createProject(CLIENT_PORTAL);
198+
goToProjectHome(CLIENT_PORTAL);
199+
_userHelper.createUser(CLIENT_USER1);
200+
_permissionsHelper.createPermissionsGroup(CLIENT_GROUP);
201+
_permissionsHelper.setPermissions(CLIENT_GROUP, "Editor");
202+
_permissionsHelper.addUserToProjGroup(CLIENT_USER1, CLIENT_PORTAL, CLIENT_GROUP);
203+
_issuesHelper.createNewIssuesList("tickets", _containerHelper);
191204
}
192205

193206
@Before
@@ -833,7 +846,32 @@ public void relatedIssueTest()
833846
.clickSubMenu(false, "Hide related comments");
834847
assertElementNotVisible(related);
835848

836-
// NOTE: still need to test for case where user doesn't have permission to related issue...
849+
// related issue permission tests
850+
Locator commentLocator = Locator.name("related");
851+
goToProjectHome(CLIENT_PORTAL);
852+
waitAndClickAndWait(Locator.linkContainingText(ISSUE_SUMMARY_WEBPART_NAME));
853+
String clientIssueId = _issuesHelper.addIssue(Maps.of("assignedTo", NAME, "title", "Client ticket", "priority", "3", "related", issueIdA)).getIssueId();
854+
855+
// impersonate a user without permissions to the related issues
856+
impersonate(CLIENT_USER1);
857+
clickAndWait(Locator.linkWithText("Issues List"));
858+
clickAndWait(Locator.linkWithText(clientIssueId));
859+
updateIssue();
860+
setFormElement(Locator.name("comment"), "This should work");
861+
clickButton("Save");
862+
863+
// try to add related issue they don't have permission to see
864+
updateIssue();
865+
setFormElement(relatedLocator, String.format("%s,%s", issueIdA, issueIdB));
866+
clickButton("Save");
867+
assertTextPresent("User does not have Read Permission for related issue");
868+
869+
// Issue 53820 try to remove a related issue they don't have permission to see
870+
setFormElement(relatedLocator, "");
871+
clickButton("Save");
872+
assertTextPresent(String.format("User does not have Read Permission for related issue '%s'", issueIdA));
873+
clickButton("Cancel");
874+
stopImpersonating();
837875
}
838876

839877
@Test

0 commit comments

Comments
 (0)