Пример #1
0
 def test_absent_force_nested_complex_grain(self):
     # Unset a nested complex grain
     with self.setGrains({
             "a":
             "aval",
             "foo": ["order", {
                 "is": {
                     "nested": "bar"
                 }
             }, "correct"]
     }):
         ret = grains.absent(name="foo:is", force=True)
         self.assertEqual(ret["result"], True)
         self.assertEqual(ret["comment"],
                          "Value for grain foo:is was set to None")
         self.assertEqual(ret["changes"], {
             "grain": "foo:is",
             "value": None
         })
         self.assertEqual(
             grains.__grains__,
             {
                 "a": "aval",
                 "foo": ["order", {
                     "is": None
                 }, "correct"]
             },
         )
         self.assertGrainFileContent("a: aval\n" + "foo:\n" + "- order\n" +
                                     "- is: null\n" + "- correct\n")
Пример #2
0
    def test_absent(self):
        '''
        Test to delete a grain from the grains config file
        '''
        ret = {'changes': {'grain': self.name, 'value': None},
               'name': self.name, 'result': None,
               'comment': 'Value for grain cheese is set to be deleted (None)'}

        ret1 = {'changes': {}, 'name': self.name, 'result': True,
                'comment': 'Grain cheese does not exist'}

        with patch.dict(grains.__opts__, {'test': True}):
            with patch.dict(grains.__grains__, {self.name: ['edam']}):
                self.assertDictEqual(grains.absent(self.name), ret)

        self.assertDictEqual(grains.absent(self.name), ret1)
Пример #3
0
 def test_absent_fails_nested_complex_grain(self):
     # Unset a nested complex grain
     with self.setGrains({
             "a":
             "aval",
             "foo": ["order", {
                 "is": {
                     "nested": "bar"
                 }
             }, "correct"]
     }):
         ret = grains.absent(name="foo:is")
         self.assertEqual(ret["result"], False)
         self.assertEqual(
             ret["comment"],
             "The key 'foo:is' exists but is a dict or a list. Use 'force=True' to overwrite.",
         )
         self.assertEqual(ret["changes"], {})
         self.assertEqual(
             grains.__grains__,
             {
                 "a": "aval",
                 "foo": ["order", {
                     "is": {
                         "nested": "bar"
                     }
                 }, "correct"]
             },
         )
         self.assertGrainFileContent("a: aval\n" + "foo:\n" + "- order\n" +
                                     "- is:\n" + "    nested: bar\n" +
                                     "- correct\n")
Пример #4
0
 def test_absent_force_nested_complex_grain(self):
     # Unset a nested complex grain
     with self.setGrains({
             'a':
             'aval',
             'foo': ['order', {
                 'is': {
                     'nested': 'bar'
                 }
             }, 'correct']
     }):
         ret = grains.absent(name='foo:is', force=True)
         self.assertEqual(ret['result'], True)
         self.assertEqual(ret['comment'],
                          'Value for grain foo:is was set to None')
         self.assertEqual(ret['changes'], {
             'grain': 'foo:is',
             'value': None
         })
         self.assertEqual(grains.__grains__, {
             'a': 'aval',
             'foo': ['order', {
                 'is': None
             }, 'correct']
         })
         self.assertGrainFileContent("a: aval\n" + "foo:\n" + "- order\n" +
                                     "- is: null\n" + "- correct\n")
Пример #5
0
 def test_absent_fails_nested_complex_grain(self):
     # Unset a nested complex grain
     with self.setGrains({
             'a':
             'aval',
             'foo': ['order', {
                 'is': {
                     'nested': 'bar'
                 }
             }, 'correct']
     }):
         ret = grains.absent(name='foo:is')
         self.assertEqual(ret['result'], False)
         self.assertEqual(
             ret['comment'],
             'The key \'foo:is\' exists but is a dict or a list. Use \'force=True\' to overwrite.'
         )
         self.assertEqual(ret['changes'], {})
         self.assertEqual(
             grains.__grains__, {
                 'a': 'aval',
                 'foo': ['order', {
                     'is': {
                         'nested': 'bar'
                     }
                 }, 'correct']
             })
         self.assertGrainFileContent("a: aval\n" + "foo:\n" + "- order\n" +
                                     "- is:\n" + "    nested: bar\n" +
                                     "- correct\n")
