mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-23 23:16:49 +00:00
* Websocket: Rename stream package * Websocket: Rename Websocket to Manager * Websocket: Replace explicit errs with common.NilGuard * Websocket: Move websocket_types.go to types.go * Websocket: Minor field comment and alignment in types * Webosocket: Rename WebsocketConnection to Connection * Alphapoint: Make gorilla ws import explicit Just to avoid confusion with our own packages. * Websocket: Move stream_match to match * Websocket: Move websocket_connection to connection * Websocket: Move websocket.go to manager.go * Websocket: Break out all subscription methods into subscriptions.go * Websocket: Move connection type into its file * Websocket: Remove PositionUpdated Type is not used anywhere * Kraken: Use local constant for pong Was the only use of websocket.Pong and doesn't really feel right to represent kraken's api resp in one of our packages * Websocket: Move connection sub-types to connection package * Websocket: Move manager types into manager * Websocket: Move ConnectionWrapper into manager * Websocket: Move websocket_test to manager_test * Websocket: Privatise connectionWrapper * Websocket: Remaining types into types.go These really belong somewhere else mostly, but this will do for now * Websocket: Tidy up connection method vars * Gofumpt: Moving package imports around * Websocket: Rename errDuplicateConnectionSetup * Websocket: Fix duplicate import of gws * Websocket: Fix gofumpt -extra * Websocket: Standardise import of gws across other pkgs * Kraken: Remove unused sub conf consts These were replaced by the generic Levels and Depth fields on all subs * Websocket: Privitise ConnectioWrapper fields * Websocket: inline single use var WebsocketNotAuthenticatedUsingRest * Websocket: Move documentation to template * Bithumb: Assertify TestWsHandleData
77 lines
2.0 KiB
Go
77 lines
2.0 KiB
Go
package kraken
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/buger/jsonparser"
|
|
gws "github.com/gorilla/websocket"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/thrasher-corp/gocryptotrader/encoding/json"
|
|
)
|
|
|
|
func mockWsServer(tb testing.TB, msg []byte, w *gws.Conn) error {
|
|
tb.Helper()
|
|
event, err := jsonparser.GetUnsafeString(msg, "event")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
switch event {
|
|
case krakenWsCancelOrder:
|
|
return mockWsCancelOrders(tb, msg, w)
|
|
case krakenWsAddOrder:
|
|
return mockWsAddOrder(tb, msg, w)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func mockWsCancelOrders(tb testing.TB, msg []byte, w *gws.Conn) error {
|
|
tb.Helper()
|
|
var req WsCancelOrderRequest
|
|
if err := json.Unmarshal(msg, &req); err != nil {
|
|
return err
|
|
}
|
|
resp := WsCancelOrderResponse{
|
|
Event: krakenWsCancelOrderStatus,
|
|
Status: "ok",
|
|
RequestID: req.RequestID,
|
|
Count: int64(len(req.TransactionIDs)),
|
|
}
|
|
if len(req.TransactionIDs) == 0 || strings.Contains(req.TransactionIDs[0], "FISH") { // Reject anything that smells suspicious
|
|
resp.Status = "error"
|
|
resp.ErrorMessage = "[EOrder:Unknown order]"
|
|
}
|
|
msg, err := json.Marshal(resp)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return w.WriteMessage(gws.TextMessage, msg)
|
|
}
|
|
|
|
func mockWsAddOrder(tb testing.TB, msg []byte, w *gws.Conn) error {
|
|
tb.Helper()
|
|
var req WsAddOrderRequest
|
|
if err := json.Unmarshal(msg, &req); err != nil {
|
|
return err
|
|
}
|
|
|
|
assert.Equal(tb, "buy", req.OrderSide, "OrderSide should be correct")
|
|
assert.Equal(tb, "limit", req.OrderType, "OrderType should be correct")
|
|
assert.Equal(tb, "XBT/USD", req.Pair, "Pair should be correct")
|
|
assert.Equal(tb, 80000.0, req.Price, "Pair should be correct")
|
|
|
|
resp := WsAddOrderResponse{
|
|
Event: krakenWsAddOrderStatus,
|
|
Status: "ok",
|
|
RequestID: req.RequestID,
|
|
TransactionID: "ONPNXH-KMKMU-F4MR5V",
|
|
Description: fmt.Sprintf("%s %.f %s @ %s %.f", req.OrderSide, req.Volume, req.Pair, req.OrderSide, req.Price),
|
|
}
|
|
msg, err := json.Marshal(resp)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return w.WriteMessage(gws.TextMessage, msg)
|
|
}
|