mirror of
https://github.com/Xahau/xahau.js.git
synced 2025-11-20 04:05:52 +00:00
Improve transaction-test coverage
This commit is contained in:
@@ -73,6 +73,61 @@ describe('Transaction', function() {
|
||||
assert.strictEqual(transaction.state, 'pending');
|
||||
});
|
||||
|
||||
it('Check response code is tel', function() {
|
||||
var transaction = new Transaction();
|
||||
assert(!transaction.isTelLocal(-400));
|
||||
assert(transaction.isTelLocal(-399));
|
||||
assert(transaction.isTelLocal(-300));
|
||||
assert(!transaction.isTelLocal(-299));
|
||||
});
|
||||
|
||||
it('Check response code is tem', function() {
|
||||
var transaction = new Transaction();
|
||||
assert(!transaction.isTemMalformed(-300));
|
||||
assert(transaction.isTemMalformed(-299));
|
||||
assert(transaction.isTemMalformed(-200));
|
||||
assert(!transaction.isTemMalformed(-199));
|
||||
});
|
||||
|
||||
it('Check response code is tef', function() {
|
||||
var transaction = new Transaction();
|
||||
assert(!transaction.isTefFailure(-200));
|
||||
assert(transaction.isTefFailure(-199));
|
||||
assert(transaction.isTefFailure(-100));
|
||||
assert(!transaction.isTefFailure(-99));
|
||||
});
|
||||
|
||||
it('Check response code is ter', function() {
|
||||
var transaction = new Transaction();
|
||||
assert(!transaction.isTerRetry(-100));
|
||||
assert(transaction.isTerRetry(-99));
|
||||
assert(transaction.isTerRetry(-1));
|
||||
assert(!transaction.isTerRetry(0));
|
||||
});
|
||||
|
||||
it('Check response code is tep', function() {
|
||||
var transaction = new Transaction();
|
||||
assert(!transaction.isTepSuccess(-1));
|
||||
assert(transaction.isTepSuccess(0));
|
||||
assert(transaction.isTepSuccess(1e3));
|
||||
});
|
||||
|
||||
it('Check response code is tec', function() {
|
||||
var transaction = new Transaction();
|
||||
assert(!transaction.isTecClaimed(99));
|
||||
assert(transaction.isTecClaimed(100));
|
||||
assert(transaction.isTecClaimed(1e3));
|
||||
});
|
||||
|
||||
it('Check response code is rejected', function() {
|
||||
var transaction = new Transaction();
|
||||
assert(!transaction.isRejected(0));
|
||||
assert(!transaction.isRejected(-99));
|
||||
assert(transaction.isRejected(-100));
|
||||
assert(transaction.isRejected(-399));
|
||||
assert(!transaction.isRejected(-400));
|
||||
});
|
||||
|
||||
it('Set state', function(done) {
|
||||
var transaction = new Transaction();
|
||||
transaction.state = 'pending';
|
||||
@@ -153,15 +208,25 @@ describe('Transaction', function() {
|
||||
s3._connected = true;
|
||||
s3._load_factor = 256 * 8;
|
||||
|
||||
remote._servers = [ s1, s2, s3 ];
|
||||
var s4 = new Server(remote, 'wss://s-west.ripple.com:443');
|
||||
s4._connected = true;
|
||||
s4._load_factor = 256 * 8;
|
||||
|
||||
var s5 = new Server(remote, 'wss://s-west.ripple.com:443');
|
||||
s5._connected = true;
|
||||
s5._load_factor = 256 * 7;
|
||||
|
||||
remote._servers = [ s2, s3, s1, s4 ];
|
||||
|
||||
assert.strictEqual(s1._computeFee(10), '12');
|
||||
assert.strictEqual(s2._computeFee(10), '48');
|
||||
assert.strictEqual(s3._computeFee(10), '96');
|
||||
assert.strictEqual(s4._computeFee(10), '96');
|
||||
assert.strictEqual(s5._computeFee(10), '84');
|
||||
|
||||
var transaction = new Transaction(remote);
|
||||
|
||||
assert.strictEqual(transaction._computeFee(), '48');
|
||||
assert.strictEqual(transaction._computeFee(), '72');
|
||||
});
|
||||
|
||||
it('Compute fee - no connected server', function() {
|
||||
@@ -245,6 +310,26 @@ describe('Transaction', function() {
|
||||
assert.strictEqual(transaction._computeFee(), '72');
|
||||
});
|
||||
|
||||
it('Complete transaction', function(done) {
|
||||
var remote = new Remote();
|
||||
|
||||
var s1 = new Server(remote, 'wss://s-west.ripple.com:443');
|
||||
s1._connected = true;
|
||||
|
||||
remote._servers = [ s1 ];
|
||||
remote.trusted = true;
|
||||
remote.local_signing = true;
|
||||
|
||||
var transaction = new Transaction(remote);
|
||||
transaction._secret = 'sh2pTicynUEG46jjR4EoexHcQEoij';
|
||||
transaction.tx_json.Account = 'rMWwx3Ma16HnqSd4H6saPisihX9aKpXxHJ';
|
||||
transaction.tx_json.Flags = 0;
|
||||
|
||||
assert(transaction.complete());
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('Complete transaction - untrusted', function(done) {
|
||||
var remote = new Remote();
|
||||
var transaction = new Transaction(remote);
|
||||
@@ -430,6 +515,23 @@ describe('Transaction', function() {
|
||||
done();
|
||||
});
|
||||
|
||||
it('Get hash - invalid prefix', function(done) {
|
||||
var transaction = new Transaction();
|
||||
transaction._secret = 'sh2pTicynUEG46jjR4EoexHcQEoij';
|
||||
transaction.tx_json.SigningPubKey = '021FED5FD081CE5C4356431267D04C6E2167E4112C897D5E10335D4E22B4DA49ED';
|
||||
transaction.tx_json.Account = 'rMWwx3Ma16HnqSd4H6saPisihX9aKpXxHJ';
|
||||
transaction.tx_json.Flags = 0;
|
||||
transaction.tx_json.Fee = 10;
|
||||
transaction.tx_json.Sequence = 1;
|
||||
transaction.tx_json.TransactionType = 'AccountSet';
|
||||
|
||||
assert.throws(function() {
|
||||
transaction.hash('HASH_TX_SIGNZ');
|
||||
});
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('Get hash - complex transaction', function() {
|
||||
var input_json = {
|
||||
Account : 'r4qLSAzv4LZ9TLsR7diphGwKnSEAMQTSjS',
|
||||
@@ -686,7 +788,7 @@ describe('Transaction', function() {
|
||||
{
|
||||
account: 'rP51ycDJw5ZhgvdKiRjBYZKYjsyoCcHmnY',
|
||||
issuer: 'rsLEU1TPdCJPPysqhWYw9jD97xtG5WqSJm',
|
||||
currency: 'USD'
|
||||
type_hex: '0000000000000001'
|
||||
},
|
||||
{
|
||||
account: 'rP51ycDJw5ZhgvdKiRjBYZKYjsyoCcHmnY',
|
||||
@@ -705,7 +807,7 @@ describe('Transaction', function() {
|
||||
{
|
||||
account: 'rP51ycDJw5ZhgvdKiRjBYZKYjsyoCcHmnY',
|
||||
issuer: 'rsLEU1TPdCJPPysqhWYw9jD97xtG5WqSJm',
|
||||
currency: 'USD'
|
||||
type_hex: '0000000000000001'
|
||||
},
|
||||
{
|
||||
account: 'rP51ycDJw5ZhgvdKiRjBYZKYjsyoCcHmnY',
|
||||
@@ -715,6 +817,10 @@ describe('Transaction', function() {
|
||||
]);
|
||||
});
|
||||
|
||||
it('Rewrite transaction path - invalid path', function() {
|
||||
assert.strictEqual(Transaction._pathRewrite(1), void(0));
|
||||
});
|
||||
|
||||
it('Add transaction path', function() {
|
||||
var transaction = new Transaction();
|
||||
|
||||
@@ -1231,7 +1337,6 @@ describe('Transaction', function() {
|
||||
|
||||
it('Submit transaction', function(done) {
|
||||
var remote = new Remote();
|
||||
|
||||
var transaction = new Transaction(remote).accountSet('r36xtKNKR43SeXnGn7kN4r4JdQzcrkqpWe');
|
||||
|
||||
assert.strictEqual(transaction.callback, void(0));
|
||||
@@ -1272,6 +1377,84 @@ describe('Transaction', function() {
|
||||
assert.strictEqual(typeof transaction._errorHandler, 'function');
|
||||
assert.strictEqual(typeof transaction._successHandler, 'function');
|
||||
});
|
||||
|
||||
it('Submit transaction - submission error', function(done) {
|
||||
var remote = new Remote();
|
||||
|
||||
var transaction = new Transaction(remote).accountSet('r36xtKNKR43SeXnGn7kN4r4JdQzcrkqpWe');
|
||||
|
||||
var account = remote.addAccount('r36xtKNKR43SeXnGn7kN4r4JdQzcrkqpWe');
|
||||
|
||||
account._transactionManager._nextSequence = 1;
|
||||
|
||||
account._transactionManager._request = function(tx) {
|
||||
tx.emit('error', new Error('Test error'));
|
||||
};
|
||||
|
||||
transaction.complete = function() {
|
||||
return this;
|
||||
};
|
||||
|
||||
var receivedError = false;
|
||||
|
||||
transaction.once('error', function() {
|
||||
receivedError = true;
|
||||
});
|
||||
|
||||
function submitCallback(err, res) {
|
||||
setImmediate(function() {
|
||||
assert(err);
|
||||
assert.strictEqual(err.constructor.name, 'RippleError');
|
||||
assert(receivedError);
|
||||
done();
|
||||
});
|
||||
};
|
||||
|
||||
transaction.submit(submitCallback);
|
||||
});
|
||||
|
||||
it('Submit transaction - invalid account', function(done) {
|
||||
var remote = new Remote();
|
||||
var transaction = new Transaction(remote).accountSet('r36xtKNKR43SeXnGn7kN4r4JdQzcrkqpWe');
|
||||
|
||||
transaction.tx_json.Account += 'z';
|
||||
|
||||
transaction.once('error', function(err) {
|
||||
assert.strictEqual(err.result, 'tejInvalidAccount');
|
||||
done();
|
||||
});
|
||||
|
||||
transaction.submit();
|
||||
});
|
||||
|
||||
it.skip('Abort submission', function(done) {
|
||||
var remote = new Remote();
|
||||
var transaction = new Transaction(remote).accountSet('r36xtKNKR43SeXnGn7kN4r4JdQzcrkqpWe');
|
||||
var account = remote.addAccount('r36xtKNKR43SeXnGn7kN4r4JdQzcrkqpWe');
|
||||
|
||||
account._transactionManager._nextSequence = 1;
|
||||
|
||||
account._transactionManager._request = function(tx) {
|
||||
setTimeout(function() {
|
||||
tx.emit('success', { });
|
||||
}, 20);
|
||||
};
|
||||
|
||||
transaction.complete = function() {
|
||||
return this;
|
||||
};
|
||||
|
||||
function submitCallback(err, res) {
|
||||
setImmediate(function() {
|
||||
assert(err);
|
||||
assert.strictEqual(err.result, 'tejAbort');
|
||||
done();
|
||||
});
|
||||
};
|
||||
|
||||
transaction.submit(submitCallback);
|
||||
transaction.abort();
|
||||
});
|
||||
});
|
||||
|
||||
// vim:sw=2:sts=2:ts=8:et
|
||||
|
||||
Reference in New Issue
Block a user