refactor: Define typescript definition for OfferCreate (#1508)

* refactor: Define OfferCreate transaction type
This commit is contained in:
Nathan Nichols
2021-08-12 09:57:04 -05:00
committed by Mayukha Vadari
parent d438430100
commit 7fde5a2658
7 changed files with 316 additions and 77 deletions

View File

@@ -1,5 +1,5 @@
import { ValidationError } from 'ripple-api/common/errors'
import { verifyCommonFields } from '../../src/models/transactions/common'
import { verifyBaseTransaction } from './../../src/models/transactions/common'
import { assert } from 'chai'
/**
@@ -8,7 +8,7 @@ import { assert } from 'chai'
* Providing runtime verification testing for each specific transaction type
*/
describe('Transaction Verification', function () {
it(`Verifies all optional CommonFields`, () => {
it(`Verifies all optional BaseTransaction`, () => {
const txJson = {
Account: "r97KeayHuEsDwyU1yPBVtMLLoQr79QcRFe",
TransactionType: "Payment",
@@ -49,16 +49,16 @@ describe('Transaction Verification', function () {
TxnSignature: "3045022100C6708538AE5A697895937C758E99A595B57A16393F370F11B8D4C032E80B532002207776A8E85BB9FAF460A92113B9C60F170CD964196B1F084E0DAB65BAEC368B66"
}
assert.doesNotThrow(() => verifyCommonFields(txJson))
assert.doesNotThrow(() => verifyBaseTransaction(txJson))
})
it(`Verifies only required CommonFields`, () => {
it(`Verifies only required BaseTransaction`, () => {
const txJson = {
Account: "r97KeayHuEsDwyU1yPBVtMLLoQr79QcRFe",
TransactionType: "Payment",
}
assert.doesNotThrow(() => verifyCommonFields(txJson))
assert.doesNotThrow(() => verifyBaseTransaction(txJson))
})
it (`Handles invalid Fee`, () => {
@@ -69,9 +69,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidFee),
() => verifyBaseTransaction(invalidFee),
ValidationError,
"CommonFields: invalid Fee"
"BaseTransaction: invalid Fee"
)
})
@@ -83,9 +83,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidSeq),
() => verifyBaseTransaction(invalidSeq),
ValidationError,
"CommonFields: invalid Sequence"
"BaseTransaction: invalid Sequence"
)
})
@@ -97,9 +97,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidID),
() => verifyBaseTransaction(invalidID),
ValidationError,
"CommonFields: invalid AccountTxnID"
"BaseTransaction: invalid AccountTxnID"
)
})
@@ -112,9 +112,9 @@ describe('Transaction Verification', function () {
assert.throws(
() => verifyCommonFields(invalidFlags),
() => verifyBaseTransaction(invalidFlags),
ValidationError,
"CommonFields: invalid Flags"
"BaseTransaction: invalid Flags"
)
})
@@ -126,9 +126,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidLastLedgerSequence),
() => verifyBaseTransaction(invalidLastLedgerSequence),
ValidationError,
"CommonFields: invalid LastLedgerSequence"
"BaseTransaction: invalid LastLedgerSequence"
)
})
@@ -141,9 +141,9 @@ describe('Transaction Verification', function () {
assert.throws(
() => verifyCommonFields(invalidSourceTag),
() => verifyBaseTransaction(invalidSourceTag),
ValidationError,
"CommonFields: invalid SourceTag"
"BaseTransaction: invalid SourceTag"
)
})
@@ -155,9 +155,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidSigningPubKey),
() => verifyBaseTransaction(invalidSigningPubKey),
ValidationError,
"CommonFields: invalid SigningPubKey"
"BaseTransaction: invalid SigningPubKey"
)
})
@@ -169,9 +169,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidTicketSequence),
() => verifyBaseTransaction(invalidTicketSequence),
ValidationError,
"CommonFields: invalid TicketSequence"
"BaseTransaction: invalid TicketSequence"
)
})
@@ -183,9 +183,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidTxnSignature),
() => verifyBaseTransaction(invalidTxnSignature),
ValidationError,
"CommonFields: invalid TxnSignature"
"BaseTransaction: invalid TxnSignature"
)
})
@@ -197,9 +197,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidSigners),
() => verifyBaseTransaction(invalidSigners),
ValidationError,
"CommonFields: invalid Signers"
"BaseTransaction: invalid Signers"
)
const invalidSigners2 = {
@@ -213,9 +213,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidSigners2),
() => verifyBaseTransaction(invalidSigners2),
ValidationError,
"CommonFields: invalid Signers"
"BaseTransaction: invalid Signers"
)
})
@@ -232,9 +232,9 @@ describe('Transaction Verification', function () {
} as any
assert.throws(
() => verifyCommonFields(invalidMemo),
() => verifyBaseTransaction(invalidMemo),
ValidationError,
"CommonFields: invalid Memos"
"BaseTransaction: invalid Memos"
)
})
})

