1818import org .junit .BeforeClass ;
1919import org .junit .Test ;
2020import org .junit .experimental .categories .Category ;
21+ import org .labkey .api .security .permissions .UpdatePermission ;
22+ import org .labkey .remoteapi .CommandException ;
23+ import org .labkey .remoteapi .CommandResponse ;
24+ import org .labkey .remoteapi .SimpleGetCommand ;
2125import org .labkey .test .BaseWebDriverTest ;
2226import org .labkey .test .Locator ;
2327import org .labkey .test .TestTimeoutException ;
3741import org .labkey .test .util .PermissionsHelper ;
3842import org .labkey .test .util .PortalHelper ;
3943
44+ import java .io .IOException ;
4045import java .util .Arrays ;
41- import java .util .Collections ;
46+ import java .util .HashSet ;
4247import java .util .List ;
4348import java .util .Map ;
49+ import java .util .Set ;
50+ import java .util .stream .Collectors ;
4451
4552import static org .junit .Assert .assertEquals ;
4653import static org .labkey .test .util .PermissionsHelper .EDITOR_ROLE ;
@@ -88,12 +95,12 @@ private void doSetup()
8895
8996 _issuesHelper .createNewIssuesList (ISSUE_LIST_NAME , _containerHelper );
9097 IssuesAdminPage adminPage = IssuesAdminPage .beginAt (this , getProjectName (), ISSUE_LIST_NAME );
91- adminPage .setAssignedTo (null ); // All Project Users
98+ adminPage .setAssignedTo (null ); // All users with update permission in this project
9299 adminPage .clickSave ();
93100 }
94101
95102 @ Test
96- public void testEmptyAssignedToList () throws Exception
103+ public void testAssignedToList () throws IOException , CommandException
97104 {
98105 goToProjectHome ();
99106 final String group = "AssignedToGroup" ;
@@ -102,19 +109,49 @@ public void testEmptyAssignedToList() throws Exception
102109 _permissionsHelper .createProjectGroup (group , getProjectName ());
103110 goToModule ("Issues" );
104111 OptionSelect assignedTo = new ListPage (getDriver ())
105- .clickNewIssue ()
106- .assignedTo ();
112+ .clickNewIssue ()
113+ .assignedTo ();
114+
115+ // Nobody should be assigned in new issue
116+ assertEquals ("" , assignedTo .get ());
117+
118+ // By default, all users with update permissions should appear in the assigned-to list
119+ SimpleGetCommand command = new SimpleGetCommand ("user" , "getUsersWithPermissions" );
120+ command .setParameters (Map .of ("permissions" , UpdatePermission .class .getName ()));
121+ CommandResponse response = command .execute (createDefaultConnection (), getProjectName ());
122+ List <Map <String , Object >> users = response .getProperty ("users" );
123+ Set <String > expected = users .stream ()
124+ .map (m -> (String )m .get ("displayName" ))
125+ .collect (Collectors .toCollection (HashSet ::new )); // Assure mutable
126+ expected .add ("" ); // Empty option is always there
127+ log (expected .toString ());
128+ assertEquals (expected , new HashSet <>(getTexts (assignedTo .getOptions ())));
129+
130+ // Set an empty assigned-to group and ensure no users in the assigned-to list
131+ IssuesAdminPage adminPage = IssuesAdminPage .beginAt (this , getProjectName (), ISSUE_LIST_NAME );
132+ adminPage .setAssignedTo (group ); // Just the users in this group
133+ adminPage .clickSave ();
134+ assignedTo = new ListPage (getDriver ())
135+ .clickNewIssue ()
136+ .assignedTo ();
107137 assertEquals ("" , assignedTo .get ());
108- assertEquals (Collections .singletonList ("" ), getTexts (assignedTo .getOptions ()));
138+ assertEquals (Arrays .asList ("" ), getTexts (assignedTo .getOptions ())); // Empty list
139+
140+ // Add a user to the group and ensure they now appear as an option
109141 _permissionsHelper .addUserToProjGroup (ADMIN_USER , getProjectName (), group );
110142 refresh ();
111143 assignedTo = new InsertPage (getDriver ()).assignedTo ();
112144 assertEquals ("" , assignedTo .get ());
113145 assertEquals (Arrays .asList ("" , _userHelper .getDisplayNameForEmail (ADMIN_USER )), getTexts (assignedTo .getOptions ()));
146+
147+ // Reset assigned-to list back to all users with update permission in this project
148+ adminPage = IssuesAdminPage .beginAt (this , getProjectName (), ISSUE_LIST_NAME );
149+ adminPage .setAssignedTo (null );
150+ adminPage .clickSave ();
114151 }
115152
116153 @ Test
117- public void testIssueDefinitionRequiresModule () throws Exception
154+ public void testIssueDefinitionRequiresModule ()
118155 {
119156 _containerHelper .createProject (PROJECT2 , null );
120157 _issuesHelper .goToIssueListDefinitions (PROJECT2 )
@@ -169,7 +206,7 @@ public void customIssueNameTest()
169206 }
170207
171208 @ Test
172- public void testProtectedFields () throws Exception
209+ public void testProtectedFields ()
173210 {
174211 goToProjectHome ();
175212 clickAndWait (Locator .linkWithText (ISSUE_LIST_NAME ));
@@ -186,7 +223,7 @@ public void testProtectedFields() throws Exception
186223 }
187224
188225 @ Test
189- public void testRelatedIssuesComments () throws Exception
226+ public void testRelatedIssuesComments ()
190227 {
191228 log ("Adding the test user to test group to appear in assigned to drop down" );
192229 if (!_permissionsHelper .isUserInGroup (TEST_USER , TEST_GROUP ,getProjectName (), PermissionsHelper .PrincipalType .USER ))
0 commit comments