Esempio n. 1
0
    def test_when_call_create_with_one_allowed_location_then_sql_is_generated(
            self):
        mock_cursor = Mock()
        mock_connection_provider = self.get_mock_connection_provider(
            mock_cursor)

        provider = AWSStorageIntegrationProvider(self.get_mock_provider(),
                                                 mock_connection_provider)
        provider.create({
            **self.get_standard_inputs(), 'storage_allowed_locations':
            ['allowed_loc']
        })

        mock_cursor.execute.assert_has_calls([
            call(
                "\n".join([
                    f"CREATE STORAGE INTEGRATION {self.get_standard_inputs()['name']}",
                    f"TYPE = %s", f"STORAGE_PROVIDER = %s",
                    "STORAGE_AWS_ROLE_ARN = %s", "ENABLED = TRUE",
                    "STORAGE_ALLOWED_LOCATIONS = (%s)"
                ]), (self.get_standard_inputs()['type'],
                     self.get_standard_inputs()['storage_provider'],
                     self.get_standard_inputs()['storage_aws_role_arn'],
                     'allowed_loc'))
        ])
Esempio n. 2
0
    def test_when_call_create_with_name_then_storage_integration_name_is_returned_as_id(
            self):
        mock_cursor = Mock()
        mock_connection_provider = self.get_mock_connection_provider(
            mock_cursor)

        provider = AWSStorageIntegrationProvider(self.get_mock_provider(),
                                                 mock_connection_provider)
        result = provider.create(self.get_standard_inputs())

        self.assertEqual(result.id, self.get_standard_inputs()["name"])
Esempio n. 3
0
    def test_when_call_create_with_required_fields_and_name_then_outputs_are_returned(
            self):
        mock_cursor = Mock()
        mock_connection_provider = self.get_mock_connection_provider(
            mock_cursor)

        provider = AWSStorageIntegrationProvider(self.get_mock_provider(),
                                                 mock_connection_provider)
        result = provider.create({**self.get_standard_inputs()})

        self.assertDictEqual(
            result.outs, {
                **self.get_standard_outputs(), "full_name": "test_name"
            })
Esempio n. 4
0
    def test_when_optional_fields_with_bindings_given_then_appear_in_sql(self):
        fieldValues = {
            'storage_blocked_locations': ['blocked_loc_1'],
            'storage_blocked_locations': ['blocked_loc_1', 'blocked_loc_2'],
            'comment': 'a test comment'
        }

        fieldSql = {
            'storage_blocked_locations': "STORAGE_BLOCKED_LOCATIONS = (%s)",
            'storage_blocked_locations': "STORAGE_BLOCKED_LOCATIONS = (%s,%s)",
            'comment': "COMMENT = %s"
        }

        fieldBindings = {
            'storage_blocked_locations': ('blocked_loc_1', ),
            'storage_blocked_locations': (
                'blocked_loc_1',
                'blocked_loc_2',
            ),
            'comment': ('a test comment', )
        }

        for field in fieldValues.keys():
            mock_cursor = Mock()
            mock_connection_provider = self.get_mock_connection_provider(
                mock_cursor)
            provider = AWSStorageIntegrationProvider(self.get_mock_provider(),
                                                     mock_connection_provider)

            inputs = {**self.get_standard_inputs(), field: fieldValues[field]}

            provider.create(inputs)

            mock_cursor.execute.assert_has_calls([
                call(
                    "\n".join([
                        f"CREATE STORAGE INTEGRATION {self.get_standard_inputs()['name']}",
                        f"TYPE = %s", f"STORAGE_PROVIDER = %s",
                        "STORAGE_AWS_ROLE_ARN = %s", "ENABLED = TRUE",
                        "STORAGE_ALLOWED_LOCATIONS = (%s,%s)", fieldSql[field]
                    ]),
                    (self.get_standard_inputs()['type'],
                     self.get_standard_inputs()['storage_provider'],
                     self.get_standard_inputs()['storage_aws_role_arn'],
                     *self.get_standard_inputs()['storage_allowed_locations'],
                     *fieldBindings[field]))
            ])
Esempio n. 5
0
    def test_when_neither_resource_name_nor_name_given_then_error_thrown(self):
        mock_connection_provider = self.get_mock_connection_provider(Mock())
        provider = AWSStorageIntegrationProvider(self.get_mock_provider(),
                                                 mock_connection_provider)

        self.assertRaises(Exception, provider.create, {
            **self.get_standard_inputs(), 'name': None,
            'resource_name': None
        })
Esempio n. 6
0
    def test_when_call_create_without_name_then_name_is_autogenerated(self):
        mock_cursor = Mock()
        mock_connection_provider = self.get_mock_connection_provider(
            mock_cursor)

        resourceName = 'test_resource_name'
        provider = AWSStorageIntegrationProvider(self.get_mock_provider(),
                                                 mock_connection_provider)
        result = provider.create({
            **self.get_standard_inputs(),
            'resource_name':
            resourceName,
            'name':
            None,
        })

        self.assertRegex(result.outs["name"], resourceName + '_[a-f,0-9]{7}')
        self.assertEqual(result.id, result.outs["name"])
Esempio n. 7
0
    def test_when_invalid_resource_name_given_and_name_is_autogenerated_then_error_thrown(
            self):
        mock_connection_provider = self.get_mock_connection_provider(Mock())

        resourceName = 'test_resource_name'
        provider = AWSStorageIntegrationProvider(self.get_mock_provider(),
                                                 mock_connection_provider)

        self.assertRaises(
            Exception, provider.create, {
                **self.get_standard_inputs(), 'name': None,
                'resource_name': 'invalid-name'
            })
Esempio n. 8
0
    def test_when_optional_fields_given_then_appear_in_outputs(self):
        fieldValues = {
            'storage_blocked_locations': ['blocked_loc_1'],
            'storage_blocked_locations': ['blocked_loc_1', 'blocked_loc_2'],
            'comment': 'a test comment'
        }

        for field in fieldValues.keys():
            mock_connection_provider = self.get_mock_connection_provider(
                Mock())
            provider = AWSStorageIntegrationProvider(self.get_mock_provider(),
                                                     mock_connection_provider)

            result = provider.create({
                **self.get_standard_inputs(), field:
                fieldValues[field]
            })
            self.assertDictEqual(
                result.outs, {
                    **self.get_standard_outputs(), "full_name": "test_name",
                    field: fieldValues[field]
                })