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')])
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')})
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')])
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')