def test_should_record_asynchronous_express_message_status_as_successful( self): # Arrange message, message_id = build_message('QUPC_IN160101UK05', '9689177923') # Act MhsHttpRequestBuilder() \ .with_headers(interaction_id='QUPC_IN160101UK05', message_id=message_id, sync_async=False, correlation_id='1') \ .with_body(message) \ .execute_post_expecting_success() # Assert AMQMessageAssertor(MHS_INBOUND_QUEUE.get_next_message_on_queue()) \ .assertor_for_hl7_xml_message() \ .assert_element_attribute('.//queryAck//queryResponseCode', 'code', 'OK') AssertWithRetries(retry_count=10) \ .assert_condition_met(lambda: DynamoMhsTableStateAssertor.wait_for_inbound_response_processed(message_id)) DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values({ 'INBOUND_STATUS': 'INBOUND_RESPONSE_SUCCESSFULLY_PROCESSED', 'OUTBOUND_STATUS': 'OUTBOUND_MESSAGE_ACKD', 'WORKFLOW': 'async-express' })
def test_should_record_forward_reliable_message_status_as_successful(self): # Arrange # The to_party_id, and to_asid are fixed values that the forward reliable responder in opentest will respond to. # If failures are seen here, it is probably an issue with opentest SDS not being correctly configured for your # account message, message_id = build_message('COPC_IN000001UK01', to_party_id='X26-9199246', to_asid='918999199246') # Act MhsHttpRequestBuilder() \ .with_headers(interaction_id='COPC_IN000001UK01', message_id=message_id, sync_async=False, correlation_id='1', ods_code='X26') \ .with_body(message) \ .execute_post_expecting_success() # Assert AMQMessageAssertor(MHS_INBOUND_QUEUE.get_next_message_on_queue()) \ .assertor_for_hl7_xml_message() \ .assert_element_attribute('.//acknowledgement//messageRef//id', 'root', message_id) AssertWithRetries(retry_count=10) \ .assert_condition_met(lambda: DynamoMhsTableStateAssertor.wait_for_inbound_response_processed(message_id)) DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values({ 'INBOUND_STATUS': 'INBOUND_RESPONSE_SUCCESSFULLY_PROCESSED', 'OUTBOUND_STATUS': 'OUTBOUND_MESSAGE_ACKD', 'WORKFLOW': 'forward-reliable' })
def test_should_record_message_status_as_nackd_when_ebxml_error_response_returned_from_spine( self): """ Message ID: '7AA57E38-8B20-4AE0-9E73-B9B0C0C42BDA' configured in fakespine to return a ebxml Fault error. Error found here: fake_spine/fake_spine/configured_responses/ebxml_fault_single_error.xml """ # Arrange message, message_id = build_message( 'QUPC_IN160101UK05', '9689177923', message_id='7AA57E38-8B20-4AE0-9E73-B9B0C0C42BDA') # Act response = MhsHttpRequestBuilder() \ .with_headers(interaction_id='QUPC_IN160101UK05', message_id=message_id, sync_async=False) \ .with_body(message) \ .execute_post_expecting_error_response() # Assert DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values( { 'INBOUND_STATUS': None, 'OUTBOUND_STATUS': 'OUTBOUND_MESSAGE_NACKD', 'WORKFLOW': 'async-express' })
def test_should_record_message_status_when_a_business_level_retry_is_required_and_succeeds( self): """ Message ID: '35586865-45B0-41A5-98F6-817CA6F1F5EF' configured in fakespine to return a SOAP Fault error, after 2 retries fakespine will return a success response. """ # Arrange message, message_id = build_message( 'COPC_IN000001UK01', '9689177923', message_id='35586865-45B0-41A5-98F6-817CA6F1F5EF') # Act MhsHttpRequestBuilder() \ .with_headers(interaction_id='COPC_IN000001UK01 ', message_id=message_id, sync_async=False) \ .with_body(message) \ .execute_post_expecting_success() # Assert DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values( { 'INBOUND_STATUS': None, 'OUTBOUND_STATUS': 'OUTBOUND_MESSAGE_ACKD', 'WORKFLOW': 'forward-reliable' })
def test_should_record_message_status_when_soap_error_response_returned_from_spine_and_sync_async_requested( self): """ Message ID: AD7D39A8-1B6C-4520-8367-6B7BEBD7B842 configured in fakespine to return a SOAP Fault error. Error found here: fake_spine/fake_spine/configured_responses/soap_fault_single_error.xml """ # Arrange message, message_id = build_message( 'QUPC_IN160101UK05', '9689177923', message_id='AD7D39A8-1B6C-4520-8367-6B7BEBD7B842') # Act MhsHttpRequestBuilder() \ .with_headers(interaction_id='QUPC_IN160101UK05', message_id=message_id, sync_async=True) \ .with_body(message) \ .execute_post_expecting_error_response() # Assert DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values( { 'INBOUND_STATUS': None, 'OUTBOUND_STATUS': 'OUTBOUND_SYNC_ASYNC_MESSAGE_SUCCESSFULLY_RESPONDED', 'WORKFLOW': 'sync-async' })
def test_should_update_status_when_a_ebxml_fault_is_returned_from_spine_and_sync_async_is_requested( self): """ Message ID: A7D43B03-38FB-4ED7-8D04-0496DBDEDB7D configured in fakespine to return a ebxml Fault error. Error found here: fake_spine/fake_spine/configured_responses/ebxml_fault_single_error.xml Here we use 'PRSC_IN080000UK07' which is an eRS slot polling call, it is a forward reliable message type that can be wrapped in sync-async """ # Arrange message, message_id = build_message( 'PRSC_IN080000UK07', '9446245796', message_id='3771F30C-A231-4D64-A46C-E7FB0D52C27C') # Act MhsHttpRequestBuilder() \ .with_headers(interaction_id='PRSC_IN080000UK07', message_id=message_id, sync_async=True) \ .with_body(message) \ .execute_post_expecting_error_response() # Assert DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values( { 'INBOUND_STATUS': None, 'OUTBOUND_STATUS': 'OUTBOUND_SYNC_ASYNC_MESSAGE_SUCCESSFULLY_RESPONDED', 'WORKFLOW': 'sync-async' })
def test_should_record_message_status_when_ebxml_fault_returned_from_spine( self): """ Message ID: 'A7D43B03-38FB-4ED7-8D04-0496DBDEDB7D' configured in fakespine to return a ebxml fault """ # Arrange message, message_id = build_message( 'COPC_IN000001UK01', '9689177923', message_id='A7D43B03-38FB-4ED7-8D04-0496DBDEDB7D') # Act MhsHttpRequestBuilder() \ .with_headers(interaction_id='COPC_IN000001UK01 ', message_id=message_id, sync_async=False) \ .with_body(message) \ .execute_post_expecting_error_response() # Assert DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values( { 'INBOUND_STATUS': None, 'OUTBOUND_STATUS': 'OUTBOUND_MESSAGE_NACKD', 'WORKFLOW': 'forward-reliable' })
def test_should_record_message_status_when_soap_fault_returned_from_spine( self): """ Message ID: 3771F30C-A231-4D64-A46C-E7FB0D52C27C configured in fakespine to return a SOAP Fault error. Error found here: fake_spine/fake_spine/configured_responses/soap_fault_single_error.xml """ # Arrange message, message_id = build_message( 'COPC_IN000001UK01', '9446245796', message_id='3771F30C-A231-4D64-A46C-E7FB0D52C27C') # Act MhsHttpRequestBuilder() \ .with_headers(interaction_id='COPC_IN000001UK01', message_id=message_id, sync_async=False) \ .with_body(message) \ .execute_post_expecting_error_response() # Assert DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values( { 'INBOUND_STATUS': None, 'OUTBOUND_STATUS': 'OUTBOUND_MESSAGE_NACKD', 'WORKFLOW': 'forward-reliable' })
def test_should_record_message_status_when_soap_error_response_returned_from_spine( self): """ Message ID: '3771F30C-A231-4D64-A46C-E7FB0D52C27C' configured in fakespine to return a soap fault """ # Arrange message, message_id = build_message( 'REPC_IN150016UK05', '9689177923', message_id='3771F30C-A231-4D64-A46C-E7FB0D52C27C') # Act response = MhsHttpRequestBuilder() \ .with_headers(interaction_id='REPC_IN150016UK05 ', message_id=message_id, sync_async=True) \ .with_body(message) \ .execute_post_expecting_error_response() # Assert DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values( { 'INBOUND_STATUS': None, 'OUTBOUND_STATUS': 'OUTBOUND_SYNC_ASYNC_MESSAGE_SUCCESSFULLY_RESPONDED', 'WORKFLOW': 'sync-async' })
def test_should_record_message_status_as_nackd_when_ebxml_error_response_returned_from_spine_when_sync_async_requested( self): """ Message ID: 'A7D43B03-38FB-4ED7-8D04-0496DBDEDB7D' configured in fakespine to return a ebxml fault """ # Arrange message, message_id = build_message( 'REPC_IN150016UK05', '9689177923', message_id='A7D43B03-38FB-4ED7-8D04-0496DBDEDB7D') # Act MhsHttpRequestBuilder() \ .with_headers(interaction_id='REPC_IN150016UK05 ', message_id=message_id, sync_async=True) \ .with_body(message) \ .execute_post_expecting_error_response() # Assert DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values( { 'INBOUND_STATUS': None, 'OUTBOUND_STATUS': 'OUTBOUND_SYNC_ASYNC_MESSAGE_SUCCESSFULLY_RESPONDED', 'WORKFLOW': 'sync-async' })
def test_should_record_synchronous_message_status_as_successful(self): # Arrange message, message_id = build_message('QUPA_IN040000UK32', '9689174606') # Act MhsHttpRequestBuilder() \ .with_headers(interaction_id='QUPA_IN040000UK32', message_id=message_id, sync_async=False) \ .with_body(message) \ .execute_post_expecting_success() # Assert DynamoMhsTableStateAssertor(MHS_STATE_TABLE_DYNAMO_WRAPPER.get_all_records_in_table()) \ .assert_single_item_exists_with_key(message_id) \ .assert_item_contains_values({ 'INBOUND_STATUS': None, 'OUTBOUND_STATUS': 'SYNC_RESPONSE_SUCCESSFUL', 'WORKFLOW': 'sync' })