Пример #6
0
    def test_absent_delete(self):
        # Delete a grain
        with self.setGrains({'a': 'aval', 'foo': 'bar'}):
            ret = grains.absent(name='foo', destructive=True)
            self.assertEqual(ret['result'], True)
            self.assertEqual(ret['comment'], 'Grain foo was deleted')
            self.assertEqual(ret['changes'], {'deleted': 'foo'})
            self.assertEqual(grains.__grains__, {'a': 'aval'})
            self.assertGrainFileContent("a: aval\n")

        # Delete a previously unset grain
        with self.setGrains({'a': 'aval', 'foo': None}):
            ret = grains.absent(name='foo', destructive=True)
            self.assertEqual(ret['result'], True)
            self.assertEqual(ret['comment'], 'Grain foo was deleted')
            self.assertEqual(ret['changes'], {'deleted': 'foo'})
            self.assertEqual(grains.__grains__, {'a': 'aval'})
            self.assertGrainFileContent("a: aval\n")

        # Delete a nested grain
        with self.setGrains({
                'a':
                'aval',
                'foo':
            ['order', {
                'is': {
                    'nested': 'bar',
                    'other': 'value'
                }
            }, 'correct']
        }):
            ret = grains.absent(name='foo:is:nested', destructive=True)
            self.assertEqual(ret['result'], True)
            self.assertEqual(ret['comment'], 'Grain foo:is:nested was deleted')
            self.assertEqual(ret['changes'], {'deleted': 'foo:is:nested'})
            self.assertEqual(
                grains.__grains__, {
                    'a': 'aval',
                    'foo': ['order', {
                        'is': {
                            'other': 'value'
                        }
                    }, 'correct']
                })
            self.assertGrainFileContent("a: aval\n" + "foo:\n" + "- order\n" +
                                        "- is:\n" + "    other: value\n" +
                                        "- correct\n")
Пример #7
0
 def test_absent_delete(self):
     # Delete a grain
     grains.__grains__ = grainsmod.__grains__ = {"a": "aval", "foo": "bar"}
     ret = grains.absent(name="foo", destructive=True)
     self.assertEqual(ret["result"], True)
     self.assertEqual(ret["comment"], "Grain foo was deleted")
     self.assertEqual(ret["changes"], {"deleted": "foo"})
     self.assertEqual(grains.__grains__, {"a": "aval"})
Пример #8
0
 def test_absent_unset(self):
     # Unset a grain
     grains.__grains__ = grainsmod.__grains__ = {"a": "aval", "foo": "bar"}
     ret = grains.absent(name="foo")
     self.assertEqual(ret["result"], True)
     self.assertEqual(ret["comment"], "Value for grain foo was set to None")
     self.assertEqual(ret["changes"], {"grain": "foo", "value": None})
     self.assertEqual(grains.__grains__, {"a": "aval", "foo": None})
Пример #9
0
 def test_absent_already(self):
     # Unset a non existent grain
     grains.__grains__ = grainsmod.__grains__ = {"a": "aval"}
     ret = grains.absent(name="foo")
     self.assertEqual(ret["result"], True)
     self.assertEqual(ret["comment"], "Grain foo does not exist")
     self.assertEqual(ret["changes"], {})
     self.assertEqual(grains.__grains__, {"a": "aval"})
Пример #10
0
 def test_absent_delete(self):
     # Delete a grain
     grains.__grains__ = grainsmod.__grains__ = {'a': 'aval', 'foo': 'bar'}
     ret = grains.absent(name='foo', destructive=True)
     self.assertEqual(ret['result'], True)
     self.assertEqual(ret['comment'], 'Grain foo was deleted')
     self.assertEqual(ret['changes'], {'deleted': 'foo'})
     self.assertEqual(grains.__grains__, {'a': 'aval'})
