Skip to content

Commit cd6be5e

Browse files
committed
add a few wellFormed inner transaction tests
1 parent d5a5420 commit cd6be5e

File tree

1 file changed

+32
-10
lines changed

1 file changed

+32
-10
lines changed

data/transactions/logic/evalAppTxn_test.go

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,7 @@ func TestCurrentInnerTypes(t *testing.T) {
7474
TestApp(t, "itxn_begin; int axfer; itxn_field TypeEnum; itxn_submit; int 1;", ep, "insufficient balance")
7575

7676
TestApp(t, "itxn_begin; byte \"acfg\"; itxn_field Type; itxn_submit; int 1;", ep, "insufficient balance")
77-
TestApp(t, "itxn_begin; byte \"afrz\"; itxn_field Type; itxn_submit; int 1;", ep, "insufficient balance")
7877
TestApp(t, "itxn_begin; int acfg; itxn_field TypeEnum; itxn_submit; int 1;", ep, "insufficient balance")
79-
TestApp(t, "itxn_begin; int afrz; itxn_field TypeEnum; itxn_submit; int 1;", ep, "insufficient balance")
8078

8179
// allowed since v6
8280
TestApp(t, "itxn_begin; byte \"keyreg\"; itxn_field Type; itxn_submit; int 1;", ep, "insufficient balance")
@@ -431,6 +429,13 @@ func TestAppAxfer(t *testing.T) {
431429
partitiontest.PartitionTest(t)
432430
t.Parallel()
433431

432+
closeWithClawback := `
433+
itxn_begin
434+
int axfer ; itxn_field TypeEnum
435+
txn Sender ; itxn_field AssetSender
436+
txn Sender ; itxn_field AssetCloseTo
437+
itxn_submit
438+
`
434439
axfer := `
435440
itxn_begin
436441
int 77
@@ -450,6 +455,8 @@ func TestAppAxfer(t *testing.T) {
450455
TestApp(t, source, ep, problem...)
451456
}
452457

458+
test(closeWithClawback, "cannot close asset by clawback")
459+
453460
ledger.NewApp(tx.Receiver, 888, basics.AppParams{})
454461
ledger.NewAsset(tx.Receiver, 777, basics.AssetParams{}) // not in foreign-assets of sample
455462
ledger.NewAsset(tx.Receiver, 77, basics.AssetParams{}) // in foreign-assets of sample
@@ -775,14 +782,7 @@ func TestAssetFreeze(t *testing.T) {
775782
int 5000
776783
==
777784
`
778-
// v5 added inners
779-
TestLogicRange(t, 5, 0, func(t *testing.T, ep *EvalParams, tx *transactions.Transaction, ledger *Ledger) {
780-
ledger.NewApp(tx.Receiver, 888, basics.AppParams{})
781-
// Give it enough for fees. Recall that we don't check min balance at this level.
782-
ledger.NewAccount(appAddr(888), 12*MakeTestProto().MinTxnFee)
783-
TestApp(t, create, ep)
784-
785-
freeze := `
785+
freeze := `
786786
itxn_begin
787787
int afrz ; itxn_field TypeEnum
788788
int 5000 ; itxn_field FreezeAsset
@@ -791,6 +791,24 @@ func TestAssetFreeze(t *testing.T) {
791791
itxn_submit
792792
int 1
793793
`
794+
missingFreezeAccount := `
795+
itxn_begin
796+
int afrz ; itxn_field TypeEnum
797+
int 5000 ; itxn_field FreezeAsset
798+
itxn_submit
799+
`
800+
missingAssetID := `
801+
itxn_begin
802+
int afrz ; itxn_field TypeEnum
803+
itxn_submit
804+
`
805+
// v5 added inners
806+
TestLogicRange(t, 5, 0, func(t *testing.T, ep *EvalParams, tx *transactions.Transaction, ledger *Ledger) {
807+
ledger.NewApp(tx.Receiver, 888, basics.AppParams{})
808+
// Give it enough for fees. Recall that we don't check min balance at this level.
809+
ledger.NewAccount(appAddr(888), 12*MakeTestProto().MinTxnFee)
810+
TestApp(t, create, ep)
811+
794812
TestApp(t, freeze, ep, "unavailable Asset 5000")
795813
tx.ForeignAssets = []basics.AssetIndex{basics.AssetIndex(5000)}
796814
tx.ApplicationArgs = [][]byte{{0x01}}
@@ -805,6 +823,10 @@ func TestAssetFreeze(t *testing.T) {
805823
holding, err = ledger.AssetHolding(tx.Receiver, 5000)
806824
require.NoError(t, err)
807825
require.Equal(t, false, holding.Frozen)
826+
827+
// Malformed
828+
TestApp(t, missingFreezeAccount, ep, "freeze account cannot be empty")
829+
TestApp(t, missingAssetID, ep, "asset ID cannot be zero")
808830
})
809831
}
810832

0 commit comments

Comments
 (0)