Example #1
0
    def test_verify_password_unknown_error(self):
        '''
        Test verify_password where LogonUser encounters another error
        '''
        mock_info = MagicMock(return_value={'account_locked': False})

        win_error = WinError()
        win_error.winerror = 7

        mock_logon_user = MagicMock(side_effect=win_error)

        with patch.dict(win_shadow.__salt__, {'user.info': mock_info}), \
                patch('salt.modules.win_shadow.win32security.LogonUser',
                      mock_logon_user):
            with self.assertRaises(CommandExecutionError):
                win_shadow.verify_password(name='spongebob',
                                           password='******')
Example #2
0
 def test_verify_password_valid(self):
     '''
     Test verify_password with a valid password
     '''
     mock_info = MagicMock(return_value={
         'name': 'SALT',
         'password_changed': '',
         'expiration_date': ''
     })
     mock_logon_user = MagicMock()
     with patch.dict(win_shadow.__salt__, {'user.info': mock_info}), \
             patch('salt.modules.win_shadow.win32security.LogonUser',
                   mock_logon_user):
         self.assertTrue(
             win_shadow.verify_password(name='spongebob',
                                        password='******'))
Example #3
0
    def test_verify_password_disabled_account(self):
        '''
        Test verify_password where LogonUser encounters another error
        '''
        mock_info = MagicMock(return_value={'account_locked': False})

        win_error = WinError()
        win_error.winerror = winerror.ERROR_ACCOUNT_DISABLED

        mock_logon_user = MagicMock(side_effect=win_error)

        with patch.dict(win_shadow.__salt__, {'user.info': mock_info}), \
                patch('salt.modules.win_shadow.win32security.LogonUser',
                      mock_logon_user):
            ret = win_shadow.verify_password(name='spongebob',
                                             password='******')
            self.assertTrue(ret)
Example #4
0
    def test_verify_password_invalid(self):
        '''
        Test verify_password with an invalid password
        '''
        mock_user_info = MagicMock(return_value={'account_locked': False})

        win_error = WinError()
        win_error.winerror = 1326

        mock_logon_user = MagicMock(side_effect=win_error)

        with patch.dict(win_shadow.__salt__, {'user.info': mock_user_info}), \
                patch('salt.modules.win_shadow.win32security.LogonUser',
                      mock_logon_user):
            self.assertFalse(
                win_shadow.verify_password(name='spongebob',
                                           password='******'))
Example #5
0
    def test_verify_password_invalid_account_gets_locked(self):
        '''
        Test verify_password with an invalid password that locks the account
        '''
        mock_info = MagicMock(side_effect=[{
            'account_locked': False
        }, {
            'account_locked': True
        }])
        mock_update = MagicMock(return_value=True)

        win_error = WinError()
        win_error.winerror = winerror.ERROR_LOGON_FAILURE

        mock_logon_user = MagicMock(side_effect=win_error)

        with patch.dict(win_shadow.__salt__, {'user.info': mock_info}), \
                patch.dict(win_shadow.__salt__, {'user.update': mock_update}), \
                patch('salt.modules.win_shadow.win32security.LogonUser',
                      mock_logon_user):
            ret = win_shadow.verify_password(name='spongebob',
                                             password='******')
            mock_update.called_once_with('spongebob', unlock_account=True)
            self.assertFalse(ret)
