コード例 #1
0
 def test_deep_merge_default_random_snippet(self):
     """merging a snippet of un-ignored garbage into the defaults ensures all projects 
     get that new default, even if it's deeply nested"""
     snippet = {'defaults':
                    {'foo': {
                        'bar': {
                            'baz': ['bup']}}}}
     project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
     self.assertEqual(project_data['foo']['bar']['baz'][0], 'bup')
コード例 #2
0
 def test_deep_merge_default_random_snippet(self):
     """merging a snippet of un-ignored garbage into the defaults ensures all projects
     get that new default, even if it's deeply nested"""
     snippet = {'defaults':
                {'foo': {
                    'bar': {
                        'baz': ['bup']}}}}
     project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
     self.assertEqual(project_data['foo']['bar']['baz'][0], 'bup')
コード例 #3
0
 def test_deep_merge_default_snippet2_project3(self):
     """merging a snippet into the defaults ensures all projects and their alternative configuration
     also get that new default, even if it's deeply nested"""
     snippet = {'defaults':
                {'aws': {
                    'rds': {
                        'subnets': ['subnet-baz']}}}}
     project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet])
     project_data = utils.remove_ordereddict(project_data)
     self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
コード例 #4
0
 def test_deep_merge_default_snippet2_project3(self):
     """merging a snippet into the defaults ensures all projects and their alternative configuration 
     also get that new default, even if it's deeply nested"""
     snippet = {'defaults':
                    {'aws': {
                        'rds': {
                            'subnets': ['subnet-baz']}}}}
     project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet])
     project_data = utils.remove_ordereddict(project_data)
     self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
