Skip to content

Commit 8b72637

Browse files
authored
tests: add shared authenticated websocket precheck helper (#2199)
* tests: add shared auth websocket precheck helper * tests: generalize auth websocket skip helper to testing.TB
1 parent 06e928a commit 8b72637

File tree

8 files changed

+28
-35
lines changed

8 files changed

+28
-35
lines changed

exchanges/bitfinex/bitfinex_test.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,13 +1111,7 @@ func TestGetDepositAddress(t *testing.T) {
11111111
}
11121112

11131113
func TestWSAuth(t *testing.T) {
1114-
if !e.Websocket.IsEnabled() {
1115-
t.Skip(websocket.ErrWebsocketNotEnabled.Error())
1116-
}
1117-
sharedtestvalues.SkipTestIfCredentialsUnset(t, e)
1118-
if !e.API.AuthenticatedWebsocketSupport {
1119-
t.Skip("Authenticated API support not enabled")
1120-
}
1114+
testexch.SkipTestIfCannotUseAuthenticatedWebsocket(t, e)
11211115
testexch.SetupWs(t, e)
11221116
require.True(t, e.Websocket.CanUseAuthenticatedEndpoints(), "CanUseAuthenticatedEndpoints must be turned on")
11231117

exchanges/bitmex/bitmex_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
"github.com/thrasher-corp/gocryptotrader/common/key"
1717
"github.com/thrasher-corp/gocryptotrader/core"
1818
"github.com/thrasher-corp/gocryptotrader/currency"
19-
"github.com/thrasher-corp/gocryptotrader/exchange/websocket"
2019
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
2120
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
2221
"github.com/thrasher-corp/gocryptotrader/exchanges/fundingrate"
@@ -764,9 +763,7 @@ func TestGetDepositAddress(t *testing.T) {
764763

765764
func TestWsAuth(t *testing.T) {
766765
t.Parallel()
767-
if !e.Websocket.IsEnabled() && !e.API.AuthenticatedWebsocketSupport || !sharedtestvalues.AreAPICredentialsSet(e) {
768-
t.Skip(websocket.ErrWebsocketNotEnabled.Error())
769-
}
766+
testexch.SkipTestIfCannotUseAuthenticatedWebsocket(t, e)
770767
var dialer gws.Dialer
771768
err := e.Websocket.Conn.Dial(t.Context(), &dialer, http.Header{}, nil)
772769
require.NoError(t, err)

exchanges/coinbase/coinbase_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1509,9 +1509,7 @@ func TestGetCurrencyTradeURL(t *testing.T) {
15091509
// TestWsAuth dials websocket, sends login request.
15101510
func TestWsAuth(t *testing.T) {
15111511
p := currency.Pairs{testPairFiat}
1512-
if e.Websocket.IsEnabled() && !e.API.AuthenticatedWebsocketSupport || !sharedtestvalues.AreAPICredentialsSet(e) {
1513-
t.Skip(websocket.ErrWebsocketNotEnabled.Error())
1514-
}
1512+
testexch.SkipTestIfCannotUseAuthenticatedWebsocket(t, e)
15151513
var dialer gws.Dialer
15161514
err := e.Websocket.Conn.Dial(t.Context(), &dialer, http.Header{}, nil)
15171515
require.NoError(t, err)

exchanges/coinut/coinut_test.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"github.com/thrasher-corp/gocryptotrader/core"
1616
"github.com/thrasher-corp/gocryptotrader/currency"
1717
"github.com/thrasher-corp/gocryptotrader/exchange/accounts"
18-
"github.com/thrasher-corp/gocryptotrader/exchange/websocket"
1918
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
2019
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
2120
"github.com/thrasher-corp/gocryptotrader/exchanges/order"
@@ -61,12 +60,8 @@ func setupWSTestAuth(t *testing.T) {
6160
return
6261
}
6362

64-
if !e.Websocket.IsEnabled() && !e.API.AuthenticatedWebsocketSupport || !sharedtestvalues.AreAPICredentialsSet(e) {
65-
t.Skip(websocket.ErrWebsocketNotEnabled.Error())
66-
}
67-
if sharedtestvalues.AreAPICredentialsSet(e) {
68-
e.Websocket.SetCanUseAuthenticatedEndpoints(true)
69-
}
63+
testexch.SkipTestIfCannotUseAuthenticatedWebsocket(t, e)
64+
e.Websocket.SetCanUseAuthenticatedEndpoints(true)
7065

7166
var dialer gws.Dialer
7267
err := e.Websocket.Conn.Dial(t.Context(), &dialer, http.Header{}, nil)

exchanges/gemini/gemini_test.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212
"github.com/thrasher-corp/gocryptotrader/common"
1313
"github.com/thrasher-corp/gocryptotrader/core"
1414
"github.com/thrasher-corp/gocryptotrader/currency"
15-
"github.com/thrasher-corp/gocryptotrader/exchange/websocket"
1615
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
1716
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
1817
"github.com/thrasher-corp/gocryptotrader/exchanges/kline"
@@ -553,11 +552,7 @@ func TestWsAuth(t *testing.T) {
553552
if err != nil {
554553
t.Error(err)
555554
}
556-
if !e.Websocket.IsEnabled() &&
557-
!e.API.AuthenticatedWebsocketSupport ||
558-
!sharedtestvalues.AreAPICredentialsSet(e) {
559-
t.Skip(websocket.ErrWebsocketNotEnabled.Error())
560-
}
555+
testexch.SkipTestIfCannotUseAuthenticatedWebsocket(t, e)
561556
var dialer gws.Dialer
562557
err = e.WsAuth(t.Context(), &dialer)
563558
if err != nil {

exchanges/hitbtc/hitbtc_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
"github.com/thrasher-corp/gocryptotrader/common"
1515
"github.com/thrasher-corp/gocryptotrader/core"
1616
"github.com/thrasher-corp/gocryptotrader/currency"
17-
"github.com/thrasher-corp/gocryptotrader/exchange/websocket"
1817
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
1918
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
2019
"github.com/thrasher-corp/gocryptotrader/exchanges/kline"
@@ -427,9 +426,7 @@ func setupWsAuth(t *testing.T) {
427426
if wsSetupRan {
428427
return
429428
}
430-
if !e.Websocket.IsEnabled() && !e.API.AuthenticatedWebsocketSupport || !sharedtestvalues.AreAPICredentialsSet(e) {
431-
t.Skip(websocket.ErrWebsocketNotEnabled.Error())
432-
}
429+
testexch.SkipTestIfCannotUseAuthenticatedWebsocket(t, e)
433430

434431
var dialer gws.Dialer
435432
err := e.Websocket.Conn.Dial(t.Context(), &dialer, http.Header{}, nil)

exchanges/sharedtestvalues/sharedtestvalues.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,11 @@ func NewTestWebsocket() *websocket.Manager {
5656

5757
// SkipTestIfCredentialsUnset is a test helper function checking if the
5858
// authenticated function can perform the required test.
59-
func SkipTestIfCredentialsUnset(t *testing.T, exch exchange.IBotExchange, canManipulateOrders ...bool) {
60-
t.Helper()
59+
func SkipTestIfCredentialsUnset(tb testing.TB, exch exchange.IBotExchange, canManipulateOrders ...bool) {
60+
tb.Helper()
6161

6262
if len(canManipulateOrders) > 1 {
63-
t.Fatal("more than one canManipulateOrders boolean value has been supplied, please remove")
63+
tb.Fatal("more than one canManipulateOrders boolean value has been supplied, please remove")
6464
}
6565

6666
areTestAPICredentialsSet := AreAPICredentialsSet(exch)
@@ -81,7 +81,7 @@ func SkipTestIfCredentialsUnset(t *testing.T, exch exchange.IBotExchange, canMan
8181
out = append(out, warningManipulateOrders)
8282
}
8383
out = append(out, warningHowTo)
84-
t.Skip(strings.Join(out, ", "))
84+
tb.Skip(strings.Join(out, ", "))
8585
}
8686

8787
// SkipTestIfCannotManipulateOrders will only skip if the credentials are set

internal/testing/exchange/exchange.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/thrasher-corp/gocryptotrader/currency"
2121
"github.com/thrasher-corp/gocryptotrader/exchange/accounts"
2222
"github.com/thrasher-corp/gocryptotrader/exchange/stream"
23+
"github.com/thrasher-corp/gocryptotrader/exchange/websocket"
2324
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
2425
"github.com/thrasher-corp/gocryptotrader/exchanges/mock"
2526
"github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues"
@@ -171,6 +172,22 @@ func FixtureToDataHandlerWithErrors(tb testing.TB, fixturePath string, reader fu
171172
return errs
172173
}
173174

175+
// SkipTestIfCannotUseAuthenticatedWebsocket checks the common requirements for
176+
// authenticated websocket tests.
177+
func SkipTestIfCannotUseAuthenticatedWebsocket(tb testing.TB, e exchange.IBotExchange) {
178+
tb.Helper()
179+
180+
if !e.GetBase().Websocket.IsEnabled() {
181+
tb.Skip(websocket.ErrWebsocketNotEnabled.Error())
182+
}
183+
184+
sharedtestvalues.SkipTestIfCredentialsUnset(tb, e)
185+
186+
if !e.GetBase().API.AuthenticatedWebsocketSupport {
187+
tb.Skip("Authenticated websocket API support not enabled")
188+
}
189+
}
190+
174191
var (
175192
setupWsMutex sync.Mutex
176193
setupWsOnce = make(map[exchange.IBotExchange]bool)

0 commit comments

Comments
 (0)