From 8fe4d73e899c73e1974ea0e9e34382c228f93984 Mon Sep 17 00:00:00 2001 From: Ryan O'Hara-Reid Date: Tue, 19 Oct 2021 11:37:07 +1100 Subject: [PATCH] kraken: Add check for correct order type in batch requests (#810) * kraken: add check for correct order type in batch requests * huboi: fix tests --- exchanges/huobi/huobi_test.go | 4 ++-- exchanges/kraken/kraken_futures.go | 7 +++++++ exchanges/kraken/kraken_test.go | 16 ++++++++++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/exchanges/huobi/huobi_test.go b/exchanges/huobi/huobi_test.go index 25931280..d603fbf9 100644 --- a/exchanges/huobi/huobi_test.go +++ b/exchanges/huobi/huobi_test.go @@ -120,7 +120,7 @@ func TestFIndexPriceInfo(t *testing.T) { func TestFContractPriceLimitations(t *testing.T) { t.Parallel() _, err := h.FContractPriceLimitations(context.Background(), - "BTC", "this_week", currency.Pair{}) + "BTC", "next_quarter", currency.Pair{}) if err != nil { t.Error(err) } @@ -129,7 +129,7 @@ func TestFContractPriceLimitations(t *testing.T) { func TestFContractOpenInterest(t *testing.T) { t.Parallel() _, err := h.FContractOpenInterest(context.Background(), - "BTC", "this_week", currency.Pair{}) + "BTC", "next_quarter", currency.Pair{}) if err != nil { t.Error(err) } diff --git a/exchanges/kraken/kraken_futures.go b/exchanges/kraken/kraken_futures.go index c341726b..ee9900cb 100644 --- a/exchanges/kraken/kraken_futures.go +++ b/exchanges/kraken/kraken_futures.go @@ -20,6 +20,8 @@ import ( "github.com/thrasher-corp/gocryptotrader/exchanges/request" ) +var errInvalidBatchOrderType = errors.New("invalid batch order type") + // GetFuturesOrderbook gets orderbook data for futures func (k *Kraken) GetFuturesOrderbook(ctx context.Context, symbol currency.Pair) (FuturesOrderbookData, error) { var resp FuturesOrderbookData @@ -71,6 +73,11 @@ func (k *Kraken) FuturesBatchOrder(ctx context.Context, data []PlaceBatchOrderDa if err != nil { return resp, err } + if !common.StringDataCompare(validBatchOrderType, data[x].PlaceOrderType) { + return resp, fmt.Errorf("%s %w", + data[x].PlaceOrderType, + errInvalidBatchOrderType) + } data[x].Symbol = formattedPair.String() } req := make(map[string]interface{}) diff --git a/exchanges/kraken/kraken_test.go b/exchanges/kraken/kraken_test.go index 3753ddaf..3f1dfc37 100644 --- a/exchanges/kraken/kraken_test.go +++ b/exchanges/kraken/kraken_test.go @@ -2,6 +2,7 @@ package kraken import ( "context" + "errors" "fmt" "log" "net/http" @@ -156,16 +157,23 @@ func TestWrapperGetOrderInfo(t *testing.T) { func TestFuturesBatchOrder(t *testing.T) { t.Parallel() - if !areTestAPIKeysSet() || !canManipulateRealOrders { - t.Skip("skipping test: api keys not set or canManipulateRealOrders") - } var data []PlaceBatchOrderData var tempData PlaceBatchOrderData - tempData.PlaceOrderType = "cancel" + tempData.PlaceOrderType = "meow" tempData.OrderID = "test123" tempData.Symbol = "pi_xbtusd" data = append(data, tempData) _, err := k.FuturesBatchOrder(context.Background(), data) + if !errors.Is(err, errInvalidBatchOrderType) { + t.Fatalf("received: '%v' but expected: '%v'", err, errInvalidBatchOrderType) + } + + if !areTestAPIKeysSet() || !canManipulateRealOrders { + t.Skip("skipping test: api keys not set or canManipulateRealOrders") + } + + data[0].PlaceOrderType = "cancel" + _, err = k.FuturesBatchOrder(context.Background(), data) if err != nil { t.Error(err) }