Beispiel #1
0
    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)
Beispiel #2
0
    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)
Beispiel #4
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)
Beispiel #5
0
 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)
Beispiel #6
0
 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)
Beispiel #7
0
 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)
Beispiel #8
0
    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)
Beispiel #9
0
 def test_login_invalid_user(self):
     params = get_user_params()
     params.user = '******'
     with self.assertRaises(AuthenticationError):
         login(params)
Beispiel #10
0
 def test_login_failed(self):
     params = get_user_params()
     params.password = '******'
     with self.assertRaises(AuthenticationError):
         login(params)
Beispiel #11
0
 def test_login_success_2fa_cancel(self):
     TestLogin.has2fa = True
     params = get_user_params()
     login(params)
     self.assertFalse(params.session_token)
Beispiel #12
0
 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)
Beispiel #13
0
 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)