177
test/models/offerCreate.ts Normal file
View File

@@ -0,0 +1,177 @@
import { ValidationError } from 'ripple-api/common/errors'
import { verifyOfferCreate } from './../../src/models/transactions/offerCreate'
import { assert } from 'chai'
/**
* OfferCreate Transaction Verification Testing
*
* Providing runtime verification testing for each specific transaction type
*/
describe('OfferCreate Transaction Verification', function () {
it (`verifies valid OfferCreate`, () => {
const offer = {
Account: "r3rhWeE31Jt5sWmi4QiGLMZnY3ENgqw96W",
Fee: "10",
Flags: 0,
LastLedgerSequence: 65453019,
Sequence: 40949322,
SigningPubKey: "03C48299E57F5AE7C2BE1391B581D313F1967EA2301628C07AC412092FDC15BA22",
Expiration: 10,
OfferSequence: 12,
TakerGets: {
currency: "DSH",
issuer: "rcXY84C4g14iFp6taFXjjQGVeHqSCh9RX",
value: "43.11584856965009"
},
TakerPays: "12928290425",
TransactionType: "OfferCreate",
TxnSignature: "3045022100D874CDDD6BB24ED66E83B1D3574D3ECAC753A78F26DB7EBA89EAB8E7D72B95F802207C8CCD6CEA64E4AE2014E59EE9654E02CA8F03FE7FCE0539E958EAE182234D91",
} as any
assert.doesNotThrow(() => verifyOfferCreate(offer))
const offer2 = {
Account: "r3rhWeE31Jt5sWmi4QiGLMZnY3ENgqw96W",
Fee: "10",
Flags: 0,
LastLedgerSequence: 65453019,
Sequence: 40949322,
SigningPubKey: "03C48299E57F5AE7C2BE1391B581D313F1967EA2301628C07AC412092FDC15BA22",
TakerGets: "12928290425",
TakerPays: {
currency: "DSH",
issuer: "rcXY84C4g14iFp6taFXjjQGVeHqSCh9RX",
value: "43.11584856965009"
},
TransactionType: "OfferCreate",
TxnSignature: "3045022100D874CDDD6BB24ED66E83B1D3574D3ECAC753A78F26DB7EBA89EAB8E7D72B95F802207C8CCD6CEA64E4AE2014E59EE9654E02CA8F03FE7FCE0539E958EAE182234D91",
} as any
assert.doesNotThrow(() => verifyOfferCreate(offer2))
const offer3 = {
Account: "r3rhWeE31Jt5sWmi4QiGLMZnY3ENgqw96W",
Fee: "10",
Flags: 0,
LastLedgerSequence: 65453019,
Sequence: 40949322,
SigningPubKey: "03C48299E57F5AE7C2BE1391B581D313F1967EA2301628C07AC412092FDC15BA22",
TakerGets: {
currency: "DSH",
issuer: "rcXY84C4g14iFp6taFXjjQGVeHqSCh9RX",
value: "43.11584856965009"
},
TakerPays: {
currency: "DSH",
issuer: "rcXY84C4g14iFp6taFXjjQGVeHqSCh9RX",
value: "43.11584856965009"
},
TransactionType: "OfferCreate",
TxnSignature: "3045022100D874CDDD6BB24ED66E83B1D3574D3ECAC753A78F26DB7EBA89EAB8E7D72B95F802207C8CCD6CEA64E4AE2014E59EE9654E02CA8F03FE7FCE0539E958EAE182234D91",
} as any
assert.doesNotThrow(() => verifyOfferCreate(offer3))
})
it (`throws w/ invalid Expiration`, () => {
const offer = {
Account: "r3rhWeE31Jt5sWmi4QiGLMZnY3ENgqw96W",
Fee: "10",
Flags: 0,
LastLedgerSequence: 65453019,
Sequence: 40949322,
SigningPubKey: "03C48299E57F5AE7C2BE1391B581D313F1967EA2301628C07AC412092FDC15BA22",
Expiration: "11",
TakerGets: "12928290425",
TakerPays: {
currency: "DSH",
issuer: "rcXY84C4g14iFp6taFXjjQGVeHqSCh9RX",
value: "43.11584856965009"
},
TransactionType: "OfferCreate",
TxnSignature: "3045022100D874CDDD6BB24ED66E83B1D3574D3ECAC753A78F26DB7EBA89EAB8E7D72B95F802207C8CCD6CEA64E4AE2014E59EE9654E02CA8F03FE7FCE0539E958EAE182234D91",
} as any
assert.throws(
() => verifyOfferCreate(offer),
ValidationError,
"OfferCreate: invalid Expiration"
)
})
it (`throws w/ invalid OfferSequence`, () => {
const offer = {
Account: "r3rhWeE31Jt5sWmi4QiGLMZnY3ENgqw96W",
Fee: "10",
Flags: 0,
LastLedgerSequence: 65453019,
Sequence: 40949322,
SigningPubKey: "03C48299E57F5AE7C2BE1391B581D313F1967EA2301628C07AC412092FDC15BA22",
OfferSequence: "11",
TakerGets: "12928290425",
TakerPays: {
currency: "DSH",
issuer: "rcXY84C4g14iFp6taFXjjQGVeHqSCh9RX",
value: "43.11584856965009"
},
TransactionType: "OfferCreate",
TxnSignature: "3045022100D874CDDD6BB24ED66E83B1D3574D3ECAC753A78F26DB7EBA89EAB8E7D72B95F802207C8CCD6CEA64E4AE2014E59EE9654E02CA8F03FE7FCE0539E958EAE182234D91",
} as any
assert.throws(
() => verifyOfferCreate(offer),
ValidationError,
"OfferCreate: invalid OfferSequence"
)
})
it (`throws w/ invalid TakerPays`, () => {
const offer = {
Account: "r3rhWeE31Jt5sWmi4QiGLMZnY3ENgqw96W",
Fee: "10",
Flags: 0,
LastLedgerSequence: 65453019,
Sequence: 40949322,
SigningPubKey: "03C48299E57F5AE7C2BE1391B581D313F1967EA2301628C07AC412092FDC15BA22",
OfferSequence: "11",
TakerGets: "12928290425",
TakerPays: 10,
TransactionType: "OfferCreate",
TxnSignature: "3045022100D874CDDD6BB24ED66E83B1D3574D3ECAC753A78F26DB7EBA89EAB8E7D72B95F802207C8CCD6CEA64E4AE2014E59EE9654E02CA8F03FE7FCE0539E958EAE182234D91",
} as any
assert.throws(
() => verifyOfferCreate(offer),
ValidationError,
"OfferCreate: invalid TakerPays"
)
})
it (`throws w/ invalid TakerGets`, () => {
const offer = {
Account: "r3rhWeE31Jt5sWmi4QiGLMZnY3ENgqw96W",
Fee: "10",
Flags: 0,
LastLedgerSequence: 65453019,
Sequence: 40949322,
SigningPubKey: "03C48299E57F5AE7C2BE1391B581D313F1967EA2301628C07AC412092FDC15BA22",
OfferSequence: "11",
TakerGets: 11,
TakerPays: {
currency: "DSH",
issuer: "rcXY84C4g14iFp6taFXjjQGVeHqSCh9RX",
value: "43.11584856965009"
},
TransactionType: "OfferCreate",
TxnSignature: "3045022100D874CDDD6BB24ED66E83B1D3574D3ECAC753A78F26DB7EBA89EAB8E7D72B95F802207C8CCD6CEA64E4AE2014E59EE9654E02CA8F03FE7FCE0539E958EAE182234D91",
} as any
assert.throws(
() => verifyOfferCreate(offer),
ValidationError,
"OfferCreate: invalid TakerGets"
)
})
})