示例#1
0
    def test_receive_identities_from_queue_single(self, session_mock):

        sqs_client_mock = Mock()
        sqs_client_mock.receive_message.return_value = {
            'Messages': [
                {
                    'MessageId': '123',
                    'ReceiptHandle': 'handle123',
                    'MD5OfBody': 'md5123',
                    'Body':
                    json.dumps(TEST_IDENTITY_1_A_US_WEST_2['identity']),
                    'MD5OfMessageAttributes': 'string',
                    'Attributes': {
                        'SentTimestamp': '123123123'
                    }
                },
            ]
        }

        testSkunky = Skunky(session_mock)
        testSkunky.sqs_client = sqs_client_mock

        testSkunky.receive_identities_from_queue()

        assert len(testSkunky.to_be_skunked['000000000001']['us-west-2']) == 1
示例#2
0
def lambda_handler(event, context=None):
    print(json.dumps(event))

    skunky = Skunky(session=Session, config='config.json')
    skunky.run()

    print("Time remaining (MS):", context.get_remaining_time_in_millis())
示例#3
0
    def test_add_to_skunk_single_region(self, session_mock):
        identity = TEST_IDENTITY_1_A_US_WEST_2

        testSkunky = Skunky(session_mock)

        testSkunky.add_to_skunk(identity)

        assert len(testSkunky.to_be_skunked['000000000001']['us-west-2']) == 1
示例#4
0
    def test_add_to_skunk_single_region_multiple_instances(self, session_mock):

        testSkunky = Skunky(session_mock)

        testSkunky.add_to_skunk(TEST_IDENTITY_1_A_US_WEST_2)
        testSkunky.add_to_skunk(TEST_IDENTITY_2_A_US_WEST_2)

        assert len(testSkunky.to_be_skunked['000000000001']['us-west-2']) == 2
示例#5
0
    def test_add_to_skunk_multiple_regions(self, session_mock):

        testSkunky = Skunky(session_mock)

        testSkunky.add_to_skunk(TEST_IDENTITY_1_A_US_WEST_2)
        testSkunky.add_to_skunk(TEST_IDENTITY_1_A_US_EAST_1)

        assert len(testSkunky.to_be_skunked['000000000001']['us-west-2']) == 1
        assert len(testSkunky.to_be_skunked['000000000001']['us-east-1']) == 1
示例#6
0
    def test_skunky_put_identity_dynamodb_raise_error(self, session_mock):

        dynamodb_table_mock = Mock()
        dynamodb_table_mock.put_item.side_effect = Exception(
            'Some unknown exception')

        testSkunky = Skunky(session_mock)
        testSkunky.dynamodb_table = dynamodb_table_mock

        self.assertRaises(Exception,
                          lambda: testSkunky.put(TEST_IDENTITY_1_A_US_WEST_2))
示例#7
0
    def test_skunky_put_identity_dynamodb_false(self, session_mock):

        response = {'Error': {'Code': "ConditionalCheckFailedException"}}

        dynamodb_table_mock = Mock()
        dynamodb_table_mock.put_item.side_effect = exceptions.ClientError(
            response, 'put_item')

        testSkunky = Skunky(session_mock)
        testSkunky.dynamodb_table = dynamodb_table_mock

        self.assertFalse(testSkunky.put(TEST_IDENTITY_1_A_US_WEST_2))
示例#8
0
    def test_get_queue_url(self, session_mock):

        sqs_client_mock = Mock()
        sqs_client_mock.get_queue_url.return_value = {
            'QueueUrl': 'https://queue.amazonaws.com/123456789101112/MyQueue',
            'ResponseMetadata': {},
        }

        testSkunky = Skunky(session_mock)
        testSkunky.sqs_client = sqs_client_mock

        assert testSkunky.get_queue_url(
        ) == 'https://queue.amazonaws.com/123456789101112/MyQueue'
示例#9
0
    def test_skunk_2_accounts_2_regions_multiple_instances(
            self, session_mock, skunky_put_mock, skunky_tag_mock):

        testSkunky = Skunky(session_mock)
        testSkunky.add_to_skunk(TEST_IDENTITY_1_A_US_WEST_2)
        testSkunky.add_to_skunk(TEST_IDENTITY_2_A_US_WEST_2)
        testSkunky.add_to_skunk(TEST_IDENTITY_1_A_US_EAST_1)
        testSkunky.add_to_skunk(TEST_IDENTITY_1_B_US_EAST_1)
        testSkunky.skunk_instances()

        assert skunky_put_mock.call_count == 4
        assert skunky_tag_mock.call_count == 3
        assert len(testSkunky.to_be_skunked['000000000001']['us-west-2']) == 0
        assert len(testSkunky.to_be_skunked['000000000001']['us-east-1']) == 0
        assert len(testSkunky.to_be_skunked['000000000002']['us-east-1']) == 0
示例#10
0
    def test_skunk_1_account_1_region_single_instance(self, session_mock,
                                                      skunky_put_mock,
                                                      skunky_tag_mock):

        testSkunky = Skunky(session_mock)
        testSkunky.add_to_skunk(TEST_IDENTITY_1_A_US_WEST_2)
        testSkunky.skunk_instances()

        assert skunky_put_mock.call_count == 1
        assert skunky_tag_mock.call_count == 1
        assert len(testSkunky.to_be_skunked['000000000001']['us-west-2']) == 0
示例#11
0
    def test_skunky_put_identity_dynamodb_true(self, session_mock):

        testSkunky = Skunky(session_mock)

        self.assertTrue(testSkunky.put(TEST_IDENTITY_1_A_US_WEST_2))
示例#12
0
    def test_skunky__init(self, session_mock):
        testSkunky = Skunky(session_mock)

        assert testSkunky.dynamodb_table_name == 'Skunky'
        assert testSkunky.queue_name == 'skunky'
        assert testSkunky.to_be_skunked == {}
示例#13
0
    def test_ttl(self, session_mock):

        testSkunky = Skunky(session_mock)

        assert testSkunky.ttl() == TTL_TIME
示例#14
0
    def test_run(self, session_mock, skunky_start_mock):

        testSkunky = Skunky(session_mock)
        testSkunky.run()

        assert testSkunky.expire == TIME_RUN
示例#15
0
    def test_identity_hash(self, session_mock):

        testSkunky = Skunky(session_mock)

        assert testSkunky.hash(
            TEST_IDENTITY_1_A_US_WEST_2) == TEST_IDENTITY_1_A_US_WEST_2_HASH