def test_trace_error_info_with_unicode(self): agr = Agreement(id='A01') ctx = AS2Context(agr, None) ctx.trace_error(u'test {0} {1}', '123', '456') assert_equal(1, len(ctx.trace_info_list))
def send_async_mdn(self, message): agreement = self._get_agreement(message.agreement_id) context = AS2Context(agreement, message) mdn_headers, mdn_body = self._mdn_encode(context) if message.message_trace_list is None: message.message_trace_list = [] if context.trace_info_list is not None: message.message_trace_list.extend(context.trace_info_list) message.message_mdn.edit_date = datetime.utcnow() message.edit_date = datetime.utcnow() CloudStoreHelper().save_document(message) resp = HttpHelper.post(agreement.inbound_agreement.async_mdn_url, data=mdn_body, headers=mdn_headers, verify=False) status_code, received_headers, received_body = resp.status_code, dict( resp.headers), resp.content if status_code != requests.codes.ok: resp.raise_for_status() return message
def send(self): message = PartnerManager._create_send_message() context = None try: business_id, agreement_id, data_dfs_path = self._get_send_request() agreement = self._get_agreement(agreement_id) PartnerManager._build_send_message(message, business_id, data_dfs_path, agreement) context = AS2Context(agreement, message) data = self._get_send_data(data_dfs_path) received_headers, received_body = self._send_data(data, context) if agreement.outbound_agreement.mdn_mode == MdnMode.sync: self._receive_sync_mdn(received_headers, received_body, context) except: message.message_status = StatusType.failed message.memo = str(sys.exc_info()[1]) finally: if context is not None: message.message_trace_list = context.trace_info_list mq_setting = ConfigurationHelper.get_mq_setting( 'outbound_message_queue') headers = { 'EventMessageKey': 'N/A' if message.key is None else message.key, 'LocalIdentity': 'N/A' if message.local_identity is None else message.local_identity, 'TradingIdentity': 'N/A' if message.trading_identity is None else message.trading_identity, 'Version': 'N/A' if message.version is None else message.version } self.send_to_message_queue( mq_setting.queue_name, mq_setting.password, message, headers=headers, match_tag=mq_setting.serialization_match_tag) return message
def receive_async_mdn(self, agreement_id=None): if is_none_or_whitespace(agreement_id): headers = { k.lower().replace('_', '-'): v for k, v in self.headers.items() } trading_identity = decode_as2_identity(headers.get('as2-from', '')) local_identity = decode_as2_identity(headers.get('as2-to', '')) agreement = self._get_primary_agreement(local_identity, trading_identity) else: agreement = self._get_agreement(agreement_id) context = AS2Context(agreement, None) self._receive_async_mdn(self.headers, self.body, context)
def _build_received_as2_context(self, id, message): if is_none_or_whitespace(id): headers = { k.lower().replace('_', '-'): v for k, v in self.headers.items() } trading_identity = decode_as2_identity(headers.get('as2-from', '')) local_identity = decode_as2_identity(headers.get('as2-to', '')) agreement = self._get_primary_agreement(local_identity, trading_identity) else: agreement = self._get_agreement(id) message.local_identity = agreement.local_identity message.trading_identity = agreement.trading_identity message.agreement_id = agreement.id return AS2Context(agreement, message)
def test_trace_error_info_is_required(self): agr = Agreement(id='A01') ctx = AS2Context(agr, None) ctx.trace_error(None)
def test_Agreement_is_required(self): AS2Context(None, None)
def get_as2_context(self): pb_cert = Certificate( id="1", subject="AS2.SelfTesting.Newegg.com", thumbprint="B7A5ED759898822397CCCE96BD493D3203CE83AC", type=CertificateType.public, description="Newegg Production Test Cert", dfs_file_path= "http://neg-app-img/EaaS/Certificate/B7A5ED759898822397CCCE96BD493D3203CE83AC.cer", local_file_path=self._get_public_cert_path( "B7A5ED759898822397CCCE96BD493D3203CE83AC.pem"), dfs_ca_file_path=None, local_ca_file_path=None, pass_phrase=None, is_need_verify=True) pr_cert = Certificate( id="2", subject="Tp1 private", thumbprint="CB17BDDF500C14A049C3A18D6A292174B27F198E", type=CertificateType.private, description="TP1 private Cert", dfs_file_path= "http://neg-app-img/EaaS/Certificate/CB17BDDF500C14A049C3A18D6A292174B27F198E.cer", local_file_path=self._get_private_cert_path( "CB17BDDF500C14A049C3A18D6A292174B27F198E.pem"), dfs_ca_file_path=None, local_ca_file_path=None, pass_phrase="123456", is_need_verify=True) out_agr = OutboundAgreement( is_signed=True, is_compressed=False, is_encrypted=True, target_url="http://10.16.86.29:9009/as2-test/receive", message_encryption_certificate=pb_cert, message_encryption_algorithm=EncryptionAlgorithm.des_3, message_signature_certificate=pr_cert, message_signature_algorithm=SignatureAlgorithm.sha_1, message_content_type=MessageContentType.edi_x12, is_request_mdn=True, mdn_mode=MdnMode.sync, is_mdn_signed=True, mdn_signature_algorithm=SignatureAlgorithm.sha_1, async_mdn_url=None, disposition_notification_to="*****@*****.**") in_agr = InboundAgreement( is_signed=True, is_compressed=False, is_encrypted=True, message_decrypt_certificate=pr_cert, message_verify_certificate=pb_cert, message_content_type=MessageContentType.edi_x12, mdn_confirmation_text='', is_request_mdn=True, mdn_mode=MdnMode.sync, is_mdn_signed=True, mdn_signature_algorithm=SignatureAlgorithm.sha_1, async_mdn_url=None) agr = Agreement(id="1", name="Tr_Newegg_Agreement_1", is_primary=True, local_identity="pyas2_01", trading_identity="Newegg", local_partner_id="1", trading_partner_id="1", inbound_agreement=in_agr, outbound_agreement=out_agr, status=AgreementStatus.active) as2_message = AS2Message( key="1", business_id="", message_id=email.utils.make_msgid().strip('<>'), direction="outbound") ctx = AS2Context(agr, as2_message) return ctx