def test_valid_manage_sell_offer_operation(self): raw_data = load_horizon_file("operations/manage_sell_offer.json") parsed_data = ManageSellOfferOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150661572935458818") self.assertEqual(parsed_data.paging_token, "150661572935458818") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GBLKRATZODTSJNU7XTB5HY5VAAN63CPRT77UYZT2VLCNXE7F3YHSW22M", ) self.assertEqual(parsed_data.type, "manage_sell_offer") self.assertEqual(parsed_data.type_i, 3) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 6, 12, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "559fa74a4c492e2bc8402b77b1aec28725bf094825e3b78d571f2160501d0f56", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual(parsed_data.amount, Decimal("478.6351404")) self.assertEqual(parsed_data.price, Decimal("32.6639943")) self.assertEqual(parsed_data.price_r.n, 326639943) self.assertEqual(parsed_data.price_r.d, 10000000) self.assertEqual(parsed_data.buying_asset_type, "credit_alphanum4") self.assertEqual(parsed_data.buying_asset_code, "RMT") self.assertEqual( parsed_data.buying_asset_issuer, "GDEGOXPCHXWFYY234D2YZSPEJ24BX42ESJNVHY5H7TWWQSYRN5ZKZE3N", ) self.assertEqual(parsed_data.selling_asset_type, "native") self.assertEqual(parsed_data.selling_asset_code, None) self.assertEqual(parsed_data.selling_asset_issuer, None)
def test_valid_begin_sponsoring_future_reserves_operation(self): raw_data = load_horizon_file("operations/begin_sponsoring_future_reserves.json") parsed_data = BeginSponsoringFutureReservesOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150660619450806273") self.assertEqual(parsed_data.paging_token, "150660619450806273") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GDDUVW72OCNRAVL752HXYJQTXEJQRYHDWU76YKGDEWZ5HCATZBSKJM7Y", ) self.assertEqual(parsed_data.type, "begin_sponsoring_future_reserves") self.assertEqual(parsed_data.type_i, 16) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 5, 52, 6, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "41d80b1509a355d45271e0058c7ceac8ee616c2b5215bdb664ec55e50d2bad6c", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual( parsed_data.sponsored_id, "GDS6ULV46WVSO2USGIVTIUDYBL3ROBPQEEANE3AY6XZION25DCNFIE2R", )
def test_valid(self): raw_data = load_horizon_file("root.json") parsed_data = Root.parse_obj(raw_data) self.assertEqual( parsed_data.horizon_version, "2.2.0-7d7e58007af55e7697223009fd24daf76aa908e2", ) self.assertEqual( parsed_data.core_version, "stellar-core 16.0.0 (0e35ac6ef382391096dbe4443197051452a3ce50)", ) self.assertEqual(parsed_data.ingest_latest_ledger, 35075520) self.assertEqual(parsed_data.history_latest_ledger, 35075520) self.assertEqual( parsed_data.history_latest_ledger_closed_at, datetime.datetime(2021, 4, 24, 1, 31, 8, tzinfo=datetime.timezone.utc), ) self.assertEqual(parsed_data.history_elder_ledger, 2) self.assertEqual(parsed_data.core_latest_ledger, 35075520) self.assertEqual( parsed_data.network_passphrase, "Public Global Stellar Network ; September 2015", ) self.assertEqual(parsed_data.current_protocol_version, 16) self.assertEqual(parsed_data.core_supported_protocol_version, 16) self.assertEqual(parsed_data.links.self.href, "https://horizon.stellar.org/") self.assertEqual(parsed_data.links.self.templated, None)
def test_valid_create_account_operation(self): raw_data = load_horizon_file("operations/create_account.json") parsed_data = CreateAccountOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150661852106629126") self.assertEqual(parsed_data.paging_token, "150661852106629126") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GDYG6NVTFCY6HPBRQ3SQNKTDZUR7SS6WAWNEAKAFJW5EMKDGQLPG523C", ) self.assertEqual(parsed_data.type, "create_account") self.assertEqual(parsed_data.type_i, 0) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 6, 17, 55, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "2d634bd0b1f5006a11555309fc812ff0ae21020c534697954631fd17b042eb06", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual( parsed_data.account, "GCYXLFYRSJWRPQ7JYSPHDNFRNXQ377BNUHF3TDZCPCQMVJS2QKMXCT2E", ) self.assertEqual( parsed_data.funder, "GDYG6NVTFCY6HPBRQ3SQNKTDZUR7SS6WAWNEAKAFJW5EMKDGQLPG523C", ) self.assertEqual(parsed_data.starting_balance, Decimal("4.0000000"))
def test_valid_payment_operation(self): raw_data = load_horizon_file("operations/payment.json") parsed_data = PaymentOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150661113372200961") self.assertEqual(parsed_data.paging_token, "150661113372200961") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GA6PS2RUKTEEEDNG463HAJWSMNCMG2Z7Q4ALYFQOHIKS47POTBVAU4QV", ) self.assertEqual(parsed_data.type, "payment") self.assertEqual(parsed_data.type_i, 1) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 6, 2, 24, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "77d866660693f5c1550b1b5a8bb6583ded550e1c9687c68c83282443c8c91341", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual( parsed_data.from_, "GA6PS2RUKTEEEDNG463HAJWSMNCMG2Z7Q4ALYFQOHIKS47POTBVAU4QV", ) self.assertEqual( parsed_data.to, "GDLE7PMXCPKNALUQP6VLZTDUD2O5SJJ4GKKYXUME6KWHCPEAVGIWY6G6" ) self.assertEqual(parsed_data.amount, Decimal("67.7492240"))
def test_valid(self): raw_data = load_horizon_file("asset_stat.json") parsed_data = AssetStat.parse_obj(raw_data) self.assertEqual(parsed_data.asset_type, "credit_alphanum4") self.assertEqual(parsed_data.asset_code, "ZX2") self.assertEqual( parsed_data.asset_issuer, "GDBSQA2GDRBRZVWOMRLZ6V4ZN2UESRQAEIHGKCZDR3YO4QIMC3CLHPR3", ) self.assertEqual( parsed_data.paging_token, "ZX2_GDBSQA2GDRBRZVWOMRLZ6V4ZN2UESRQAEIHGKCZDR3YO4QIMC3CLHPR3_credit_alphanum4", ) self.assertEqual(parsed_data.num_accounts, 1) self.assertEqual(parsed_data.num_claimable_balances, 0) self.assertEqual(parsed_data.num_liquidity_pools, 0) self.assertEqual(parsed_data.amount, Decimal("1001")) self.assertEqual(parsed_data.accounts.authorized, 1) self.assertEqual( parsed_data.accounts.authorized_to_maintain_liabilities, 0) self.assertEqual(parsed_data.accounts.unauthorized, 0) self.assertEqual(parsed_data.claimable_balances_amount, Decimal("0")) self.assertEqual(parsed_data.liquidity_pools_amount, Decimal("0")) self.assertEqual(parsed_data.balances.authorized, Decimal("1001")) self.assertEqual( parsed_data.balances.authorized_to_maintain_liabilities, Decimal("0")) self.assertEqual(parsed_data.balances.unauthorized, Decimal("0")) self.assertEqual(parsed_data.flags.auth_required, False) self.assertEqual(parsed_data.flags.auth_revocable, False) self.assertEqual(parsed_data.flags.auth_immutable, False) self.assertEqual(parsed_data.flags.auth_clawback_enabled, False)
def test_valid_end_sponsoring_future_reserves_operation(self): raw_data = load_horizon_file("operations/end_sponsoring_future_reserves.json") parsed_data = EndSponsoringFutureReservesOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150660606565855256") self.assertEqual(parsed_data.paging_token, "150660606565855256") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GD6XEQ7YNR2EQIDWFX6AISIPKKVBC5GXBV4X5GL73QUUZK5GMWJIN3LW", ) self.assertEqual(parsed_data.type, "end_sponsoring_future_reserves") self.assertEqual(parsed_data.type_i, 17) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 5, 51, 49, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "4e4e2cc4ed2e31091db53762d74340f3689431b88321acc1c0935bbced6aa252", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual( parsed_data.begin_sponsor, "GDDUVW72OCNRAVL752HXYJQTXEJQRYHDWU76YKGDEWZ5HCATZBSKJM7Y", )
def test_valid_clawback_claimable_balance_operation(self): raw_data = load_horizon_file("operations/clawback_claimable_balance.json") parsed_data = ClawbackClaimableBalanceOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "3513936083165185") self.assertEqual(parsed_data.paging_token, "3513936083165185") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GD5YHBKE7FSUUZIOSL4ED6UKMM2HZAYBYGZI7KRCTMFDTOO6SGZCQB4Z", ) self.assertEqual(parsed_data.type, "clawback_claimable_balance") self.assertEqual(parsed_data.type_i, 20) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 5, 6, 3, 48, 5, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "8820306ee424f47fd1c16b28ab034a3bdab0147fc16c65b145ba1df5f338c8a2", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual( parsed_data.balance_id, "000000001fe36f3ce6ab6a6423b18b5947ce8890157ae77bb17faeb765814ad040b74ce1", )
def test_valid_revoke_sponsorship_operation(self): raw_data = load_horizon_file("operations/revoke_sponsorship.json") parsed_data = RevokeSponsorshipOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "2731345797189633") self.assertEqual(parsed_data.paging_token, "2731345797189633") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GDD6DIT7PDSB6PZ5B5SBUKQBIHZDWWBZN4LCFDEHYIYI4DNTC4WXL4ZO", ) self.assertEqual(parsed_data.type, "revoke_sponsorship") self.assertEqual(parsed_data.type_i, 18) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 25, 1, 46, 45, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "8a9cb28209126c9ac3691eca753f492606318268a0c3d27359e28ccd9bad0588", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual( parsed_data.account_id, "GBAG5JOFNNE7B2FXLZGLV56U5NR2ZFHRS6FALKCX3W5CND27W4DM7TBX", )
def test_valid_clawback_operation(self): raw_data = load_horizon_file("operations/clawback.json") parsed_data = ClawbackOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "3510036252856321") self.assertEqual(parsed_data.paging_token, "3510036252856321") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GCHYD6AWPR2PN66JFFDR63OEFO5RMOUGFL7D3BBUEMTJDMUFHPLNX2SC", ) self.assertEqual(parsed_data.type, "clawback") self.assertEqual(parsed_data.type_i, 19) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 5, 6, 2, 28, 28, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "7c4b7f6ef383afba397b20628b1f2556d72eb092dc8b875093e9b92cde1b4889", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual(parsed_data.asset_type, "credit_alphanum12") self.assertEqual(parsed_data.asset_code, "Hello") self.assertEqual( parsed_data.asset_issuer, "GCHYD6AWPR2PN66JFFDR63OEFO5RMOUGFL7D3BBUEMTJDMUFHPLNX2SC", ) self.assertEqual( parsed_data.from_, "GCDG7N63GJMJDI4627LY3XKNZARQNX3QFY6HAWON3JDAS3SCGINGQHEQ", ) self.assertEqual(parsed_data.amount, Decimal("1234"))
def test_valid(self): raw_data = load_horizon_file("offer.json") parsed_data = Offer.parse_obj(raw_data) self.assertEqual(parsed_data.id, "544689347") self.assertEqual(parsed_data.paging_token, "544689347") self.assertEqual( parsed_data.seller, "GBB7HYFEUJLJLABG7EGSY54HM3QISTVCS4O3EANIGX5YFCOJK7A6MZAA", ) self.assertEqual(parsed_data.selling.asset_type, "native") self.assertEqual(parsed_data.selling.asset_code, None) self.assertEqual(parsed_data.selling.asset_issuer, None) self.assertEqual(parsed_data.buying.asset_type, "credit_alphanum4") self.assertEqual(parsed_data.buying.asset_code, "SLVR") self.assertEqual( parsed_data.buying.asset_issuer, "GBZVELEQD3WBN3R3VAG64HVBDOZ76ZL6QPLSFGKWPFED33Q3234NSLVR", ) self.assertEqual(parsed_data.amount, Decimal("677.1953280")) self.assertEqual(parsed_data.price_r.n, 10000000) self.assertEqual(parsed_data.price_r.d, 17500001) self.assertEqual(parsed_data.price, Decimal("0.5714285")) self.assertEqual(parsed_data.last_modified_ledger, 35067578) self.assertEqual( parsed_data.last_modified_time, datetime.datetime(2021, 4, 23, 13, 34, 40, tzinfo=datetime.timezone.utc), )
def test_valid_manage_data_operation(self): raw_data = load_horizon_file("operations/manage_data.json") parsed_data = ManageDataOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150660585091022850") self.assertEqual(parsed_data.paging_token, "150660585091022850") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GDPNHOQWJG6EFYCSSBJTNZH6L7YVQKIAQOKQDH6HDDV2OTDVTFVAF5GN", ) self.assertEqual(parsed_data.type, "manage_data") self.assertEqual(parsed_data.type_i, 10) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 5, 51, 21, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "d050b7036b96b8eeb1735b9ed78b5d514b7f54126e519d8980c14b988ae6d479", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual(parsed_data.name, "MESSAGE_DATA_0") self.assertEqual( parsed_data.value, "UW1kaDJ5d2hmclJmWmQ2elFrcnpSdDdTM1dCOUFLQnJ3dHBIQ0RGUm5OWmhTcA==", )
def test_valid_claim_claimable_balance_operation(self): raw_data = load_horizon_file("operations/claim_claimable_balance.json") parsed_data = ClaimClaimableBalanceOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "2730894825627649") self.assertEqual(parsed_data.paging_token, "2730894825627649") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GAEY7JFLBBDD6PAUPVRVKMBNSL5W6GYMUOGJKNGHGFSFGJU6CT2IUARS", ) self.assertEqual(parsed_data.type, "claim_claimable_balance") self.assertEqual(parsed_data.type_i, 15) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 25, 1, 37, 30, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "ebf78969b439f9b6c0777695c76a668e5baabe747696fbef7fc7d40b5cbe9a6d", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual( parsed_data.balance_id, "00000000a5c8c85c12a32ec1b30fc1792a542ca38702afd78eb4fe524d028887cf6b6952", ) self.assertEqual( parsed_data.claimant, "GAEY7JFLBBDD6PAUPVRVKMBNSL5W6GYMUOGJKNGHGFSFGJU6CT2IUARS", )
def test_valid(self): raw_data = load_horizon_file("path.json") parsed_data = Path.parse_obj(raw_data) self.assertEqual(parsed_data.source_asset_type, "credit_alphanum4") self.assertEqual(parsed_data.source_asset_code, "CNY") self.assertEqual( parsed_data.source_asset_issuer, "GAREELUB43IRHWEASCFBLKHURCGMHE5IF6XSE7EXDLACYHGRHM43RFOX", ) self.assertEqual(parsed_data.source_amount, Decimal("39.9854243")) self.assertEqual(parsed_data.destination_asset_type, "credit_alphanum4") self.assertEqual(parsed_data.destination_asset_code, "BB1") self.assertEqual( parsed_data.destination_asset_issuer, "GD5J6HLF5666X4AZLTFTXLY46J5SW7EXRKBLEYPJP33S33MXZGV6CWFN", ) self.assertEqual(parsed_data.destination_amount, Decimal("5")) self.assertEqual(len(parsed_data.path), 2) self.assertEqual(parsed_data.path[0].asset_type, "native") self.assertEqual(parsed_data.path[0].asset_code, None) self.assertEqual(parsed_data.path[0].asset_issuer, None) self.assertEqual(parsed_data.path[1].asset_type, "credit_alphanum4") self.assertEqual(parsed_data.path[1].asset_code, "USD") self.assertEqual( parsed_data.path[1].asset_issuer, "GDUKMGUGDZQK6YHYA5Z6AY2G4XDSZPSZ3SW5UN3ARVMO6QSRDWP5YLEX", )
def test_valid_account_merge_operation(self): raw_data = load_horizon_file("operations/account_merge.json") parsed_data = AccountMergeOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150661877876133889") self.assertEqual(parsed_data.paging_token, "150661877876133889") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GBMZ7GUHNHT6TG4ITOBG46TKA5YMNH7ZKHHJSQRU6PNYBSAELLXNOFDE", ) self.assertEqual(parsed_data.type, "account_merge") self.assertEqual(parsed_data.type_i, 8) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 6, 18, 26, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "f86aaf456dc000e565ac89bd0b21abcedad4d3ab497bdb9fefa782c9e6ce8c98", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual( parsed_data.account, "GBMZ7GUHNHT6TG4ITOBG46TKA5YMNH7ZKHHJSQRU6PNYBSAELLXNOFDE", ) self.assertEqual( parsed_data.into, "GDYG6NVTFCY6HPBRQ3SQNKTDZUR7SS6WAWNEAKAFJW5EMKDGQLPG523C" )
def test_valid_path_payment_strict_send_operation(self): raw_data = load_horizon_file("operations/path_payment_strict_send.json") parsed_data = PathPaymentStrictSendOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150660589386170369") self.assertEqual(parsed_data.paging_token, "150660589386170369") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GDBKRQWEUJGRWWCAGK75L4PZXM2S3DQQIG6S43Y2GMN3IUFZWCLSRA46", ) self.assertEqual(parsed_data.type, "path_payment_strict_send") self.assertEqual(parsed_data.type_i, 13) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 5, 51, 27, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "add2a945914c8090a8f889e6fe6177c58fea0fe2c361893612462d0601f2eb31", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual(parsed_data.asset_type, "credit_alphanum4") self.assertEqual(parsed_data.asset_code, "BTC") self.assertEqual( parsed_data.asset_issuer, "GAUTUYY2THLF7SGITDFMXJVYH3LHDSMGEAKSBU267M2K7A3W543CKUEF", ) self.assertEqual( parsed_data.from_, "GDBKRQWEUJGRWWCAGK75L4PZXM2S3DQQIG6S43Y2GMN3IUFZWCLSRA46", ) self.assertEqual( parsed_data.to, "GDBKRQWEUJGRWWCAGK75L4PZXM2S3DQQIG6S43Y2GMN3IUFZWCLSRA46" ) self.assertEqual(parsed_data.amount, Decimal("0.0005045")) self.assertEqual(len(parsed_data.path), 2) self.assertEqual(parsed_data.path[0].asset_type, "credit_alphanum4") self.assertEqual(parsed_data.path[0].asset_code, "ETH") self.assertEqual( parsed_data.path[0].asset_issuer, "GBDEVU63Y6NTHJQQZIKVTC23NWLQVP3WJ2RI2OTSJTNYOIGICST6DUXR", ) self.assertEqual(parsed_data.path[1].asset_type, "credit_alphanum4") self.assertEqual(parsed_data.path[1].asset_code, "USDT") self.assertEqual( parsed_data.path[1].asset_issuer, "GCQTGZQQ5G4PTM2GL7CDIFKUBIPEC52BROAQIAPW53XBRJVN6ZJVTG6V", ) self.assertEqual(parsed_data.source_amount, Decimal("57.4988800")) self.assertEqual(parsed_data.destination_min, Decimal("0.0004995")) self.assertEqual(parsed_data.source_asset_type, "native") self.assertEqual(parsed_data.source_asset_code, None) self.assertEqual(parsed_data.source_asset_issuer, None)
def test_transaction_muxed_account_valid(self): raw_data = load_horizon_file("transaction_muxed_account.json") parsed_data = Transaction.parse_obj(raw_data) self.assertEqual( parsed_data.account_muxed, "MDSPXRRA5D4WD4LCR6NNZEHQJHHZ74UCPHXJT4SC7HCFWJFOFOLUUAAAAAAAAAAAPMRCO", ) self.assertEqual(parsed_data.account_muxed_id, 123) self.assertEqual( parsed_data.fee_account_muxed, "MDSPXRRA5D4WD4LCR6NNZEHQJHHZ74UCPHXJT4SC7HCFWJFOFOLUUAAAAAAAAAAAPMRCO", ) self.assertEqual(parsed_data.fee_account_muxed_id, 123)
def test_valid_path_payment_strict_receive_operation(self): raw_data = load_horizon_file("operations/path_payment_strict_receive.json") parsed_data = PathPaymentStrictReceiveOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150661572933464065") self.assertEqual(parsed_data.paging_token, "150661572933464065") self.assertEqual(parsed_data.transaction_successful, False) self.assertEqual( parsed_data.source_account, "GDQLBBDNG5L3TZLR5RPVQFT4CUORSTHWX3GJBHCCADXBJV55ZHW6CL5B", ) self.assertEqual(parsed_data.type, "path_payment_strict_receive") self.assertEqual(parsed_data.type_i, 2) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 6, 12, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "999119fca29afe1d994fb744e80afbb76efc9a4abb56e6ed8209b1248c0f629e", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual(parsed_data.asset_type, "native") self.assertEqual(parsed_data.asset_code, None) self.assertEqual(parsed_data.asset_issuer, None) self.assertEqual( parsed_data.from_, "GDQLBBDNG5L3TZLR5RPVQFT4CUORSTHWX3GJBHCCADXBJV55ZHW6CL5B", ) self.assertEqual( parsed_data.to, "GDQLBBDNG5L3TZLR5RPVQFT4CUORSTHWX3GJBHCCADXBJV55ZHW6CL5B" ) self.assertEqual(parsed_data.amount, Decimal("2386.8885355")) self.assertEqual(parsed_data.source_amount, Decimal("0")) self.assertEqual(parsed_data.source_max, Decimal("2386.8885355")) self.assertEqual(parsed_data.source_asset_type, "native") self.assertEqual(parsed_data.source_asset_code, None) self.assertEqual(parsed_data.source_asset_issuer, None) self.assertEqual(len(parsed_data.path), 2) self.assertEqual(parsed_data.path[0].asset_type, "credit_alphanum4") self.assertEqual(parsed_data.path[0].asset_code, "USDC") self.assertEqual( parsed_data.path[0].asset_issuer, "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", ) self.assertEqual(parsed_data.path[1].asset_type, "credit_alphanum4") self.assertEqual(parsed_data.path[1].asset_code, "SLT") self.assertEqual( parsed_data.path[1].asset_issuer, "GCKA6K5PCQ6PNF5RQBF7PQDJWRHO6UOGFMRLK3DYHDOI244V47XKQ4GP", )
def test_valid_change_trust_operation_liquidity_pool_id(self): raw_data = load_horizon_file("operations/change_trust_liquidity_pool_id.json") parsed_data = ChangeTrustOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "1578868632723457") self.assertEqual(parsed_data.paging_token, "1578868632723457") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GAQXAWHCM4A7SQCT3BOSVEGRI2OOB7LO2CMFOYFF6YRXU4VQSB5V2V2K", ) self.assertEqual( parsed_data.source_account_muxed, "MAQXAWHCM4A7SQCT3BOSVEGRI2OOB7LO2CMFOYFF6YRXU4VQSB5V2AAAAAAAAE4DUGF2O", ) self.assertEqual(parsed_data.source_account_muxed_id, 1278881) self.assertEqual(parsed_data.type, "change_trust") self.assertEqual(parsed_data.type_i, 6) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 10, 7, 18, 2, 57, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "4ebd36d6ae43622d606a0b7c59fd28d1c0b07d96bae7deb5c86e7b93a9c1c5c3", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual(parsed_data.asset_type, "liquidity_pool_shares") self.assertEqual( parsed_data.liquidity_pool_id, "2c0bfa623845dd101cbf074a1ca1ae4b2458cc8d0104ad65939ebe2cd9054355", ) self.assertEqual(parsed_data.limit, Decimal("922337203685.4775807")) self.assertEqual( parsed_data.trustee, None, ) self.assertEqual( parsed_data.trustor, "GAQXAWHCM4A7SQCT3BOSVEGRI2OOB7LO2CMFOYFF6YRXU4VQSB5V2V2K", ) self.assertEqual( parsed_data.trustor_muxed, "MAQXAWHCM4A7SQCT3BOSVEGRI2OOB7LO2CMFOYFF6YRXU4VQSB5V2AAAAAAAAE4DUGF2O", ) self.assertEqual( parsed_data.trustor_muxed_id, 1278881, )
def test_valid_create_claimable_balance_operation(self): raw_data = load_horizon_file("operations/create_claimable_balance.json") parsed_data = CreateClaimableBalanceOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150684654087864322") self.assertEqual(parsed_data.paging_token, "150684654087864322") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GBHNGLLIE3KWGKCHIKMHJ5HVZHYIK7WTBE4QF5PLAKL4CJGSEU7HZIW5", ) self.assertEqual(parsed_data.type, "create_claimable_balance") self.assertEqual(parsed_data.type_i, 14) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 14, 16, 59, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "bc00281659b1b3d25674fd078c294036476dbbde37403e70ab66b651fd829c18", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual( parsed_data.sponsor, "GBGJB2WEIQCCUZYISUKAFRPR46LQ62O7W6CDKN52NVROG44LLL3L73X2", ) self.assertEqual( parsed_data.asset, "USDPEND:GBHNGLLIE3KWGKCHIKMHJ5HVZHYIK7WTBE4QF5PLAKL4CJGSEU7HZIW5", ) self.assertEqual(parsed_data.amount, Decimal("900")) self.assertEqual(len(parsed_data.claimants), 2) self.assertEqual( parsed_data.claimants[0].destination, "GBHNGLLIE3KWGKCHIKMHJ5HVZHYIK7WTBE4QF5PLAKL4CJGSEU7HZIW5", ) self.assertEqual(parsed_data.claimants[0].predicate.unconditional, True) self.assertEqual( parsed_data.claimants[1].destination, "GCBMP2WKIAX7KVDRCSFXJWFM5P7HDCGTCC76U5XR52OYII6AOWS7G3DT", ) self.assertEqual( parsed_data.claimants[1].predicate.not_predicate.abs_before, datetime.datetime(2021, 4, 26, 4, 0, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.claimants[1].predicate.not_predicate.abs_before_epoch, 1619409600, )
def test_valid_set_options_operation(self): raw_data = load_horizon_file("operations/set_options.json") parsed_data = SetOptionsOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "2696453482881025") self.assertEqual(parsed_data.paging_token, "2696453482881025") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GASM5Q5QTMV7K45AWLFY7CAJGSPXVRH3MUNN7N3P7X4JHAFSB6RXHWCC", ) self.assertEqual(parsed_data.type, "set_options") self.assertEqual(parsed_data.type_i, 5) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 13, 55, 29, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "125c35e68b82b2a77970f1ccfa737e3a2e7b12e6c6bc683f9d415ed77a98f54e", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual(len(parsed_data.set_flags), 1) self.assertEqual(parsed_data.set_flags[0], 1) self.assertEqual(len(parsed_data.set_flags_s), 1) self.assertEqual(parsed_data.set_flags_s[0], "auth_required") self.assertEqual(len(parsed_data.clear_flags), 1) self.assertEqual(parsed_data.clear_flags[0], 2) self.assertEqual(len(parsed_data.clear_flags_s), 1) self.assertEqual(parsed_data.clear_flags_s[0], "auth_revocable") self.assertEqual(parsed_data.sponsor, None) self.assertEqual(parsed_data.home_domain, "example.com") self.assertEqual( parsed_data.inflation_dest, "GDLSZ37Q6AJN6UNQPXIWNRAB3LETWAASA2H3OWNHRUWMG2LVU3A45S6D", ) self.assertEqual(parsed_data.master_key_weight, 10) self.assertEqual( parsed_data.signer_key, "GDLSZ37Q6AJN6UNQPXIWNRAB3LETWAASA2H3OWNHRUWMG2LVU3A45S6D", ) self.assertEqual(parsed_data.signer_weight, 10) self.assertEqual(parsed_data.low_threshold, 1) self.assertEqual(parsed_data.med_threshold, 10) self.assertEqual(parsed_data.high_threshold, 20)
def test_valid(self): raw_data = load_horizon_file("ledger.json") parsed_data = Ledger.parse_obj(raw_data) self.assertEqual( parsed_data.id, "548393ec23959e1959a62f003029ecf96be89e13df036073bf64918996ec4227", ) self.assertEqual(parsed_data.paging_token, "115352659677937664") self.assertEqual( parsed_data.hash, "548393ec23959e1959a62f003029ecf96be89e13df036073bf64918996ec4227", ) self.assertEqual( parsed_data.prev_hash, "446d6eca81dd6db6daf50d93ca9d297bd60b1233b91de3765cccdf503cfffcb0", ) self.assertEqual(parsed_data.sequence, 26857634) self.assertEqual(parsed_data.successful_transaction_count, 27) self.assertEqual(parsed_data.failed_transaction_count, 1) self.assertEqual(parsed_data.operation_count, 133) self.assertEqual(parsed_data.tx_set_operation_count, 134) self.assertEqual( parsed_data.closed_at, datetime.datetime(2019, 11, 18, 19, 27, 21, tzinfo=datetime.timezone.utc), ) self.assertEqual(parsed_data.total_coins, Decimal("105443902087.3472865")) self.assertEqual(parsed_data.fee_pool, Decimal("1807038.9789761")) self.assertEqual(parsed_data.base_fee_in_stroops, 100) self.assertEqual(parsed_data.base_reserve_in_stroops, 5000000) self.assertEqual(parsed_data.max_tx_set_size, 1000) self.assertEqual(parsed_data.protocol_version, 12) self.assertEqual( parsed_data.header_xdr, "AAAADERtbsqB3W222vUNk8qdKXvWCxIzuR3jdlzM31A8//ywoQieYsSc05/BpgEqnLR7fKXz7t0K42V7NOjbGZA/wTEAAAAAXdLwmQAAAAAAAAAAplf68mTg/Z/DDyEZeLCoNbJnMZm4SYsYWjUjuDOSfPeRNFE4n9Hm19yKutjwVurFjk72JKVHI8J+ELwLZgWsywGZ0KIOoh6z7HlbYQAAEG9XKhRBAAABFgAAAAAH9M6YAAAAZABMS0AAAAPop9+CeMs1/7BHgFltiQPH+VT+ACYb5P0lSXh7RpBLtd34kEpeL8qKJxYz4ufmkQ2lEv/HMR/i3bi1Rt0PYj185/0kAZ3ZRbmm2mVRMzmaCOak1rn2vejHXDh+MGlr6D6vI2tc/M6VIumTKUa7SgumWDyW0r5FcJTbu/FXDQ/6C4YAAAAA", )
def test_valid(self): raw_data = load_horizon_file("trade_aggregation.json") parsed_data = TradeAggregation.parse_obj(raw_data) self.assertEqual(parsed_data.timestamp, 1619081700000) self.assertEqual(parsed_data.trade_count, 1) self.assertEqual(parsed_data.base_volume, Decimal("3.9000000")) self.assertEqual(parsed_data.counter_volume, Decimal("0.0000351")) self.assertEqual(parsed_data.avg, Decimal("0.0000090")) self.assertEqual(parsed_data.high, Decimal("0.0000090")) self.assertEqual(parsed_data.high_r.n, 9) self.assertEqual(parsed_data.high_r.d, 1000000) self.assertEqual(parsed_data.low, Decimal("0.0000090")) self.assertEqual(parsed_data.low_r.n, 9) self.assertEqual(parsed_data.low_r.d, 1000000) self.assertEqual(parsed_data.open, Decimal("0.0000090")) self.assertEqual(parsed_data.open_r.n, 9) self.assertEqual(parsed_data.open_r.d, 1000000) self.assertEqual(parsed_data.close, Decimal("0.0000090")) self.assertEqual(parsed_data.close_r.n, 9) self.assertEqual(parsed_data.close_r.d, 1000000)
def test_valid_change_trust_operation_asset(self): raw_data = load_horizon_file("operations/change_trust_asset.json") parsed_data = ChangeTrustOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150661512804089860") self.assertEqual(parsed_data.paging_token, "150661512804089860") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GA26UJZUXR5Q2VMTJHAFS2DV6DKFRWBIN7JKDALGYFEXTRNGX5K6DEAZ", ) self.assertEqual(parsed_data.type, "change_trust") self.assertEqual(parsed_data.type_i, 6) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 6, 10, 44, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "c96337fca2de58731dbfd7a70e90e1078af796e8c5b8f621584c4565311be4c1", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual( parsed_data.sponsor, "GCZGSFPITKVJPJERJIVLCQK5YIHYTDXCY45ZHU3IRCUC53SXSCAL44JV", ) self.assertEqual(parsed_data.asset_type, "credit_alphanum4") self.assertEqual(parsed_data.asset_code, "USDC") self.assertEqual( parsed_data.asset_issuer, "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", ) self.assertEqual(parsed_data.limit, Decimal("922337203685.4775807")) self.assertEqual( parsed_data.trustee, "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN", ) self.assertEqual( parsed_data.trustor, "GA26UJZUXR5Q2VMTJHAFS2DV6DKFRWBIN7JKDALGYFEXTRNGX5K6DEAZ", )
def test_valid_liquidity_pool(self): raw_data = load_horizon_file("trade_liquidity_pool.json") parsed_data = Trade.parse_obj(raw_data) self.assertEqual(parsed_data.id, "1567602933510145-0") self.assertEqual(parsed_data.paging_token, "1567602933510145-0") self.assertEqual( parsed_data.ledger_close_time, datetime.datetime(2021, 10, 7, 14, 13, 20, tzinfo=datetime.timezone.utc), ) self.assertEqual(parsed_data.offer_id, None) self.assertEqual(parsed_data.trade_type, "liquidity_pool") self.assertEqual(parsed_data.liquidity_pool_fee_bp, 30) self.assertEqual(parsed_data.base_offer_id, "4613253621360898049") self.assertEqual( parsed_data.base_account, "GCUGVB6HXX56LMAYLTD2OJRJYGRGQRHQ4H5WFZRCWG4WOPCJSLFCWUZA", ) self.assertEqual(parsed_data.base_amount, Decimal("10.0000000")) self.assertEqual(parsed_data.base_asset_type, "native") self.assertEqual(parsed_data.base_asset_code, None) self.assertEqual(parsed_data.base_asset_issuer, None) self.assertEqual( parsed_data.counter_liquidity_pool_id, "2389378a6156eedfac66daa000d24c926431c3e667b9f754771964f27a6da6ab", ) self.assertEqual(parsed_data.counter_offer_id, None) self.assertEqual( parsed_data.counter_account, None, ) self.assertEqual(parsed_data.counter_amount, Decimal("6475.7567056")) self.assertEqual(parsed_data.counter_asset_type, "credit_alphanum12") self.assertEqual(parsed_data.counter_asset_code, "BTCLN") self.assertEqual( parsed_data.counter_asset_issuer, "GD4UTLD46SWG5KCUVBRWFSFCUDISYNEJ2AF5FNB67ORAE6K7ZSAXH5O7", ) self.assertEqual(parsed_data.base_is_seller, False) self.assertEqual(parsed_data.price.n, 64757567056) self.assertEqual(parsed_data.price.d, 100000000)
def test_valid_inflation_operation(self): raw_data = load_horizon_file("operations/inflation.json") parsed_data = InflationOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "85376614040350721") self.assertEqual(parsed_data.paging_token, "85376614040350721") self.assertEqual(parsed_data.transaction_successful, False) self.assertEqual( parsed_data.source_account, "GDC2XPNEM4YAH22FK2TW7FSVGWQRGZGXLA3DAJLHNJ7YL5L5RSIXXXXX", ) self.assertEqual(parsed_data.type, "inflation") self.assertEqual(parsed_data.type_i, 9) self.assertEqual( parsed_data.created_at, datetime.datetime(2018, 9, 8, 5, 0, 7, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "25fca20b8d726ecced601b5ec230c3ef02852bbdc3aa082e9f6131a0ccf50ece", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None)
def test_valid(self): raw_data = load_horizon_file("order_book_summary.json") parsed_data = OrderBookSummary.parse_obj(raw_data) self.assertEqual(parsed_data.base.asset_type, "native") self.assertEqual(parsed_data.base.asset_code, None) self.assertEqual(parsed_data.base.asset_issuer, None) self.assertEqual(parsed_data.counter.asset_type, "credit_alphanum4") self.assertEqual(parsed_data.counter.asset_code, "BTC") self.assertEqual( parsed_data.counter.asset_issuer, "GATEMHCCKCY67ZUCKTROYN24ZYT5GK4EQZ65JJLDHKHRUZI3EUEKMTCH", ) self.assertEqual(len(parsed_data.bids), 20) self.assertEqual(parsed_data.bids[0].amount, Decimal("0.0010503")) self.assertEqual(parsed_data.bids[0].price, Decimal("0.0000070")) self.assertEqual(parsed_data.bids[0].price_r.n, 7) self.assertEqual(parsed_data.bids[0].price_r.d, 1000000) self.assertEqual(len(parsed_data.asks), 20) self.assertEqual(parsed_data.asks[0].amount, Decimal("485.0714286")) self.assertEqual(parsed_data.asks[0].price, Decimal("0.0000084")) self.assertEqual(parsed_data.asks[0].price_r.n, 21) self.assertEqual(parsed_data.asks[0].price_r.d, 2500000)
def test_unconditional_valid(self): raw_data = load_horizon_file("claimable_balance_unconditional.json") parsed_data = ClaimableBalance.parse_obj(raw_data) self.assertEqual( parsed_data.id, "0000000035950db8eb2f303c37b67890aff15a26b5c16693aba4b40dcd31b54162e60456", ) self.assertEqual( parsed_data.asset, "USDS:GBK4AYTOYIAYT4UJECSQGMACUWLKYOOM4VCAUUZ3Y3FG5XD2LYK3FGK2", ) self.assertEqual(parsed_data.amount, Decimal("0.1000000")) self.assertEqual( parsed_data.sponsor, "GDDGK5C7UQWC7AEFZZVO7KXRXZVP2BBQJ2IQFAIROKME2O3XQR2CMVC7", ) self.assertEqual(parsed_data.last_modified_ledger, 35068305) self.assertEqual( parsed_data.last_modified_time, datetime.datetime(2021, 4, 23, 14, 40, 19, tzinfo=datetime.timezone.utc), ) self.assertEqual(len(parsed_data.claimants), 1) self.assertEqual( parsed_data.claimants[0].destination, "GANVXZ2DQ2FFLVCBSVMBBNVWSXS6YVEDP247EN4C3CM3I32XR4U3OU2I", ) self.assertEqual(parsed_data.claimants[0].predicate.unconditional, True) self.assertEqual(parsed_data.flags.clawback_enabled, False) self.assertEqual( parsed_data.paging_token, "35068305-0000000035950db8eb2f303c37b67890aff15a26b5c16693aba4b40dcd31b54162e60456", )
def test_valid_create_passive_sell_offer_operation(self): raw_data = load_horizon_file("operations/create_passive_sell_offer.json") parsed_data = CreatePassiveSellOfferOperation.parse_obj(raw_data) self.assertEqual(parsed_data.id, "150701833957081089") self.assertEqual(parsed_data.paging_token, "150701833957081089") self.assertEqual(parsed_data.transaction_successful, True) self.assertEqual( parsed_data.source_account, "GCQPF34D4NP66RYULISYRSBS52M5FFZ2JVJ4LMQTQXDI2XGP6UDSE3IB", ) self.assertEqual(parsed_data.type, "create_passive_sell_offer") self.assertEqual(parsed_data.type_i, 4) self.assertEqual( parsed_data.created_at, datetime.datetime(2021, 4, 24, 20, 17, 32, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.transaction_hash, "b18f88e11353f60532eabbef17d76ed25eebc31f9448e765cf1cfdbbf4451e54", ) self.assertEqual(parsed_data.transaction, None) self.assertEqual(parsed_data.sponsor, None) self.assertEqual(parsed_data.amount, Decimal("0.0001000")) self.assertEqual(parsed_data.price, Decimal("1.0000000")) self.assertEqual(parsed_data.price_r.n, 1) self.assertEqual(parsed_data.price_r.d, 1) self.assertEqual(parsed_data.buying_asset_type, "credit_alphanum4") self.assertEqual(parsed_data.buying_asset_code, "USA") self.assertEqual( parsed_data.buying_asset_issuer, "GCQPF34D4NP66RYULISYRSBS52M5FFZ2JVJ4LMQTQXDI2XGP6UDSE3IB", ) self.assertEqual(parsed_data.selling_asset_type, "credit_alphanum12") self.assertEqual(parsed_data.selling_asset_code, "MONEY") self.assertEqual( parsed_data.selling_asset_issuer, "GA2KQTETIRREL66P64GV6KCVICPULLDVHWJDZSIJKDLIAGBXUCIZ6P6E", )
def test_conditional_valid(self): raw_data = load_horizon_file("claimable_balance_conditional.json") parsed_data = ClaimableBalance.parse_obj(raw_data) self.assertEqual(len(parsed_data.claimants), 2) self.assertEqual( parsed_data.claimants[0].destination, "GCYTED6QWSGDNLQ2RBXDVYSKCOUB2BC6DLKGAU5QPNONMVN47ABUN6WE", ) self.assertEqual( parsed_data.claimants[0].predicate.abs_before, datetime.datetime(2021, 4, 21, 19, 3, 6, tzinfo=datetime.timezone.utc), ) self.assertEqual(parsed_data.claimants[0].predicate.abs_before_epoch, 1619031786) self.assertEqual( parsed_data.claimants[1].destination, "GDDAESY7RTZAZNWZLZD5RIKP2TWEAVISKQJZ43ZZ2YTMCNICRVW7OJP3", ) self.assertEqual( parsed_data.claimants[1].predicate.not_predicate.abs_before, datetime.datetime(2021, 4, 21, 19, 3, 1, tzinfo=datetime.timezone.utc), ) self.assertEqual( parsed_data.claimants[1].predicate.not_predicate.abs_before_epoch, 1619031781, )