diff --git a/src/adapters/bch/index.js b/src/adapters/bch/index.js index 0a77645..a6404cc 100644 --- a/src/adapters/bch/index.js +++ b/src/adapters/bch/index.js @@ -296,7 +296,7 @@ class BchAdapter { } } - async getTransaction (txid) { + async getTransaction (txids) { try { // Throw an error if this IPFS node has not yet made a connection to a // wallet service provider. @@ -308,7 +308,7 @@ class BchAdapter { const rpcData = { endpoint: 'transaction', - txid + txids } // Generate a UUID for the call. @@ -317,7 +317,7 @@ class BchAdapter { // Generate a JSON RPC command. const cmd = this.jsonrpc.request(rpcId, 'bch', rpcData) const cmdStr = JSON.stringify(cmd) - // console.log('cmdStr: ', cmdStr) + console.log('cmdStr: ', cmdStr) // Send the RPC command to selected wallet service. const thisNode = this.ipfs.ipfsCoordAdapter.ipfsCoord.thisNode diff --git a/src/controllers/rest-api/bch/controller.js b/src/controllers/rest-api/bch/controller.js index 10749c0..c12259a 100644 --- a/src/controllers/rest-api/bch/controller.js +++ b/src/controllers/rest-api/bch/controller.js @@ -342,8 +342,8 @@ class BchRESTControllerLib { * @api {post} /bch/transaction Transaction * @apiName Transaction * @apiGroup REST BCH - * @apiDescription Get data about a specific transaction. - * Given a transaction id this endpoint will return an object + * @apiDescription Get data about specific transactions. + * Given an array of transaction IDs this endpoint will return an array of objects * with the following properties * * - txid: "" - Transaction ID @@ -361,11 +361,11 @@ class BchRESTControllerLib { * - isValidSLPTx: - Determines if the transaction was under SLP * * @apiExample Example usage: - * curl -H "Content-Type: application/json" -X POST -d '{ "txid": "01517ff1587fa5ffe6f5eb91c99cf3f2d22330cd7ee847e928ce90ca95bf781b" }' localhost:5001/bch/transaction + * curl -H "Content-Type: application/json" -X POST -d '{ "txids": ["01517ff1587fa5ffe6f5eb91c99cf3f2d22330cd7ee847e928ce90ca95bf781b"] }' localhost:5001/bch/transaction * * @apiSuccessExample {json} Success-Response: * HTTP/1.1 200 OK - * { + * [{ * "txid":"01517ff1587fa5ffe6f5eb91c99cf3f2d22330cd7ee847e928ce90ca95bf781b", * "hash":"01517ff1587fa5ffe6f5eb91c99cf3f2d22330cd7ee847e928ce90ca95bf781b", * "version":1, @@ -414,7 +414,7 @@ class BchRESTControllerLib { * "time":1568338904, * "blocktime":1568338904, * "isValidSLPTx":false - * } + * }] * * @apiError UnprocessableEntity Missing required parameters * @@ -427,9 +427,9 @@ class BchRESTControllerLib { */ async transaction (ctx) { try { - const txid = ctx.request.body.txid + const txids = ctx.request.body.txids - const data = await this.adapters.bch.getTransaction(txid) + const data = await this.adapters.bch.getTransaction(txids) // console.log(`utxos: ${JSON.stringify(utxos, null, 2)}`) ctx.body = data diff --git a/test/e2e/manual/bch-e2e.js b/test/e2e/manual/bch-e2e.js index 5c7a22c..b2a2103 100644 --- a/test/e2e/manual/bch-e2e.js +++ b/test/e2e/manual/bch-e2e.js @@ -159,43 +159,50 @@ describe('#BCH E2E Tests', () => { assert.isAbove(result.data.txs[1].height, result.data.txs[0].height) }) - it('should paginate an address with deep tx history', async () => { - const body = { - address: 'bitcoincash:qqlrzp23w08434twmvr4fxw672whkjy0py26r63g3d' - } + // it('should paginate an address with deep tx history', async () => { + // const body = { + // address: 'bitcoincash:qqlrzp23w08434twmvr4fxw672whkjy0py26r63g3d' + // } + // + // const url = `${SERVER}/bch/transactions` + // const result = await axios.post(url, body) + // // console.log(`result.data: ${JSON.stringify(result.data, null, 2)}`) + // + // // Assert there is no more than 100 entries + // assert.isBelow(result.data.txs.length, 101) + // }) - const url = `${SERVER}/bch/transactions` - const result = await axios.post(url, body) - console.log(`result.data: ${JSON.stringify(result.data, null, 2)}`) - - // Assert there is no more than 100 entries - assert.isBelow(result.data.txs.length, 101) - }) - - it('should get the second page of results', async () => { - const body = { - address: 'bitcoincash:qqlrzp23w08434twmvr4fxw672whkjy0py26r63g3d', - page: 1 - } - - const url = `${SERVER}/bch/transactions` - const result = await axios.post(url, body) - console.log(`result.data: ${JSON.stringify(result.data, null, 2)}`) - }) + // it('should get the second page of results', async () => { + // const body = { + // address: 'bitcoincash:qqlrzp23w08434twmvr4fxw672whkjy0py26r63g3d', + // page: 1 + // } + // + // const url = `${SERVER}/bch/transactions` + // const result = await axios.post(url, body) + // // console.log(`result.data: ${JSON.stringify(result.data, null, 2)}`) + // + // // Assert there is no more than 100 entries + // assert.isBelow(result.data.txs.length, 101) + // }) }) - // describe('#transaction', () => { - // it('should get transaction details for a txid', async () => { - // const body = { - // txid: '01517ff1587fa5ffe6f5eb91c99cf3f2d22330cd7ee847e928ce90ca95bf781b' - // } - // - // const url = `${SERVER}/bch/transaction` - // const result = await axios.post(url, body) - // // console.log(`result.data: ${JSON.stringify(result.data, null, 2)}`) - // - // assert.property(result.data, 'txid') - // assert.property(result.data, 'vin') - // }) - // }) + describe('#transaction', () => { + it('should get transaction details for a txid', async () => { + const body = { + txids: [ + '01517ff1587fa5ffe6f5eb91c99cf3f2d22330cd7ee847e928ce90ca95bf781b' + ] + } + + const url = `${SERVER}/bch/transaction` + const result = await axios.post(url, body) + // console.log(`result.data: ${JSON.stringify(result.data, null, 2)}`) + + assert.equal(result.data.status, 200) + assert.isArray(result.data.txData) + assert.property(result.data.txData[0].txData, 'txid') + assert.property(result.data.txData[0].txData, 'vin') + }) + }) })