PageRenderTime 54ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 1ms

/jira-project/jira-components/jira-tests-parent/jira-tests-unit/src/test/java/com/atlassian/jira/web/action/admin/user/AddUserTest.java

https://bitbucket.org/ahmed_bilal_360factors/jira7-core
Java | 188 lines | 149 code | 39 blank | 0 comment | 0 complexity | e478651fe3c344c15bbdee0e16591360 MD5 | raw file
Possible License(s): Apache-2.0
  1. package com.atlassian.jira.web.action.admin.user;
  2. import com.atlassian.crowd.embedded.api.Directory;
  3. import com.atlassian.crowd.exception.runtime.GroupNotFoundException;
  4. import com.atlassian.jira.application.ApplicationKeys;
  5. import com.atlassian.jira.application.ApplicationRole;
  6. import com.atlassian.jira.application.ApplicationRoleManager;
  7. import com.atlassian.jira.bc.user.CreateUserApplicationHelper;
  8. import com.atlassian.jira.bc.user.UserService;
  9. import com.atlassian.jira.crowd.embedded.ofbiz.MockDirectory;
  10. import com.atlassian.jira.event.MockEventPublisher;
  11. import com.atlassian.jira.junit.rules.AvailableInContainer;
  12. import com.atlassian.jira.junit.rules.JiraWebActionSupportDependencies;
  13. import com.atlassian.jira.junit.rules.MockHttp;
  14. import com.atlassian.jira.junit.rules.MockitoContainer;
  15. import com.atlassian.jira.junit.rules.MockitoMocksInContainer;
  16. import com.atlassian.jira.mock.MockApplicationProperties;
  17. import com.atlassian.jira.security.JiraAuthenticationContext;
  18. import com.atlassian.jira.user.MockApplicationUser;
  19. import com.atlassian.jira.user.util.UserManager;
  20. import com.atlassian.plugin.web.WebInterfaceManager;
  21. import com.atlassian.plugin.web.descriptors.WebPanelModuleDescriptor;
  22. import com.google.common.collect.ImmutableList;
  23. import com.google.common.collect.ImmutableSet;
  24. import org.junit.Before;
  25. import org.junit.Rule;
  26. import org.junit.Test;
  27. import org.junit.rules.TestRule;
  28. import org.junit.runner.RunWith;
  29. import org.mockito.Mock;
  30. import org.mockito.runners.MockitoJUnitRunner;
  31. import java.util.List;
  32. import java.util.Optional;
  33. import static com.atlassian.jira.mock.security.MockSimpleAuthenticationContext.createNoopContext;
  34. import static com.atlassian.jira.web.action.admin.user.AddUser.APPLICATION_ACCESS_EXTENSION_WEB_PANEL_LOCATION;
  35. import static java.util.Collections.emptyMap;
  36. import static org.hamcrest.Matchers.contains;
  37. import static org.hamcrest.Matchers.containsString;
  38. import static org.hamcrest.Matchers.is;
  39. import static org.hamcrest.Matchers.not;
  40. import static org.junit.Assert.assertEquals;
  41. import static org.junit.Assert.assertThat;
  42. import static org.mockito.Matchers.any;
  43. import static org.mockito.Mockito.mock;
  44. import static org.mockito.Mockito.when;
  45. @RunWith(MockitoJUnitRunner.class)
  46. public class AddUserTest {
  47. private static final long DIRECTORY_ID = 1L;
  48. private static final String DIRECTORY_NAME = "Ldap";
  49. private static final String USERNAME = "user1";
  50. private static final String X_ATLASSIAN_DIALOG_MSG_HTML = "X-Atlassian-Dialog-Msg-Html";
  51. private static final String X_ATLASSIAN_DIALOG_CONTROL = "X-Atlassian-Dialog-Control";
  52. @Rule
  53. public MockHttp.DefaultMocks httpContext = MockHttp.withDefaultMocks();
  54. @Rule
  55. public final MockitoContainer mockContainer = MockitoMocksInContainer.rule(this);
  56. @Rule
  57. public TestRule webActionSupport = JiraWebActionSupportDependencies.build(mockContainer);
  58. @AvailableInContainer
  59. private JiraAuthenticationContext authenticationContext = createNoopContext(new MockApplicationUser("User"));
  60. @AvailableInContainer
  61. private MockApplicationProperties applicationProperties = new MockApplicationProperties();
  62. @Mock
  63. UserService userService;
  64. @Mock
  65. UserManager userManager;
  66. @Mock
  67. WebInterfaceManager webInterfaceManager;
  68. @Mock
  69. CreateUserApplicationHelper createUserApplicationHelper;
  70. @Mock
  71. ApplicationRoleManager roleManager;
  72. private AddUser action;
  73. @Before
  74. public void setup() {
  75. when(userManager.getDirectory(DIRECTORY_ID)).thenReturn(new MockDirectory(DIRECTORY_ID, DIRECTORY_NAME));
  76. when(userManager.getDefaultCreateDirectory()).thenReturn(Optional.of(new MockDirectory(DIRECTORY_ID, DIRECTORY_NAME)));
  77. applicationProperties.setEncoding("UTF-8");
  78. action = new AddUser(userService, userManager, webInterfaceManager, new MockEventPublisher(), createUserApplicationHelper, roleManager);
  79. action.setDirectoryId(DIRECTORY_ID);
  80. action.setSendEmail(false);
  81. action.setUsername(USERNAME);
  82. }
  83. @Test
  84. public void showsWarningMessageAndRedirectsToViewUserWhenUserCouldNotBeAddedToTheGroup() throws Exception {
  85. action.setInline(true);
  86. when(userService.createUser(any(UserService.CreateUserValidationResult.class)))
  87. .thenThrow(new GroupNotFoundException("test-group"));
  88. action.doExecute();
  89. assertThat(httpContext.mockResponse().getHeader(X_ATLASSIAN_DIALOG_MSG_HTML),
  90. is("admin.warn.user.create.no.group{[user1, Group <test-group> does not exist, Ldap]}"));
  91. assertThat(httpContext.mockResponse().getHeader(X_ATLASSIAN_DIALOG_CONTROL),
  92. is("redirect:ViewUser.jspa?name=" + USERNAME));
  93. }
  94. @Test
  95. public void createUsersListShouldBeEscaped() {
  96. action.setCreatedUser(new String[]{"<script>alert('1');%&!</script>"});
  97. final List<String> createdUsersList = action.createdUsers();
  98. assertThat(createdUsersList, contains("createdUser=%3Cscript%3Ealert%28%271%27%29%3B%25%26%21%3C%2Fscript%3E"));
  99. }
  100. @Test
  101. public void shouldDoDefaultUpdateSelectedApplicationWhenTheyAreNull() {
  102. when(roleManager.getDefaultApplicationKeys()).thenReturn(ImmutableSet.of(ApplicationKeys.CORE));
  103. action.setSelectedApplications(null);
  104. action.doDefault();
  105. assertThat(action.getSelectedApplicationKeys(), contains(ApplicationKeys.CORE));
  106. }
  107. @Test
  108. public void shouldDoDefaultNotUpdateSelectedApplicationWhenTheyAreNotNull() {
  109. when(roleManager.getDefaultApplicationKeys()).thenReturn(ImmutableSet.of(ApplicationKeys.CORE));
  110. action.setSelectedApplications(new String[]{ApplicationKeys.SERVICE_DESK.toString()});
  111. action.doDefault();
  112. assertThat(action.getSelectedApplicationKeys(), contains(ApplicationKeys.SERVICE_DESK));
  113. }
  114. @Test
  115. public void shouldIncludeDirectoryIdToRedirectUrlWhenDirectoryWasSpecified() {
  116. action.setCreateAnother(true);
  117. action.setDirectoryId(4567L);
  118. final ImmutableList<Directory> directories = ImmutableList.of(mock(Directory.class), mock(Directory.class));
  119. when(userManager.getWritableDirectories()).thenReturn(directories);
  120. action.doExecute();
  121. assertThat(httpContext.mockResponse().getRedirect(), containsString("directoryId=4567"));
  122. }
  123. @Test
  124. public void shouldNotIncludeDirectoryWhenThereIsOnlyOneDirectory() {
  125. action.setCreateAnother(true);
  126. action.setDirectoryId(4567L);
  127. final ImmutableList<Directory> directories = ImmutableList.of(mock(Directory.class));
  128. when(userManager.getWritableDirectories()).thenReturn(directories);
  129. action.doExecute();
  130. assertThat(httpContext.mockResponse().getRedirect(), not(containsString("directoryId=")));
  131. }
  132. @Test
  133. public void shouldTakeIntoAccountExternalApplicationsWhenDeterminingNumberOfApplications() {
  134. when(roleManager.getRoles()).thenReturn(ImmutableSet.of(mock(ApplicationRole.class)));
  135. when(webInterfaceManager.getDisplayableWebPanelDescriptors(APPLICATION_ACCESS_EXTENSION_WEB_PANEL_LOCATION, emptyMap()))
  136. .thenReturn(ImmutableList.of(mock(WebPanelModuleDescriptor.class)));
  137. assertThat(action.hasOnlyOneApplication(), is(false));
  138. }
  139. @Test
  140. public void shouldReturnCancelUrlWithCreatedUsersFlagWhenAtLeastOneUserWasCreated() {
  141. action.setCreatedUser(new String[]{"kevin"});
  142. assertEquals("UserBrowser.jspa?createdUser=kevin#userCreatedFlag", action.getCancelUrl());
  143. }
  144. @Test
  145. public void shouldNotReturnUserCreatedFlagInCancelUrlWhenNoUserCreated() {
  146. action.setCreatedUser(new String[]{});
  147. assertEquals("UserBrowser.jspa?", action.getCancelUrl());
  148. }
  149. }