Fix deriveXAddress null behavior (#1964)

* Fix deriveXAddress null behavior

* Also check for undefined

* Simplify theTag

* Add test case for undefined
This commit is contained in:
Jackson Mills
2022-04-21 14:36:10 -07:00
committed by GitHub
parent de0ce1b60f
commit 417978e131
3 changed files with 32 additions and 2 deletions

View File

@@ -1,5 +1,8 @@
# ripple-address-codec
## Unreleased
- Fixed `encodeXAddress` to handle `null` equivalently to `false`.
## 4.2.1 (2021-12-1)
- Fix issue where npm < 7 could not install the library
- Initial pass at linting this codebase with new rules

View File

@@ -43,8 +43,9 @@ function encodeXAddress(
if (tag > MAX_32_BIT_UNSIGNED_INT) {
throw new Error('Invalid tag')
}
const theTag = tag === false ? 0 : tag
const flag = tag === false ? 0 : 1
const theTag = tag || 0
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Passing null is a common js mistake
const flag = tag === false || tag == null ? 0 : 1
/* eslint-disable no-bitwise ---
* need to use bitwise operations here */
const bytes = Buffer.concat([

View File

@@ -22,4 +22,30 @@ describe('deriveXAddress', function () {
'TVVrSWtmQQssgVcmoMBcFQZKKf56QscyWLKnUyiuZW8ALU4',
)
})
it('does not include tag when null', function () {
assert.equal(
deriveXAddress({
publicKey:
'ED02C98225BD1C79E9A4F95C6978026D300AFB7CA2A34358920BCFBCEBE6AFCD6A',
// @ts-expect-error -- Assessing null behavior (Common js mistake)
tag: null,
test: false,
}),
'X7FbrqVEqdTNoX5qq94rTdarGjeVYmkxi8A1TKAJUnyLL9g',
)
})
it('does not include tag when undefined', function () {
assert.equal(
deriveXAddress({
publicKey:
'ED02C98225BD1C79E9A4F95C6978026D300AFB7CA2A34358920BCFBCEBE6AFCD6A',
// @ts-expect-error -- Assessing undefined behavior
tag: undefined,
test: false,
}),
'X7FbrqVEqdTNoX5qq94rTdarGjeVYmkxi8A1TKAJUnyLL9g',
)
})
})