"""Test handler.""" from unittest.mock import patch from ddex_ingester_common.constants.catalog_ingestion import ( REJECT, SUCCESS, ) from handler import ( handler, validate, ) from rules import RuleResult def test_index(): """Test the main handler.""" with open('data/awal_ddex_document_3.xml') as fd: # noqa xml_data = fd.read() with open('data/awal_ddex_document_3_ext.xml') as fd: # noqa extended_xml_data = fd.read() results = handler(xml_data, extended_xml_data) for rule in results: assert rule.response == 'Success' @patch('handler.validate') def test_handler( mock_validate, unparsed_extended_awal_ddex, unparsed_awal_ddex): """Test the main handler.""" validation_results = [1, 2, 3, 4, 5] mock_validate.return_value = validation_results results = handler(unparsed_awal_ddex, unparsed_extended_awal_ddex) assert results == validation_results mock_validate.assert_called_once() @patch('handler.validate') def test_handler_bytes( mock_validate, unparsed_extended_awal_ddex, unparsed_awal_ddex): """Test the main handler with a binary input.""" validation_results = [1, 2, 3, 4, 5] mock_validate.return_value = validation_results results = handler( unparsed_awal_ddex.encode('utf-8'), unparsed_extended_awal_ddex.encode('utf-8') ) assert results == validation_results mock_validate.assert_called_once() def test_validate(s3_context): """Test the validate function against a 'successful' rule.""" rule = [(lambda input: RuleResult(122, SUCCESS, None))] output = validate(s3_context, rule) assert output[0] == rule[0](s3_context) def test_validate_with_rejected_rule(s3_context): """Test the validate function against a 'rejected' rule.""" rule = [ (lambda input: RuleResult(123, REJECT, 'Something is not correct')) ] output = validate(s3_context, rule) assert output[0] == rule[0](s3_context) def test_validate_with_multiple_rejected_rule(s3_context): """Test the validate function against multiple 'failed' rules.""" rule = [ (lambda input: RuleResult(122, SUCCESS, None)), (lambda input: RuleResult(123, REJECT, 'Something is not correct')), ( lambda input: RuleResult( 124, REJECT, 'Something ELSE is not correct') ) ] output = validate(s3_context, rule) assert len(output) == 3 assert output[0] == rule[0](s3_context) assert output[1] == rule[1](s3_context) assert output[2] == rule[2](s3_context)