diff --git a/x/deployment/types/events_test.go b/x/deployment/types/events_test.go index 0fa401fc3d..475b2cb0bd 100644 --- a/x/deployment/types/events_test.go +++ b/x/deployment/types/events_test.go @@ -6,6 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/pkg/errors" + "github.com/stretchr/testify/require" "github.com/ovrclk/akash/sdkutil" ) @@ -25,15 +26,12 @@ type testEventParsing struct { func (tep testEventParsing) testMessageType() func(t *testing.T) { _, err := ParseEvent(tep.msg) return func(t *testing.T) { - t.Logf("ERR: %v", err) - // expected error doesn't match returned || error returned but not expected - if (tep.expErr != nil && errors.Is(err, tep.expErr)) || (err != nil && tep.expErr == nil) { - // if the error expected is errWildcard to catch untyped errors, don't fail the test, the error was expected. - if errors.Is(tep.expErr, errWildcard) { - t.Errorf("unexpected error: %v exp: %v", err, tep.expErr) - t.Logf("%T %v", errors.Cause(err), err) - t.Logf("%+v", tep) - } + t.Logf("%+v", tep) + // if the error expected is errWildcard to catch untyped errors, don't fail the test, the error was expected. + if errors.Is(tep.expErr, errWildcard) { + require.Error(t, err) + } else { + require.Equal(t, tep.expErr, err) } } } diff --git a/x/market/handler/handler_test.go b/x/market/handler/handler_test.go index 3348b00a02..e8bab87c12 100644 --- a/x/market/handler/handler_test.go +++ b/x/market/handler/handler_test.go @@ -271,7 +271,7 @@ func TestCloseOrderWithoutLease(t *testing.T) { func TestCloseOrderValid(t *testing.T) { suite := setupTestSuite(t) - _, _, order := suite.createLease() + lid, _, order := suite.createLease() msg := types.MsgCloseOrder{ OrderID: order.ID(), @@ -280,6 +280,15 @@ func TestCloseOrderValid(t *testing.T) { res, err := suite.handler(suite.ctx, msg) require.NotNil(t, res) require.NoError(t, err) + + t.Run("ensure event created", func(t *testing.T) { + iev := testutil.ParseMarketEvent(t, res.Events, 5) + require.IsType(t, types.EventLeaseClosed{}, iev) + + dev := iev.(types.EventLeaseClosed) + + require.Equal(t, lid, dev.ID) + }) } func TestCloseBidNonExisting(t *testing.T) { @@ -315,7 +324,7 @@ func TestCloseBidUnknownLease(t *testing.T) { func TestCloseBidValid(t *testing.T) { suite := setupTestSuite(t) - _, bid, _ := suite.createLease() + _, bid, order := suite.createLease() msg := types.MsgCloseBid{ BidID: bid.ID(), @@ -324,6 +333,15 @@ func TestCloseBidValid(t *testing.T) { res, err := suite.handler(suite.ctx, msg) require.NotNil(t, res) require.NoError(t, err) + + t.Run("ensure event created", func(t *testing.T) { + iev := testutil.ParseMarketEvent(t, res.Events, 6) + require.IsType(t, types.EventOrderClosed{}, iev) + + dev := iev.(types.EventOrderClosed) + + require.Equal(t, order.ID(), dev.ID) + }) } func TestCloseBidNotActiveLease(t *testing.T) { diff --git a/x/market/types/event.go b/x/market/types/event.go index e474b56a73..c1d1559bed 100644 --- a/x/market/types/event.go +++ b/x/market/types/event.go @@ -18,6 +18,9 @@ const ( evActionLeaseCreated = "lease-created" evActionLeaseClosed = "lease-closed" + evOwnerKey = "owner" + evDSeqKey = "dseq" + evGSeqKey = "gseq" evOSeqKey = "oseq" evProviderKey = "provider" evPriceDenomKey = "price-denom" diff --git a/x/market/types/events_test.go b/x/market/types/events_test.go new file mode 100644 index 0000000000..27d4f4d707 --- /dev/null +++ b/x/market/types/events_test.go @@ -0,0 +1,460 @@ +package types + +import ( + "fmt" + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/pkg/errors" + + "github.com/ovrclk/akash/sdkutil" + "github.com/stretchr/testify/require" +) + +var ( + keyAcc, _ = sdk.AccAddressFromBech32("akash1qtqpdszzakz7ugkey7ka2cmss95z26ygar2mgr") + //keyParams = sdk.NewKVStoreKey(params.StoreKey) + + errWildcard = errors.New("wildcard string error can't be matched") +) + +type testEventParsing struct { + msg sdkutil.Event + expErr error +} + +func (tep testEventParsing) testMessageType() func(t *testing.T) { + _, err := ParseEvent(tep.msg) + return func(t *testing.T) { + t.Logf("%+v", tep) + // if the error expected is errWildcard to catch untyped errors, don't fail the test, the error was expected. + if errors.Is(tep.expErr, errWildcard) { + require.Error(t, err) + } else { + require.Equal(t, tep.expErr, err) + } + } +} + +var TEPS = []testEventParsing{ + { + msg: sdkutil.Event{ + Type: "nil", + }, + expErr: sdkutil.ErrUnknownType, + }, + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + }, + expErr: sdkutil.ErrUnknownModule, + }, + + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + }, + expErr: sdkutil.ErrUnknownAction, + }, + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: "nil", + }, + expErr: sdkutil.ErrUnknownModule, + }, + + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: "nil", + }, + expErr: sdkutil.ErrUnknownAction, + }, + + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionOrderCreated, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + }, + }, + expErr: nil, + }, + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionOrderCreated, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: "nooo", + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + }, + }, + expErr: errWildcard, + }, + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionOrderCreated, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "abc", + }, + }, + }, + expErr: errWildcard, + }, + + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionOrderClosed, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + }, + }, + expErr: nil, + }, + + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionBidCreated, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + { + Key: evProviderKey, + Value: keyAcc.String(), + }, + { + Key: evPriceDenomKey, + Value: "akt", + }, + { + Key: evPriceAmountKey, + Value: "23", + }, + }, + }, + expErr: nil, + }, + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionBidCreated, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + { + Key: evProviderKey, + Value: "yesss", + }, + { + Key: evPriceDenomKey, + Value: "akt", + }, + { + Key: evPriceAmountKey, + Value: "23", + }, + }, + }, + expErr: errWildcard, + }, + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionBidCreated, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + { + Key: evProviderKey, + Value: keyAcc.String(), + }, + { + Key: evPriceDenomKey, + Value: "akt", + }, + { + Key: evPriceAmountKey, + Value: "hello", + }, + }, + }, + expErr: errWildcard, + }, + + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionBidClosed, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + { + Key: evProviderKey, + Value: keyAcc.String(), + }, + { + Key: evPriceDenomKey, + Value: "akt", + }, + { + Key: evPriceAmountKey, + Value: "23", + }, + }, + }, + expErr: nil, + }, + + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionLeaseCreated, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + { + Key: evProviderKey, + Value: keyAcc.String(), + }, + { + Key: evPriceDenomKey, + Value: "akt", + }, + { + Key: evPriceAmountKey, + Value: "23", + }, + }, + }, + expErr: nil, + }, + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionLeaseCreated, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + { + Key: evProviderKey, + Value: "hello", + }, + { + Key: evPriceDenomKey, + Value: "akt", + }, + { + Key: evPriceAmountKey, + Value: "23", + }, + }, + }, + expErr: errWildcard, + }, + + { + msg: sdkutil.Event{ + Type: sdkutil.EventTypeMessage, + Module: ModuleName, + Action: evActionLeaseClosed, + Attributes: []sdk.Attribute{ + { + Key: evOwnerKey, + Value: keyAcc.String(), + }, + { + Key: evDSeqKey, + Value: "5", + }, + { + Key: evGSeqKey, + Value: "2", + }, + { + Key: evOSeqKey, + Value: "5", + }, + { + Key: evProviderKey, + Value: keyAcc.String(), + }, + { + Key: evPriceDenomKey, + Value: "akt", + }, + { + Key: evPriceAmountKey, + Value: "23", + }, + }, + }, + expErr: nil, + }, +} + +func TestEventParsing(t *testing.T) { + for i, test := range TEPS { + t.Run(fmt.Sprintf("%d", i), + test.testMessageType()) + } +}