|
39 | 39 | import org.apache.cloudstack.auth.UserTwoFactorAuthenticator; |
40 | 40 | import org.apache.cloudstack.context.CallContext; |
41 | 41 | import org.apache.cloudstack.framework.config.ConfigKey; |
| 42 | +import org.apache.cloudstack.resourcedetail.UserDetailVO; |
42 | 43 | import org.junit.Assert; |
43 | 44 | import org.junit.Before; |
44 | 45 | import org.junit.Test; |
45 | 46 | import org.junit.runner.RunWith; |
| 47 | +import org.mockito.ArgumentCaptor; |
46 | 48 | import org.mockito.InOrder; |
47 | 49 | import org.mockito.Mock; |
48 | 50 | import org.mockito.Mockito; |
@@ -1218,4 +1220,54 @@ public void checkIfAccountManagesProjectsTestThrowExceptionWhenTheAccountIsAProj |
1218 | 1220 | Mockito.when(_projectAccountDao.listAdministratedProjectIds(accountId)).thenReturn(managedProjectIds); |
1219 | 1221 | accountManagerImpl.checkIfAccountManagesProjects(accountId); |
1220 | 1222 | } |
| 1223 | + |
| 1224 | + @Test |
| 1225 | + public void testClearUser2FA_When2FADisabled_NoChanges() { |
| 1226 | + UserAccount user = Mockito.mock(UserAccount.class); |
| 1227 | + Mockito.when(user.isUser2faEnabled()).thenReturn(false); |
| 1228 | + Mockito.when(user.getUser2faProvider()).thenReturn(null); |
| 1229 | + UserAccount result = accountManagerImpl.clearUserTwoFactorAuthenticationInSetupStateOnLogin(user); |
| 1230 | + Assert.assertSame(user, result); |
| 1231 | + Mockito.verifyNoInteractions(userDetailsDaoMock, userAccountDaoMock); |
| 1232 | + } |
| 1233 | + |
| 1234 | + @Test |
| 1235 | + public void testClearUser2FA_When2FAInVerifiedState_NoChanges() { |
| 1236 | + UserAccount user = Mockito.mock(UserAccount.class); |
| 1237 | + Mockito.when(user.getId()).thenReturn(1L); |
| 1238 | + Mockito.when(user.isUser2faEnabled()).thenReturn(true); |
| 1239 | + UserDetailVO userDetail = new UserDetailVO(); |
| 1240 | + userDetail.setValue(UserAccountVO.Setup2FAstatus.VERIFIED.name()); |
| 1241 | + Mockito.when(userDetailsDaoMock.findDetail(1L, UserDetailVO.Setup2FADetail)).thenReturn(userDetail); |
| 1242 | + UserAccount result = accountManagerImpl.clearUserTwoFactorAuthenticationInSetupStateOnLogin(user); |
| 1243 | + Assert.assertSame(user, result); |
| 1244 | + Mockito.verify(userDetailsDaoMock).findDetail(1L, UserDetailVO.Setup2FADetail); |
| 1245 | + Mockito.verifyNoMoreInteractions(userDetailsDaoMock, userAccountDaoMock); |
| 1246 | + } |
| 1247 | + |
| 1248 | + @Test |
| 1249 | + public void testClearUser2FA_When2FAInSetupState_Disable2FA() { |
| 1250 | + UserAccount user = Mockito.mock(UserAccount.class); |
| 1251 | + Mockito.when(user.getId()).thenReturn(1L); |
| 1252 | + Mockito.when(user.isUser2faEnabled()).thenReturn(true); |
| 1253 | + UserDetailVO userDetail = new UserDetailVO(); |
| 1254 | + userDetail.setValue(UserAccountVO.Setup2FAstatus.ENABLED.name()); |
| 1255 | + UserAccountVO userAccountVO = new UserAccountVO(); |
| 1256 | + userAccountVO.setId(1L); |
| 1257 | + Mockito.when(userDetailsDaoMock.findDetail(1L, UserDetailVO.Setup2FADetail)).thenReturn(userDetail); |
| 1258 | + Mockito.when(userAccountDaoMock.findById(1L)).thenReturn(userAccountVO); |
| 1259 | + UserAccount result = accountManagerImpl.clearUserTwoFactorAuthenticationInSetupStateOnLogin(user); |
| 1260 | + Assert.assertNotNull(result); |
| 1261 | + Assert.assertFalse(result.isUser2faEnabled()); |
| 1262 | + Assert.assertNull(result.getUser2faProvider()); |
| 1263 | + Mockito.verify(userDetailsDaoMock).findDetail(1L, UserDetailVO.Setup2FADetail); |
| 1264 | + Mockito.verify(userDetailsDaoMock).remove(Mockito.anyLong()); |
| 1265 | + Mockito.verify(userAccountDaoMock).findById(1L); |
| 1266 | + ArgumentCaptor<UserAccountVO> captor = ArgumentCaptor.forClass(UserAccountVO.class); |
| 1267 | + Mockito.verify(userAccountDaoMock).update(Mockito.eq(1L), captor.capture()); |
| 1268 | + UserAccountVO updatedUser = captor.getValue(); |
| 1269 | + Assert.assertFalse(updatedUser.isUser2faEnabled()); |
| 1270 | + Assert.assertNull(updatedUser.getUser2faProvider()); |
| 1271 | + Assert.assertNull(updatedUser.getKeyFor2fa()); |
| 1272 | + } |
1221 | 1273 | } |
0 commit comments