Ejemplo n.º 1
0
    def test_stream_move_policy(self):
        git = self.setup_basic_repo()
        git.change(
            'newfile.yml',
            {'policies': [{
                'name': 'ec2-check',
                'resource': 'aws.ec2'
            }]})
        git.commit('new file')
        git.rm('example.yml')
        git.change(
            'newfile.yml', {
                'policies': [{
                    'name': 'ec2-check',
                    'resource': 'aws.ec2',
                }, {
                    'name': 'lambda-check',
                    'resource': 'aws.lambda'
                }]
            })
        git.commit('move policy')

        policy_repo = policystream.PolicyRepo(git.repo_path, git.repo())
        changes = [
            c.data()
            for c in policy_repo.delta_stream(sort=pygit2.GIT_SORT_TOPOLOGICAL
                                              | pygit2.GIT_SORT_REVERSE)
        ]
        self.assertEqual([(c['change'], c['policy']['data']['name'],
                           c['commit']['message'].strip()) for c in changes],
                         [('add', 'codebuild-check', 'add something'),
                          ('remove', 'codebuild-check', 'switch'),
                          ('add', 'lambda-check', 'switch'),
                          ('add', 'ec2-check', 'new file'),
                          ('moved', 'lambda-check', 'move policy')])
Ejemplo n.º 2
0
 def test_stream_move_subdir(self):
     git = GitRepo(self.get_temp_dir())
     git.init()
     git.change(
         'aws/ec2.yml',
         {'policies': [{
             'name': 'ec2-check',
             'resource': 'aws.ec2'
         }]})
     git.change(
         'lambda.yml',
         {'policies': [{
             'name': 'lambda-check',
             'resource': 'aws.lambda'
         }]})
     git.commit('init')
     git.move('lambda.yml', 'aws/lambda.yml')
     git.change(
         'aws/ec2.yml', {
             'policies': [{
                 'name': 'ec2-check',
                 'resource': 'aws.ec2'
             }, {
                 'name': 'ec2-ami-check',
                 'resource': 'aws.ec2'
             }]
         })
     git.commit('move')
     git.rm('aws/ec2.yml')
     git.rm('aws/lambda.yml')
     git.change(
         'aws/all.yml', {
             'policies': [{
                 'name': 'lambda-check',
                 'resource': 'aws.lambda'
             }, {
                 'name': 'ec2-check',
                 'resource': 'aws.ec2'
             }]
         })
     git.commit('consolidate')
     policy_repo = policystream.PolicyRepo(git.repo_path, git.repo())
     changes = [
         c.data()
         for c in policy_repo.delta_stream(sort=pygit2.GIT_SORT_TOPOLOGICAL
                                           | pygit2.GIT_SORT_REVERSE)
     ]
     self.assertEqual(
         {(c['change'], c['policy']['data']['name'],
           c['commit']['message'].strip())
          for c in changes}, {('add', 'ec2-check', 'init'),
                              ('add', 'lambda-check', 'init'),
                              ('add', 'ec2-ami-check', 'move'),
                              ('moved', 'lambda-check', 'move'),
                              ('remove', 'ec2-ami-check', 'consolidate'),
                              ('moved', 'ec2-check', 'consolidate'),
                              ('moved', 'lambda-check', 'consolidate')})
Ejemplo n.º 3
0
 def test_stream_basic(self):
     git = self.setup_basic_repo()
     policy_repo = policystream.PolicyRepo(git.repo_path, git.repo())
     changes = [c.data() for c in policy_repo.delta_stream(
         sort=pygit2.GIT_SORT_TOPOLOGICAL | pygit2.GIT_SORT_REVERSE)]
     self.assertEqual(len(changes), 3)
     self.assertEqual(
         [(c['change'],
           c['policy']['data']['name'],
           c['commit']['message'].strip()) for c in changes],
         [('add', 'codebuild-check', 'add something'),
          ('remove', 'codebuild-check', 'switch'),
          ('add', 'lambda-check', 'switch')])
Ejemplo n.º 4
0
 def test_diff_subdir_policies(self):
     git = self.setup_basic_repo()
     git.change('subdir/notary.yml', {
         'policies': [
             {'resource': 'azure.vm',
              'name': 'ornithopter'}]})
     git.commit('azure example')
     repo = git.repo()
     policy_repo = policystream.PolicyRepo(git.repo_path, repo)
     changes = [c.data() for c in policy_repo.delta_commits(
         repo.revparse_single('HEAD^'),
         repo.revparse_single('HEAD'))]
     self.assertEqual(len(changes), 1)
     self.assertEqual(changes[0]['change'], 'add')
     self.assertEqual(changes[0]['commit']['message'].strip(), 'azure example')
     self.assertEqual(changes[0]['policy']['file'], 'subdir/notary.yml')
     self.assertEqual(changes[0]['policy']['data']['name'], 'ornithopter')