Add support for the X-address format (#1041)

* Update schema-validator

* Update to ripple-address-codec 4.0.0

* Update ./src/common/hashes/index.ts

* Add generateXAddress method

* Deprecate generateAddress method

* Add unit tests

* Add documentation
This commit is contained in:
Elliot Lee
2019-10-23 12:03:59 -07:00
committed by GitHub
parent 3a20123e0f
commit e1964ac5ed
40 changed files with 4704 additions and 111 deletions

View File

@@ -996,7 +996,7 @@ describe('RippleAPI', function () {
done(new Error('Expected method to reject. Prepared transaction: ' + JSON.stringify(response)));
}).catch(err => {
assert.strictEqual(err.name, 'ValidationError');
assert.strictEqual(err.message, 'instance.Account is not of a type(s) string,instance.Account does not conform to the "address" format');
assert.strictEqual(err.message, 'instance.Account is not of a type(s) string,instance.Account is not exactly one from <xAddress>,<classicAddress>');
done();
}).catch(done); // Finish test with assertion failure immediately instead of waiting for timeout.
} catch (err) {
@@ -1020,7 +1020,7 @@ describe('RippleAPI', function () {
done(new Error('Expected method to reject. Prepared transaction: ' + JSON.stringify(response)));
}).catch(err => {
assert.strictEqual(err.name, 'ValidationError');
assert.strictEqual(err.message, 'instance.Account does not conform to the "address" format');
assert.strictEqual(err.message, 'instance.Account is not exactly one from <xAddress>,<classicAddress>');
done();
}).catch(done); // Finish test with assertion failure immediately instead of waiting for timeout.
} catch (err) {
@@ -1581,7 +1581,7 @@ describe('RippleAPI', function () {
});
it('prepareOrder - invalid', function (done) {
const request = requests.prepareOrder.sell;
const request = Object.assign({}, requests.prepareOrder.sell);
delete request.direction; // Make invalid
try {
this.api.prepareOrder(address, request, instructionsWithMaxLedgerVersionOffset).then(prepared => {
@@ -1620,7 +1620,7 @@ describe('RippleAPI', function () {
});
it('prepareOrderCancellation - invalid', function (done) {
const request = requests.prepareOrderCancellation.withMemos;
const request = Object.assign({}, requests.prepareOrderCancellation.withMemos);
delete request.orderSequence; // Make invalid
try {
this.api.prepareOrderCancellation(address, request).then(prepared => {
@@ -1654,7 +1654,7 @@ describe('RippleAPI', function () {
});
it('prepareTrustline - invalid', function (done) {
const trustline = requests.prepareTrustline.complex;
const trustline = Object.assign({}, requests.prepareTrustline.complex);
delete trustline.limit; // Make invalid
try {
this.api.prepareTrustline(
@@ -2958,7 +2958,7 @@ describe('RippleAPI', function () {
const options = {
includeRawTransaction: true
}
const expected = responses.getTransaction.settings
const expected = Object.assign({}, responses.getTransaction.settings) // Avoid mutating test fixture
expected.rawTransaction = "{\"Account\":\"rLVKsA4F9iJBbA6rX2x4wCmkj6drgtqpQe\",\"Fee\":\"10\",\"Flags\":2147483648,\"Sequence\":1,\"SetFlag\":2,\"SigningPubKey\":\"03EA3ADCA632F125EC2CC4F7F6A82DE0DCE2B65290CAC1F22242C5163F0DA9652D\",\"TransactionType\":\"AccountSet\",\"TxnSignature\":\"3045022100DE8B666B1A31EA65011B0F32130AB91A5747E32FA49B3054CEE8E8362DBAB98A022040CF0CF254677A8E5CD04C59CA2ED7F6F15F7E184641BAE169C561650967B226\",\"date\":460832270,\"hash\":\"4FB3ADF22F3C605E23FAEFAA185F3BD763C4692CAC490D9819D117CD33BFAA1B\",\"inLedger\":8206418,\"ledger_index\":8206418,\"meta\":{\"AffectedNodes\":[{\"ModifiedNode\":{\"FinalFields\":{\"Account\":\"rLVKsA4F9iJBbA6rX2x4wCmkj6drgtqpQe\",\"Balance\":\"29999990\",\"Flags\":786432,\"OwnerCount\":0,\"Sequence\":2},\"LedgerEntryType\":\"AccountRoot\",\"LedgerIndex\":\"3F5072C4875F32ED770DAF3610A716600ED7C7BB0348FADC7A98E011BB2CD36F\",\"PreviousFields\":{\"Balance\":\"30000000\",\"Flags\":4194304,\"Sequence\":1},\"PreviousTxnID\":\"3FB0350A3742BBCC0D8AA3C5247D1AEC01177D0A24D9C34762BAA2FEA8AD88B3\",\"PreviousTxnLgrSeq\":8206397}}],\"TransactionIndex\":5,\"TransactionResult\":\"tesSUCCESS\"},\"validated\":true}"
return this.api.getTransaction(hash, options).then(
_.partial(checkResult, expected,
@@ -3447,6 +3447,7 @@ describe('RippleAPI', function () {
_.partial(checkResult, responses.getTrustlines.all, 'getTrustlines'));
});
// @deprecated See corresponding test in `x-address-api-test.js`
it('generateAddress', function () {
function random() {
return _.fill(Array(16), 0);