From db10937f9e58090a482264fa1e9c435d3289e51c Mon Sep 17 00:00:00 2001 From: tim Date: Tue, 20 Jun 2017 16:17:43 +0200 Subject: [PATCH] Add integration test for asset endpoint :diamond: --- src/connection/index.js | 10 +++--- test/connection/test_connection.js | 10 +++--- test/constants.js | 14 ++++---- test/integration/test_integration.js | 50 ++++++++++++++++++++-------- test/transaction/test_transaction.js | 12 +++---- 5 files changed, 60 insertions(+), 36 deletions(-) diff --git a/src/connection/index.js b/src/connection/index.js index c1e3efd..80702de 100644 --- a/src/connection/index.js +++ b/src/connection/index.js @@ -15,7 +15,7 @@ export default class Connection { 'statuses': 'statuses', 'transactions': 'transactions', 'transactionsDetail': 'transactions/%(transactionId)s', - 'searchAssets': 'assets', + 'assets': 'assets', 'votes': 'votes' }[endpoints] } @@ -161,12 +161,12 @@ export default class Connection { /** * @public * - * @param query + * @param search */ - searchAssets(query) { - return this._req(this.getApiUrls('searchAssets'), { + searchAssets(search) { + return this._req(this.getApiUrls('assets'), { query: { - text_search: query + search } }) } diff --git a/test/connection/test_connection.js b/test/connection/test_connection.js index 0d79c01..4ccbb41 100644 --- a/test/connection/test_connection.js +++ b/test/connection/test_connection.js @@ -16,7 +16,7 @@ test('generate API URLS', t => { 'statuses': 'statuses', 'transactions': 'transactions', 'transactionsDetail': 'transactions/%(transactionId)s', - 'searchAssets': 'assets', + 'assets': 'assets', } Object.keys(endpoints).forEach((endpointName) => { const url = conn.getApiUrls(endpointName) @@ -125,16 +125,16 @@ test('Get votes for a block id', t => { }) -test('Get asset for a text', t => { +test('Get asset for text', t => { const expectedPath = 'path' - const query = 'abc' + const search = 'abc' conn._req = sinon.spy() conn.getApiUrls = sinon.stub().returns(expectedPath) - conn.searchAssets(query) + conn.searchAssets(search) t.truthy(conn._req.calledWith( expectedPath, - { query: { text_search: query } } + { query: { search } } )) }) diff --git a/test/constants.js b/test/constants.js index 47cf12f..d67d66f 100644 --- a/test/constants.js +++ b/test/constants.js @@ -2,23 +2,23 @@ import test from 'ava' import { Transaction, Ed25519Keypair } from '../src' // TODO: Find out if ava has something like conftest, if so put this there. -// TODO: We're adding `Math.random()` here to never create the same transaction -// twice. -export const assetMessage = { assetMessage: Math.random() } -export const metaDataMessage = { metaDataMessage: 'metaDataMessage' } +// NOTE: We cast `Math.random()` to a string, as sometimes Javascript simply +// yields a slightly different float during runtime, lol +export function asset() { return { message: `${Math.random()}` } } +export const metaData = { message: 'metaDataMessage' } export const alice = new Ed25519Keypair() export const aliceCondition = Transaction.makeEd25519Condition(alice.publicKey) export const aliceOutput = Transaction.makeOutput(aliceCondition) export const createTx = Transaction.makeCreateTransaction( - assetMessage, - metaDataMessage, + asset, + metaData, [aliceOutput], alice.publicKey ) export const transferTx = Transaction.makeTransferTransaction( createTx, - metaDataMessage, + metaData, [aliceOutput], 0 ) diff --git a/test/integration/test_integration.js b/test/integration/test_integration.js index 8eb43ca..1f38853 100644 --- a/test/integration/test_integration.js +++ b/test/integration/test_integration.js @@ -7,8 +7,8 @@ import { aliceOutput, bob, bobOutput, - assetMessage, - metaDataMessage + asset, + metaData } from '../constants' const API_PATH = 'http://localhost:9984/api/v1/' @@ -29,15 +29,15 @@ test('Valid CREATE transaction', t => { const conn = new Connection(API_PATH) const tx = Transaction.makeCreateTransaction( - assetMessage, - metaDataMessage, + asset(), + metaData, [aliceOutput], alice.publicKey ) - const txSigned = Transaction.signTransaction(tx, alice.privateKey) + return conn.postTransaction(txSigned) - .then(({ 'id': txId }) => conn.pollStatusAndFetchTransaction(txId)) + .then(({ id }) => conn.pollStatusAndFetchTransaction(id)) .then(resTx => t.truthy(resTx)) }) @@ -45,8 +45,8 @@ test('Valid CREATE transaction', t => { test('Valid TRANSFER transaction with single Ed25519 input', t => { const conn = new Connection(API_PATH) const createTx = Transaction.makeCreateTransaction( - assetMessage, - metaDataMessage, + asset(), + metaData, [aliceOutput], alice.publicKey ) @@ -56,11 +56,11 @@ test('Valid TRANSFER transaction with single Ed25519 input', t => { ) return conn.postTransaction(createTxSigned) - .then(({ 'id': txId }) => conn.pollStatusAndFetchTransaction(txId)) + .then(({ id }) => conn.pollStatusAndFetchTransaction(id)) .then(() => { const transferTx = Transaction.makeTransferTransaction( createTxSigned, - metaDataMessage, + metaData, [aliceOutput], 0 ) @@ -78,8 +78,8 @@ test('Valid TRANSFER transaction with single Ed25519 input', t => { test('Valid TRANSFER transaction with multiple Ed25519 inputs', t => { const conn = new Connection(API_PATH) const createTx = Transaction.makeCreateTransaction( - assetMessage, - metaDataMessage, + asset(), + metaData, [aliceOutput, bobOutput], alice.publicKey ) @@ -93,7 +93,7 @@ test('Valid TRANSFER transaction with multiple Ed25519 inputs', t => { .then(() => { const transferTx = Transaction.makeTransferTransaction( createTxSigned, - metaDataMessage, + metaData, [Transaction.makeOutput(aliceCondition, '2')], 0, 1 @@ -108,3 +108,27 @@ test('Valid TRANSFER transaction with multiple Ed25519 inputs', t => { .then(resTx => t.truthy(resTx)) }) }) + + +test('Search for an asset', t => { + const conn = new Connection(API_PATH) + + const createTx = Transaction.makeCreateTransaction( + asset(), + metaData, + [aliceOutput], + alice.publicKey + ) + const createTxSigned = Transaction.signTransaction( + createTx, + alice.privateKey + ) + + return conn.postTransaction(createTxSigned) + .then(({ id }) => conn.pollStatusAndFetchTransaction(id)) + .then(() => conn.searchAssets(createTxSigned.asset.data.message)) + .then(assets => t.truthy( + assets.pop(), + createTxSigned.asset.data.message + )) +}) diff --git a/test/transaction/test_transaction.js b/test/transaction/test_transaction.js index 3e4f854..1df642f 100644 --- a/test/transaction/test_transaction.js +++ b/test/transaction/test_transaction.js @@ -1,14 +1,14 @@ import test from 'ava' import sinon from 'sinon' -import { Transaction, Ed25519Keypair } from '../../src' +import { Transaction } from '../../src' import * as makeTransaction from '../../src/transaction/makeTransaction' // eslint-disable-line import makeInputTemplate from '../../src/transaction/makeInputTemplate' import { alice, aliceOutput, - metaDataMessage, + metaData, createTx, transferTx } from '../constants' @@ -72,14 +72,14 @@ test('Create TRANSFER transaction based on CREATE transaction', t => { Transaction.makeTransferTransaction( createTx, - metaDataMessage, + metaData, [aliceOutput], 0 ) const expected = [ 'TRANSFER', { id: createTx.id }, - metaDataMessage, + metaData, [aliceOutput], [makeInputTemplate( [alice.publicKey], @@ -100,14 +100,14 @@ test('Create TRANSFER transaction based on TRANSFER transaction', t => { Transaction.makeTransferTransaction( transferTx, - metaDataMessage, + metaData, [aliceOutput], 0 ) const expected = [ 'TRANSFER', { id: transferTx.asset.id }, - metaDataMessage, + metaData, [aliceOutput], [makeInputTemplate( [alice.publicKey],