1
0
mirror of https://github.com/bigchaindb/js-bigchaindb-driver.git synced 2024-12-01 13:47:09 +01:00
js-bigchaindb-driver/test/connection/test_connection.js

222 lines
5.4 KiB
JavaScript
Raw Normal View History

2017-06-19 14:40:22 +02:00
import test from 'ava'
import sinon from 'sinon'
2017-06-20 11:03:19 +02:00
2017-06-19 16:30:00 +02:00
import * as request from '../../src/request' // eslint-disable-line
2017-06-19 14:40:22 +02:00
import { Connection } from '../../src'
2018-03-26 12:15:36 +02:00
import { API_PATH } from '../constants'
2017-06-19 14:40:22 +02:00
const conn = new Connection(API_PATH)
test('Payload thrown at incorrect API_PATH', t => {
2017-09-27 15:37:49 +02:00
const path = 'http://localhost:9984/api/wrong/'
2017-09-27 15:38:52 +02:00
const connection = new Connection(path)
2017-09-27 15:37:49 +02:00
const target = {
message: 'HTTP Error: Requested page not reachable',
status: '404 NOT FOUND',
requestURI: 'http://localhost:9984/api/wrong/transactions/transactionId'
2017-09-27 15:37:49 +02:00
}
connection.getTransaction('transactionId')
.catch(error => {
t.deepEqual(target, error)
})
2017-09-27 15:37:49 +02:00
})
2017-06-19 14:40:22 +02:00
test('Generate API URLS', t => {
2017-06-19 14:40:22 +02:00
const endpoints = {
'blocks': 'blocks',
2018-03-21 11:30:54 +01:00
'blocksDetail': 'blocks/%(blockHeight)s',
2017-06-19 14:40:22 +02:00
'outputs': 'outputs',
'transactions': 'transactions',
2018-06-19 16:52:23 +02:00
'transactionsSync': 'transactions?mode=sync',
'transactionsAsync': 'transactions?mode=async',
'transactionsCommit': 'transactions?mode=commit',
2017-06-19 14:56:00 +02:00
'transactionsDetail': 'transactions/%(transactionId)s',
'assets': 'assets',
2017-06-19 14:40:22 +02:00
}
2017-06-21 16:04:35 +02:00
Object.keys(endpoints).forEach(endpointName => {
2017-06-19 14:40:22 +02:00
const url = conn.getApiUrls(endpointName)
const expected = API_PATH + endpoints[endpointName]
t.is(url, expected)
})
})
2017-06-19 16:30:00 +02:00
test('Request with custom headers', t => {
const testConn = new Connection(API_PATH, { hello: 'world' })
const expectedOptions = {
headers: {
hello: 'world',
custom: 'headers'
}
}
// request is read only, cannot be mocked?
sinon.spy(request, 'default')
testConn._req(API_PATH, { headers: { custom: 'headers' } })
t.truthy(request.default.calledWith(API_PATH, expectedOptions))
request.default.restore()
})
2017-06-19 14:56:00 +02:00
test('Get block for a block id', t => {
const expectedPath = 'path'
2018-03-21 11:30:54 +01:00
const blockHeight = 'abc'
2017-06-19 14:56:00 +02:00
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
2018-03-21 11:30:54 +01:00
conn.getBlock(blockHeight)
2017-06-19 14:56:00 +02:00
t.truthy(conn._req.calledWith(
expectedPath,
2018-03-21 11:30:54 +01:00
{ urlTemplateSpec: { blockHeight } }
2017-06-19 14:40:22 +02:00
))
})
test('Get transaction for a transaction id', t => {
const expectedPath = 'path'
const transactionId = 'abc'
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
conn.getTransaction(transactionId)
t.truthy(conn._req.calledWith(
expectedPath,
2017-06-19 14:56:00 +02:00
{ urlTemplateSpec: { transactionId } }
2017-06-19 14:40:22 +02:00
))
})
test('Get list of blocks for a transaction id', t => {
const expectedPath = 'path'
const transactionId = 'abc'
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
2018-03-21 11:30:54 +01:00
conn.listBlocks(transactionId)
2017-06-19 14:40:22 +02:00
t.truthy(conn._req.calledWith(
expectedPath,
{
query: {
transaction_id: transactionId,
}
}
))
})
2017-06-21 11:01:28 +02:00
test('Get list of transactions for an asset id', t => {
const expectedPath = 'path'
const assetId = 'abc'
const operation = 'operation'
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
conn.listTransactions(assetId, operation)
t.truthy(conn._req.calledWith(
expectedPath,
{
query: {
asset_id: assetId,
operation
}
}
))
})
2017-06-20 17:46:25 +02:00
test('Get outputs for a public key and no spent flag', t => {
const expectedPath = 'path'
const publicKey = 'publicKey'
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
conn.listOutputs(publicKey)
t.truthy(conn._req.calledWith(
expectedPath,
{ query: { public_key: publicKey } }
))
})
test('Get outputs for a public key and spent=false', t => {
const expectedPath = 'path'
const publicKey = 'publicKey'
const spent = false
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
conn.listOutputs(publicKey, spent)
t.truthy(conn._req.calledWith(
expectedPath,
{ query: { public_key: publicKey, spent: 'false' } }
2017-06-20 17:46:25 +02:00
))
})
test('Get outputs for a public key and spent=true', t => {
const expectedPath = 'path'
const publicKey = 'publicKey'
const spent = true
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
conn.listOutputs(publicKey, spent)
t.truthy(conn._req.calledWith(
expectedPath,
{ query: { public_key: publicKey, spent: 'true' } }
2017-06-20 17:46:25 +02:00
))
})
2017-06-19 14:40:22 +02:00
test('Get votes for a block id', t => {
const expectedPath = 'path'
const blockId = 'abc'
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
conn.listVotes(blockId)
t.truthy(conn._req.calledWith(
expectedPath,
{ query: { block_id: blockId } }
))
})
2017-06-19 14:56:00 +02:00
test('Get asset for text', t => {
2017-06-19 14:56:00 +02:00
const expectedPath = 'path'
const search = 'abc'
2017-06-19 14:56:00 +02:00
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
conn.searchAssets(search)
2017-06-19 14:56:00 +02:00
t.truthy(conn._req.calledWith(
expectedPath,
{ query: { search } }
2017-06-19 14:56:00 +02:00
))
})
2017-11-21 16:51:31 +01:00
test('Get metadata for text', t => {
const expectedPath = 'path'
const search = 'abc'
conn._req = sinon.spy()
conn.getApiUrls = sinon.stub().returns(expectedPath)
conn.searchMetadata(search)
t.truthy(conn._req.calledWith(
expectedPath,
{ query: { search } }
))
})