mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-25 13:35:54 +00:00
Revert d2953f602e
This commit is contained in:
@@ -1,137 +0,0 @@
|
|||||||
################################### REQUIRES ###################################
|
|
||||||
|
|
||||||
testutils = require './testutils'
|
|
||||||
child_process = require 'child_process'
|
|
||||||
assert = require 'assert'
|
|
||||||
|
|
||||||
#################################### CONFIG ####################################
|
|
||||||
|
|
||||||
config = testutils.init_config()
|
|
||||||
rippled_path = config.default_server_config.rippled_path
|
|
||||||
|
|
||||||
DEBUG = 0
|
|
||||||
|
|
||||||
setupFunc = suiteSetup # setup
|
|
||||||
teardownFunc = suiteTeardown # teardown
|
|
||||||
|
|
||||||
#################################### HELPERS ###################################
|
|
||||||
|
|
||||||
pretty_json = (value) ->
|
|
||||||
JSON.stringify value, undefined, 2
|
|
||||||
|
|
||||||
##################################### MAIN #####################################
|
|
||||||
|
|
||||||
define_cmd_line_test_factory = (server) ->
|
|
||||||
# A helper for running rippled `from the command line`
|
|
||||||
do_run_command = (args) =>
|
|
||||||
base_options =
|
|
||||||
env: process.env
|
|
||||||
# We just want the stdout which will have the rpc responses in json,
|
|
||||||
# the stderr stream
|
|
||||||
stdio: ['ignore', 'pipe', 'ignore']
|
|
||||||
# Make sure we use the standalone server config...
|
|
||||||
cwd: server().serverPath()
|
|
||||||
|
|
||||||
child = child_process.spawn(rippled_path, args, base_options)
|
|
||||||
return child
|
|
||||||
|
|
||||||
# A higher level helper that transforms any object args into json before
|
|
||||||
# sending
|
|
||||||
run_cmd = ->
|
|
||||||
args = []
|
|
||||||
for arg in arguments
|
|
||||||
if typeof arg == 'object'
|
|
||||||
arg = JSON.stringify arg
|
|
||||||
args.push arg
|
|
||||||
do_run_command args
|
|
||||||
|
|
||||||
n = 0
|
|
||||||
# Define a `test` that will run a rippled command line eg.
|
|
||||||
# $ ./build/rippled sign passphrase '{"TransactionType" : "Payment"}'
|
|
||||||
sign_test = (secret, tx_json, error, debug) ->
|
|
||||||
[error_message, code] = error
|
|
||||||
|
|
||||||
test "Signing test (#{++n}): #{error_message} ", (done) ->
|
|
||||||
child = run_cmd 'sign', secret, tx_json
|
|
||||||
|
|
||||||
child.once 'exit', ->
|
|
||||||
result = JSON.parse(child.stdout.read())
|
|
||||||
console.log pretty_json(result) if DEBUG or debug?
|
|
||||||
result = result.result
|
|
||||||
|
|
||||||
assert_equal = (actual, expected, result) ->
|
|
||||||
msg = "Expected `#{expected}` in\n #{pretty_json result}"
|
|
||||||
assert.equal actual, expected, msg
|
|
||||||
|
|
||||||
assert_equal result.error_message, error_message, result
|
|
||||||
assert_equal result.error, code, result
|
|
||||||
done()
|
|
||||||
|
|
||||||
return sign_test
|
|
||||||
|
|
||||||
suite 'errorReporting', ->
|
|
||||||
# This gives `var server = null` semantics for coffee script, so can set it
|
|
||||||
# later inside a nested scoped
|
|
||||||
server = null
|
|
||||||
|
|
||||||
# The FactoryFactoryFactorater ;)
|
|
||||||
sign_test = define_cmd_line_test_factory -> server
|
|
||||||
|
|
||||||
# We need to setup a server running in standalone mode, so we can subsequently
|
|
||||||
# run `rippled $cmd $param_n $param_n+1 ...
|
|
||||||
setupFunc (done) ->
|
|
||||||
testutils.build_setup().call @, =>
|
|
||||||
server = @.store.alpha.server
|
|
||||||
done()
|
|
||||||
|
|
||||||
# Tear it down once all the tests have run
|
|
||||||
# suiteTeardown (done) ->
|
|
||||||
teardownFunc (done) ->
|
|
||||||
console.log "suiteTeardown"
|
|
||||||
testutils.build_teardown().call @, ->
|
|
||||||
done()
|
|
||||||
|
|
||||||
sign_test 'passphrase',
|
|
||||||
{},
|
|
||||||
['Missing field \'tx_json.TransactionType\'.', 'invalidParams']
|
|
||||||
|
|
||||||
sign_test 'passphrase',
|
|
||||||
{TransactionType: "Payment"},
|
|
||||||
['Missing field \'tx_json.Account\'.', 'srcActMissing']
|
|
||||||
|
|
||||||
sign_test 'passphrase',
|
|
||||||
{
|
|
||||||
TransactionType: "Payment",
|
|
||||||
# Using an account that doesn't exist in standalone server
|
|
||||||
# ledger
|
|
||||||
Account: "rMTzGg7nPPEMJthjgEBfiPZGoAM7MEVa1r"
|
|
||||||
},
|
|
||||||
['Source account not found.', 'srcActNotFound']
|
|
||||||
|
|
||||||
sign_test 'passphrase',
|
|
||||||
{
|
|
||||||
TransactionType: "Payment",
|
|
||||||
# Use the root account which WOULD exist
|
|
||||||
Account: "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"
|
|
||||||
Amount: "1"
|
|
||||||
},
|
|
||||||
["Missing field 'tx_json.Destination'.", 'invalidParams']
|
|
||||||
|
|
||||||
sign_test 'passphrase',
|
|
||||||
{
|
|
||||||
TransactionType: "Payment",
|
|
||||||
Account: "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"
|
|
||||||
Destination: "rMTzGg7nPPEMJthjgEBfiPZGoAM7MEVa1r"
|
|
||||||
Amount: "1"
|
|
||||||
},
|
|
||||||
['Secret does not match account.', 'badSecret']
|
|
||||||
|
|
||||||
sign_test 'masterpassphrase',
|
|
||||||
{
|
|
||||||
TransactionType: "Payment",
|
|
||||||
Account: "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh"
|
|
||||||
Destination: "rMTzGg7nPPEMJthjgEBfiPZGoAM7MEVa1r"
|
|
||||||
# We don't have an Amount, so we'd expect some error handling
|
|
||||||
# here (or earlier really ...)
|
|
||||||
},
|
|
||||||
['Missing field \'tx_json.Amount\'.', 'invalidParams']
|
|
||||||
@@ -525,10 +525,7 @@ exports.verify_offer_not_found = verify_offer_not_found;
|
|||||||
exports.verify_owner_count = verify_owner_count;
|
exports.verify_owner_count = verify_owner_count;
|
||||||
exports.verify_owner_counts = verify_owner_counts;
|
exports.verify_owner_counts = verify_owner_counts;
|
||||||
|
|
||||||
// ND: perhaps `exit` is more suitable, else when using suite(Setup|Teardown)
|
process.on('uncaughtException', function() {
|
||||||
// with build_setup we could hang.
|
|
||||||
process.on('exit', function() {
|
|
||||||
// process.on('uncaughtException', function() {
|
|
||||||
Object.keys(server).forEach(function(host) {
|
Object.keys(server).forEach(function(host) {
|
||||||
server[host].stop();
|
server[host].stop();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user