Пример #11
0
 def test_absent_already(self):
     # Unset a non existent grain
     grains.__grains__ = grainsmod.__grains__ = {'a': 'aval'}
     ret = grains.absent(name='foo')
     self.assertEqual(ret['result'], True)
     self.assertEqual(ret['comment'], 'Grain foo does not exist')
     self.assertEqual(ret['changes'], {})
     self.assertEqual(grains.__grains__, {'a': 'aval'})
Пример #12
0
 def test_absent_unset(self):
     # Unset a grain
     grains.__grains__ = grainsmod.__grains__ = {'a': 'aval', 'foo': 'bar'}
     ret = grains.absent(name='foo')
     self.assertEqual(ret['result'], True)
     self.assertEqual(ret['comment'], 'Value for grain foo was set to None')
     self.assertEqual(ret['changes'], {'grain': 'foo', 'value': None})
     self.assertEqual(grains.__grains__, {'a': 'aval', 'foo': None})
Пример #13
0
    def test_absent_delete(self):
        # Delete a grain
        self.setGrains({'a': 'aval', 'foo': 'bar'})
        ret = grains.absent(
            name='foo',
            destructive=True)
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Grain foo was deleted')
        self.assertEqual(ret['changes'], {'deleted': 'foo'})
        self.assertEqual(
            grains.__grains__,
            {'a': 'aval'})
        self.assertGrainFileContent("a: aval\n")

        # Delete a previously unset grain
        self.setGrains({'a': 'aval', 'foo': None})
        ret = grains.absent(
            name='foo',
            destructive=True)
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Grain foo was deleted')
        self.assertEqual(ret['changes'], {'deleted': 'foo'})
        self.assertEqual(
            grains.__grains__,
            {'a': 'aval'})
        self.assertGrainFileContent("a: aval\n")

        # Delete a nested grain
        self.setGrains({'a': 'aval', 'foo': ['order', {'is': {'nested': 'bar', 'other': 'value'}}, 'correct']})
        ret = grains.absent(
            name='foo:is:nested',
            destructive=True)
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Grain foo:is:nested was deleted')
        self.assertEqual(ret['changes'], {'deleted': 'foo:is:nested'})
        self.assertEqual(
            grains.__grains__,
            {'a': 'aval', 'foo': ['order', {'is': {'other': 'value'}}, 'correct']})
        self.assertGrainFileContent("a: aval\n"
                                  + "foo:\n"
                                  + "- order\n"
                                  + "- is:\n"
                                  + "    other: value\n"
                                  + "- correct\n"
        )
Пример #14
0
 def test_absent_unset_test(self):
     grains.__opts__['test'] = True
     self.setGrains({'a': 'aval', 'foo': 'bar'})
     # Overwrite an existing grain
     ret = grains.absent(name='foo')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['changes'], {'grain': 'foo', 'value': None})
     self.assertEqual(grains.__grains__, {'a': 'aval', 'foo': 'bar'})
     self.assertGrainFileContent("a: aval\n" + "foo: bar\n")
Пример #15
0
    def test_absent_already(self):
        # Unset a non existent grain
        self.setGrains({'a': 'aval'})
        ret = grains.absent(name='foo')
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Grain foo does not exist')
        self.assertEqual(ret['changes'], {})
        self.assertEqual(grains.__grains__, {'a': 'aval'})
        self.assertGrainFileContent("a: aval\n")

        # Unset a non existent nested grain
        self.setGrains({'a': 'aval'})
        ret = grains.absent(name='foo:is:nested')
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Grain foo:is:nested does not exist')
        self.assertEqual(ret['changes'], {})
        self.assertEqual(grains.__grains__, {'a': 'aval'})
        self.assertGrainFileContent("a: aval\n")
