예제 #1
0
    def test_configure_no_users_message(self):
        data_fixture = {
            'aws': {
                'iam': {
                    'aws-global': {
                        'get_credential_report': []
                    }
                }
            }
        }

        config = {
            'no_users_message': (
                'No users found'
            )
        }
        plugin = TotalUsersPlugin({}, config)
        results = plugin.run(data_fixture)
        expected = [
            {
                'resource': 'None',
                'region': 'aws-global',
                'severity': 0,
                'message': 'No users found'
            }
        ]

        self.assertEqual(results, expected)
예제 #2
0
    def test_creates_results_with_correct_fields_for_multiple_users(self):
        user1_fixture = {
            'arn': 'arn1',
            'user': '******',
        }
        user2_fixture = {
            'arn': 'arn2',
            'user': '******'
        }

        users = [user1_fixture, user2_fixture]
        data_fixture = {
            'aws': {
                'iam': {
                    'aws-global': {
                        'get_credential_report': users
                    }
                }
            }
        }

        plugin = TotalUsersPlugin({})
        results = plugin.run(data_fixture)
        results_keys = list(results[0].keys())
        expected = [
            'resource',
            'severity',
            'message',
            'region'
        ]

        self.assertCountEqual(results_keys, expected)
예제 #3
0
    def test_users_severity_0(self):
        users_fixture = [
            {
                'user': '******',
                'arn': 'arn1',
            }
        ]
        data_fixture = {
            'aws': {
                'iam': {
                    'aws-global': {
                        'get_credential_report': users_fixture
                    }
                }
            }
        }

        plugin = TotalUsersPlugin({})
        results = plugin.run(data_fixture)
        expected = [
            {
                'resource': 'None',
                'region': 'aws-global',
                'severity': 0,
                'message': 'There are 1 users for this account'
            }
        ]

        self.assertEqual(results, expected)
예제 #4
0
    def test_users_severity_1(self):
        users_fixture = []
        for number in range(0, 600):
            users_fixture.append({
                'user': '******'.format(number),
                'arn': 'arn{}'.format(number),
            })
        data_fixture = {
            'aws': {
                'iam': {
                    'aws-global': {
                        'get_credential_report': users_fixture
                    }
                }
            }
        }

        plugin = TotalUsersPlugin({})
        results = plugin.run(data_fixture)
        expected = [
            {
                'resource': 'None',
                'region': 'aws-global',
                'severity': 1,
                'message': 'There are 600 users for this account'
            }
        ]

        self.assertEqual(results, expected)
예제 #5
0
    def test_configure_total_users_severity_0_message(self):
        users_fixture = [
            {
                'user': '******',
                'arn': 'arn1',
            },
            {
                'user': '******',
                'arn': 'arn1',
            },
            {
                'user': '******',
                'arn': 'arn1',
            }
        ]
        data_fixture = {
            'aws': {
                'iam': {
                    'aws-global': {
                        'get_credential_report': users_fixture
                    }
                }
            }
        }

        config = {
            'total_users_severity_0_message': (
                '{total_users} is an acceptable amount of users'
            )
        }
        plugin = TotalUsersPlugin({}, config)
        results = plugin.run(data_fixture)
        expected = [
            {
                'resource': 'None',
                'region': 'aws-global',
                'severity': 0,
                'message': '3 is an acceptable amount of users'
            }
        ]

        self.assertEqual(results, expected)
예제 #6
0
    def test_configure_total_users_severity_1_message(self):
        users_fixture = [
            {
                'user': '******',
                'arn': 'arn1',
            },
            {
                'user': '******',
                'arn': 'arn1',
            },
            {
                'user': '******',
                'arn': 'arn1',
            }
        ]
        data_fixture = {
            'aws': {
                'iam': {
                    'aws-global': {
                        'get_credential_report': users_fixture
                    }
                }
            }
        }

        config = {
            'total_users_severity_1_threshold': 2,
            'total_users_severity_1_message': '{total_users} is too many users'
        }
        plugin = TotalUsersPlugin({}, config)
        results = plugin.run(data_fixture)
        expected = [
            {
                'resource': 'None',
                'region': 'aws-global',
                'severity': 1,
                'message': '3 is too many users'
            }
        ]

        self.assertEqual(results, expected)
예제 #7
0
    def test_configure_total_users_severity_2_threshold(self):
        users_fixture = [
            {
                'user': '******',
                'arn': 'arn1',
            },
            {
                'user': '******',
                'arn': 'arn1',
            },
            {
                'user': '******',
                'arn': 'arn1',
            }
        ]
        data_fixture = {
            'aws': {
                'iam': {
                    'aws-global': {
                        'get_credential_report': users_fixture
                    }
                }
            }
        }

        config = {
            'total_users_severity_2_threshold': 2
        }
        plugin = TotalUsersPlugin({}, config)
        results = plugin.run(data_fixture)
        expected = [
            {
                'resource': 'None',
                'region': 'aws-global',
                'severity': 2,
                'message': 'There are 3 users for this account'
            }
        ]

        self.assertEqual(results, expected)
예제 #8
0
    def test_can_be_initialized_and_run_with_no_config(self):
        data_fixture = {
            'aws': {
                'iam': {
                    'aws-global': {
                        'get_credential_report': [
                        ]
                    }
                }
            }
        }

        plugin = TotalUsersPlugin({})
        results = plugin.run(data_fixture)
        results_keys = list(results[0].keys())
        expected = [
            'resource',
            'severity',
            'message',
            'region'
        ]

        self.assertCountEqual(results_keys, expected)