@@ -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