Пример #16
0
    def test_absent_already(self):
        # Unset a non existent grain
        with self.setGrains({"a": "aval"}):
            ret = grains.absent(name="foo")
            self.assertEqual(ret["result"], True)
            self.assertEqual(ret["comment"], "Grain foo does not exist")
            self.assertEqual(ret["changes"], {})
            self.assertEqual(grains.__grains__, {"a": "aval"})
            self.assertGrainFileContent("a: aval\n")

        # Unset a non existent nested grain
        with self.setGrains({"a": "aval"}):
            ret = grains.absent(name="foo:is:nested")
            self.assertEqual(ret["result"], True)
            self.assertEqual(ret["comment"],
                             "Grain foo:is:nested does not exist")
            self.assertEqual(ret["changes"], {})
            self.assertEqual(grains.__grains__, {"a": "aval"})
            self.assertGrainFileContent("a: aval\n")
Пример #17
0
 def test_absent_unset_test(self):
     grains.__opts__['test'] = True
     self.setGrains({'a': 'aval', 'foo': 'bar'})
     # Overwrite an existing grain
     ret = grains.absent(name='foo')
     self.assertEqual(ret['result'], None)
     self.assertEqual(ret['changes'], {'grain': 'foo', 'value': None})
     self.assertEqual(
         grains.__grains__,
         {'a': 'aval', 'foo': 'bar'})
     self.assertGrainFileContent("a: aval\n"
                               + "foo: bar\n"
     )
Пример #18
0
    def test_absent_already(self):
        # Unset a non existent grain
        self.setGrains({'a': 'aval'})
        ret = grains.absent(
            name='foo')
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Grain foo does not exist')
        self.assertEqual(ret['changes'], {})
        self.assertEqual(
            grains.__grains__,
            {'a': 'aval'})
        self.assertGrainFileContent("a: aval\n")

        # Unset a non existent nested grain
        self.setGrains({'a': 'aval'})
        ret = grains.absent(
            name='foo:is:nested')
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Grain foo:is:nested does not exist')
        self.assertEqual(ret['changes'], {})
        self.assertEqual(
            grains.__grains__,
            {'a': 'aval'})
        self.assertGrainFileContent("a: aval\n")
Пример #19
0
 def test_absent_unset_test(self):
     with patch.dict(grains.__opts__, {"test": True}):
         with self.setGrains({"a": "aval", "foo": "bar"}):
             # Overwrite an existing grain
             ret = grains.absent(name="foo")
             self.assertEqual(ret["result"], None)
             self.assertEqual(ret["changes"], {
                 "grain": "foo",
                 "value": None
             })
             self.assertEqual(grains.__grains__, {
                 "a": "aval",
                 "foo": "bar"
             })
             self.assertGrainFileContent("a: aval\n" + "foo: bar\n")
Пример #20
0
 def test_absent_force_nested_complex_grain(self):
     # Unset a nested complex grain
     self.setGrains({'a': 'aval', 'foo': ['order', {'is': {'nested': 'bar'}}, 'correct']})
     ret = grains.absent(
         name='foo:is',
         force=True)
     self.assertEqual(ret['result'], True)
     self.assertEqual(ret['comment'], 'Value for grain foo:is was set to None')
     self.assertEqual(ret['changes'], {'grain': 'foo:is', 'value': None})
     self.assertEqual(
         grains.__grains__,
         {'a': 'aval', 'foo': ['order', {'is': None}, 'correct']})
     self.assertGrainFileContent("a: aval\n"
                               + "foo:\n"
                               + "- order\n"
                               + "- is: null\n"
                               + "- correct\n"
     )
Пример #21
0
 def test_absent_fails_nested_complex_grain(self):
     # Unset a nested complex grain
     self.setGrains({'a': 'aval', 'foo': ['order', {'is': {'nested': 'bar'}}, 'correct']})
     ret = grains.absent(
         name='foo:is')
     self.assertEqual(ret['result'], False)
     self.assertEqual(ret['comment'], 'The key \'foo:is\' exists but is a dict or a list. Use \'force=True\' to overwrite.')
     self.assertEqual(ret['changes'], {})
     self.assertEqual(
         grains.__grains__,
         {'a': 'aval', 'foo': ['order', {'is': {'nested': 'bar'}}, 'correct']})
     self.assertGrainFileContent("a: aval\n"
                               + "foo:\n"
                               + "- order\n"
                               + "- is:\n"
                               + "    nested: bar\n"
                               + "- correct\n"
     )
