diff --git a/fsm/message_helpers.go b/fsm/message_helpers.go index 7ae84ba0c4..75a5c66dfd 100644 --- a/fsm/message_helpers.go +++ b/fsm/message_helpers.go @@ -661,7 +661,7 @@ func (x *MessageEditOrder) Check() lib.ErrorI { if len(x.Data) > 100 { return ErrInvalidOpcode() } - if x.AmountForSale == 0 || x.RequestedAmount == 0 { + if x.AmountForSale == 0 { return ErrInvalidAmount() } return checkExternalAddress(x.SellerReceiveAddress) diff --git a/fsm/transaction_test.go b/fsm/transaction_test.go index b5a43d380c..55abcf82a7 100644 --- a/fsm/transaction_test.go +++ b/fsm/transaction_test.go @@ -704,6 +704,17 @@ func TestCheckMessage(t *testing.T) { // convert the message to 'any' for transaction wrapping msgSendAny, e := lib.NewAny(sendMsg) require.NoError(t, e) + // predefine an edit-order message that leaves requested amount at zero + editOrderMsg := &MessageEditOrder{ + OrderId: newTestOrderId(t, 0), + ChainId: lib.CanopyChainId, + AmountForSale: 1, + RequestedAmount: 0, + SellerReceiveAddress: newTestAddressBytes(t), + } + // convert the message to 'any' for transaction wrapping + msgEditOrderAny, e := lib.NewAny(editOrderMsg) + require.NoError(t, e) tests := []struct { name string detail string @@ -746,6 +757,12 @@ func TestCheckMessage(t *testing.T) { msg: msgSendAny, expected: sendMsg, }, + { + name: "valid edit order keeps requested amount zero", + detail: "an edit order may keep the requested amount at zero", + msg: msgEditOrderAny, + expected: editOrderMsg, + }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) {