@@ -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