Пример #22
0
    def test_absent_unset(self):
        # Unset a grain
        self.setGrains({'a': 'aval', 'foo': 'bar'})
        ret = grains.absent(
            name='foo')
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Value for grain foo was set to None')
        self.assertEqual(ret['changes'], {'grain': 'foo', 'value': None})
        self.assertEqual(
            grains.__grains__,
            {'a': 'aval', 'foo': None})
        self.assertGrainFileContent("a: aval\n"
                                  + "foo: null\n"
        )

        # Unset grain when its value is False
        self.setGrains({'a': 'aval', 'foo': False})
        ret = grains.absent(
            name='foo')
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Value for grain foo was set to None')
        self.assertEqual(ret['changes'], {'grain': 'foo', 'value': None})
        self.assertEqual(
            grains.__grains__,
            {'a': 'aval', 'foo': None})
        self.assertGrainFileContent("a: aval\n"
                                  + "foo: null\n"
        )

        # Unset a nested grain
        self.setGrains({'a': 'aval', 'foo': ['order', {'is': {'nested': 'bar'}}, 'correct']})
        ret = grains.absent(
            name='foo,is,nested',
            delimiter=',')
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Value for grain foo:is:nested was set to None')
        self.assertEqual(ret['changes'], {'grain': 'foo:is:nested', 'value': None})
        self.assertEqual(
            grains.__grains__,
            {'a': 'aval', 'foo': ['order', {'is': {'nested': None}}, 'correct']})
        self.assertGrainFileContent("a: aval\n"
                                  + "foo:\n"
                                  + "- order\n"
                                  + "- is:\n"
                                  + "    nested: null\n"
                                  + "- correct\n"
        )

        # Unset a nested value don't change anything
        self.setGrains({'a': 'aval', 'foo': ['order', {'is': 'nested'}, 'correct']})
        ret = grains.absent(
            name='foo:is:nested')
        self.assertEqual(ret['result'], True)
        self.assertEqual(ret['comment'], 'Grain foo:is:nested does not exist')
        self.assertEqual(ret['changes'], {})
        self.assertEqual(
            grains.__grains__,
            {'a': 'aval', 'foo': ['order', {'is': 'nested'}, 'correct']})
        self.assertGrainFileContent("a: aval\n"
                                  + "foo:\n"
                                  + "- order\n"
                                  + "- is: nested\n"
                                  + "- correct\n"
        )
Пример #23
0
    def test_absent_unset(self):
        # Unset a grain
        with self.setGrains({"a": "aval", "foo": "bar"}):
            ret = grains.absent(name="foo")
            self.assertEqual(ret["result"], True)
            self.assertEqual(ret["comment"],
                             "Value for grain foo was set to None")
            self.assertEqual(ret["changes"], {"grain": "foo", "value": None})
            self.assertEqual(grains.__grains__, {"a": "aval", "foo": None})
            self.assertGrainFileContent("a: aval\n" + "foo: null\n")

        # Unset grain when its value is False
        with self.setGrains({"a": "aval", "foo": False}):
            ret = grains.absent(name="foo")
            self.assertEqual(ret["result"], True)
            self.assertEqual(ret["comment"],
                             "Value for grain foo was set to None")
            self.assertEqual(ret["changes"], {"grain": "foo", "value": None})
            self.assertEqual(grains.__grains__, {"a": "aval", "foo": None})
            self.assertGrainFileContent("a: aval\n" + "foo: null\n")

        # Unset a nested grain
        with self.setGrains({
                "a":
                "aval",
                "foo": ["order", {
                    "is": {
                        "nested": "bar"
                    }
                }, "correct"]
        }):
            ret = grains.absent(name="foo,is,nested", delimiter=",")
            self.assertEqual(ret["result"], True)
            self.assertEqual(ret["comment"],
                             "Value for grain foo:is:nested was set to None")
            self.assertEqual(ret["changes"], {
                "grain": "foo:is:nested",
                "value": None
            })
            self.assertEqual(
                grains.__grains__,
                {
                    "a": "aval",
                    "foo": ["order", {
                        "is": {
                            "nested": None
                        }
                    }, "correct"]
                },
            )
            self.assertGrainFileContent("a: aval\n" + "foo:\n" + "- order\n" +
                                        "- is:\n" + "    nested: null\n" +
                                        "- correct\n")

        # Unset a nested value don't change anything
        with self.setGrains({
                "a": "aval",
                "foo": ["order", {
                    "is": "nested"
                }, "correct"]
        }):
            ret = grains.absent(name="foo:is:nested")
            self.assertEqual(ret["result"], True)
            self.assertEqual(ret["comment"],
                             "Grain foo:is:nested does not exist")
            self.assertEqual(ret["changes"], {})
            self.assertEqual(
                grains.__grains__,
                {
                    "a": "aval",
                    "foo": ["order", {
                        "is": "nested"
                    }, "correct"]
                },
            )
            self.assertGrainFileContent("a: aval\n" + "foo:\n" + "- order\n" +
                                        "- is: nested\n" + "- correct\n")
