/******************************************************************************* * Copyright [2015] [Onboard team of SERC, Peking University] * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.onboard.service.account.impl.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import org.junit.After; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mockito; import com.google.common.collect.Sets; import com.google.common.collect.Sets.SetView; import com.onboard.domain.mapper.model.ProjectExample; import com.onboard.domain.mapper.model.UserCompanyExample; import com.onboard.domain.mapper.model.UserExample; import com.onboard.domain.mapper.model.UserProjectExample; import com.onboard.domain.mapper.model.common.BaseExample; import com.onboard.domain.model.Project; import com.onboard.domain.model.User; import com.onboard.domain.model.UserCompany; import com.onboard.service.account.impl.UserServiceImpl; import com.onboard.service.account.redis.TokenType; import com.onboard.test.exampleutils.CriterionVerifier; import com.onboard.test.exampleutils.ExampleMatcher; import com.onboard.test.exampleutils.ObjectMatcher; import com.onboard.test.moduleutils.ModuleHelper; public class UserServiceImplTest extends AbstractUserServiceTest { @InjectMocks private UserServiceImpl testedUserServiceImpl; @After public void afterUserTest() { Mockito.reset(mockUserMapper); } private void runAsserts(User user) { runAsserts(user, false); } private void runAsserts(User user, Boolean withPassword) { assertEquals(ModuleHelper.userId, (int) user.getId()); if (withPassword) { assertEquals(ModuleHelper.password, user.getPassword()); assertEquals(ModuleHelper.newPassword, user.getNewPassword()); } else { assertNull(user.getPassword()); assertNull(user.getNewPassword()); } } @Test public void testGetUserWithPasswordByEmail() { User user = testedUserServiceImpl.getUserWithPasswordByEmail(ModuleHelper.email); verify(mockUserMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "email", ModuleHelper.email); } })); Mockito.verifyNoMoreInteractions(mockUserMapper); runAsserts(user, true); } /* mock底层的when无法条件返回,暂时无法跑这个测试 @Test public void testGetUserWithPasswordByEmail2() { User user = testedUserServiceImpl.getUserWithPasswordByEmail(ModuleHelper.wrongEmail); verify(mockUserMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "email", ModuleHelper.wrongEmail); } })); Mockito.verifyNoMoreInteractions(mockUserMapper); assertNull("Expect return user to be null but not", user); }*/ @Test public void testGetUserByEmailOrUsernameWithPassword() { User user = testedUserServiceImpl.getUserByEmailOrUsernameWithPassword(ModuleHelper.email); verify(mockUserMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "email", ModuleHelper.email); } })); Mockito.verifyNoMoreInteractions(mockUserMapper); runAsserts(user, true); } // CriterionVerifier只检查第一个条件,暂时无法跑这个测试 /* @Test public void testGetUserByEmailOrUsernameWithPassword2() { User user = testedUserServiceImpl.getUserByEmailOrUsernameWithPassword(ModuleHelper.userName); verify(mockUserMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "username", ModuleHelper.userName); } })); Mockito.verifyNoMoreInteractions(mockUserMapper); runAsserts(user, false); }*/ // 调用了别的方法,不知道该怎么测 /* @Test public void testIsEmailRegistered(String email) { }*/ @Test public void testGetUserById() { User user = testedUserServiceImpl.getById(ModuleHelper.id); verify(mockUserMapper, times(1)).selectByPrimaryKey(ModuleHelper.id); Mockito.verifyNoMoreInteractions(mockUserMapper); runAsserts(user); } @Test public void testGetUserByProjectId() { List<User> list = testedUserServiceImpl.getUserByProjectId(ModuleHelper.projectId); verify(mockUserProjectMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<UserProjectExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "projectId", ModuleHelper.projectId); } })); assertEquals(2, list.size()); runAsserts(list.get(0)); runAsserts(list.get(1)); verify(mockUserMapper, times(2)).selectByPrimaryKey(ModuleHelper.userId); Mockito.verifyNoMoreInteractions(mockUserProjectMapper); Mockito.verifyNoMoreInteractions(mockUserMapper); } /* @Test public void testGetDepartmentedUserByCompanyId() { Map<Department, List<User>> map = testedUserServiceImpl.getDepartmentedUserByCompanyId(ModuleHelper.companyId); }*/ /** * @author 胡天翔 * Branch that successfully get user */ @Test public void testGetUserByEmail_Branch1() { User user = testedUserServiceImpl.getUserByEmail(ModuleHelper.email); verify(mockUserMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "email", ModuleHelper.email); } })); Mockito.verifyNoMoreInteractions(mockUserMapper); assertEquals(ModuleHelper.userId, (int) user.getId()); assertNull("", user.getPassword()); assertNull("", user.getNewPassword()); } /** * @author 胡天翔 * Branch that can't get user */ @Test public void testGetUserByEmail_Branch2() { when(mockUserMapper.selectByExample(Mockito.any(UserExample.class))).thenReturn(new ArrayList<User>()); User user = testedUserServiceImpl.getUserByEmail(ModuleHelper.email); verify(mockUserMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "email", ModuleHelper.email); } })); Mockito.verifyNoMoreInteractions(mockUserMapper); assertNull("", user); } /** * @author 胡天翔 * Branch that user is activated */ @Test public void testSendConfirmationEmail_Branch1() { User user = getASampleUser(); user.setActivated(true); testedUserServiceImpl.sendConfirmationEmail(user); Mockito.verifyNoMoreInteractions(mockEmailService); Mockito.verifyNoMoreInteractions(mockRepository); } /** * @author 胡天翔 * Branch that user isn't activated */ @SuppressWarnings("unchecked") @Test public void testSendConfirmationEmail_Branch2() { User user = getASampleUser(); user.setActivated(false); Mockito.doReturn(ModuleHelper.token).when(mockRepository).addToken(Mockito.any(TokenType.class), Mockito.anyInt(), Mockito.anyInt()); Mockito.doReturn(null).when(mockEmailService).sendEmail(Mockito.anyString(), Mockito.any(String[].class), Mockito.any(String[].class), Mockito.anyString(), Mockito.anyString(), Mockito.anyString()); Mockito.doReturn(ModuleHelper.tokenExpired).when(mockConfigurer).getTokenExpired(); Mockito.doReturn(ModuleHelper.protocol).when(mockConfigurer).getProtocol(); Mockito.doReturn(ModuleHelper.host).when(mockConfigurer).getHost(); Mockito.doReturn(ModuleHelper.emailContent).when(mockTemplateEngineService).process((Class<?>) Mockito.anyObject(), Mockito.anyString(), Mockito.anyMap()); testedUserServiceImpl.sendConfirmationEmail(user); verify(mockRepository).addToken(TokenType.CONFIRMATION, ModuleHelper.userId, ModuleHelper.tokenExpired); verify(mockConfigurer).getTokenExpired(); verify(mockConfigurer).getProtocol(); verify(mockConfigurer).getHost(); verify(mockEmailService, times(1)).sendEmail(ModuleHelper.email, null, null, "[OnBoard]注册确认", ModuleHelper.emailContent, null); Mockito.verifyNoMoreInteractions(mockRepository); Mockito.verifyNoMoreInteractions(mockConfigurer); Mockito.verifyNoMoreInteractions(mockEmailService); } /** * @author 胡天翔 * Branch that such unconfirmed user doesn't exists */ @Test public void testConfirmRegisteredUser_Branch1() { Mockito.doReturn(false).when(mockRepository).authenticateToken(Mockito.any(TokenType.class), Mockito.anyInt(), Mockito.anyString()); testedUserServiceImpl.confirmRegisteredUser(ModuleHelper.userId, ModuleHelper.token); verify(mockRepository).authenticateToken(TokenType.CONFIRMATION, ModuleHelper.userId, ModuleHelper.token); Mockito.verifyNoMoreInteractions(mockRepository); Mockito.verifyNoMoreInteractions(mockUserMapper); } /** * @author 胡天翔 * Branch that such unconfirmed user exists */ @Test public void testConfirmRegisteredUser_Branch2() { Mockito.doReturn(true).when(mockRepository).authenticateToken(Mockito.any(TokenType.class), Mockito.anyInt(), Mockito.anyString()); Mockito.doReturn(0).when(mockUserMapper).updateByPrimaryKeySelective(Mockito.any(User.class)); Mockito.doNothing().when(mockRepository).delToken(Mockito.any(TokenType.class), Mockito.anyInt()); testedUserServiceImpl.confirmRegisteredUser(ModuleHelper.userId, ModuleHelper.token); verify(mockRepository).authenticateToken(TokenType.CONFIRMATION, ModuleHelper.userId, ModuleHelper.token); verify(mockUserMapper).updateByPrimaryKeySelective(Mockito.argThat(new ObjectMatcher<User>() { @Override public boolean verifymatches(User user) { return user.getId() == ModuleHelper.userId && user.getActivated() == true; } })); verify(mockRepository).delToken(TokenType.CONFIRMATION, ModuleHelper.userId); Mockito.verifyNoMoreInteractions(mockRepository); Mockito.verifyNoMoreInteractions(mockUserMapper); } /** * @author 胡天翔 * Test that such user doesn't exist */ @Test public void testGetUserByCompanyId_Test1() { UserServiceImpl spyUserServiceImpl = Mockito.spy(testedUserServiceImpl); Mockito.doReturn(getASampleUser()).when(spyUserServiceImpl).getById(ModuleHelper.userId); Mockito.doReturn(new ArrayList<UserCompany>()).when(mockUserCompanyMapper).selectByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); List<User> list = spyUserServiceImpl.getUserByCompanyId(ModuleHelper.companyId); verify(spyUserServiceImpl, times(1)).getUserByCompanyId(ModuleHelper.companyId); verify(mockUserCompanyMapper).selectByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); Mockito.verifyNoMoreInteractions(mockUserCompanyMapper); Mockito.verifyNoMoreInteractions(spyUserServiceImpl); assertEquals(0, list.size()); } /** * @author 胡天翔 * Test that such user exists */ @Test public void testGetUserByCompanyId_Test2() { UserServiceImpl spyUserServiceImpl = Mockito.spy(testedUserServiceImpl); Mockito.doReturn(getASampleUserWithoutPassword()).when(spyUserServiceImpl).getById(ModuleHelper.userId); Mockito.doReturn(listOfUserCompanys).when(mockUserCompanyMapper).selectByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); List<User> list = spyUserServiceImpl.getUserByCompanyId(ModuleHelper.companyId); verify(spyUserServiceImpl, times(1)).getUserByCompanyId(ModuleHelper.companyId); verify(mockUserCompanyMapper).selectByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); Mockito.verifyNoMoreInteractions(mockUserCompanyMapper); assertEquals(2, list.size()); runAsserts(list.get(0)); runAsserts(list.get(1)); verify(spyUserServiceImpl, times(2)).getById(ModuleHelper.userId); Mockito.verifyNoMoreInteractions(spyUserServiceImpl); } /** * @author 胡天翔 * Test that such user doesn't exist */ @Test public void testGetUserByCompanyIdByDepartmentId_Test1() { Mockito.reset(mockUserCompanyMapper); Mockito.doReturn(new ArrayList<User>()).when(mockUserCompanyMapper).selectByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId) && CriterionVerifier.verifyEqualTo(example, "groupId", ModuleHelper.groupId); } })); List<User> list = testedUserServiceImpl.getUserByCompanyIdByDepartmentId(ModuleHelper.groupId, ModuleHelper.companyId); assertEquals(0, list.size()); verify(mockUserCompanyMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId) && CriterionVerifier.verifyEqualTo(example, "groupId", ModuleHelper.groupId); } })); Mockito.verifyNoMoreInteractions(mockUserCompanyMapper); Mockito.verifyNoMoreInteractions(mockUserMapper); } /** * @author 胡天翔 * Test that such user exists */ @Test public void testGetUserByCompanyIdByDepartmentId_Test2() { Mockito.reset(mockUserCompanyMapper); UserServiceImpl spyUserServiceImpl = Mockito.spy(testedUserServiceImpl); Mockito.doReturn(getASampleUserWithoutPassword()).when(spyUserServiceImpl).getById(ModuleHelper.userId); Mockito.doReturn(listOfUserCompanys).when(mockUserCompanyMapper).selectByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId) && CriterionVerifier.verifyEqualTo(example, "groupId", ModuleHelper.groupId); } })); List<User> list = spyUserServiceImpl.getUserByCompanyIdByDepartmentId(ModuleHelper.groupId, ModuleHelper.companyId); verify(spyUserServiceImpl, times(1)).getUserByCompanyIdByDepartmentId(ModuleHelper.groupId, ModuleHelper.companyId); assertEquals(2, list.size()); runAsserts(list.get(0)); runAsserts(list.get(1)); verify(mockUserCompanyMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId) && CriterionVerifier.verifyEqualTo(example, "groupId", ModuleHelper.groupId); } })); verify(spyUserServiceImpl, times(2)).getById(ModuleHelper.userId); Mockito.verifyNoMoreInteractions(mockUserCompanyMapper); Mockito.verifyNoMoreInteractions(spyUserServiceImpl); } /** * @author 胡天翔 * Test that no such project exists */ @Test public void testGetAllProjectUsersInCompany_Test1() { final int projectId0 = 0, projectId1 = 1; User user0 = getASampleUser(0), user1 = getASampleUser(1), user2 = getASampleUser(2), user3 = getASampleUser(3); List<User> listOfUsers0 = new ArrayList<User>(), listOfUsers1 = new ArrayList<User>(); listOfUsers0.add(user0); listOfUsers0.add(user1); listOfUsers1.add(user2); listOfUsers1.add(user3); Mockito.reset(mockUserCompanyMapper); UserServiceImpl spyUserServiceImpl = Mockito.spy(testedUserServiceImpl); Mockito.doReturn(new ArrayList<Project>()).when(mockProjectMapper).selectByExample(Mockito.argThat(new ExampleMatcher<ProjectExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); Mockito.doReturn(listOfUsers0).when(spyUserServiceImpl).getUserByProjectId(projectId0); Mockito.doReturn(listOfUsers1).when(spyUserServiceImpl).getUserByProjectId(projectId1); Map<Integer, List<User>> map = spyUserServiceImpl.getAllProjectUsersInCompany(ModuleHelper.companyId); verify(spyUserServiceImpl, times(1)).getAllProjectUsersInCompany(ModuleHelper.companyId); verify(mockProjectMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<ProjectExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); assertEquals(0, map.size()); Mockito.verifyNoMoreInteractions(mockUserCompanyMapper); Mockito.verifyNoMoreInteractions(spyUserServiceImpl); } /** * @author 胡天翔 * Test that such project exists */ @Test public void testGetAllProjectUsersInCompany_Test2() { Mockito.reset(mockUserCompanyMapper); final int projectId0 = 0, projectId1 = 1, projectId2 = 2; List<User> listOfUsers0 = new ArrayList<User>(), listOfUsers1 = new ArrayList<User>(); listOfUsers0.add(getASampleUser(0)); listOfUsers0.add(getASampleUser(1)); listOfUsers1.add(getASampleUser(2)); listOfUsers1.add(getASampleUser(3)); List<Project> listOfProjects = new ArrayList<Project>(); listOfProjects.add(getASampleProject(projectId0)); listOfProjects.add(getASampleProject(projectId1)); listOfProjects.add(getASampleProject(projectId2)); UserServiceImpl spyUserServiceImpl = Mockito.spy(testedUserServiceImpl); Mockito.doReturn(listOfProjects).when(mockProjectMapper).selectByExample(Mockito.argThat(new ExampleMatcher<ProjectExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); Mockito.doReturn(listOfUsers0).when(spyUserServiceImpl).getUserByProjectId(projectId0); Mockito.doReturn(listOfUsers1).when(spyUserServiceImpl).getUserByProjectId(projectId1); Mockito.doReturn(new ArrayList<User>()).when(spyUserServiceImpl).getUserByProjectId(projectId2); Map<Integer, List<User>> map = spyUserServiceImpl.getAllProjectUsersInCompany(ModuleHelper.companyId); verify(spyUserServiceImpl, times(1)).getAllProjectUsersInCompany(ModuleHelper.companyId); verify(mockProjectMapper, times(1)).selectByExample(Mockito.argThat(new ExampleMatcher<ProjectExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); verify(spyUserServiceImpl, times(1)).getUserByProjectId(projectId0); verify(spyUserServiceImpl, times(1)).getUserByProjectId(projectId1); verify(spyUserServiceImpl, times(1)).getUserByProjectId(projectId2); Mockito.verifyNoMoreInteractions(mockUserCompanyMapper); Mockito.verifyNoMoreInteractions(spyUserServiceImpl); assertEquals(3, map.size()); assertEquals(2, map.get(projectId0).size()); assertEquals(2, map.get(projectId1).size()); assertEquals(0, map.get(projectId2).size()); assertEquals(0, (int) map.get(projectId0).get(0).getId()); assertEquals(1, (int) map.get(projectId0).get(1).getId()); assertEquals(2, (int) map.get(projectId1).get(0).getId()); assertEquals(3, (int) map.get(projectId1).get(1).getId()); } /** * @author 胡天翔 * Test that such user-company exists */ @Test public void testIsUserInCompany_Test1() { Mockito.reset(mockUserCompanyMapper); Mockito.doReturn(1).when(mockUserCompanyMapper).countByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "userId", ModuleHelper.userId) && CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); Boolean result = testedUserServiceImpl.isUserInCompany(ModuleHelper.userId, ModuleHelper.companyId); verify(mockUserCompanyMapper, times(1)).countByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "userId", ModuleHelper.userId) && CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); Mockito.verifyNoMoreInteractions(mockUserCompanyMapper); assertTrue(result); } /** * @author 胡天翔 * Test that such user-company doesn't exists */ @Test public void testIsUserInCompany_Test2() { Mockito.reset(mockUserCompanyMapper); Mockito.doReturn(0).when(mockUserCompanyMapper).countByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "userId", ModuleHelper.userId) && CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); Boolean result = testedUserServiceImpl.isUserInCompany(ModuleHelper.userId, ModuleHelper.companyId); verify(mockUserCompanyMapper, times(1)).countByExample(Mockito.argThat(new ExampleMatcher<UserCompanyExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "userId", ModuleHelper.userId) && CriterionVerifier.verifyEqualTo(example, "companyId", ModuleHelper.companyId); } })); Mockito.verifyNoMoreInteractions(mockUserCompanyMapper); assertFalse(result); } /** * @author 胡天翔 * Test that such user doesn't exist */ @Test public void testGetUserByEmailOrUsername_Test1() { Mockito.reset(mockUserCompanyMapper); UserServiceImpl spyUserServiceImpl = Mockito.spy(testedUserServiceImpl); Mockito.doReturn(null).when(spyUserServiceImpl).getUserByEmailOrUsernameWithPassword(ModuleHelper.emailOrUsername); User user = spyUserServiceImpl.getUserByEmailOrUsername(ModuleHelper.emailOrUsername); verify(spyUserServiceImpl, times(1)).getUserByEmailOrUsername(ModuleHelper.emailOrUsername); verify(spyUserServiceImpl, times(1)).getUserByEmailOrUsernameWithPassword(ModuleHelper.emailOrUsername); Mockito.verifyNoMoreInteractions(spyUserServiceImpl); assertNull(user); } /** * @author 胡天翔 * Test that such user exists */ @Test public void testGetUserByEmailOrUsername_Test2() { UserServiceImpl spyUserServiceImpl = Mockito.spy(testedUserServiceImpl); Mockito.doReturn(getASampleUser()).when(spyUserServiceImpl).getUserByEmailOrUsernameWithPassword(ModuleHelper.emailOrUsername); User user = spyUserServiceImpl.getUserByEmailOrUsername(ModuleHelper.emailOrUsername); verify(spyUserServiceImpl, times(1)).getUserByEmailOrUsername(ModuleHelper.emailOrUsername); verify(spyUserServiceImpl, times(1)).getUserByEmailOrUsernameWithPassword(ModuleHelper.emailOrUsername); Mockito.verifyNoMoreInteractions(spyUserServiceImpl); runAsserts(user, false); } /** * @author 胡天翔 * Test that such user doesn't exist */ @Test public void testContainUsername_Test1() { Mockito.doReturn(0).when(mockUserMapper).countByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "username", ModuleHelper.username); } })); Boolean result = testedUserServiceImpl.containUsername(ModuleHelper.username); verify(mockUserMapper, times(1)).countByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "username", ModuleHelper.username); } })); Mockito.verifyNoMoreInteractions(mockUserMapper); assertFalse(result); } /** * @author 胡天翔 * Test that such user exists */ @Test public void testContainUsername_Test2() { Mockito.reset(mockUserCompanyMapper); Mockito.doReturn(2).when(mockUserMapper).countByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "username", ModuleHelper.username); } })); Boolean result = testedUserServiceImpl.containUsername(ModuleHelper.username); verify(mockUserMapper, times(1)).countByExample(Mockito.argThat(new ExampleMatcher<UserExample>() { @Override public boolean matches(BaseExample example) { return CriterionVerifier.verifyEqualTo(example, "username", ModuleHelper.username); } })); Mockito.verifyNoMoreInteractions(mockUserMapper); assertTrue(result); } /** * @author 胡天翔 */ @Test public void testIsPasswordValid() { // Covered by PasswordUtils.isPasswordValid } /** * @author 胡天翔 */ @Test public void testCreatePassword() { // Covered by PasswordUtils.createPassword } /** * @author 胡天翔 */ @Test public void testFilterProjectMembers() { List<User> list1 = new ArrayList<User>(), list2 = new ArrayList<User>(); list1.add(getASampleUser(0)); list1.add(getASampleUser(1)); list1.add(getASampleUser(2)); list2.add(getASampleUser(1)); list2.add(getASampleUser(2)); list2.add(getASampleUser(3)); SetView<User> intersection = Sets.intersection(new HashSet<User>(list1), new HashSet<User>(list2)); UserServiceImpl spyUserServiceImpl = Mockito.spy(testedUserServiceImpl); Mockito.doReturn(list2).when(spyUserServiceImpl).getUserByProjectId(ModuleHelper.projectId); List<User> user = spyUserServiceImpl.filterProjectMembers(list1, ModuleHelper.projectId); Mockito.verify(spyUserServiceImpl).filterProjectMembers(list1, ModuleHelper.projectId); Mockito.verify(spyUserServiceImpl).getUserByProjectId(ModuleHelper.projectId); Mockito.verifyNoMoreInteractions(spyUserServiceImpl); assertEquals(intersection.size(), Sets.intersection(intersection, new HashSet<User>(user)).size()); } }