예제 #1
0
def test_present():
    """
    Test to ensure that the named user is present with
    the specified properties.
    """
    name = "frank"
    password = "******"

    ret = {"name": name, "result": False, "comment": "", "changes": {}}

    mock = MagicMock(side_effect=[
        True,
        False,
        True,
        False,
        False,
        True,
        False,
        False,
        False,
        False,
        False,
        True,
    ])
    mock_t = MagicMock(return_value=True)
    mock_f = MagicMock(return_value=False)
    mock_str = MagicMock(return_value="salt")
    mock_none = MagicMock(return_value=None)
    mock_sn = MagicMock(side_effect=[None, "salt", None, None, None])
    with patch.object(salt.utils.data, "is_true", mock_f):
        comt = ("Either password or password_hash must be specified,"
                " unless allow_passwordless is True")
        ret.update({"comment": comt})
        assert mysql_user.present(name) == ret

    with patch.dict(
            mysql_user.__salt__,
        {
            "mysql.user_exists": mock,
            "mysql.user_chpass": mock_t
        },
    ):
        with patch.object(salt.utils.data, "is_true", mock_t):
            comt = "User frank@localhost is already present with passwordless login"
            ret.update({"comment": comt, "result": True})
            assert mysql_user.present(name, allow_passwordless=True) == ret

            with patch.object(mysql_user, "_get_mysql_error", mock_str):
                ret.update({"comment": "salt", "result": False})
                assert mysql_user.present(name) == ret

        with patch.object(mysql_user, "_get_mysql_error", mock_str):
            comt = "User frank@localhost is already present with the desired password"
            ret.update({"comment": comt, "result": True})
            assert mysql_user.present(name, password=password) == ret

            with patch.object(mysql_user, "_get_mysql_error", mock_str):
                ret.update({"comment": "salt", "result": False})
                assert mysql_user.present(name, password=password) == ret

            with patch.object(mysql_user, "_get_mysql_error", mock_none):
                with patch.dict(mysql_user.__opts__, {"test": True}):
                    comt = "Password for user frank@localhost is set to be changed"
                    ret.update({"comment": comt, "result": None})
                    assert mysql_user.present(name, password=password) == ret

            with patch.object(mysql_user, "_get_mysql_error", mock_sn):
                with patch.dict(mysql_user.__opts__, {"test": False}):
                    ret.update({"comment": "salt", "result": False})
                    assert mysql_user.present(name, password=password) == ret

                with patch.dict(mysql_user.__opts__, {"test": True}):
                    comt = "User frank@localhost is set to be added"
                    ret.update({"comment": comt, "result": None})
                    assert mysql_user.present(name, password=password) == ret

                with patch.dict(mysql_user.__opts__, {"test": False}):
                    comt = "Password for user frank@localhost has been changed"
                    ret.update({
                        "comment": comt,
                        "result": True,
                        "changes": {
                            name: "Updated"
                        }
                    })
                    assert mysql_user.present(name, password=password) == ret
예제 #2
0
    def test_present(self):
        '''
        Test to ensure that the named user is present with
         the specified properties.
        '''
        name = 'frank'
        password = "******"

        ret = {'name': name, 'result': False, 'comment': '', 'changes': {}}

        mock = MagicMock(side_effect=[
            True, False, True, False, False, True, False, False, False, False,
            False, True
        ])
        mock_t = MagicMock(return_value=True)
        mock_f = MagicMock(return_value=False)
        mock_str = MagicMock(return_value='salt')
        mock_none = MagicMock(return_value=None)
        mock_sn = MagicMock(side_effect=[None, 'salt', None, None, None])
        with patch.object(salt.utils.data, 'is_true', mock_f):
            comt = ('Either password or password_hash must be specified,'
                    ' unless allow_passwordless is True')
            ret.update({'comment': comt})
            self.assertDictEqual(mysql_user.present(name), ret)

        with patch.dict(mysql_user.__salt__, {
                'mysql.user_exists': mock,
                'mysql.user_chpass': mock_t
        }):
            with patch.object(salt.utils.data, 'is_true', mock_t):
                comt = ('User frank@localhost is already present'
                        ' with passwordless login')
                ret.update({'comment': comt, 'result': True})
                self.assertDictEqual(mysql_user.present(name), ret)

                with patch.object(mysql_user, '_get_mysql_error', mock_str):
                    ret.update({'comment': 'salt', 'result': False})
                    self.assertDictEqual(mysql_user.present(name), ret)

            with patch.object(mysql_user, '_get_mysql_error', mock_str):
                comt = ('User frank@localhost is already present'
                        ' with the desired password')
                ret.update({'comment': comt, 'result': True})
                self.assertDictEqual(
                    mysql_user.present(name, password=password), ret)

                with patch.object(mysql_user, '_get_mysql_error', mock_str):
                    ret.update({'comment': 'salt', 'result': False})
                    self.assertDictEqual(
                        mysql_user.present(name, password=password), ret)

                with patch.object(mysql_user, '_get_mysql_error', mock_none):
                    with patch.dict(mysql_user.__opts__, {'test': True}):
                        comt = ('Password for user frank@localhost'
                                ' is set to be changed')
                        ret.update({'comment': comt, 'result': None})
                        self.assertDictEqual(
                            mysql_user.present(name, password=password), ret)

                with patch.object(mysql_user, '_get_mysql_error', mock_sn):
                    with patch.dict(mysql_user.__opts__, {'test': False}):
                        ret.update({'comment': 'salt', 'result': False})
                        self.assertDictEqual(
                            mysql_user.present(name, password=password), ret)

                    with patch.dict(mysql_user.__opts__, {'test': True}):
                        comt = ('User frank@localhost is set to be added')
                        ret.update({'comment': comt, 'result': None})
                        self.assertDictEqual(
                            mysql_user.present(name, password=password), ret)

                    with patch.dict(mysql_user.__opts__, {'test': False}):
                        comt = ('Password for user frank@localhost'
                                ' has been changed')
                        ret.update({
                            'comment': comt,
                            'result': True,
                            'changes': {
                                name: 'Updated'
                            }
                        })
                        self.assertDictEqual(
                            mysql_user.present(name, password=password), ret)