Example #6
0
    def test_info(self):
        """
        Test if it return information for the specified user
        '''
        mock_info = MagicMock(return_value={'name': 'SALT',
                                            'password_changed': '',
                                            'expiration_date': ''})
        expected = {'name': 'SALT',
                    'passwd': 'Unavailable',
                    'lstchg': '',
                    'min': '',
                    'max': '',
                    'warn': '',
                    'inact': '',
                    'expire': ''}
        with patch.dict(win_shadow.__salt__, {'user.info': mock_info}):
            self.assertDictEqual(win_shadow.info('SALT'), expected)

    @skipIf(not HAS_WIN32, 'Requires win32 libraries')
    def test_set_password(self):
        """
        Test if it set the password for a named user.
        '''
        mock_cmd = MagicMock(return_value={'retcode': False})
        mock_info = MagicMock(return_value={'name': 'SALT',
                                            'password_changed': '',
                                            'expiration_date': ''})
        with patch.dict(win_shadow.__salt__, {'cmd.run_all': mock_cmd,
                                              'user.info': mock_info}):
            self.assertTrue(win_shadow.set_password('root', 'mysecretpassword'))

    @skipIf(not HAS_WIN32, 'Requires win32 libraries')
    def test_verify_password_valid(self):
        '''
        Test verify_password with a valid password
        '''
        mock_info = MagicMock(return_value={'name': 'SALT',
                                                 'password_changed': '',
                                                 'expiration_date': ''})
        mock_logon_user = MagicMock()
        with patch.dict(win_shadow.__salt__, {'user.info': mock_info}), \
                patch('salt.modules.win_shadow.win32security.LogonUser',
                      mock_logon_user):
            self.assertTrue(
                win_shadow.verify_password(name='spongebob',
                                           password='******'))

    @skipIf(not HAS_WIN32, 'Requires win32 libraries')
    def test_verify_password_invalid(self):
        '''
        Test verify_password with an invalid password
        '''
        mock_user_info = MagicMock(return_value={'account_locked': False})

        win_error = WinError()
        win_error.winerror = 1326

        mock_logon_user = MagicMock(side_effect=win_error)

        with patch.dict(win_shadow.__salt__, {'user.info': mock_user_info}), \
                patch('salt.modules.win_shadow.win32security.LogonUser',
                      mock_logon_user):
            self.assertFalse(
                win_shadow.verify_password(name='spongebob',
                                           password='******'))

    @skipIf(not HAS_WIN32, 'Requires win32 libraries')
    def test_verify_password_invalid_account_gets_locked(self):
        '''
        Test verify_password with an invalid password that locks the account
        '''
        mock_info = MagicMock(side_effect=[{'account_locked': False},
                                           {'account_locked': True}])
        mock_update = MagicMock(return_value=True)

        win_error = WinError()
        win_error.winerror = winerror.ERROR_LOGON_FAILURE

        mock_logon_user = MagicMock(side_effect=win_error)

        with patch.dict(win_shadow.__salt__, {'user.info': mock_info}), \
                patch.dict(win_shadow.__salt__, {'user.update': mock_update}), \
                patch('salt.modules.win_shadow.win32security.LogonUser',
                      mock_logon_user):
            ret = win_shadow.verify_password(name='spongebob',
                                             password='******')
            mock_update.called_once_with('spongebob', unlock_account=True)
            self.assertFalse(ret)

    @skipIf(not HAS_WIN32, 'Requires win32 libraries')
    def test_verify_password_disabled_account(self):
        '''
        Test verify_password where LogonUser encounters another error
        '''
        mock_info = MagicMock(return_value={'account_locked': False})

        win_error = WinError()
        win_error.winerror = winerror.ERROR_ACCOUNT_DISABLED

        mock_logon_user = MagicMock(side_effect=win_error)

        with patch.dict(win_shadow.__salt__, {'user.info': mock_info}), \
                patch('salt.modules.win_shadow.win32security.LogonUser',
                      mock_logon_user):
            ret = win_shadow.verify_password(name='spongebob',
                                             password='******')
            self.assertTrue(ret)

    @skipIf(not HAS_WIN32, 'Requires win32 libraries')
    def test_verify_password_locked_account(self):
        '''
        Test verify_password where LogonUser encounters another error
        '''
        mock_info = MagicMock(return_value={'account_locked': False})

        win_error = WinError()
        win_error.winerror = winerror.ERROR_ACCOUNT_LOCKED_OUT

        mock_logon_user = MagicMock(side_effect=win_error)

        with patch.dict(win_shadow.__salt__, {'user.info': mock_info}), \
             patch('salt.modules.win_shadow.win32security.LogonUser',
                   mock_logon_user):
            with self.assertRaises(CommandExecutionError):
                win_shadow.verify_password(name='spongebob',
                                           password='******')

    @skipIf(not HAS_WIN32, 'Requires win32 libraries')
    def test_verify_password_unknown_error(self):
        '''
        Test verify_password where LogonUser encounters another error
        '''
        mock_info = MagicMock(return_value={'account_locked': False})

        win_error = WinError()
        win_error.winerror = 7

        mock_logon_user = MagicMock(side_effect=win_error)

        with patch.dict(win_shadow.__salt__, {'user.info': mock_info}), \
                patch('salt.modules.win_shadow.win32security.LogonUser',
                      mock_logon_user):
            with self.assertRaises(CommandExecutionError):
                win_shadow.verify_password(name='spongebob',
                                           password='******')