Ë
    Îêj:	  ã                   ó  — d dl Z d dlZd dlZd dlZd dlZd dlZ ej                  e«      j                  «       j                  d   Z
e
dz  ZdZd„ Zefd„Z G d„ dej                  «      Zed	k(  r ej$                  «        yy)
é    Né   z-receiver/ym-sync-catalog-v2-atomic-review.phpz$4b4fba28-49b7-4d18-87fb-63a1a5c1930ec                 ód   — t        j                  t        dz  d| › d�z  j                  «       «      S )NÚfixtureszatomic-z.json)ÚjsonÚloadsÚROOTÚ	read_text)Únames    úl/var/www/app.yachtmemory.net/YM-Source-Catalog-v2-Atomic-Receipts-0.1.0-REVIEW/tests/test_atomic_contract.pyÚfixturer      s,   € Ü�:‰:”t˜J‘¨°°°eÐ'<Ñ<×GÑGÓIÓJÐJó    c                 ó|   — t        j                  dt        t        «      d|gt	        j
                  | «      dd¬«      S )NÚphpz--validate-onlyT)ÚinputÚtextÚcapture_output)Ú
subprocessÚrunÚstrÚPHPr   Údumps)ÚobjÚvessels     r   Úcheckr      s0   € Ü�>‰>˜5¤¤S£Ð*;¸FÐCÌ$Ï*É*ÐUXË/Ð_cÐswÔxÐxr   c                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚContractc                 ó:  — dD ]Š  }| j                  |¬«      5  t        t        |«      «      }| j                  |j                  d|j
                  «       | j                  t        j                  |j                  «      d   d«       d d d «       ŒŒ y # 1 sw Y   Œ—xY w)N©Úheaderú	chunk-000z	chunk-001Úfinalize)Únr   ÚstatusÚ	validated)	ÚsubTestr   r   ÚassertEqualÚ
returncodeÚstderrr   r   Ústdout)Úselfr"   Úrs      r   Útest_fixture_envelopes_validz%Contract.test_fixture_envelopes_valid   s‰   € Ø>ò 	MˆAØ—‘ �Ó"ñ MÜœ ›
Ó#� D×$4Ñ$4°Q·\±\À!ÀAÇHÁHÔ$MØ× Ñ ¤§¡¨A¯H©HÓ!5°hÑ!?ÀÔL÷Mð Mñ	M÷Mð Mús   ˜A.BÂB	c                 ó~   — t        d«      }|dxx   dz  cc<   | j                  t        |«      j                  d«       y )Nr   Úpayload_jsonú r   ©r   ÚassertNotEqualr   r'   ©r*   Úxs     r   Útest_modified_payload_rejectedz'Contract.test_modified_payload_rejected   s5   € Ü
�(Ó
ˆ˜A˜nÓ-¨sÑ2Ó-°4×3FÑ3FÄuÈQÃx×GZÑGZÐ[\Õ3]r   c                 ób   — | j                  t        t        d«      d«      j                  d«       y )Nr   z$17b19e77-0746-4cd6-9e37-31b2564ebddbr   )r1   r   r   r'   )r*   s    r   Útest_identity_rejectedzContract.test_identity_rejected   s&   € Ø×ÑœE¤'¨(Ó"3Ð4ZÓ[×fÑfÐghÕir   c                 ón   — t        d«      }d|d<   | j                  t        |«      j                  d«       y )Nr    ÚbadÚ
entity_keyr   r0   r2   s     r   Ú"test_changed_sequence_key_rejectedz+Contract.test_changed_sequence_key_rejected   s.   € Ü
�+Ó
ˆ¨u˜q ™°T×5HÑ5HÌÈqË×I\ÑI\Ð]^Õ5_r   c                 ón   — t        d«      }d|d<   | j                  t        |«      j                  d«       y )Nr!   é   Úentity_revisionr   )r   r&   r   r'   r2   s     r   Ú+test_finalize_revision_unverifiable_offlinez4Contract.test_finalize_revision_unverifiable_offline   s0   € ä
�*Ó
ˆ°1˜aÐ 1Ñ2Ø×Ñœ˜q›×,Ñ,¨QÕ/r   c                 ó¶   — dD ]T  }t        |«      }| j                  t        j                  |d   j	                  «       «      j                  «       |d   «       ŒV y )Nr   r.   Úcontent_hash)r   r&   ÚhashlibÚsha256ÚencodeÚ	hexdigest)r*   r"   r3   s      r   Útest_fixtures_hasheszContract.test_fixtures_hashes   sS   € Ø>ò 	gˆAÜ�a‹jˆAØ×ÑœWŸ^™^¨A¨nÑ,=×,DÑ,DÓ,FÓG×QÑQÓSÐTUÐVdÑTeÕfñ	gr   c                 óz   — t         dz  j                  «       }| j                  d|«       | j                  d|«       y )Nzsql/receipts_test_only.sqlz%PRIMARY KEY (vessel_id,outbox_seq_no)z content_hash BINARY(32) NOT NULL)r   r	   ÚassertIn)r*   Úsqls     r   Ú'test_receipt_table_has_identical_layoutz0Contract.test_receipt_table_has_identical_layout   s4   € ÜÐ.Ñ.×9Ñ9Ó;ˆØ�‰Ð=¸cÔBØ�‰Ð8¸Õ=r   c                 óà   — t         j                  «       }| j                  d|«       | j                  d|«       | j                  d|«       | j                  d|«       | j                  d|«       y )Nz$db->beginTransaction();zINSERT INTO sync_receiptsz $result['status']==='incomplete'z%'finalize manifest/revision mismatch'Ú%INJECTED_ATOMIC_LOST_ACK_AFTER_COMMIT)r   r	   rG   )r*   Úsrcs     r   Útest_atomic_design_invariantsz&Contract.test_atomic_design_invariants"   sX   € Ü�M‰M‹OˆØ�‰Ð0°Ô5Ø�‰Ð1°#Ô6Ø�‰Ð8¸Ô=Ø�‰Ð=¸cÔBØ�‰Ð=¸cÕBr   N)Ú__name__Ú
__module__Ú__qualname__r,   r4   r6   r:   r>   rE   rI   rM   © r   r   r   r   
   s0   „ òMò
^òjò`ò0ògò>óCr   r   Ú__main__)ÚcopyrA   r   Úpathlibr   ÚunittestÚPathÚ__file__ÚresolveÚparentsr   r   ÚVESSELr   r   ÚTestCaser   rN   ÚmainrQ   r   r   ú<module>r]      s|   ðß 4× 4× 4Ø€W‡\�\�(Ó×#Ñ#Ó%×-Ñ-¨aÑ0€ØÐ	8Ñ8€Ø-€òKàó yôCˆx× Ñ ô Cð> ˆZÒ˜˜Ÿ™�Ðr   