예제 #3
0
    def test_present(self):
        '''
        Test to ensure that the named user is present with
         the specified properties.
        '''
        name = 'frank'
        password = "******"

        ret = {'name': name,
               'result': False,
               'comment': '',
               'changes': {}}

        mock = MagicMock(side_effect=[True, False, True, False, False, True,
                                      False, False, False, False, False, True])
        mock_t = MagicMock(return_value=True)
        mock_f = MagicMock(return_value=False)
        mock_str = MagicMock(return_value='salt')
        mock_none = MagicMock(return_value=None)
        mock_sn = MagicMock(side_effect=[None, 'salt', None, None, None])
        with patch.object(salt.utils, 'is_true', mock_f):
            comt = ('Either password or password_hash must be specified,'
                    ' unless allow_passwordless is True')
            ret.update({'comment': comt})
            self.assertDictEqual(mysql_user.present(name), ret)

        with patch.dict(mysql_user.__salt__, {'mysql.user_exists': mock,
                                              'mysql.user_chpass': mock_t}):
            with patch.object(salt.utils, 'is_true', mock_t):
                comt = ('User frank@localhost is already present'
                        ' with passwordless login')
                ret.update({'comment': comt, 'result': True})
                self.assertDictEqual(mysql_user.present(name), ret)

                with patch.object(mysql_user, '_get_mysql_error', mock_str):
                    ret.update({'comment': 'salt', 'result': False})
                    self.assertDictEqual(mysql_user.present(name), ret)

            with patch.object(mysql_user, '_get_mysql_error', mock_str):
                comt = ('User frank@localhost is already present'
                        ' with the desired password')
                ret.update({'comment': comt, 'result': True})
                self.assertDictEqual(mysql_user.present(name,
                                                        password=password), ret)

                with patch.object(mysql_user, '_get_mysql_error', mock_str):
                    ret.update({'comment': 'salt', 'result': False})
                    self.assertDictEqual(mysql_user.present(name,
                                                            password=password),
                                         ret)

                with patch.object(mysql_user, '_get_mysql_error', mock_none):
                    with patch.dict(mysql_user.__opts__, {'test': True}):
                        comt = ('Password for user frank@localhost'
                                ' is set to be changed')
                        ret.update({'comment': comt, 'result': None})
                        self.assertDictEqual(mysql_user.present
                                             (name, password=password), ret)

                with patch.object(mysql_user, '_get_mysql_error', mock_sn):
                    with patch.dict(mysql_user.__opts__, {'test': False}):
                        ret.update({'comment': 'salt', 'result': False})
                        self.assertDictEqual(mysql_user.present
                                             (name, password=password), ret)

                    with patch.dict(mysql_user.__opts__, {'test': True}):
                        comt = ('User frank@localhost is set to be added')
                        ret.update({'comment': comt, 'result': None})
                        self.assertDictEqual(mysql_user.present
                                             (name, password=password), ret)

                    with patch.dict(mysql_user.__opts__, {'test': False}):
                        comt = ('Password for user frank@localhost'
                                ' has been changed')
                        ret.update({'comment': comt, 'result': True,
                                    'changes': {name: 'Updated'}})
                        self.assertDictEqual(mysql_user.present
                                             (name, password=password), ret)