feat(whitelist): Added method for getting SLPDB whitelist

This commit is contained in:
Chris Troutner
2020-12-05 14:02:39 -08:00
parent 28f08f02ac
commit 315cb4f254
5 changed files with 140 additions and 2 deletions
+65 -1
View File
@@ -485,7 +485,7 @@ class Utils {
* // validate single SLP txid
* (async () => {
* try {
* let validated = await bchjs.SLP.Utils.validateTxid(
* let validated = await bchjs.SLP.Utils.validateTxid2(
* "df808a41672a0a0ae6475b44f272a107bc9961b90f29dc918d71301f24fe92fb"
* );
* console.log(validated);
@@ -525,6 +525,70 @@ class Utils {
}
}
/**
* @api SLP.Utils.whitelist() whitelist()
* @apiName whitelist
* @apiGroup SLP Utils
* @apiDescription Get SLP tokens in whitelist
* Retrieves a list of the SLP tokens that in the whitelist. Tokens in the
* whitelist can be validated with the validateTxid3() function. validateTxid3()
* will still work when the SLP network is under stress.
*
* @apiExample Example usage:
*
* // validate single SLP txid
* (async () => {
* try {
* let list = await bchjs.SLP.Utils.whitelit();
* console.log(list);
* } catch (error) {
* console.error(error);
* }
* })();
*
* // returns
* [
* {
* name: 'USDH',
* tokenId:
* 'c4b0d62156b3fa5c8f3436079b5394f7edc1bef5dc1cd2f9d0c4d46f82cca479'
* },
* {
* name: 'SPICE',
* tokenId:
* '4de69e374a8ed21cbddd47f2338cc0f479dc58daa2bbe11cd604ca488eca0ddf'
* },
* {
* name: 'PSF',
* tokenId:
* '38e97c5d7d3585a2cbf3f9580c82ca33985f9cb0845d4dcce220cb709f9538b0'
* },
* {
* name: 'TROUT',
* tokenId:
* 'a4fb5c2da1aa064e25018a43f9165040071d9e984ba190c222a7f59053af84b2'
* },
* {
* name: 'PSFTEST',
* tokenId:
* 'd0ef4de95b78222bfee2326ab11382f4439aa0855936e2fe6ac129a8d778baa0'
* }
* ]
*/
async getWhitelist(txid) {
try {
const path = `${this.restURL}slp/whitelist`
const response = await axios.get(path, _this.axiosOptions)
// console.log(`response.data: ${JSON.stringify(response.data, null, 2)}`)
return response.data
} catch (error) {
if (error.response && error.response.data) throw error.response.data
throw error
}
}
/**
* @api SLP.Utils.tokenStats() tokenStats()
* @apiName tokenStats
+11
View File
@@ -663,6 +663,17 @@ describe(`#SLP`, () => {
assert.equal(result.isValid, true)
})
})
describe("#getWhitelist", () => {
it("should get the whitelist", async () => {
const result = await bchjs.SLP.Utils.getWhitelist()
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
assert.isArray(result)
assert.property(result[0], "name")
assert.property(result[1], "tokenId")
})
})
})
describe("#tokentype1", () => {
+11
View File
@@ -634,6 +634,17 @@ describe(`#SLP`, () => {
assert.equal(result.isValid, true)
})
})
describe("#getWhitelist", () => {
it("should get the whitelist", async () => {
const result = await bchjs.SLP.Utils.getWhitelist()
// console.log(`result: ${JSON.stringify(result, null, 2)}`)
assert.isArray(result)
assert.property(result[0], "name")
assert.property(result[1], "tokenId")
})
})
})
describe("#tokentype1", () => {
+25 -1
View File
@@ -1107,6 +1107,29 @@ const txDetailsSLPNftGenesis = {
blocktime: 1591329189
}
const mockWhitelist = [
{
name: "USDH",
tokenId: "c4b0d62156b3fa5c8f3436079b5394f7edc1bef5dc1cd2f9d0c4d46f82cca479"
},
{
name: "SPICE",
tokenId: "4de69e374a8ed21cbddd47f2338cc0f479dc58daa2bbe11cd604ca488eca0ddf"
},
{
name: "PSF",
tokenId: "38e97c5d7d3585a2cbf3f9580c82ca33985f9cb0845d4dcce220cb709f9538b0"
},
{
name: "TROUT",
tokenId: "a4fb5c2da1aa064e25018a43f9165040071d9e984ba190c222a7f59053af84b2"
},
{
name: "PSFTEST",
tokenId: "d0ef4de95b78222bfee2326ab11382f4439aa0855936e2fe6ac129a8d778baa0"
}
]
module.exports = {
mockList,
mockToken,
@@ -1131,5 +1154,6 @@ module.exports = {
mockTxDetails,
mockDualValidation,
mockDualOpData,
mockInvalidSlpSend
mockInvalidSlpSend,
mockWhitelist
}
+28
View File
@@ -1944,4 +1944,32 @@ describe("#SLP Utils", () => {
}
})
})
describe("#getWhitelist", () => {
it("should return the list", async () => {
sandbox.stub(axios, "get").resolves({ data: mockData.mockWhitelist })
const result = await slp.Utils.getWhitelist()
assert2.isArray(result)
assert2.property(result[0], "name")
assert2.property(result[1], "tokenId")
})
it("catches and throws an error", async () => {
try {
sandbox.stub(axios, "get").rejects({
error:
"Network error: Could not communicate with full node or other external service."
})
await slp.Utils.getWhitelist()
assert2.equal(true, false, "Unexpected result")
} catch (err) {
// console.log("err: ", err)
assert2.include(err.error, "Network error")
}
})
})
})