Organize fixtures

This commit is contained in:
Chris Clark
2015-07-15 18:35:59 -07:00
parent c9610900fd
commit 2b5f356de8
42 changed files with 125 additions and 100 deletions

View File

@@ -3,41 +3,13 @@
const _ = require('lodash'); const _ = require('lodash');
const assert = require('assert-diff'); const assert = require('assert-diff');
const setupAPI = require('./setup-api'); const setupAPI = require('./setup-api');
const fixtures = require('./fixtures/api');
const requests = fixtures.requests;
const responses = fixtures.responses;
const addresses = require('./fixtures/addresses'); const addresses = require('./fixtures/addresses');
const hashes = require('./fixtures/hashes'); const hashes = require('./fixtures/hashes');
const paymentSpecification = require('./fixtures/payment-specification');
const paymentResponse = require('./fixtures/payment-response');
const orderSpecification = require('./fixtures/order-specification');
const orderResponse = require('./fixtures/order-response');
const trustlineSpecification =
require('./fixtures/trustline-specification');
const trustlineResponse = require('./fixtures/trustline-response');
const balancesResponse = require('./fixtures/balances-response');
const orderCancellationResponse =
require('./fixtures/ordercancellation-response');
const settingsSpecification = require('./fixtures/settings-specification');
const settingsResponse = require('./fixtures/settings-response');
const getAccountInfoResponse = require('./fixtures/account-info-response');
const regularKeyResponse = require('./fixtures/regular-key-response');
const signInput = require('./fixtures/sign-input');
const signOutput = require('./fixtures/sign-output');
const MockPRNG = require('./mock-prng'); const MockPRNG = require('./mock-prng');
const sjcl = require('../src').sjcl; const sjcl = require('../src').sjcl;
const submitResponse = require('./fixtures/submit-response');
const transactionResponse = require('./fixtures/transaction-response');
const accountTransactionsResponse =
require('./fixtures/account-transactions-response');
const trustlinesResponse = require('./fixtures/trustlines-response');
const walletResponse = require('./fixtures/wallet.json');
const getSettingsResponse = require('./fixtures/get-settings-response');
const getOrdersResponse = require('./fixtures/get-orders-response');
const getOrderbookResponse = require('./fixtures/get-orderbook-response');
const getServerInfoResponse = require('./fixtures/get-server-info-response');
const getPathsResponse = require('./fixtures/get-paths-response');
const settingsTransactionResponse = require('./fixtures/settings-tx-response');
const orderTransactionResponse = require('./fixtures/responses/order');
const orderCancellationTransactionResponse =
require('./fixtures/responses/order-cancellation');
const address = addresses.ACCOUNT; const address = addresses.ACCOUNT;
const orderbook = { const orderbook = {
@@ -74,84 +46,84 @@ describe('RippleAPI', function() {
afterEach(setupAPI.teardown); afterEach(setupAPI.teardown);
it('preparePayment', function(done) { it('preparePayment', function(done) {
this.api.preparePayment(address, paymentSpecification, instructions, this.api.preparePayment(address, requests.preparePayment, instructions,
_.partial(checkResult, paymentResponse, done)); _.partial(checkResult, responses.preparePayment, done));
}); });
it('prepareOrder', function(done) { it('prepareOrder', function(done) {
this.api.prepareOrder(address, orderSpecification, instructions, this.api.prepareOrder(address, requests.prepareOrder, instructions,
_.partial(checkResult, orderResponse, done)); _.partial(checkResult, responses.prepareOrder, done));
}); });
it('prepareOrderCancellation', function(done) { it('prepareOrderCancellation', function(done) {
this.api.prepareOrderCancellation(address, 23, instructions, this.api.prepareOrderCancellation(address, 23, instructions,
_.partial(checkResult, orderCancellationResponse, done)); _.partial(checkResult, responses.prepareOrderCancellation, done));
}); });
it('prepareTrustline', function(done) { it('prepareTrustline', function(done) {
this.api.prepareTrustline(address, trustlineSpecification, this.api.prepareTrustline(address, requests.prepareTrustline,
instructions, _.partial(checkResult, trustlineResponse, done)); instructions, _.partial(checkResult, responses.prepareTrustline, done));
}); });
it('prepareSettings', function(done) { it('prepareSettings', function(done) {
this.api.prepareSettings(address, settingsSpecification, this.api.prepareSettings(address, requests.prepareSettings, instructions,
instructions, _.partial(checkResult, settingsResponse, done)); _.partial(checkResult, responses.prepareSettings.flags, done));
}); });
it('prepareSettings - regularKey', function(done) { it('prepareSettings - regularKey', function(done) {
const regularKey = {regularKey: 'rAR8rR8sUkBoCZFawhkWzY4Y5YoyuznwD'}; const regularKey = {regularKey: 'rAR8rR8sUkBoCZFawhkWzY4Y5YoyuznwD'};
this.api.prepareSettings(address, regularKey, this.api.prepareSettings(address, regularKey, instructions,
instructions, _.partial(checkResult, regularKeyResponse, done)); _.partial(checkResult, responses.prepareSettings.regularKey, done));
}); });
it('sign', function() { it('sign', function() {
const secret = 'shsWGZcmZz6YsWWmcnpfr6fLTdtFV'; const secret = 'shsWGZcmZz6YsWWmcnpfr6fLTdtFV';
withDeterministicPRNG(() => { withDeterministicPRNG(() => {
const result = this.api.sign(signInput, secret); const result = this.api.sign(requests.sign, secret);
assert.deepEqual(result, signOutput); assert.deepEqual(result, responses.sign);
}); });
}); });
it('submit', function(done) { it('submit', function(done) {
this.api.submit(signOutput.signedTransaction, this.api.submit(responses.sign.signedTransaction,
_.partial(checkResult, submitResponse, done)); _.partial(checkResult, responses.submit, done));
}); });
it('getBalances', function(done) { it('getBalances', function(done) {
this.api.getBalances(address, {}, this.api.getBalances(address, {},
_.partial(checkResult, balancesResponse, done)); _.partial(checkResult, responses.getBalances, done));
}); });
it('getTransaction', function(done) { it('getTransaction - payment', function(done) {
this.api.getTransaction(hashes.VALID_TRANSACTION_HASH, {}, this.api.getTransaction(hashes.VALID_TRANSACTION_HASH, {},
_.partial(checkResult, transactionResponse, done)); _.partial(checkResult, responses.getTransaction.payment, done));
}); });
it('getTransaction - settings', function(done) { it('getTransaction - settings', function(done) {
const hash = const hash =
'4FB3ADF22F3C605E23FAEFAA185F3BD763C4692CAC490D9819D117CD33BFAA1B'; '4FB3ADF22F3C605E23FAEFAA185F3BD763C4692CAC490D9819D117CD33BFAA1B';
this.api.getTransaction(hash, {}, this.api.getTransaction(hash, {},
_.partial(checkResult, settingsTransactionResponse, done)); _.partial(checkResult, responses.getTransaction.settings, done));
}); });
it('getTransaction - order', function(done) { it('getTransaction - order', function(done) {
const hash = const hash =
'10A6FB4A66EE80BED46AAE4815D7DC43B97E944984CCD5B93BCF3F8538CABC51'; '10A6FB4A66EE80BED46AAE4815D7DC43B97E944984CCD5B93BCF3F8538CABC51';
this.api.getTransaction(hash, {}, this.api.getTransaction(hash, {},
_.partial(checkResult, orderTransactionResponse, done)); _.partial(checkResult, responses.getTransaction.order, done));
}); });
it('getTransaction - order cancellation', function(done) { it('getTransaction - order cancellation', function(done) {
const hash = const hash =
'809335DD3B0B333865096217AA2F55A4DF168E0198080B3A090D12D88880FF0E'; '809335DD3B0B333865096217AA2F55A4DF168E0198080B3A090D12D88880FF0E';
this.api.getTransaction(hash, {}, this.api.getTransaction(hash, {},
_.partial(checkResult, orderCancellationTransactionResponse, done)); _.partial(checkResult, responses.getTransaction.orderCancellation, done));
}); });
it('getTransactions', function(done) { it('getTransactions', function(done) {
const options = {types: ['payment', 'order'], outgoing: true, limit: 2}; const options = {types: ['payment', 'order'], outgoing: true, limit: 2};
this.api.getTransactions(address, options, this.api.getTransactions(address, options,
_.partial(checkResult, accountTransactionsResponse, done)); _.partial(checkResult, responses.getTransactions, done));
}); });
// TODO: this doesn't test much, just that it doesn't crash // TODO: this doesn't test much, just that it doesn't crash
@@ -162,39 +134,39 @@ describe('RippleAPI', function() {
limit: 2 limit: 2
}; };
this.api.getTransactions(address, options, this.api.getTransactions(address, options,
_.partial(checkResult, accountTransactionsResponse, done)); _.partial(checkResult, responses.getTransactions, done));
}); });
it('getTrustlines', function(done) { it('getTrustlines', function(done) {
const options = {currency: 'USD'}; const options = {currency: 'USD'};
this.api.getTrustlines(address, options, this.api.getTrustlines(address, options,
_.partial(checkResult, trustlinesResponse, done)); _.partial(checkResult, responses.getTrustlines, done));
}); });
it('generateWallet', function() { it('generateWallet', function() {
withDeterministicPRNG(() => { withDeterministicPRNG(() => {
assert.deepEqual(this.api.generateWallet(), walletResponse); assert.deepEqual(this.api.generateWallet(), responses.generateWallet);
}); });
}); });
it('getSettings', function(done) { it('getSettings', function(done) {
this.api.getSettings(address, {}, this.api.getSettings(address, {},
_.partial(checkResult, getSettingsResponse, done)); _.partial(checkResult, responses.getSettings, done));
}); });
it('getAccountInfo', function(done) { it('getAccountInfo', function(done) {
this.api.getAccountInfo(address, {}, this.api.getAccountInfo(address, {},
_.partial(checkResult, getAccountInfoResponse, done)); _.partial(checkResult, responses.getAccountInfo, done));
}); });
it('getOrders', function(done) { it('getOrders', function(done) {
this.api.getOrders(address, {}, this.api.getOrders(address, {},
_.partial(checkResult, getOrdersResponse, done)); _.partial(checkResult, responses.getOrders, done));
}); });
it('getOrderbook', function(done) { it('getOrderbook', function(done) {
this.api.getOrderbook(address, orderbook, {}, this.api.getOrderbook(address, orderbook, {},
_.partial(checkResult, getOrderbookResponse, done)); _.partial(checkResult, responses.getOrderbook, done));
}); });
it('getOrderbook - sorted so that best deals come first', function(done) { it('getOrderbook - sorted so that best deals come first', function(done) {
@@ -235,7 +207,8 @@ describe('RippleAPI', function() {
}); });
it('getServerInfo', function(done) { it('getServerInfo', function(done) {
this.api.getServerInfo(_.partial(checkResult, getServerInfoResponse, done)); this.api.getServerInfo(
_.partial(checkResult, responses.getServerInfo, done));
}); });
it('getFee', function() { it('getFee', function() {
@@ -265,7 +238,7 @@ describe('RippleAPI', function() {
} }
}; };
this.api.getPaths(pathfind, this.api.getPaths(pathfind,
_.partial(checkResult, getPathsResponse, done)); _.partial(checkResult, responses.getPaths, done));
}); });
it('getLedgerVersion', function() { it('getLedgerVersion', function() {

7
test/fixtures/api/index.js vendored Normal file
View File

@@ -0,0 +1,7 @@
'use strict';
module.exports = {
responses: require('./responses'),
requests: require('./requests'),
rippled: require('./rippled')
};

9
test/fixtures/api/requests/index.js vendored Normal file
View File

@@ -0,0 +1,9 @@
'use strict';
module.exports = {
prepareOrder: require('./prepare-order'),
preparePayment: require('./prepare-payment'),
prepareSettings: require('./prepare-settings'),
prepareTrustline: require('./prepare-trustline'),
sign: require('./sign')
};

30
test/fixtures/api/responses/index.js vendored Normal file
View File

@@ -0,0 +1,30 @@
'use strict';
module.exports = {
generateWallet: require('./generate-wallet.json'),
getAccountInfo: require('./get-account-info.json'),
getBalances: require('./get-balances.json'),
getOrderbook: require('./get-orderbook.json'),
getOrders: require('./get-orders.json'),
getPaths: require('./get-paths.json'),
getServerInfo: require('./get-server-info.json'),
getSettings: require('./get-settings.json'),
getTransaction: {
orderCancellation: require('./get-transaction-order-cancellation.json'),
order: require('./get-transaction-order.json'),
payment: require('./get-transaction-payment.json'),
settings: require('./get-transaction-settings.json')
},
getTransactions: require('./get-transactions.json'),
getTrustlines: require('./get-trustlines.json'),
prepareOrderCancellation: require('./prepare-order-cancellation.json'),
prepareOrder: require('./prepare-order.json'),
preparePayment: require('./prepare-payment.json'),
prepareSettings: {
regularKey: require('./prepare-settings-regular-key.json'),
flags: require('./prepare-settings.json')
},
prepareTrustline: require('./prepare-trustline.json'),
sign: require('./sign.json'),
submit: require('./submit.json')
};

View File

@@ -1,6 +1,6 @@
'use strict'; 'use strict';
const _ = require('lodash'); const _ = require('lodash');
const addresses = require('./addresses'); const addresses = require('../../addresses');
module.exports = function(request, options={}) { module.exports = function(request, options={}) {
_.defaults(options, { _.defaults(options, {

View File

@@ -1,9 +1,9 @@
/* eslint-disable max-len */ /* eslint-disable max-len */
'use strict'; 'use strict';
const _ = require('lodash'); const _ = require('lodash');
const hashes = require('./hashes'); const hashes = require('../../hashes');
const addresses = require('./addresses'); const addresses = require('../../addresses');
const SerializedObject = require('../../src/core').SerializedObject; const SerializedObject = require('../../../../src/core').SerializedObject;
module.exports = function(request, options={}) { module.exports = function(request, options={}) {
_.defaults(options, { _.defaults(options, {

14
test/fixtures/api/rippled/index.js vendored Normal file
View File

@@ -0,0 +1,14 @@
'use strict';
module.exports = {
misc: require('./mock'),
account_offers: require('./account-offers'),
account_tx: require('./account-tx'),
book_offers: require('./book-offers'),
ripple_path_find: require('./ripple-path-find'),
tx: {
AccountSet: require('./tx/account-set.json'),
OfferCreate: require('./tx/offer-create.json'),
OfferCancel: require('./tx/offer-cancel.json')
}
};

View File

@@ -1,8 +1,8 @@
/* eslint-disable max-len */ /* eslint-disable max-len */
'use strict'; 'use strict';
const _ = require('lodash'); const _ = require('lodash');
const addresses = require('./addresses'); const addresses = require('../../addresses');
const accountTransactionsResponse = require('./acct-tx-response'); const accountTransactionsResponse = require('./account-tx');
const BASE_LEDGER_INDEX = 8819951; const BASE_LEDGER_INDEX = 8819951;
module.exports.accountTransactionsResponse = accountTransactionsResponse; module.exports.accountTransactionsResponse = accountTransactionsResponse;

View File

@@ -3,17 +3,9 @@ const _ = require('lodash');
const assert = require('assert'); const assert = require('assert');
const WebSocketServer = require('ws').Server; const WebSocketServer = require('ws').Server;
const EventEmitter2 = require('eventemitter2').EventEmitter2; const EventEmitter2 = require('eventemitter2').EventEmitter2;
const fixtures = require('./fixtures/mock'); const fixtures = require('./fixtures/api/rippled');
const addresses = require('./fixtures/addresses'); const addresses = require('./fixtures/addresses');
const hashes = require('./fixtures/hashes'); const hashes = require('./fixtures/hashes');
const accountOffersResponse = require('./fixtures/acct-offers-response');
const bookOffers = require('./fixtures/book-offers-response');
const accountSetTransactionResponse = require('./fixtures/account-set-tx.json');
const offerCreateTransactionResponse =
require('./fixtures/rippled-responses/offer-create');
const offerCancelTransactionResponse =
require('./fixtures/rippled-responses/offer-cancel');
const paths = require('./fixtures/paths');
function isUSD(json) { function isUSD(json) {
return json === 'USD' || json === '0000000000000000000000005553440000000000'; return json === 'USD' || json === '0000000000000000000000005553440000000000';
@@ -73,7 +65,7 @@ module.exports = function(port) {
mock.on('request_server_info', function(request, conn) { mock.on('request_server_info', function(request, conn) {
assert.strictEqual(request.command, 'server_info'); assert.strictEqual(request.command, 'server_info');
conn.send(fixtures.serverInfoResponse(request)); conn.send(fixtures.misc.serverInfoResponse(request));
}); });
mock.on('request_subscribe', function(request, conn) { mock.on('request_subscribe', function(request, conn) {
@@ -83,15 +75,15 @@ module.exports = function(port) {
} else { } else {
assert.deepEqual(request.streams, ['ledger', 'server']); assert.deepEqual(request.streams, ['ledger', 'server']);
} }
conn.send(fixtures.subscribeResponse(request)); conn.send(fixtures.misc.subscribeResponse(request));
}); });
mock.on('request_account_info', function(request, conn) { mock.on('request_account_info', function(request, conn) {
assert.strictEqual(request.command, 'account_info'); assert.strictEqual(request.command, 'account_info');
if (request.account === addresses.ACCOUNT) { if (request.account === addresses.ACCOUNT) {
conn.send(fixtures.accountInfoResponse(request)); conn.send(fixtures.misc.accountInfoResponse(request));
} else if (request.account === addresses.NOTFOUND) { } else if (request.account === addresses.NOTFOUND) {
conn.send(fixtures.accountNotFoundResponse(request)); conn.send(fixtures.misc.accountNotFoundResponse(request));
} else { } else {
assert(false, 'Unrecognized account address: ' + request.account); assert(false, 'Unrecognized account address: ' + request.account);
} }
@@ -99,27 +91,27 @@ module.exports = function(port) {
mock.on('request_ledger', function(request, conn) { mock.on('request_ledger', function(request, conn) {
assert.strictEqual(request.command, 'ledger'); assert.strictEqual(request.command, 'ledger');
conn.send(fixtures.ledgerResponse(request)); conn.send(fixtures.misc.ledgerResponse(request));
}); });
mock.on('request_tx', function(request, conn) { mock.on('request_tx', function(request, conn) {
assert.strictEqual(request.command, 'tx'); assert.strictEqual(request.command, 'tx');
if (request.transaction === hashes.VALID_TRANSACTION_HASH) { if (request.transaction === hashes.VALID_TRANSACTION_HASH) {
conn.send(fixtures.transactionResponse(request)); conn.send(fixtures.misc.transactionResponse(request));
} else if (request.transaction === } else if (request.transaction ===
'4FB3ADF22F3C605E23FAEFAA185F3BD763C4692CAC490D9819D117CD33BFAA1B') { '4FB3ADF22F3C605E23FAEFAA185F3BD763C4692CAC490D9819D117CD33BFAA1B') {
const transaction = accountSetTransactionResponse; const transaction = fixtures.tx.AccountSet;
conn.send(fixtures.transactionResponse(request, transaction)); conn.send(fixtures.misc.transactionResponse(request, transaction));
} else if (request.transaction === } else if (request.transaction ===
'10A6FB4A66EE80BED46AAE4815D7DC43B97E944984CCD5B93BCF3F8538CABC51') { '10A6FB4A66EE80BED46AAE4815D7DC43B97E944984CCD5B93BCF3F8538CABC51') {
const transaction = offerCreateTransactionResponse; const transaction = fixtures.tx.OfferCreate;
conn.send(fixtures.transactionResponse(request, transaction)); conn.send(fixtures.misc.transactionResponse(request, transaction));
} else if (request.transaction === } else if (request.transaction ===
'809335DD3B0B333865096217AA2F55A4DF168E0198080B3A090D12D88880FF0E') { '809335DD3B0B333865096217AA2F55A4DF168E0198080B3A090D12D88880FF0E') {
const transaction = offerCancelTransactionResponse; const transaction = fixtures.tx.OfferCancel;
conn.send(fixtures.transactionResponse(request, transaction)); conn.send(fixtures.misc.transactionResponse(request, transaction));
} else if (request.transaction === hashes.NOTFOUND_TRANSACTION_HASH) { } else if (request.transaction === hashes.NOTFOUND_TRANSACTION_HASH) {
conn.send(fixtures.transactionNotFoundResponse(request)); conn.send(fixtures.misc.transactionNotFoundResponse(request));
} else { } else {
assert(false, 'Unrecognized transaction hash: ' + request.transaction); assert(false, 'Unrecognized transaction hash: ' + request.transaction);
} }
@@ -127,14 +119,14 @@ module.exports = function(port) {
mock.on('request_submit', function(request, conn) { mock.on('request_submit', function(request, conn) {
assert.strictEqual(request.command, 'submit'); assert.strictEqual(request.command, 'submit');
conn.send(fixtures.submitResponse(request)); conn.send(fixtures.misc.submitResponse(request));
}); });
mock.on('request_account_lines', function(request, conn) { mock.on('request_account_lines', function(request, conn) {
if (request.account === addresses.ACCOUNT) { if (request.account === addresses.ACCOUNT) {
conn.send(fixtures.accountLinesResponse(request)); conn.send(fixtures.misc.accountLinesResponse(request));
} else if (request.account === addresses.OTHER_ACCOUNT) { } else if (request.account === addresses.OTHER_ACCOUNT) {
conn.send(fixtures.accountLinesCounterpartyResponse(request)); conn.send(fixtures.misc.accountLinesCounterpartyResponse(request));
} else { } else {
assert(false, 'Unrecognized account address: ' + request.account); assert(false, 'Unrecognized account address: ' + request.account);
} }
@@ -142,7 +134,7 @@ module.exports = function(port) {
mock.on('request_account_tx', function(request, conn) { mock.on('request_account_tx', function(request, conn) {
if (request.account === addresses.ACCOUNT) { if (request.account === addresses.ACCOUNT) {
conn.send(fixtures.accountTransactionsResponse(request)); conn.send(fixtures.misc.accountTransactionsResponse(request));
} else { } else {
assert(false, 'Unrecognized account address: ' + request.account); assert(false, 'Unrecognized account address: ' + request.account);
} }
@@ -150,7 +142,7 @@ module.exports = function(port) {
mock.on('request_account_offers', function(request, conn) { mock.on('request_account_offers', function(request, conn) {
if (request.account === addresses.ACCOUNT) { if (request.account === addresses.ACCOUNT) {
conn.send(accountOffersResponse(request)); conn.send(fixtures.account_offers(request));
} else { } else {
assert(false, 'Unrecognized account address: ' + request.account); assert(false, 'Unrecognized account address: ' + request.account);
} }
@@ -159,18 +151,18 @@ module.exports = function(port) {
mock.on('request_book_offers', function(request, conn) { mock.on('request_book_offers', function(request, conn) {
if (isBTC(request.taker_gets.currency) if (isBTC(request.taker_gets.currency)
&& isUSD(request.taker_pays.currency)) { && isUSD(request.taker_pays.currency)) {
conn.send(bookOffers.requestBookOffersBidsResponse(request)); conn.send(fixtures.book_offers.requestBookOffersBidsResponse(request));
} else if (isUSD(request.taker_gets.currency) } else if (isUSD(request.taker_gets.currency)
&& isBTC(request.taker_pays.currency)) { && isBTC(request.taker_pays.currency)) {
conn.send(bookOffers.requestBookOffersAsksResponse(request)); conn.send(fixtures.book_offers.requestBookOffersAsksResponse(request));
} else { } else {
assert(false, 'Unrecognized order book: ' + JSON.stringify(request)); assert(false, 'Unrecognized order book: ' + JSON.stringify(request));
} }
}); });
mock.on('request_ripple_path_find', function(request, conn) { mock.on('request_ripple_path_find', function(request, conn) {
const response = paths.generateIOUPaymentPaths(request.id, const response = fixtures.ripple_path_find.generateIOUPaymentPaths(
request.source_account, request.destination_account, request.id, request.source_account, request.destination_account,
request.destination_amount); request.destination_amount);
conn.send(response); conn.send(response);
}); });

View File

@@ -1,7 +1,7 @@
'use strict'; 'use strict';
const net = require('net'); const net = require('net');
const RippleAPI = require('../src').RippleAPI; const RippleAPI = require('../src').RippleAPI;
const fixtures = require('./fixtures/mock'); const fixtures = require('./fixtures/api/rippled').misc;
const createMockRippled = require('./mock-rippled'); const createMockRippled = require('./mock-rippled');
// using a free port instead of a constant port enables parallelization // using a free port instead of a constant port enables parallelization