def test_its_key_is_not_value_dict_key_multi_success(self, *args):
     step = MockedStep()
     step.context.stash = [{
         'type': 'aws_db_instance',
         'some_key': 'some_value',
         'values': {
             'tags': {
                 'tag_key_one': 'tag_value_one',
                 'tag_key_two': 'tag_value_two'
             }
         }
     }, {
         'type': 'aws_db_instance',
         'some_key': 'some_other_value',
         'values': {
             'tags': {
                 'tag_key_one': 'tag_value_one',
                 'tag_key_three': 'tag_value_three'
             }
         }
     }]
     its_key_is_not_value(step, 'tags', 'tag_key_four')
     self.assertTrue(type(step.context.stash) is list)
     self.assertEqual(len(step.context.stash), 2)
     self.assertEqual(step.context.stash[0]['some_key'], 'some_value')
     self.assertEqual(step.context.stash[1]['some_key'], 'some_other_value')
Beispiel #2
0
    def test_its_key_is_not_value(self, test_case):
        step = MockedStep()
        step.context.stash = test_case.stash

        with patch('terraform_compliance.extensions.ext_radish_bdd.world',
                   return_value=MockedWorld()):
            its_key_is_not_value(step, *test_case.args)

        def collect_ids(val):
            if isinstance(val, dict):
                for k, v in val.items():
                    if k == 'id':
                        yield v
                    else:
                        yield from collect_ids(v)
            elif isinstance(val, list):
                for child in val:
                    yield from collect_ids(child)

        all_ids = set(collect_ids(test_case.stash))
        expected_ids = all_ids - test_case.expected_ids

        assert step.state == ('passed' if expected_ids else 'skipped')

        if expected_ids:
            actual_ids = set(o['id'] for o in step.context.stash)
            assert actual_ids == expected_ids
Beispiel #3
0
 def test_its_key_is_not_value_dict_kv_failure(self, *args):
     step = MockedStep()
     step.context.stash = [
         {
             'type': 'aws_db_instance',
             'some_key': 'some_value',
             'values': {
                 'tags': {
                     'tag_key_one': 'tag_value_one',
                     'tag_key_two': 'tag_value_two'
                 }
             }
         },
         {
             'type': 'aws_db_instance',
             'some_key': 'some_other_value',
             'values': {
                 'tags': {
                     'tag_key_one': 'tag_value_one',
                     'tag_key_three': 'tag_value_three'
                 }
             }
         }
     ]
     its_key_is_not_value(step, 'tags', 'tag_key_one', 'tag_value_one')
     self.assertEqual(step.state, 'skipped')
Beispiel #4
0
 def test_its_key_is_not_value_not_existent(self, *args):
     step = MockedStep()
     step.context.stash = [{
         'type': 'aws_db_instance',
         'some_key': 'some_value',
         'values': {
             'storage_encrypted': True
         }
     }, {
         'type': 'aws_db_instance',
         'some_key': 'some_other_value',
         'values': {
             'storage_encrypted': False
         }
     }]
     its_key_is_not_value(step, 'something_else', 'some_value')
     self.assertEqual(step.state, 'skipped')
Beispiel #5
0
 def test_its_key_is_not_value_exist_in_values_int(self):
     step = MockedStep()
     step.context.stash = [{
         'type': 'aws_db_instance',
         'some_key': 'some_value[0]',
         'values': {
             'storage_encrypted': 1
         }
     }, {
         'type': 'aws_db_instance',
         'some_key': 'some_other_value',
         'values': {
             'storage_encrypted': 2
         }
     }]
     its_key_is_not_value(step, 'storage_encrypted', 1)
     self.assertTrue(type(step.context.stash) is list)
     self.assertEqual(step.context.stash[0]['some_key'], 'some_other_value')