def test_login_auth_expired(self): params = get_user_params() call_no = 0 def return_auth_expired(context, rq): nonlocal call_no call_no += 1 rs = TestLogin.process_login_command(context, rq) if call_no == 1: rs['result'] = 'fail' rs['result_code'] = 'auth_expired' rs['message'] = 'Auth expired' elif call_no == 2: pass else: raise Exception() return rs self.v2_execute_mock.side_effect = return_auth_expired with mock.patch( 'keepercommander.api.change_master_password') as m_passwd: def password_changed(params): params.password = vault_env.password return True m_passwd.side_effect = password_changed with self.assertLogs(): login(params) m_passwd.assert_called() self.assertEqual(params.session_token, vault_env.session_token) self.assertEqual(params.data_key, vault_env.data_key)
def test_login(self): params = get_user_params() cmd = utils.LoginCommand() with mock.patch('builtins.input') as mock_input, \ mock.patch('getpass.getpass') as mock_getpass, \ mock.patch('keepercommander.api.login') as mock_login: mock_input.return_value = '*****@*****.**' mock_getpass.return_value = '123456' cmd.execute(params) mock_login.assert_called() mock_login.reset_mock() mock_input.return_value = KeyboardInterrupt() mock_getpass.return_value = '123456' cmd.execute(params, email='*****@*****.**') mock_login.assert_called() mock_login.reset_mock() mock_input.return_value = KeyboardInterrupt() mock_getpass.return_value = KeyboardInterrupt() cmd.execute(params, email='*****@*****.**', password='******') mock_login.assert_called() mock_login.reset_mock() mock_input.return_value = '' mock_getpass.return_value = '' cmd.execute(params) mock_login.assert_not_called()
def test_register(self): params = get_user_params() cmd = register.RegisterCommand() with mock.patch( 'keepercommander.commands.register.RegisterCommand.get_iterations', return_value=1000): TestRegister.expected_commands.extend(['register']) cmd.execute(params, email='*****@*****.**', password='******') self.assertEqual(len(TestRegister.expected_commands), 0) with mock.patch('keepercommander.api.login'): TestRegister.expected_commands.extend( ['register', 'set_data_key_backup']) cmd.execute(params, email='*****@*****.**', password='******', question='What?', answer='Nothing') self.assertEqual(len(TestRegister.expected_commands), 0) with mock.patch('getpass.getpass') as getpass_mock: getpass_mock.side_effect = ['123456', KeyboardInterrupt()] TestRegister.expected_commands.extend(['register']) cmd.execute(params, email='*****@*****.**') self.assertEqual(len(TestRegister.expected_commands), 0)
def test_login_success_2fa_device_token(self): TestLogin.has2fa = True params = get_user_params() params.mfa_token = vault_env.device_token params.mfa_type = 'device_token' login(params) self.assertEqual(params.session_token, vault_env.session_token) self.assertEqual(params.data_key, vault_env.data_key)
def test_ignore_invite(self): TestLogin.enterpriseInvite = True params = get_user_params() self.input_mock.side_effect = ['ignore', self.ctrl_c] login(params) self.assertEqual(self.input_mock.call_count, 1) self.assertEqual(self.print_mock.call_count, 1) self.assertEqual(params.session_token, vault_env.session_token) self.assertEqual(params.data_key, vault_env.data_key)
def test_login_success_2fa_one_time(self): TestLogin.has2fa = True self.getpass_mock.side_effect = [vault_env.one_time_token, self.ctrl_c] self.store_config_mock.side_effect = None params = get_user_params() login(params) self.store_config_mock.assert_called_once_with(params.config_filename, 'w') self.assertEqual(params.session_token, vault_env.session_token) self.assertEqual(params.data_key, vault_env.data_key)
def test_accept_invite(self): TestLogin.enterpriseInvite = True params = get_user_params() self.input_mock.side_effect = [ 'accept', TestLogin.enterpriseInviteCode, self.ctrl_c ] self.comm_mock.side_effect = TestLogin.process_invite login(params) self.assertEqual(self.comm_mock.call_count, 1) self.assertEqual(self.input_mock.call_count, 2) self.assertEqual(self.print_mock.call_count, 1) self.assertEqual(params.session_token, vault_env.session_token) self.assertEqual(params.data_key, vault_env.data_key)
def test_account_transfer_expired(self): params = get_user_params() call_no = 0 def return_auth_expired(context, rq): nonlocal call_no call_no += 1 rs = TestLogin.process_login_command(context, rq) if call_no == 1: rs['result'] = 'fail' rs['result_code'] = 'auth_expired_transfer' rs['message'] = 'Auth Transfer expired' rs['settings'] = { 'share_account_to': [{ 'role_id': 123456789, 'public_key': vault_env.encoded_public_key }] } elif call_no == 2: pass else: raise Exception() return rs self.v2_execute_mock.side_effect = return_auth_expired with mock.patch('keepercommander.api.accept_account_transfer_consent' ) as m_transfer: m_transfer.return_value = True with self.assertLogs(): login(params) m_transfer.assert_called() self.assertEqual(params.session_token, vault_env.session_token) self.assertEqual(params.data_key, vault_env.data_key)
def test_login_invalid_user(self): params = get_user_params() params.user = '******' with self.assertRaises(AuthenticationError): login(params)
def test_login_failed(self): params = get_user_params() params.password = '******' with self.assertRaises(AuthenticationError): login(params)
def test_login_success_2fa_cancel(self): TestLogin.has2fa = True params = get_user_params() login(params) self.assertFalse(params.session_token)
def test_login_success_params(self): TestLogin.dataKeyAsEncParam = True params = get_user_params() login(params) self.assertEqual(params.data_key, vault_env.data_key) self.assertEqual(params.session_token, vault_env.session_token)
def test_login_success(self): params = get_user_params() login(params) self.assertEqual(params.session_token, vault_env.session_token) self.assertEqual(params.data_key, vault_env.data_key)