Пример #24
0
    def test_absent_unset(self):
        # Unset a grain
        with self.setGrains({'a': 'aval', 'foo': 'bar'}):
            ret = grains.absent(name='foo')
            self.assertEqual(ret['result'], True)
            self.assertEqual(ret['comment'],
                             'Value for grain foo was set to None')
            self.assertEqual(ret['changes'], {'grain': 'foo', 'value': None})
            self.assertEqual(grains.__grains__, {'a': 'aval', 'foo': None})
            self.assertGrainFileContent("a: aval\n" + "foo: null\n")

        # Unset grain when its value is False
        with self.setGrains({'a': 'aval', 'foo': False}):
            ret = grains.absent(name='foo')
            self.assertEqual(ret['result'], True)
            self.assertEqual(ret['comment'],
                             'Value for grain foo was set to None')
            self.assertEqual(ret['changes'], {'grain': 'foo', 'value': None})
            self.assertEqual(grains.__grains__, {'a': 'aval', 'foo': None})
            self.assertGrainFileContent("a: aval\n" + "foo: null\n")

        # Unset a nested grain
        with self.setGrains({
                'a':
                'aval',
                'foo': ['order', {
                    'is': {
                        'nested': 'bar'
                    }
                }, 'correct']
        }):
            ret = grains.absent(name='foo,is,nested', delimiter=',')
            self.assertEqual(ret['result'], True)
            self.assertEqual(ret['comment'],
                             'Value for grain foo:is:nested was set to None')
            self.assertEqual(ret['changes'], {
                'grain': 'foo:is:nested',
                'value': None
            })
            self.assertEqual(
                grains.__grains__, {
                    'a': 'aval',
                    'foo': ['order', {
                        'is': {
                            'nested': None
                        }
                    }, 'correct']
                })
            self.assertGrainFileContent("a: aval\n" + "foo:\n" + "- order\n" +
                                        "- is:\n" + "    nested: null\n" +
                                        "- correct\n")

        # Unset a nested value don't change anything
        with self.setGrains({
                'a': 'aval',
                'foo': ['order', {
                    'is': 'nested'
                }, 'correct']
        }):
            ret = grains.absent(name='foo:is:nested')
            self.assertEqual(ret['result'], True)
            self.assertEqual(ret['comment'],
                             'Grain foo:is:nested does not exist')
            self.assertEqual(ret['changes'], {})
            self.assertEqual(grains.__grains__, {
                'a': 'aval',
                'foo': ['order', {
                    'is': 'nested'
                }, 'correct']
            })
            self.assertGrainFileContent("a: aval\n" + "foo:\n" + "- order\n" +
                                        "- is: nested\n" + "- correct\n")