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