mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Update freeze tests
* Conditionally skip freeze enforcement tests * Honour remote.fee_cushion setting * Workaround ripple-lib regression * Don't use mocha features from wrong version
This commit is contained in:
committed by
David Schwartz
parent
4cf29455e4
commit
373ce72984
@@ -68,10 +68,10 @@ exports.suite_test_bailer = () ->
|
|||||||
bailed = false
|
bailed = false
|
||||||
bail = (e) -> bailed = true
|
bail = (e) -> bailed = true
|
||||||
|
|
||||||
suiteSetup 'suite_test_bailer', ->
|
suiteSetup ->
|
||||||
process.on 'uncaughtException', bail
|
process.on 'uncaughtException', bail
|
||||||
|
|
||||||
suiteTeardown 'suite_test_bailer', ->
|
suiteTeardown ->
|
||||||
process.removeListener 'uncaughtException', bail
|
process.removeListener 'uncaughtException', bail
|
||||||
|
|
||||||
wrapper = (test_func) ->
|
wrapper = (test_func) ->
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ book_offers_factory = (remote) ->
|
|||||||
pays: asset(pays)
|
pays: asset(pays)
|
||||||
gets: asset(gets)
|
gets: asset(gets)
|
||||||
|
|
||||||
remote.request_book_offers book, null, null, (err, book) ->
|
remote.request_book_offers book, (err, book) ->
|
||||||
if err
|
if err
|
||||||
assert !err, "error with request_book_offers #{err}"
|
assert !err, "error with request_book_offers #{err}"
|
||||||
|
|
||||||
@@ -346,14 +346,28 @@ suite_setup = (state) ->
|
|||||||
|
|
||||||
execute_if_enabled = (fn) ->
|
execute_if_enabled = (fn) ->
|
||||||
path = "#{__dirname}/../src/ripple/module/data/protocol/TxFlags.h"
|
path = "#{__dirname}/../src/ripple/module/data/protocol/TxFlags.h"
|
||||||
if /asfGlobalFreeze/.exec(fs.readFileSync(path)) == null
|
skip_it = /asfGlobalFreeze/.exec(fs.readFileSync(path)) == null
|
||||||
suite = global.suite.skip
|
func = if skip_it then global.suite.skip else global.suite
|
||||||
fn(suite)
|
enforced = false
|
||||||
|
fn(func, skip_it, enforced)
|
||||||
|
|
||||||
execute_if_enabled (suite) ->
|
conditional_test_factory = ->
|
||||||
|
test = suite_test_bailer()
|
||||||
|
test_if = (b, args...) ->
|
||||||
|
if b
|
||||||
|
test(args...)
|
||||||
|
else
|
||||||
|
test.skip(args...)
|
||||||
|
[test, test_if]
|
||||||
|
|
||||||
|
execute_if_enabled (suite, skipped, enforced) ->
|
||||||
suite 'Freeze Feature', ->
|
suite 'Freeze Feature', ->
|
||||||
|
if not skipped and not enforced
|
||||||
|
console.warn("\tWarning: freeze enforcement tests skipped")
|
||||||
|
|
||||||
suite 'RippleState Freeze', ->
|
suite 'RippleState Freeze', ->
|
||||||
test = suite_test_bailer()
|
# test = suite_test_bailer()
|
||||||
|
[test, test_if] = conditional_test_factory()
|
||||||
h = null
|
h = null
|
||||||
|
|
||||||
{get_helpers} = suite_setup
|
{get_helpers} = suite_setup
|
||||||
@@ -391,6 +405,7 @@ execute_if_enabled (suite) ->
|
|||||||
submit_for_final tx, (m) ->
|
submit_for_final tx, (m) ->
|
||||||
assert.equal m.metadata?.TransactionResult, 'tesSUCCESS'
|
assert.equal m.metadata?.TransactionResult, 'tesSUCCESS'
|
||||||
affected = m.metadata.AffectedNodes
|
affected = m.metadata.AffectedNodes
|
||||||
|
assert affected.length > 1, "only one affected node implies a noop"
|
||||||
ripple_state = affected[1].ModifiedNode
|
ripple_state = affected[1].ModifiedNode
|
||||||
final = ripple_state.FinalFields
|
final = ripple_state.FinalFields
|
||||||
assert.equal h.alias_for(final.LowLimit.issuer), 'G1'
|
assert.equal h.alias_for(final.LowLimit.issuer), 'G1'
|
||||||
@@ -409,7 +424,7 @@ execute_if_enabled (suite) ->
|
|||||||
assert.equal line.Balance.value, '-15' # HighLimit means balance inverted
|
assert.equal line.Balance.value, '-15' # HighLimit means balance inverted
|
||||||
done()
|
done()
|
||||||
|
|
||||||
test 'can not sell assets from that line', (done) ->
|
test_if enforced, 'can not sell assets from that line', (done) ->
|
||||||
h.create_offer 'bob', '1.0', '5/USD/G1', (m) ->
|
h.create_offer 'bob', '1.0', '5/USD/G1', (m) ->
|
||||||
assert.equal m.engine_result, 'tecUNFUNDED_OFFER'
|
assert.equal m.engine_result, 'tecUNFUNDED_OFFER'
|
||||||
done()
|
done()
|
||||||
@@ -419,7 +434,7 @@ execute_if_enabled (suite) ->
|
|||||||
assert.equal m.metadata?.TransactionResult, 'tesSUCCESS'
|
assert.equal m.metadata?.TransactionResult, 'tesSUCCESS'
|
||||||
done()
|
done()
|
||||||
|
|
||||||
test 'can not make Payment from that line', (done) ->
|
test_if enforced, 'can not make Payment from that line', (done) ->
|
||||||
h.make_payment 'bob', 'alice', '1/USD/G1', (m) ->
|
h.make_payment 'bob', 'alice', '1/USD/G1', (m) ->
|
||||||
assert.equal m.engine_result, 'tecPATH_DRY'
|
assert.equal m.engine_result, 'tecPATH_DRY'
|
||||||
done()
|
done()
|
||||||
@@ -472,7 +487,8 @@ execute_if_enabled (suite) ->
|
|||||||
# NoFreeze: 0x00200000
|
# NoFreeze: 0x00200000
|
||||||
# GlobalFreeze: 0x00400000
|
# GlobalFreeze: 0x00400000
|
||||||
|
|
||||||
test = suite_test_bailer()
|
# test = suite_test_bailer()
|
||||||
|
[test, test_if] = conditional_test_factory()
|
||||||
h = null
|
h = null
|
||||||
|
|
||||||
{get_helpers} = suite_setup
|
{get_helpers} = suite_setup
|
||||||
@@ -593,31 +609,31 @@ execute_if_enabled (suite) ->
|
|||||||
done()
|
done()
|
||||||
|
|
||||||
suite 'it\'s assets can\'t be', ->
|
suite 'it\'s assets can\'t be', ->
|
||||||
test 'bought on the market', (next) ->
|
test_if enforced, 'bought on the market', (next) ->
|
||||||
h.create_offer 'A3', '1/BTC/G1', '1.0', (m) ->
|
h.create_offer 'A3', '1/BTC/G1', '1.0', (m) ->
|
||||||
assert.equal m.engine_result, 'tecFROZEN'
|
assert.equal m.engine_result, 'tecFROZEN'
|
||||||
next()
|
next()
|
||||||
|
|
||||||
test 'sold on the market', (next) ->
|
test_if enforced, 'sold on the market', (next) ->
|
||||||
h.create_offer 'A4', '1.0', '1/BTC/G1', (m) ->
|
h.create_offer 'A4', '1.0', '1/BTC/G1', (m) ->
|
||||||
assert.equal m.engine_result, 'tecFROZEN'
|
assert.equal m.engine_result, 'tecFROZEN'
|
||||||
next()
|
next()
|
||||||
|
|
||||||
suite 'it\'s offers are filtered', ->
|
suite 'it\'s offers are filtered', ->
|
||||||
test ':TODO:verify: books_offers(*, $frozen_account/*) shows offers '+
|
test_if enforced, ':TODO:verify: books_offers(*, $frozen_account/*) shows offers '+
|
||||||
'owned by $frozen_account ', (done) ->
|
'owned by $frozen_account ', (done) ->
|
||||||
|
|
||||||
h.book_offers 'XRP', 'USD/G1', (book) ->
|
h.book_offers 'XRP', 'USD/G1', (book) ->
|
||||||
assert.equal book.offers.length, 1
|
assert.equal book.offers.length, 1
|
||||||
done()
|
done()
|
||||||
|
|
||||||
test ':TODO:verify: books_offers($frozen_account/*, *) shows no offers', (done) ->
|
test_if enforced, ':TODO:verify: books_offers($frozen_account/*, *) shows no offers', (done) ->
|
||||||
|
|
||||||
h.book_offers 'USD/G1', 'XRP', (book) ->
|
h.book_offers 'USD/G1', 'XRP', (book) ->
|
||||||
assert.equal book.offers.length, 0
|
assert.equal book.offers.length, 0
|
||||||
done()
|
done()
|
||||||
|
|
||||||
test 'account_offers always shows their own offers', (done) ->
|
test_if enforced, 'account_offers always shows their own offers', (done) ->
|
||||||
{remote} = h = get_helpers()
|
{remote} = h = get_helpers()
|
||||||
|
|
||||||
remote.request_account_offers 'G1', null, 'validated', (err, res) ->
|
remote.request_account_offers 'G1', null, 'validated', (err, res) ->
|
||||||
@@ -637,12 +653,12 @@ execute_if_enabled (suite) ->
|
|||||||
assert.equal m.metadata?.TransactionResult, 'tesSUCCESS'
|
assert.equal m.metadata?.TransactionResult, 'tesSUCCESS'
|
||||||
done()
|
done()
|
||||||
|
|
||||||
test 'via rippling cant be sent', (done) ->
|
test_if enforced, 'via rippling cant be sent', (done) ->
|
||||||
h.make_payment 'A2', 'A1', '1/USD/G1', (m) ->
|
h.make_payment 'A2', 'A1', '1/USD/G1', (m) ->
|
||||||
assert.equal m.engine_result, 'tecPATH_DRY'
|
assert.equal m.engine_result, 'tecPATH_DRY'
|
||||||
done()
|
done()
|
||||||
|
|
||||||
suite 'Accounts with NoFreeze', ->
|
suite 'Accounts with NoFreeze', ->
|
||||||
test = suite_test_bailer()
|
test = suite_test_bailer()
|
||||||
h = null
|
h = null
|
||||||
|
|
||||||
@@ -709,7 +725,8 @@ execute_if_enabled (suite) ->
|
|||||||
done()
|
done()
|
||||||
|
|
||||||
suite 'Offers for frozen trustlines (not GlobalFreeze)', ->
|
suite 'Offers for frozen trustlines (not GlobalFreeze)', ->
|
||||||
test = suite_test_bailer()
|
# test = suite_test_bailer()
|
||||||
|
[test, test_if] = conditional_test_factory()
|
||||||
remote = h = null
|
remote = h = null
|
||||||
|
|
||||||
{get_helpers} = suite_setup
|
{get_helpers} = suite_setup
|
||||||
@@ -776,13 +793,13 @@ execute_if_enabled (suite) ->
|
|||||||
assert.equal m.metadata.TransactionResult, 'tesSUCCESS' # tecPATH_DRY
|
assert.equal m.metadata.TransactionResult, 'tesSUCCESS' # tecPATH_DRY
|
||||||
done()
|
done()
|
||||||
|
|
||||||
test 'Partially consumed offer was removed by tes* payment', (done) ->
|
test_if enforced, 'Partially consumed offer was removed by tes* payment', (done) ->
|
||||||
remote.request_account_offers 'A3', null, 'validated', (err, res) ->
|
remote.request_account_offers 'A3', null, 'validated', (err, res) ->
|
||||||
assert res.offers.length == 0
|
assert res.offers.length == 0
|
||||||
done()
|
done()
|
||||||
|
|
||||||
suite 'will be removed by OfferCreate with tesSUCCESS', ->
|
suite 'will be removed by OfferCreate with tesSUCCESS', ->
|
||||||
test 'freeze the new offer', (done) ->
|
test_if enforced, 'freeze the new offer', (done) ->
|
||||||
tx = remote.transaction()
|
tx = remote.transaction()
|
||||||
tx.ripple_line_set('G1', '0/USD/A4')
|
tx.ripple_line_set('G1', '0/USD/A4')
|
||||||
tx.set_flags('SetFreeze')
|
tx.set_flags('SetFreeze')
|
||||||
@@ -798,7 +815,7 @@ execute_if_enabled (suite) ->
|
|||||||
|
|
||||||
done()
|
done()
|
||||||
|
|
||||||
test 'can no longer create a crossing offer', (done) ->
|
test_if enforced, 'can no longer create a crossing offer', (done) ->
|
||||||
h.create_offer 'A2', '999/USD/G1', '999.0', (m) ->
|
h.create_offer 'A2', '999/USD/G1', '999.0', (m) ->
|
||||||
assert.equal m.metadata?.TransactionResult, 'tesSUCCESS'
|
assert.equal m.metadata?.TransactionResult, 'tesSUCCESS'
|
||||||
affected = m.metadata.AffectedNodes
|
affected = m.metadata.AffectedNodes
|
||||||
@@ -807,7 +824,7 @@ execute_if_enabled (suite) ->
|
|||||||
assert.equal h.alias_for(new_fields.Account), 'A2'
|
assert.equal h.alias_for(new_fields.Account), 'A2'
|
||||||
done()
|
done()
|
||||||
|
|
||||||
test 'offer was removed by offer_create', (done) ->
|
test_if enforced, 'offer was removed by offer_create', (done) ->
|
||||||
remote.request_account_offers 'A4', null, 'validated', (err, res) ->
|
remote.request_account_offers 'A4', null, 'validated', (err, res) ->
|
||||||
assert res.offers.length == 0
|
assert res.offers.length == 0
|
||||||
done()
|
done()
|
||||||
@@ -497,7 +497,7 @@ exports.LedgerState = class LedgerState
|
|||||||
|
|
||||||
add_transaction_fees: ->
|
add_transaction_fees: ->
|
||||||
extra_fees = {}
|
extra_fees = {}
|
||||||
fee = Amount.from_json('15')
|
fee = Amount.from_json(@remote.fee_cushion * 10)
|
||||||
for list in [@trusts, @iou_payments, @offers]
|
for list in [@trusts, @iou_payments, @offers]
|
||||||
for [src, args...] in list
|
for [src, args...] in list
|
||||||
extra = extra_fees[src]
|
extra = extra_fees[src]
|
||||||
|
|||||||
Reference in New Issue
Block a user