From 493d0174d421c9fbc23c9a091ed452cd1565bc1c Mon Sep 17 00:00:00 2001 From: Chris Troutner Date: Thu, 3 Oct 2019 18:29:04 -0700 Subject: [PATCH] Fixed unit tests --- src/routes/v3/slp.js | 2 ++ test/v3/blockbook.js | 26 +++++++++-------- test/v3/blockchain.js | 2 +- test/v3/mocks/blockbook-mock.js | 2 +- test/v3/mocks/blockchain-mock.js | 2 +- test/v3/mocks/slp-mocks.js | 2 +- test/v3/slp.js | 48 +++++++++++++++++--------------- 7 files changed, 47 insertions(+), 37 deletions(-) diff --git a/src/routes/v3/slp.js b/src/routes/v3/slp.js index 481eb76..c6eda94 100644 --- a/src/routes/v3/slp.js +++ b/src/routes/v3/slp.js @@ -400,6 +400,8 @@ async function lookupToken(tokenId) { const b64 = Buffer.from(s).toString("base64") const url = `${process.env.SLPDB_URL}q/${b64}` + // console.log(`url: ${url}`) + const tokenRes = await axios.get(url) //console.log(`tokenRes.data: ${util.inspect(tokenRes.data,null,2)}`) //console.log( diff --git a/test/v3/blockbook.js b/test/v3/blockbook.js index 213910e..60df68c 100644 --- a/test/v3/blockbook.js +++ b/test/v3/blockbook.js @@ -12,10 +12,20 @@ const chai = require("chai") const assert = chai.assert -const blockbookRoute = require("../../src/routes/v3/blockbook") const nock = require("nock") // HTTP mocking -let originalUrl // Used during transition from integration to unit tests. +let originalUrl, mockServerUrl // Used during transition from integration to unit tests. +originalUrl = process.env.BLOCKBOOK_URL + +// Set default environment variables for unit tests. +if (!process.env.TEST) process.env.TEST = "unit" +if (process.env.TEST === "unit") { + process.env.BLOCKBOOK_URL = "http://fakeurl/api/" + mockServerUrl = `http://fakeurl` +} + +// Only load blockbook library after setting BLOCKBOOK_URL env var. +const blockbookRoute = require("../../src/routes/v3/blockbook") // Mocking data. const { mockReq, mockRes } = require("./mocks/express-mocks") @@ -26,17 +36,9 @@ const util = require("util") util.inspect.defaultOptions = { depth: 1 } describe("#Blockbook Router", () => { - let req, res, mockServerUrl + let req, res before(() => { - originalUrl = process.env.BLOCKBOOK_URL - - // Set default environment variables for unit tests. - if (!process.env.TEST) process.env.TEST = "unit" - if (process.env.TEST === "unit") { - process.env.BLOCKBOOK_URL = "http://fakeurl/api/" - mockServerUrl = `http://fakeurl` - } // console.log(`Testing type is: ${process.env.TEST}`) if (!process.env.NETWORK) process.env.NETWORK = "testnet" @@ -150,6 +152,8 @@ describe("#Blockbook Router", () => { it("should get balance for a single address", async () => { req.params.address = `bitcoincash:qrdka2205f4hyukutc2g0s6lykperc8nsu5u2ddpqf` + // console.log(`process.env.BLOCKBOOK_URL: ${process.env.BLOCKBOOK_URL}`) + // Mock the Insight URL for unit tests. if (process.env.TEST === "unit") { nock(`${process.env.BLOCKBOOK_URL}`) diff --git a/test/v3/blockchain.js b/test/v3/blockchain.js index cd0cd58..c4b28b4 100644 --- a/test/v3/blockchain.js +++ b/test/v3/blockchain.js @@ -267,7 +267,7 @@ describe("#BlockchainRouter", () => { .post(``) .reply(200, { result: - "0000ff7f7d217c9b7845ea8b50d620c59a1bf7c276566406e9b7bc7e463e0000000000006d70322c0b697c1c81d2744f87f09f1e9780ba5d30338952e2cdc64e60456f8423bb0a5ceafa091a3e843526" + "000000202ed2723e7590e2b937f6821a99d6764cb8799bf30f8e300000000000000000001d311c02df9a1e3f57b8dbdcf97ec8dbc3109a26779724c63e560b29ad9ea501e2af955d286403183049e39c" }) } diff --git a/test/v3/mocks/blockbook-mock.js b/test/v3/mocks/blockbook-mock.js index 8246e80..d8a87db 100644 --- a/test/v3/mocks/blockbook-mock.js +++ b/test/v3/mocks/blockbook-mock.js @@ -8,7 +8,7 @@ const mockBalance = { page: 1, totalPages: 1, itemsOnPage: 1000, - address: "bchtest:qq89kjkeqz9mngp8kl3dpmu43y2wztdjqu500gn4c4", + address: "bitcoincash:qrdka2205f4hyukutc2g0s6lykperc8nsu5u2ddpqf", balance: "10000000", totalReceived: "10000000", totalSent: "0", diff --git a/test/v3/mocks/blockchain-mock.js b/test/v3/mocks/blockchain-mock.js index 6025583..527c9f7 100644 --- a/test/v3/mocks/blockchain-mock.js +++ b/test/v3/mocks/blockchain-mock.js @@ -218,7 +218,7 @@ const mockRawMempool = [ ] const mockBlockHeaderConcise = - "0000ff7f7d217c9b7845ea8b50d620c59a1bf7c276566406e9b7bc7e463e0000000000006d70322c0b697c1c81d2744f87f09f1e9780ba5d30338952e2cdc64e60456f8423bb0a5ceafa091a3e843526" + "000000202ed2723e7590e2b937f6821a99d6764cb8799bf30f8e300000000000000000001d311c02df9a1e3f57b8dbdcf97ec8dbc3109a26779724c63e560b29ad9ea501e2af955d286403183049e39c" const mockBlockHeader = { hash: "00000000000008c3679777df34f1a09565f98b2400a05b7c8da72525fdca3900", diff --git a/test/v3/mocks/slp-mocks.js b/test/v3/mocks/slp-mocks.js index ac4124c..fca6693 100644 --- a/test/v3/mocks/slp-mocks.js +++ b/test/v3/mocks/slp-mocks.js @@ -35,7 +35,7 @@ const mockSingleToken = { tokenDetails: { decimals: 0, tokenIdHex: - "af8e10dd87e7092e5f0f3b9cf62e85e91f74395fbf22cd14f12bcdfbf1e8354f", + "38e97c5d7d3585a2cbf3f9580c82ca33985f9cb0845d4dcce220cb709f9538b0", timestamp: "2019-06-14 06:31:37", timestamp_unix: 1560493897, transactionType: "GENESIS", diff --git a/test/v3/slp.js b/test/v3/slp.js index 530047b..af0ba1c 100644 --- a/test/v3/slp.js +++ b/test/v3/slp.js @@ -16,14 +16,33 @@ const assert = chai.assert const nock = require("nock") // HTTP mocking const sinon = require("sinon") const proxyquire = require("proxyquire").noPreserveCache() +const axios = require("axios") + +// Save existing environment variables. +// Used during transition from integration to unit tests. +let originalEnvVars, mockServerUrl +originalEnvVars = { + BITDB_URL: process.env.BITDB_URL, + BITCOINCOM_BASEURL: process.env.BITCOINCOM_BASEURL, + SLPDB_URL: process.env.SLPDB_URL +} + +// Set default environment variables for unit tests. +if (!process.env.TEST) process.env.TEST = "unit" + +// Block network connections for unit tests. +if (process.env.TEST === "unit") { + process.env.BITDB_URL = "http://fakeurl/" + process.env.BITCOINCOM_BASEURL = "http://fakeurl/" + process.env.SLPDB_URL = "http://fakeurl/" + mockServerUrl = `http://fakeurl` +} // Prepare the slpRoute for stubbing dependcies on slpjs. const slpRoute = require("../../src/routes/v3/slp") const pathStub = {} // Used to stub methods within slpjs. const slpRouteStub = proxyquire("../../src/routes/v3/slp", { slpjs: pathStub }) -let originalEnvVars // Used during transition from integration to unit tests. - // Mocking data. const { mockReq, mockRes } = require("./mocks/express-mocks") const mockData = require("./mocks/slp-mocks") @@ -34,28 +53,10 @@ const util = require("util") util.inspect.defaultOptions = { depth: 1 } describe("#SLP", () => { - let req, res, mockServerUrl + let req, res let sandbox - before(() => { - // Save existing environment variables. - originalEnvVars = { - BITDB_URL: process.env.BITDB_URL, - BITCOINCOM_BASEURL: process.env.BITCOINCOM_BASEURL, - SLPDB_URL: process.env.SLPDB_URL - } - - // Set default environment variables for unit tests. - if (!process.env.TEST) process.env.TEST = "unit" - - // Block network connections for unit tests. - if (process.env.TEST === "unit") { - process.env.BITDB_URL = "http://fakeurl/" - process.env.BITCOINCOM_BASEURL = "http://fakeurl/" - process.env.SLPDB_URL = "http://fakeurl/" - mockServerUrl = `http://fakeurl` - } - }) + before(() => {}) // Setup the mocks before each test. beforeEach(() => { @@ -215,11 +216,14 @@ describe("#SLP", () => { const tokenIdToTest = "38e97c5d7d3585a2cbf3f9580c82ca33985f9cb0845d4dcce220cb709f9538b0" + // console.log(`mockServerUrl: ${mockServerUrl}`) + // Mock the RPC call for unit tests. if (process.env.TEST === "unit") { nock(mockServerUrl) .get(uri => uri.includes("/")) .reply(200, mockData.mockSingleToken) + // sandbox.stub(axios, "get").resolves(mockData.mockSingleToken) } req.params.tokenId = tokenIdToTest