2020-12-05 18:37:59 -08:00
|
|
|
/*
|
|
|
|
|
These integration tests are intended to be run against a live local copy of
|
|
|
|
|
rest.bitcoin.com. They exercise the endpoints in the same way the SDK or
|
|
|
|
|
end-user application would. These tests were created to replace the parts
|
|
|
|
|
removed from the swagger UI, that otherwise would have excersiced these endpoints.
|
|
|
|
|
|
|
|
|
|
TODO:
|
|
|
|
|
-/rawtransactions/sendRawTransaction is more appropropriate for an e2e test,
|
|
|
|
|
so it is omitted here.
|
2021-02-09 12:18:52 -08:00
|
|
|
- Replace request-promise with axios.
|
2020-12-05 18:37:59 -08:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
'use strict'
|
|
|
|
|
|
2021-02-09 12:18:52 -08:00
|
|
|
// const chai = require('chai')
|
|
|
|
|
// const assert = chai.assert
|
2020-12-05 18:37:59 -08:00
|
|
|
// const rawtransactions = require('../../../dist/routes/v2/rawtransactions')
|
2021-02-09 12:18:52 -08:00
|
|
|
// const rp = require('request-promise')
|
2020-12-05 18:37:59 -08:00
|
|
|
|
|
|
|
|
// Used for debugging.
|
|
|
|
|
const util = require('util')
|
|
|
|
|
util.inspect.defaultOptions = { depth: 1 }
|
|
|
|
|
|
|
|
|
|
// const mockData = require('../mocks/raw-transactions-mocks')
|
2021-02-09 12:18:52 -08:00
|
|
|
/*
|
2020-12-05 18:37:59 -08:00
|
|
|
describe('#Raw-Transactions', () => {
|
|
|
|
|
describe('#root', () => {
|
|
|
|
|
it('should return root', async () => {
|
|
|
|
|
const options = {
|
|
|
|
|
method: 'GET',
|
|
|
|
|
uri: 'http://localhost:3000/v2/rawtransactions/',
|
|
|
|
|
resolveWithFullResponse: true,
|
|
|
|
|
json: true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const result = await rp(options)
|
|
|
|
|
// console.log(`result: ${JSON.stringify(result, null, 0)}`)
|
|
|
|
|
|
|
|
|
|
assert.equal(result.body.status, 'rawtransactions')
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
describe('#whCreateTx', () => {
|
|
|
|
|
it('should return tx hex', async () => {
|
|
|
|
|
const minIn = {
|
|
|
|
|
txid:
|
|
|
|
|
'f7ed9cf23dee85910f6269c9a101a75fcfd2f3c6fc81f17fad824ff7aaf99ab2',
|
|
|
|
|
vout: 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const options = {
|
|
|
|
|
method: 'PUT',
|
|
|
|
|
uri: 'http://localhost:3000/v2/rawtransactions/create',
|
|
|
|
|
resolveWithFullResponse: true,
|
|
|
|
|
json: true,
|
|
|
|
|
body: {
|
|
|
|
|
// inputs: [mockData.mockWHCreateInput],
|
|
|
|
|
inputs: [minIn],
|
|
|
|
|
outputs: {}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const result = await rp(options)
|
|
|
|
|
// console.log(`result.body: ${JSON.stringify(result.body, null, 0)}`)
|
|
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
|
result.body,
|
|
|
|
|
'0200000001b29af9aaf74f82ad7ff181fcc6f3d2cf5fa701a1c969620f9185ee3df29cedf70100000000ffffffff0000000000'
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
describe('#whOpReturn', () => {
|
|
|
|
|
it('should return tx hex', async () => {
|
|
|
|
|
const options = {
|
|
|
|
|
method: 'PUT',
|
|
|
|
|
uri: 'http://localhost:3000/v2/rawtransactions/opreturn',
|
|
|
|
|
resolveWithFullResponse: true,
|
|
|
|
|
json: true,
|
|
|
|
|
body: {
|
|
|
|
|
rawtx: '01000000000000000000',
|
|
|
|
|
payload: '00000000000000020000000006dac2c0'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const result = await rp(options)
|
|
|
|
|
// console.log(`result.body: ${JSON.stringify(result.body, null, 0)}`)
|
|
|
|
|
|
|
|
|
|
assert.equal(
|
|
|
|
|
result.body,
|
|
|
|
|
'0100000000010000000000000000166a140877686300000000000000020000000006dac2c000000000'
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
describe('#whReference', () => {
|
|
|
|
|
it('should return tx hex', async () => {
|
|
|
|
|
const options = {
|
|
|
|
|
method: 'PUT',
|
|
|
|
|
uri: 'http://localhost:3000/v2/rawtransactions/reference',
|
|
|
|
|
resolveWithFullResponse: true,
|
|
|
|
|
json: true,
|
|
|
|
|
body: {
|
|
|
|
|
rawtx:
|
|
|
|
|
'0100000001a7a9402ecd77f3c9f745793c9ec805bfa2e14b89877581c734c774864247e6f50400000000ffffffff03aa0a0000000000001976a9146d18edfe073d53f84dd491dae1379f8fb0dfe5d488ac5c0d0000000000004751210252ce4bdd3ce38b4ebbc5a6e1343608230da508ff12d23d85b58c964204c4cef3210294cc195fc096f87d0f813a337ae7e5f961b1c8a18f1f8604a909b3a5121f065b52aeaa0a0000000000001976a914946cb2e08075bcbaf157e47bcb67eb2b2339d24288ac00000000',
|
|
|
|
|
destination: 'bitcoincash:qrn60nerx5zug4u4hal06atep3lzhtecvy4pxk75lf',
|
|
|
|
|
amount: 0.005
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const result = await rp(options)
|
|
|
|
|
// console.log(`result.body: ${JSON.stringify(result.body, null, 0)}`)
|
|
|
|
|
|
|
|
|
|
assert.isString(result.body)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
describe('#whChangeOutput', () => {
|
|
|
|
|
it('should return tx hex', async () => {
|
|
|
|
|
const options = {
|
|
|
|
|
method: 'PUT',
|
|
|
|
|
uri: 'http://localhost:3000/v2/rawtransactions/change',
|
|
|
|
|
resolveWithFullResponse: true,
|
|
|
|
|
json: true,
|
|
|
|
|
body: {
|
|
|
|
|
rawtx:
|
|
|
|
|
'0100000001b15ee60431ef57ec682790dec5a3c0d83a0c360633ea8308fbf6d5fc10a779670400000000ffffffff025c0d00000000000047512102f3e471222bb57a7d416c82bf81c627bfcd2bdc47f36e763ae69935bba4601ece21021580b888ff56feb27f17f08802ebed26258c23697d6a462d43fc13b565fda2dd52aeaa0a0000000000001976a914946cb2e08075bcbaf157e47bcb67eb2b2339d24288ac00000000',
|
|
|
|
|
destination: 'bitcoincash:qrn60nerx5zug4u4hal06atep3lzhtecvy4pxk75lf',
|
|
|
|
|
prevtxs: [
|
|
|
|
|
{
|
|
|
|
|
txid:
|
|
|
|
|
'6779a710fcd5f6fb0883ea3306360c3ad8c0a3c5de902768ec57ef3104e65eb1',
|
|
|
|
|
vout: 4,
|
|
|
|
|
scriptPubKey:
|
|
|
|
|
'76a9147b25205fd98d462880a3e5b0541235831ae959e588ac',
|
|
|
|
|
value: 0.00068257
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
fee: 0.000035
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const result = await rp(options)
|
|
|
|
|
// console.log(`result.body: ${JSON.stringify(result.body, null, 0)}`)
|
|
|
|
|
|
|
|
|
|
assert.isString(result.body)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
describe('#whInput', () => {
|
|
|
|
|
it('should return tx hex', async () => {
|
|
|
|
|
const options = {
|
|
|
|
|
method: 'PUT',
|
|
|
|
|
uri: 'http://localhost:3000/v2/rawtransactions/input',
|
|
|
|
|
resolveWithFullResponse: true,
|
|
|
|
|
json: true,
|
|
|
|
|
body: {
|
|
|
|
|
txid:
|
|
|
|
|
'b006729017df05eda586df9ad3f8ccfee5be340aadf88155b784d1fc0e8342ee',
|
|
|
|
|
n: 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const result = await rp(options)
|
|
|
|
|
// console.log(`result.body: ${JSON.stringify(result.body, null, 0)}`)
|
|
|
|
|
|
|
|
|
|
assert.isString(result.body)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
describe('#getRawTransaction', () => {
|
|
|
|
|
it('should return tx hex', async () => {
|
|
|
|
|
const options = {
|
|
|
|
|
method: 'POST',
|
|
|
|
|
uri: 'http://localhost:3000/v2/rawtransactions/getRawTransaction',
|
|
|
|
|
resolveWithFullResponse: true,
|
|
|
|
|
json: true,
|
|
|
|
|
body: {
|
|
|
|
|
txids: [
|
|
|
|
|
'0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098'
|
|
|
|
|
],
|
|
|
|
|
verbose: true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const result = await rp(options)
|
|
|
|
|
// console.log(`result.body: ${util.inspect(result.body)}`)
|
|
|
|
|
|
|
|
|
|
assert.isArray(result.body)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
})
|
2021-02-09 12:18:52 -08:00
|
|
|
*/
|