@@ -28,6 +28,11 @@ func TestTransactionStatus(t *testing.T) {
2828 metaData : `{"AffectedNodes":[],"TransactionResult":"tecNO_DST"}` ,
2929 expected : true ,
3030 },
31+ {
32+ name : "tecNO_PERMISSION without DomainID" ,
33+ metaData : `{"AffectedNodes":[],"TransactionResult":"tecNO_PERMISSION"}` ,
34+ expected : true ,
35+ },
3136 {
3237 name : "unknown result" ,
3338 metaData : `{"AffectedNodes":[],"TransactionResult":"temBAD_AMOUNT"}` ,
@@ -45,6 +50,62 @@ func TestTransactionStatus(t *testing.T) {
4550 }
4651}
4752
53+ // TestTransactionStatusFromRawTx verifies transactionStatus end-to-end on the raw
54+ // JSON of testnet tx C935D183BC7D63C3D91AD8AE73564A42315E2EE0C5C9A4E0B1F67A28F517FE25:
55+ // a Payment with DomainID that the ledger rejected with tecNO_PERMISSION. This also
56+ // exercises the JSON binding of the DomainID field.
57+ func TestTransactionStatusFromRawTx (t * testing.T ) {
58+ raw := `{
59+ "Account": "rGqCqM1djMK19wgn4PwoEmGrpit8T4Akmt",
60+ "Amount": "1000000",
61+ "DeliverMax": "1000000",
62+ "Destination": "rUvJftL8ZkvLveY4b2E2rfkyiG2VPfDTFe",
63+ "DomainID": "87BC3EBBE3DB4AE7F40822037BCFF4FDED8B59F949594AC8BE4A0E40CF9DA226",
64+ "Fee": "12",
65+ "Flags": 0,
66+ "LastLedgerSequence": 17501605,
67+ "Sequence": 17501583,
68+ "SigningPubKey": "EDEE63EC44DC59A8C5CAA91268446E0BAAD96F8D2601CF329F3E572B294D60BC7F",
69+ "TransactionType": "Payment",
70+ "TxnSignature": "5CA4E52DAC85708B77529FB4857A944171A82BBA152F8DFECB90E99C542105560864DC20F8F1AA414144E96ACFA5DA6443E4FF962BD0D8FDDE1E887481F8AD06",
71+ "hash": "C935D183BC7D63C3D91AD8AE73564A42315E2EE0C5C9A4E0B1F67A28F517FE25",
72+ "metaData": {
73+ "AffectedNodes": [
74+ {
75+ "ModifiedNode": {
76+ "FinalFields": {
77+ "Account": "rGqCqM1djMK19wgn4PwoEmGrpit8T4Akmt",
78+ "Balance": "99999988",
79+ "Flags": 0,
80+ "OwnerCount": 0,
81+ "Sequence": 17501584
82+ },
83+ "LedgerEntryType": "AccountRoot",
84+ "LedgerIndex": "BC30C5B2B5C55A57E7EB170058627077E9EA175C194AF60A015B996DF4C564EF",
85+ "PreviousFields": {
86+ "Balance": "100000000",
87+ "Sequence": 17501583
88+ },
89+ "PreviousTxnID": "EFBB0CDC7F819909876D997F845C35DA193B5BA8BE6D82D3ED3BA09D0F66285D",
90+ "PreviousTxnLgrSeq": 17501583
91+ }
92+ }
93+ ],
94+ "TransactionIndex": 1,
95+ "TransactionResult": "tecNO_PERMISSION"
96+ }
97+ }`
98+
99+ var tx transaction
100+ require .NoError (t , json .Unmarshal ([]byte (raw ), & tx ))
101+ require .NotNil (t , tx .DomainID )
102+ require .Equal (t , "87BC3EBBE3DB4AE7F40822037BCFF4FDED8B59F949594AC8BE4A0E40CF9DA226" , * tx .DomainID )
103+
104+ status , err := tx .transactionStatus ()
105+ require .NoError (t , err )
106+ require .False (t , status )
107+ }
108+
48109func TestIntendedReceivingAmount (t * testing.T ) {
49110 tests := []struct {
50111 name string
0 commit comments