コード例 #5
0
    def test_deep_merge_project_snippet(self):
        """merging a snippet into the defaults ensures all projects get that new default,
        even alternative configurations, even if it's deeply nested"""

        # dummy1 ordinarily has no RDS settings at all.
        # by updating the project settings, I expect it to now have the rds section with the overrides
        snippet = {'dummy1':
                   {'aws': {
                       'rds': {
                           'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)
        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
コード例 #6
0
    def test_deep_merge_project_snippet(self):
        """merging a snippet into the defaults ensures all projects get that new default, 
        even alternative configurations, even if it's deeply nested"""

        # dummy1 ordinarily has no RDS settings at all.
        # by updating the project settings, I expect it to now have the rds section with the overrides
        snippet = {'dummy1':
                       {'aws': {
                           'rds': {
                               'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)
        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
コード例 #7
0
    def test_merge_default_snippet(self):
        "merging a snippet into the defaults ensures all projects get that new default"
        # all projects now get 999 cpus. perfectly sane requirement.
        snippet = {'defaults':
                   {'vagrant': {
                       'cpus': 999}}}
        project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        # load up the expected fixture and switch the value ...
        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        # ... then compare to actual
        self.assertEqual(project_data, expected_data)
コード例 #8
0
    def test_merge_default_snippet(self):
        "merging a snippet into the defaults ensures all projects get that new default"
        # all projects now get 999 cpus. perfectly sane requirement.
        snippet = {'defaults':
                       {'vagrant': {
                           'cpus': 999}}}
        project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        # load up the expected fixture and switch the value ...
        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        # ... then compare to actual
        self.assertEqual(project_data, expected_data)
コード例 #9
0
    def test_deep_merge_default_snippet_but_excluded(self):
        """merging a snippet into the defaults ensures all projects get that new default.
        snippet is ignored if project is excluding that section"""

        cases = [
            {'defaults': {'aws': {'rds': {'subnets': ['subnet-baz']}}}},
            {'defaults': {'aws': {'ext': {'size': 999}}}},
            {'defaults': {'aws-alt': {'rds': {'storage': 999}}}},
            {'defaults': {'aws-alt': {'ext': {'size': 999}}}},
        ]
        for snippet in cases:
            project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
            project_data = utils.remove_ordereddict(project_data)
            expected_data = json.load(open(self.dummy1_config, 'r'))
            # dummy1 project has no rds, ext or alt-aws configs using those. nothing should have changed
            self.assertEqual(project_data, expected_data)
コード例 #10
0
    def test_deep_merge_project_snippet_altconfig(self):
        """merging a snippet into the defaults ensures all projects get that new default,
        even alternative configurations, even if it's deeply nested"""

        # dummy3 only has no RDS settings in it's alt-config section
        # by updating the project settings, I expect it to now have the rds section with the overrides
        # and for the altconfigs to replicate that
        snippet = {'dummy3':
                   {'aws': {
                       'rds': {
                           'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
コード例 #11
0
 def test_deep_merge_default_snippet_but_excluded(self):
     """merging a snippet into the defaults ensures all projects get that new default. 
     snippet is ignored if project is excluding that section"""
     
     cases = [
         {'defaults': {'aws': {'rds': {'subnets': ['subnet-baz']}}}},
         {'defaults': {'aws': {'ext': {'size': 999}}}},
         {'defaults': {'aws-alt': {'rds': {'storage': 999}}}},
         {'defaults': {'aws-alt': {'ext': {'size': 999}}}},
     ]
     for snippet in cases:
         project_data = project_files.project_data('dummy1', self.dummy_yaml, [snippet])
         project_data = utils.remove_ordereddict(project_data)
         expected_data = json.load(open(self.dummy1_config, 'r'))
         # dummy1 project has no rds, ext or alt-aws configs using those. nothing should have changed
         self.assertEqual(project_data, expected_data)
コード例 #12
0
    def test_deep_merge_project_snippet_altconfig(self):
        """merging a snippet into the defaults ensures all projects get that new default, 
        even alternative configurations, even if it's deeply nested"""

        # dummy3 only has no RDS settings in it's alt-config section
        # by updating the project settings, I expect it to now have the rds section with the overrides
        # and for the altconfigs to replicate that
        snippet = {'dummy3':
                       {'aws': {
                           'rds': {
                               'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy3', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
コード例 #13
0
    def test_merge_multiple_default_snippets(self):
        """merging multiple overlapping snippets into the defaults
        ensures all projects get the new defaults"""
        # all projects now get 999 cpus. perfectly sane requirement.
        snippet = {'defaults':
                   {'vagrant': {
                       'cpucap': 10,  # to be overriden by the override
                       'cpus': 999}}}
        snippet2 = {'defaults':
                    {'vagrant': {
                        'cpucap': 111}}}
        snippet_list = [snippet, snippet2]
        project_data = project_files.project_data('dummy1', self.dummy_yaml, snippet_list)
        project_data = utils.remove_ordereddict(project_data)

        expected_data = json.load(open(self.dummy1_config, 'r'))
        expected_data['vagrant']['cpus'] = 999
        expected_data['vagrant']['cpucap'] = 111
        self.assertEqual(project_data, expected_data)
コード例 #14
0
 def test_merge_multiple_default_snippets(self):
     """merging multiple overlapping snippets into the defaults 
     ensures all projects get the new defaults"""
     # all projects now get 999 cpus. perfectly sane requirement.
     snippet = {'defaults':
                    {'vagrant': {
                        'cpucap': 10,  # to be overriden by the override
                        'cpus': 999}}}
     snippet2 = {'defaults':
                     {'vagrant': {
                         'cpucap': 111}}}
     snippet_list = [snippet, snippet2]
     project_data = project_files.project_data('dummy1', self.dummy_yaml, snippet_list)
     project_data = utils.remove_ordereddict(project_data)
     
     expected_data = json.load(open(self.dummy1_config, 'r'))
     expected_data['vagrant']['cpus'] = 999
     expected_data['vagrant']['cpucap'] = 111        
     self.assertEqual(project_data, expected_data)
コード例 #15
0
    def test_deep_merge_default_snippet_altconfig(self):
        """merging a snippet into the defaults ensures all projects get that new default, 
        even alternative configurations, even if it's deeply nested"""

        # dummy2 project DOES NOT provide any subnet overrides. it should inherit this override
        snippet = {'defaults':
                       {'aws': {
                           'rds': {
                               'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy2', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)
        
        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['fresh']['rds']['subnets'][0], 'subnet-baz')

        # load up the expected fixture and switch the value ...
        expected_data = json.load(open(self.dummy2_config, 'r'))
        expected_data['aws']['rds']['subnets'] = ['subnet-baz']
        expected_data['aws-alt']['alt-config1']['rds']['subnets'] = ['subnet-baz']
        expected_data['aws-alt']['fresh']['rds']['subnets'] = ['subnet-baz']

        # ... then compare to actual
        self.assertEqual(expected_data, project_data)
コード例 #16
0
    def test_deep_merge_default_snippet_altconfig(self):
        """merging a snippet into the defaults ensures all projects get that new default,
        even alternative configurations, even if it's deeply nested"""

        # dummy2 project DOES NOT provide any subnet overrides. it should inherit this override
        snippet = {'defaults':
                   {'aws': {
                       'rds': {
                           'subnets': ['subnet-baz']}}}}
        project_data = project_files.project_data('dummy2', self.dummy_yaml, [snippet])
        project_data = utils.remove_ordereddict(project_data)

        self.assertEqual(project_data['aws']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['alt-config1']['rds']['subnets'][0], 'subnet-baz')
        self.assertEqual(project_data['aws-alt']['fresh']['rds']['subnets'][0], 'subnet-baz')

        # load up the expected fixture and switch the value ...
        expected_data = json.load(open(self.dummy2_config, 'r'))
        expected_data['aws']['rds']['subnets'] = ['subnet-baz']
        expected_data['aws-alt']['alt-config1']['rds']['subnets'] = ['subnet-baz']
        expected_data['aws-alt']['fresh']['rds']['subnets'] = ['subnet-baz']

        # ... then compare to actual
        self.assertEqual(expected_data, project_data)
コード例 #17
0
 def test_dummy2_aws_alt_should_not_have_incomplete_defaults_for_cloudfront(self):
     dummy2 = files.project_data('dummy2', self.project_file)
     self.assertIn('rds', dummy2['aws-alt']['alt-config1'].keys())
     self.assertNotIn('elb', dummy2['aws-alt']['alt-config1'].keys())
     self.assertNotIn('cloudfront', dummy2['aws-alt']['alt-config1'].keys())
コード例 #18
0
 def test_dummy2_aws_alt_should_not_have_incomplete_defaults_for_cloudfront(self):
     dummy2 = files.project_data('dummy2', self.project_file)
     self.assertIn('rds', list(dummy2['aws-alt']['alt-config1'].keys()))
     self.assertNotIn('elb', list(dummy2['aws-alt']['alt-config1'].keys()))
     self.assertNotIn('cloudfront', list(dummy2['aws-alt']['alt-config1'].keys()))