mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-18 23:16:49 +00:00
Engine: Protocol Features, coverage, types, BTC markets websocket (#368)
* Attempts to update orderbook so it doesn't need to sort * Reverts the ws ob stuff. Gets rid of sorting because it happens later. Adds some exchange features * update existing feature lists. Expands list definition to match my emotions * Adds bithumb bitmex and bitstamp. adds a couple more types * Features for you, features for me, features for bittrex, btcmarkets, btse, coinbasepro, coinut, exmo, gateio and gemini * Features for hitbtc, huobi, itbit, kraken, lakebtc, lbank, localbitcoins, okcoin, okex, poloniex, yobit, zb * Who can forget good old alphapoint? * Adds btcmarksets websocket :glitch_crab: fixes alphapoint features * Adds extra data not in the documentation :/ * Replaces websocket features by using protocol features. However, it breaks it due to import cycles. I'm not sure what I'll do just yet * Removes import cycle via duplicate structs. * Increases coverage of config with `TestCheckCurrencyConfigValues`. Moves all currency pair package types into their own files or places it at the bottom of files if necessary * Increase coverage in code.go * One way of determining a test has failed, is when to it fails. Removed redundant explanation * Increases code coverage of conversion * Lint fixes * Fixes orderbook tests * Re-adds sorting because its important to still have the internal pre-processed orderbook to be representative of a real orderbook * Secret lints that did not show up via Windows linting * Adds protocol package to contain exchange features * Fixes protocol implementation * Fixes ws tests * Addresses the following: Removes st-st-stutters in config types, changes GetAvailableForexProviders -> GetSupportedForexProviders, removes errors from tests where error is nil, removes orderbook setup when not necessary, removes import newlines, removes false bools from declaration, changes should of to should have * imports and casing * Fixes two more nil error checks
This commit is contained in:
@@ -21,10 +21,10 @@ func TestSetDefaults(t *testing.T) {
|
||||
|
||||
SetDefaults.SetDefaults()
|
||||
if SetDefaults.API.Endpoints.URL != "https://sim3.alphapoint.com:8400" {
|
||||
t.Error("Test Failed - SetDefaults: String Incorrect -", SetDefaults.API.Endpoints.URL)
|
||||
t.Error("SetDefaults: String Incorrect -", SetDefaults.API.Endpoints.URL)
|
||||
}
|
||||
if SetDefaults.API.Endpoints.WebsocketURL != "wss://sim3.alphapoint.com:8401/v1/GetTicker/" {
|
||||
t.Error("Test Failed - SetDefaults: String Incorrect -", SetDefaults.API.Endpoints.WebsocketURL)
|
||||
t.Error("SetDefaults: String Incorrect -", SetDefaults.API.Endpoints.WebsocketURL)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,12 +50,12 @@ func TestGetTicker(t *testing.T) {
|
||||
if onlineTest {
|
||||
ticker, err = alpha.GetTicker("BTCUSD")
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Alphapoint GetTicker init error: ", err)
|
||||
t.Fatal("Alphapoint GetTicker init error: ", err)
|
||||
}
|
||||
|
||||
_, err = alpha.GetTicker("wigwham")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Alphapoint GetTicker error")
|
||||
t.Error("Alphapoint GetTicker Expected error")
|
||||
}
|
||||
} else {
|
||||
mockResp := []byte(
|
||||
@@ -64,16 +64,16 @@ func TestGetTicker(t *testing.T) {
|
||||
|
||||
err = common.JSONDecode(mockResp, &ticker)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Alphapoint GetTicker unmarshalling error: ", err)
|
||||
t.Fatal("Alphapoint GetTicker unmarshalling error: ", err)
|
||||
}
|
||||
|
||||
if ticker.Last != 249.76 {
|
||||
t.Error("Test failed - Alphapoint GetTicker expected last = 249.76")
|
||||
t.Error("Alphapoint GetTicker expected last = 249.76")
|
||||
}
|
||||
}
|
||||
|
||||
if ticker.Last < 0 {
|
||||
t.Error("Test failed - Alphapoint GetTicker last < 0")
|
||||
t.Error("Alphapoint GetTicker last < 0")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,12 +87,12 @@ func TestGetTrades(t *testing.T) {
|
||||
if onlineTest {
|
||||
trades, err = alpha.GetTrades("BTCUSD", 0, 10)
|
||||
if err != nil {
|
||||
t.Fatalf("Test Failed - Init error: %s", err)
|
||||
t.Fatalf("Init error: %s", err)
|
||||
}
|
||||
|
||||
_, err = alpha.GetTrades("wigwham", 0, 10)
|
||||
if err == nil {
|
||||
t.Fatal("Test Failed - GetTrades error")
|
||||
t.Fatal("GetTrades Expected error")
|
||||
}
|
||||
} else {
|
||||
mockResp := []byte(
|
||||
@@ -101,20 +101,20 @@ func TestGetTrades(t *testing.T) {
|
||||
|
||||
err = common.JSONDecode(mockResp, &trades)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - GetTrades unmarshalling error: ", err)
|
||||
t.Fatal("GetTrades unmarshalling error: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
if !trades.IsAccepted {
|
||||
t.Error("Test Failed - GetTrades IsAccepted failed")
|
||||
t.Error("GetTrades IsAccepted failed")
|
||||
}
|
||||
|
||||
if trades.Count <= 0 {
|
||||
t.Error("Test failed - GetTrades trades count is <= 0")
|
||||
t.Error("GetTrades trades count is <= 0")
|
||||
}
|
||||
|
||||
if trades.Instrument != "BTCUSD" {
|
||||
t.Error("Test failed - GetTrades instrument is != BTCUSD")
|
||||
t.Error("GetTrades instrument is != BTCUSD")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,11 +128,11 @@ func TestGetTradesByDate(t *testing.T) {
|
||||
if onlineTest {
|
||||
trades, err = alpha.GetTradesByDate("BTCUSD", 1414799400, 1414800000)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Init error: %s", err)
|
||||
t.Errorf("Init error: %s", err)
|
||||
}
|
||||
_, err = alpha.GetTradesByDate("wigwham", 1414799400, 1414800000)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetTradesByDate error")
|
||||
t.Error("GetTradesByDate Expected error")
|
||||
}
|
||||
} else {
|
||||
mockResp := []byte(
|
||||
@@ -141,27 +141,27 @@ func TestGetTradesByDate(t *testing.T) {
|
||||
|
||||
err = common.JSONDecode(mockResp, &trades)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - GetTradesByDate unmarshalling error: ", err)
|
||||
t.Fatal("GetTradesByDate unmarshalling error: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
if trades.DateTimeUTC < 0 {
|
||||
t.Error("Test Failed - Alphapoint trades.Count value is negative")
|
||||
t.Error("Alphapoint trades.Count value is negative")
|
||||
}
|
||||
if trades.EndDate < 0 {
|
||||
t.Error("Test Failed - Alphapoint trades.DateTimeUTC value is negative")
|
||||
t.Error("Alphapoint trades.DateTimeUTC value is negative")
|
||||
}
|
||||
if trades.Instrument != "BTCUSD" {
|
||||
t.Error("Test Failed - Alphapoint trades.Instrument value is incorrect")
|
||||
t.Error("Alphapoint trades.Instrument value is incorrect")
|
||||
}
|
||||
if !trades.IsAccepted {
|
||||
t.Error("Test Failed - Alphapoint trades.IsAccepted value is true")
|
||||
t.Error("Alphapoint trades.IsAccepted value is true")
|
||||
}
|
||||
if len(trades.RejectReason) > 0 {
|
||||
t.Error("Test Failed - Alphapoint trades.IsAccepted value has been returned")
|
||||
t.Error("Alphapoint trades.IsAccepted value has been returned")
|
||||
}
|
||||
if trades.StartDate < 0 {
|
||||
t.Error("Test Failed - Alphapoint trades.StartIndex value is negative")
|
||||
t.Error("Alphapoint trades.StartIndex value is negative")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,12 +175,12 @@ func TestGetOrderbook(t *testing.T) {
|
||||
if onlineTest {
|
||||
orderBook, err = alpha.GetOrderbook("BTCUSD")
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Init error: %s", err)
|
||||
t.Errorf("Init error: %s", err)
|
||||
}
|
||||
|
||||
_, err = alpha.GetOrderbook("wigwham")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetOrderbook() error")
|
||||
t.Error("GetOrderbook() Expected error")
|
||||
}
|
||||
} else {
|
||||
mockResp := []byte(
|
||||
@@ -189,24 +189,24 @@ func TestGetOrderbook(t *testing.T) {
|
||||
|
||||
err = common.JSONDecode(mockResp, &orderBook)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - TestGetOrderbook unmarshalling error: ", err)
|
||||
t.Fatal("TestGetOrderbook unmarshalling error: ", err)
|
||||
}
|
||||
|
||||
if orderBook.Bids[0].Quantity != 725 {
|
||||
t.Error("Test Failed - TestGetOrderbook Bids[0].Quantity != 725")
|
||||
t.Error("TestGetOrderbook Bids[0].Quantity != 725")
|
||||
}
|
||||
}
|
||||
|
||||
if !orderBook.IsAccepted {
|
||||
t.Error("Test Failed - Alphapoint orderBook.IsAccepted value is negative")
|
||||
t.Error("Alphapoint orderBook.IsAccepted value is negative")
|
||||
}
|
||||
|
||||
if len(orderBook.Asks) == 0 {
|
||||
t.Error("Test Failed - Alphapoint orderBook.Asks has len 0")
|
||||
t.Error("Alphapoint orderBook.Asks has len 0")
|
||||
}
|
||||
|
||||
if len(orderBook.Bids) == 0 {
|
||||
t.Error("Test Failed - Alphapoint orderBook.Bids has len 0")
|
||||
t.Error("Alphapoint orderBook.Bids has len 0")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ func TestGetProductPairs(t *testing.T) {
|
||||
if onlineTest {
|
||||
products, err = alpha.GetProductPairs()
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Init error: %s", err)
|
||||
t.Errorf("Init error: %s", err)
|
||||
}
|
||||
} else {
|
||||
mockResp := []byte(
|
||||
@@ -229,24 +229,24 @@ func TestGetProductPairs(t *testing.T) {
|
||||
|
||||
err = common.JSONDecode(mockResp, &products)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - TestGetProductPairs unmarshalling error: ", err)
|
||||
t.Fatal("TestGetProductPairs unmarshalling error: ", err)
|
||||
}
|
||||
|
||||
if products.ProductPairs[0].Name != "LTCUSD" {
|
||||
t.Error("Test Failed - Alphapoint ProductPairs 0 != LTCUSD")
|
||||
t.Error("Alphapoint ProductPairs 0 != LTCUSD")
|
||||
}
|
||||
|
||||
if products.ProductPairs[1].Product1Label != "BTC" {
|
||||
t.Error("Test Failed - Alphapoint ProductPairs 1 != BTC")
|
||||
t.Error("Alphapoint ProductPairs 1 != BTC")
|
||||
}
|
||||
}
|
||||
|
||||
if !products.IsAccepted {
|
||||
t.Error("Test Failed - Alphapoint ProductPairs.IsAccepted value is negative")
|
||||
t.Error("Alphapoint ProductPairs.IsAccepted value is negative")
|
||||
}
|
||||
|
||||
if len(products.ProductPairs) == 0 {
|
||||
t.Error("Test Failed - Alphapoint ProductPairs len is 0")
|
||||
t.Error("Alphapoint ProductPairs len is 0")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -260,7 +260,7 @@ func TestGetProducts(t *testing.T) {
|
||||
if onlineTest {
|
||||
products, err = alpha.GetProducts()
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Init error: %s", err)
|
||||
t.Errorf("Init error: %s", err)
|
||||
}
|
||||
} else {
|
||||
mockResp := []byte(
|
||||
@@ -269,24 +269,24 @@ func TestGetProducts(t *testing.T) {
|
||||
|
||||
err = common.JSONDecode(mockResp, &products)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - TestGetProducts unmarshalling error: ", err)
|
||||
t.Fatal("TestGetProducts unmarshalling error: ", err)
|
||||
}
|
||||
|
||||
if products.Products[0].Name != "USD" {
|
||||
t.Error("Test Failed - Alphapoint Products 0 != USD")
|
||||
t.Error("Alphapoint Products 0 != USD")
|
||||
}
|
||||
|
||||
if products.Products[1].ProductCode != 1 {
|
||||
t.Error("Test Failed - Alphapoint Products 1 product code != 1")
|
||||
t.Error("Alphapoint Products 1 product code != 1")
|
||||
}
|
||||
}
|
||||
|
||||
if !products.IsAccepted {
|
||||
t.Error("Test Failed - Alphapoint Products.IsAccepted value is negative")
|
||||
t.Error("Alphapoint Products.IsAccepted value is negative")
|
||||
}
|
||||
|
||||
if len(products.Products) == 0 {
|
||||
t.Error("Test Failed - Alphapoint Products len is 0")
|
||||
t.Error("Alphapoint Products len is 0")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -301,15 +301,15 @@ func TestCreateAccount(t *testing.T) {
|
||||
|
||||
err := a.CreateAccount("test", "account", "something@something.com", "0292383745", "lolcat123")
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Init error: %s", err)
|
||||
t.Errorf("Init error: %s", err)
|
||||
}
|
||||
err = a.CreateAccount("test", "account", "something@something.com", "0292383745", "bla")
|
||||
if err == nil {
|
||||
t.Errorf("Test Failed - CreateAccount() error")
|
||||
t.Errorf("CreateAccount() Expected error")
|
||||
}
|
||||
err = a.CreateAccount("", "", "", "", "lolcat123")
|
||||
if err == nil {
|
||||
t.Errorf("Test Failed - CreateAccount() error")
|
||||
t.Errorf("CreateAccount() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -324,7 +324,7 @@ func TestGetUserInfo(t *testing.T) {
|
||||
|
||||
_, err := a.GetUserInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,7 +339,7 @@ func TestSetUserInfo(t *testing.T) {
|
||||
|
||||
_, err := a.SetUserInfo("bla", "bla", "1", "meh", true, true)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -354,7 +354,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
|
||||
_, err := a.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,7 +369,7 @@ func TestGetAccountTrades(t *testing.T) {
|
||||
|
||||
_, err := a.GetAccountTrades("", 1, 2)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,7 +384,7 @@ func TestGetDepositAddresses(t *testing.T) {
|
||||
|
||||
_, err := a.GetDepositAddresses()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,7 +399,7 @@ func TestWithdrawCoins(t *testing.T) {
|
||||
|
||||
err := a.WithdrawCoins("", "", "", 0.01)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -414,7 +414,7 @@ func TestCreateOrder(t *testing.T) {
|
||||
|
||||
_, err := a.CreateOrder("", "", exchange.LimitOrderType.ToString(), 0.01, 0)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -429,7 +429,7 @@ func TestModifyExistingOrder(t *testing.T) {
|
||||
|
||||
_, err := a.ModifyExistingOrder("", 1, 1)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -444,7 +444,7 @@ func TestCancelAllExistingOrders(t *testing.T) {
|
||||
|
||||
err := a.CancelAllExistingOrders("")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -459,7 +459,7 @@ func TestGetOrders(t *testing.T) {
|
||||
|
||||
_, err := a.GetOrders()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -474,7 +474,7 @@ func TestGetOrderFee(t *testing.T) {
|
||||
|
||||
_, err := a.GetOrderFee("", "", 1, 1)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUserInfo() error")
|
||||
t.Error("GetUserInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -626,7 +626,7 @@ func TestModifyOrder(t *testing.T) {
|
||||
|
||||
_, err := a.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -40,12 +41,24 @@ func (a *Alphapoint) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AccountInfo: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
AccountInfo: true,
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
CancelOrders: true,
|
||||
SubmitOrder: true,
|
||||
ModifyOrder: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
},
|
||||
|
||||
WebsocketCapabilities: exchange.ProtocolFeatures{
|
||||
TickerFetching: true,
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
AccountInfo: true,
|
||||
},
|
||||
|
||||
WithdrawPermissions: exchange.WithdrawCryptoWith2FA |
|
||||
|
||||
@@ -19,11 +19,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatalf("Test Failed - ANX Setup() load config error: %s", err)
|
||||
log.Fatalf("ANX Setup() load config error: %s", err)
|
||||
}
|
||||
anxConfig, err := cfg.GetExchangeConfig("ANX")
|
||||
if err != nil {
|
||||
log.Fatalf("Test Failed - ANX Setup() init error: %s", err)
|
||||
log.Fatalf("ANX Setup() init error: %s", err)
|
||||
}
|
||||
anxConfig.API.AuthenticatedSupport = true
|
||||
anxConfig.API.Credentials.Key = apiKey
|
||||
@@ -31,7 +31,7 @@ func TestMain(m *testing.M) {
|
||||
a.SetDefaults()
|
||||
err = a.Setup(anxConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - ANX setup error", err)
|
||||
log.Fatal("ANX setup error", err)
|
||||
}
|
||||
log.Printf(sharedtestvalues.LiveTesting, a.GetName(), a.API.Endpoints.URL)
|
||||
os.Exit(m.Run())
|
||||
|
||||
@@ -22,11 +22,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - ANX load config error", err)
|
||||
log.Fatal("ANX load config error", err)
|
||||
}
|
||||
anxConfig, err := cfg.GetExchangeConfig("ANX")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Mock server error", err)
|
||||
log.Fatal("Mock server error", err)
|
||||
}
|
||||
a.SkipAuthCheck = true
|
||||
anxConfig.API.AuthenticatedSupport = true
|
||||
@@ -35,12 +35,12 @@ func TestMain(m *testing.M) {
|
||||
a.SetDefaults()
|
||||
err = a.Setup(anxConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - ANX setup error", err)
|
||||
log.Fatal("ANX setup error", err)
|
||||
}
|
||||
|
||||
serverDetails, newClient, err := mock.NewVCRServer(mockFile)
|
||||
if err != nil {
|
||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
||||
log.Fatalf("Mock server error %s", err)
|
||||
}
|
||||
|
||||
a.HTTPClient = newClient
|
||||
|
||||
@@ -22,7 +22,7 @@ func TestGetCurrencies(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := a.GetCurrencies()
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. TestGetCurrencies failed. Err: %s", err)
|
||||
t.Fatalf("TestGetCurrencies failed. Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ func TestGetTradablePairs(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := a.FetchTradablePairs(asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. TestGetTradablePairs failed. Err: %s", err)
|
||||
t.Fatalf("TestGetTradablePairs failed. Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,10 +38,10 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
ticker, err := a.GetTicker("BTCUSD")
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - ANX GetTicker() error: %s", err)
|
||||
t.Errorf("ANX GetTicker() error: %s", err)
|
||||
}
|
||||
if ticker.Result != "success" {
|
||||
t.Error("Test Failed - ANX GetTicker() unsuccessful")
|
||||
t.Error("ANX GetTicker() unsuccessful")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,10 +49,10 @@ func TestGetDepth(t *testing.T) {
|
||||
t.Parallel()
|
||||
depth, err := a.GetDepth("BTCUSD")
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - ANX GetDepth() error: %s", err)
|
||||
t.Errorf("ANX GetDepth() error: %s", err)
|
||||
}
|
||||
if depth.Result != "success" {
|
||||
t.Error("Test Failed - ANX GetDepth() unsuccessful")
|
||||
t.Error("ANX GetDepth() unsuccessful")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,13 +60,13 @@ func TestGetAPIKey(t *testing.T) {
|
||||
t.Parallel()
|
||||
apiKey, apiSecret, err := a.GetAPIKey("userName", "passWord", "", "1337")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - ANX GetAPIKey() Incorrect")
|
||||
t.Error("ANX GetAPIKey() Expected error")
|
||||
}
|
||||
if apiKey != "" {
|
||||
t.Error("Test Failed - ANX GetAPIKey() Incorrect")
|
||||
t.Error("ANX GetAPIKey() Expected error")
|
||||
}
|
||||
if apiSecret != "" {
|
||||
t.Error("Test Failed - ANX GetAPIKey() Incorrect")
|
||||
t.Error("ANX GetAPIKey() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0.02) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -111,7 +111,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := a.GetFee(feeBuilder); resp != float64(20000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(20000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(20000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0.01) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.01), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.01), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := a.GetFee(feeBuilder); resp != float64(250.01) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(250.01), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(250.01), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -208,7 +208,7 @@ func TestGetOrderHistory(t *testing.T) {
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - GetBalance() error", err)
|
||||
t.Error("GetBalance() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -307,11 +307,11 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
_, err := a.GetAccountInfo()
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||
t.Error("test failed - GetAccountInfo() error:", err)
|
||||
t.Error("GetAccountInfo() error:", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("test failed - GetAccountInfo() error")
|
||||
t.Error("GetAccountInfo() error")
|
||||
case mockTests && err != nil:
|
||||
t.Error("test failed - GetAccountInfo() error:", err)
|
||||
t.Error("GetAccountInfo() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ func TestModifyOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := a.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -373,9 +373,9 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := a.GetDepositAddress(currency.BTC, "")
|
||||
if areTestAPIKeysSet() && err != nil && !mockTests {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
} else if !areTestAPIKeysSet() && err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -80,9 +81,24 @@ func (a *ANX) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: false,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: false,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
TradeFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.WithdrawCryptoWithEmail |
|
||||
exchange.AutoWithdrawCryptoWithSetup |
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
func TestString(t *testing.T) {
|
||||
a := Spot
|
||||
if a.String() != "spot" {
|
||||
t.Fatal("Test failed - TestString returned an unexpected result")
|
||||
t.Fatal("TestString returned an unexpected result")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ func TestToStringArray(t *testing.T) {
|
||||
result := a.Strings()
|
||||
for x := range a {
|
||||
if !common.StringDataCompare(result, a[x].String()) {
|
||||
t.Fatal("Test failed - TestToStringArray returned an unexpected result")
|
||||
t.Fatal("TestToStringArray returned an unexpected result")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -26,60 +26,60 @@ func TestToStringArray(t *testing.T) {
|
||||
func TestContains(t *testing.T) {
|
||||
a := Items{Spot, Futures}
|
||||
if a.Contains("meow") {
|
||||
t.Fatal("Test failed - TestContains returned an unexpected result")
|
||||
t.Fatal("TestContains returned an unexpected result")
|
||||
}
|
||||
|
||||
if !a.Contains(Spot) {
|
||||
t.Fatal("Test failed - TestContains returned an unexpected result")
|
||||
t.Fatal("TestContains returned an unexpected result")
|
||||
}
|
||||
|
||||
if a.Contains(Binary) {
|
||||
t.Fatal("Test failed - TestContains returned an unexpected result")
|
||||
t.Fatal("TestContains returned an unexpected result")
|
||||
}
|
||||
|
||||
if !a.Contains("SpOt") {
|
||||
t.Error("Test failed - TestContains returned an unexpected result")
|
||||
t.Error("TestContains returned an unexpected result")
|
||||
}
|
||||
}
|
||||
|
||||
func TestJoinToString(t *testing.T) {
|
||||
a := Items{Spot, Futures}
|
||||
if a.JoinToString(",") != "spot,futures" {
|
||||
t.Fatal("Test failed - TestJoinToString returned an unexpected result")
|
||||
t.Fatal("TestJoinToString returned an unexpected result")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsValid(t *testing.T) {
|
||||
if IsValid("rawr") {
|
||||
t.Fatal("Test failed - TestIsValid returned an unexpected result")
|
||||
t.Fatal("TestIsValid returned an unexpected result")
|
||||
}
|
||||
|
||||
if !IsValid(Spot) {
|
||||
t.Fatal("Test failed - TestIsValid returned an unexpected result")
|
||||
t.Fatal("TestIsValid returned an unexpected result")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNew(t *testing.T) {
|
||||
a := New("Spota")
|
||||
if a != nil {
|
||||
t.Fatal("Test failed - TestNew returned an unexpected result")
|
||||
t.Fatal("TestNew returned an unexpected result")
|
||||
}
|
||||
|
||||
a = New("SpOt")
|
||||
if a == nil {
|
||||
t.Fatal("Test failed - TestNew returned an unexpected result")
|
||||
t.Fatal("TestNew returned an unexpected result")
|
||||
}
|
||||
|
||||
a = New("spot,futures")
|
||||
if a.JoinToString(",") != "spot,futures" {
|
||||
t.Fatal("Test failed - TestNew returned an unexpected result")
|
||||
t.Fatal("TestNew returned an unexpected result")
|
||||
}
|
||||
|
||||
if a := New("Spot_rawr"); a != nil {
|
||||
t.Fatal("Test failed - TestNew returned an unexpected result")
|
||||
t.Fatal("TestNew returned an unexpected result")
|
||||
}
|
||||
|
||||
if a := New("Spot,Rawr"); a != nil {
|
||||
t.Fatal("Test failed - TestNew returned an unexpected result")
|
||||
t.Fatal("TestNew returned an unexpected result")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,11 +19,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Binance load config error", err)
|
||||
log.Fatal("Binance load config error", err)
|
||||
}
|
||||
binanceConfig, err := cfg.GetExchangeConfig("Binance")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Binance Setup() init error", err)
|
||||
log.Fatal("Binance Setup() init error", err)
|
||||
}
|
||||
binanceConfig.API.AuthenticatedSupport = true
|
||||
binanceConfig.API.Credentials.Key = apiKey
|
||||
@@ -31,7 +31,7 @@ func TestMain(m *testing.M) {
|
||||
b.SetDefaults()
|
||||
err = b.Setup(binanceConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Binance setup error", err)
|
||||
log.Fatal("Binance setup error", err)
|
||||
}
|
||||
log.Printf(sharedtestvalues.LiveTesting, b.GetName(), b.API.Endpoints.URL)
|
||||
os.Exit(m.Run())
|
||||
|
||||
@@ -22,11 +22,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Binance load config error", err)
|
||||
log.Fatal("Binance load config error", err)
|
||||
}
|
||||
binanceConfig, err := cfg.GetExchangeConfig("Binance")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Binance Setup() init error", err)
|
||||
log.Fatal("Binance Setup() init error", err)
|
||||
}
|
||||
b.SkipAuthCheck = true
|
||||
binanceConfig.API.AuthenticatedSupport = true
|
||||
@@ -35,12 +35,12 @@ func TestMain(m *testing.M) {
|
||||
b.SetDefaults()
|
||||
err = b.Setup(binanceConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Binance setup error", err)
|
||||
log.Fatal("Binance setup error", err)
|
||||
}
|
||||
|
||||
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
||||
if err != nil {
|
||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
||||
log.Fatalf("Mock server error %s", err)
|
||||
}
|
||||
|
||||
b.HTTPClient = newClient
|
||||
|
||||
@@ -36,7 +36,7 @@ func TestFetchTradablePairs(t *testing.T) {
|
||||
|
||||
_, err := b.FetchTradablePairs(asset.Spot)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance FetchTradablePairs(asset asets.AssetType) error", err)
|
||||
t.Error("Binance FetchTradablePairs(asset asets.AssetType) error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ func TestGetOrderBook(t *testing.T) {
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance GetOrderBook() error", err)
|
||||
t.Error("Binance GetOrderBook() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ func TestGetRecentTrades(t *testing.T) {
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance GetRecentTrades() error", err)
|
||||
t.Error("Binance GetRecentTrades() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,10 +71,10 @@ func TestGetHistoricalTrades(t *testing.T) {
|
||||
|
||||
_, err := b.GetHistoricalTrades("BTCUSDT", 5, 0)
|
||||
if !mockTests && err == nil {
|
||||
t.Error("Test Failed - Binance GetHistoricalTrades() expecting error")
|
||||
t.Error("Binance GetHistoricalTrades() expecting error")
|
||||
}
|
||||
if mockTests && err == nil {
|
||||
t.Error("Test Failed - Binance GetHistoricalTrades() error", err)
|
||||
t.Error("Binance GetHistoricalTrades() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ func TestGetAggregatedTrades(t *testing.T) {
|
||||
|
||||
_, err := b.GetAggregatedTrades("BTCUSDT", 5)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance GetAggregatedTrades() error", err)
|
||||
t.Error("Binance GetAggregatedTrades() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ func TestGetSpotKline(t *testing.T) {
|
||||
Limit: 24,
|
||||
})
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance GetSpotKline() error", err)
|
||||
t.Error("Binance GetSpotKline() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ func TestGetAveragePrice(t *testing.T) {
|
||||
|
||||
_, err := b.GetAveragePrice("BTCUSDT")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance GetAveragePrice() error", err)
|
||||
t.Error("Binance GetAveragePrice() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -114,7 +114,7 @@ func TestGetPriceChangeStats(t *testing.T) {
|
||||
|
||||
_, err := b.GetPriceChangeStats("BTCUSDT")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance GetPriceChangeStats() error", err)
|
||||
t.Error("Binance GetPriceChangeStats() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ func TestGetTickers(t *testing.T) {
|
||||
|
||||
_, err := b.GetTickers()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance TestGetTickers error", err)
|
||||
t.Error("Binance TestGetTickers error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ func TestGetLatestSpotPrice(t *testing.T) {
|
||||
|
||||
_, err := b.GetLatestSpotPrice("BTCUSDT")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance GetLatestSpotPrice() error", err)
|
||||
t.Error("Binance GetLatestSpotPrice() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ func TestGetBestPrice(t *testing.T) {
|
||||
|
||||
_, err := b.GetBestPrice("BTCUSDT")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Binance GetBestPrice() error", err)
|
||||
t.Error("Binance GetBestPrice() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,11 +151,11 @@ func TestQueryOrder(t *testing.T) {
|
||||
_, err := b.QueryOrder("BTCUSDT", "", 1337)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - QueryOrder() error", err)
|
||||
t.Error("QueryOrder() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - QueryOrder() expecting an error when no keys are set")
|
||||
t.Error("QueryOrder() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock QueryOrder() error", err)
|
||||
t.Error("Mock QueryOrder() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,11 +165,11 @@ func TestOpenOrders(t *testing.T) {
|
||||
_, err := b.OpenOrders("BTCUSDT")
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - OpenOrders() error", err)
|
||||
t.Error("OpenOrders() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - OpenOrders() expecting an error when no keys are set")
|
||||
t.Error("OpenOrders() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock OpenOrders() error", err)
|
||||
t.Error("Mock OpenOrders() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,11 +179,11 @@ func TestAllOrders(t *testing.T) {
|
||||
_, err := b.AllOrders("BTCUSDT", "", "")
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - AllOrders() error", err)
|
||||
t.Error("AllOrders() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - AllOrders() expecting an error when no keys are set")
|
||||
t.Error("AllOrders() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock AllOrders() error", err)
|
||||
t.Error("Mock AllOrders() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,7 +213,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.1) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -221,7 +221,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(100000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(100000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(100000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -229,7 +229,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.1) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.1), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.1), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -237,7 +237,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -247,7 +247,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -255,7 +255,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -307,11 +307,11 @@ func TestGetActiveOrders(t *testing.T) {
|
||||
_, err = b.GetActiveOrders(&getOrdersRequest)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - GetActiveOrders() error", err)
|
||||
t.Error("GetActiveOrders() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - GetActiveOrders() expecting an error when no keys are set")
|
||||
t.Error("GetActiveOrders() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock GetActiveOrders() error", err)
|
||||
t.Error("Mock GetActiveOrders() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -334,11 +334,11 @@ func TestGetOrderHistory(t *testing.T) {
|
||||
_, err = b.GetOrderHistory(&getOrdersRequest)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - GetOrderHistory() error", err)
|
||||
t.Error("GetOrderHistory() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - GetOrderHistory() expecting an error when no keys are set")
|
||||
t.Error("GetOrderHistory() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock GetOrderHistory() error", err)
|
||||
t.Error("Mock GetOrderHistory() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -368,11 +368,11 @@ func TestSubmitOrder(t *testing.T) {
|
||||
_, err := b.SubmitOrder(orderSubmission)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - SubmitOrder() error", err)
|
||||
t.Error("SubmitOrder() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - SubmitOrder() expecting an error when no keys are set")
|
||||
t.Error("SubmitOrder() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock SubmitOrder() error", err)
|
||||
t.Error("Mock SubmitOrder() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -393,11 +393,11 @@ func TestCancelExchangeOrder(t *testing.T) {
|
||||
err := b.CancelOrder(orderCancellation)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - CancelExchangeOrder() error", err)
|
||||
t.Error("CancelExchangeOrder() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - CancelExchangeOrder() expecting an error when no keys are set")
|
||||
t.Error("CancelExchangeOrder() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock CancelExchangeOrder() error", err)
|
||||
t.Error("Mock CancelExchangeOrder() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -418,11 +418,11 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
||||
_, err := b.CancelAllOrders(orderCancellation)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - CancelAllExchangeOrders() error", err)
|
||||
t.Error("CancelAllExchangeOrders() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - CancelAllExchangeOrders() expecting an error when no keys are set")
|
||||
t.Error("CancelAllExchangeOrders() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock CancelAllExchangeOrders() error", err)
|
||||
t.Error("Mock CancelAllExchangeOrders() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -432,11 +432,11 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
_, err := b.GetAccountInfo()
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - GetAccountInfo() expecting an error when no keys are set")
|
||||
t.Error("GetAccountInfo() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock GetAccountInfo() error", err)
|
||||
t.Error("Mock GetAccountInfo() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -445,7 +445,7 @@ func TestModifyOrder(t *testing.T) {
|
||||
|
||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error cannot be nil")
|
||||
t.Error("ModifyOrder() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -468,11 +468,11 @@ func TestWithdraw(t *testing.T) {
|
||||
_, err := b.WithdrawCryptocurrencyFunds(&withdrawCryptoRequest)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - Withdraw() error", err)
|
||||
t.Error("Withdraw() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - Withdraw() expecting an error when no keys are set")
|
||||
t.Error("Withdraw() expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock Withdraw() error", err)
|
||||
t.Error("Mock Withdraw() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -502,10 +502,10 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock GetDepositAddress() error", err)
|
||||
t.Error("Mock GetDepositAddress() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -71,9 +72,32 @@ func (b *Binance) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
TradeFetching: true,
|
||||
UserTradeHistory: true,
|
||||
TradeFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TradeFetching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
OrderbookFetching: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.NoFiatWithdrawals,
|
||||
@@ -92,10 +116,6 @@ func (b *Binance) SetDefaults() {
|
||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||
b.Websocket = wshandler.New()
|
||||
b.API.Endpoints.WebsocketURL = binanceDefaultWebsocketURL
|
||||
b.Websocket.Functionality = wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketKlineSupported |
|
||||
wshandler.WebsocketOrderbookSupported
|
||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -123,6 +143,7 @@ func (b *Binance) Setup(exch *config.ExchangeConfig) error {
|
||||
ExchangeName: exch.Name,
|
||||
RunningURL: exch.API.Endpoints.WebsocketURL,
|
||||
Connector: b.WsConnect,
|
||||
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
|
||||
@@ -30,21 +30,21 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bitfinex load config error", err)
|
||||
t.Fatal("Bitfinex load config error", err)
|
||||
}
|
||||
bfxConfig, err := cfg.GetExchangeConfig("Bitfinex")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Bitfinex Setup() init error")
|
||||
t.Error("Bitfinex Setup() init error")
|
||||
}
|
||||
err = b.Setup(bfxConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bitfinex setup error", err)
|
||||
t.Fatal("Bitfinex setup error", err)
|
||||
}
|
||||
b.API.Credentials.Key = apiKey
|
||||
b.API.Credentials.Secret = apiSecret
|
||||
if !b.Enabled || b.API.AuthenticatedSupport ||
|
||||
b.Verbose || b.Websocket.IsEnabled() || len(b.BaseCurrencies) < 1 {
|
||||
t.Error("Test Failed - Bitfinex Setup values not set correctly")
|
||||
t.Error("Bitfinex Setup values not set correctly")
|
||||
}
|
||||
|
||||
b.API.AuthenticatedSupport = true
|
||||
@@ -98,7 +98,7 @@ func TestGetTicker(t *testing.T) {
|
||||
|
||||
_, err = b.GetTicker("wigwham")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetTicker() error")
|
||||
t.Error("GetTicker() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ func TestGetStats(t *testing.T) {
|
||||
|
||||
_, err = b.GetStats("wigwham")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetStats() error")
|
||||
t.Error("GetStats() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -144,7 +144,7 @@ func TestGetFundingBook(t *testing.T) {
|
||||
}
|
||||
_, err = b.GetFundingBook("wigwham")
|
||||
if err == nil {
|
||||
t.Error("Testing Failed - GetFundingBook() error")
|
||||
t.Error("Testing Failed - GetFundingBook() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -271,7 +271,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
|
||||
_, err := b.GetAccountInfo()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAccountInfo error", err)
|
||||
t.Error("GetAccountInfo error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -283,7 +283,7 @@ func TestGetAccountFees(t *testing.T) {
|
||||
|
||||
_, err := b.GetAccountFees()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountFees error")
|
||||
t.Error("GetAccountFees Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -295,7 +295,7 @@ func TestGetAccountSummary(t *testing.T) {
|
||||
|
||||
_, err := b.GetAccountSummary()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountSummary() error:")
|
||||
t.Error("GetAccountSummary() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -307,7 +307,7 @@ func TestNewDeposit(t *testing.T) {
|
||||
|
||||
_, err := b.NewDeposit("blabla", "testwallet", 1)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - NewDeposit() error:", err)
|
||||
t.Error("NewDeposit() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,7 +319,7 @@ func TestGetKeyPermissions(t *testing.T) {
|
||||
|
||||
_, err := b.GetKeyPermissions()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetKeyPermissions() error:")
|
||||
t.Error("GetKeyPermissions() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -331,7 +331,7 @@ func TestGetMarginInfo(t *testing.T) {
|
||||
|
||||
_, err := b.GetMarginInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetMarginInfo() error")
|
||||
t.Error("GetMarginInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -343,7 +343,7 @@ func TestGetAccountBalance(t *testing.T) {
|
||||
|
||||
_, err := b.GetAccountBalance()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountBalance() error")
|
||||
t.Error("GetAccountBalance() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -355,7 +355,7 @@ func TestWalletTransfer(t *testing.T) {
|
||||
|
||||
_, err := b.WalletTransfer(0.01, "bla", "bla", "bla")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - WalletTransfer() error")
|
||||
t.Error("WalletTransfer() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -368,7 +368,7 @@ func TestNewOrder(t *testing.T) {
|
||||
_, err := b.NewOrder("BTCUSD", 1, 2, true,
|
||||
exchange.LimitOrderType.ToLower().ToString(), false)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - NewOrder() error")
|
||||
t.Error("NewOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -391,7 +391,7 @@ func TestNewOrderMulti(t *testing.T) {
|
||||
|
||||
_, err := b.NewOrderMulti(newOrder)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - NewOrderMulti() error")
|
||||
t.Error("NewOrderMulti() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -403,7 +403,7 @@ func TestCancelOrder(t *testing.T) {
|
||||
|
||||
_, err := b.CancelExistingOrder(1337)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CancelExistingOrder() error")
|
||||
t.Error("CancelExistingOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -415,7 +415,7 @@ func TestCancelMultipleOrders(t *testing.T) {
|
||||
|
||||
_, err := b.CancelMultipleOrders([]int64{1337, 1336})
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CancelMultipleOrders() error")
|
||||
t.Error("CancelMultipleOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -427,7 +427,7 @@ func TestCancelAllOrders(t *testing.T) {
|
||||
|
||||
_, err := b.CancelAllExistingOrders()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CancelAllExistingOrders() error")
|
||||
t.Error("CancelAllExistingOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -440,7 +440,7 @@ func TestReplaceOrder(t *testing.T) {
|
||||
_, err := b.ReplaceOrder(1337, "BTCUSD",
|
||||
1, 1, true, exchange.LimitOrderType.ToLower().ToString(), false)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - ReplaceOrder() error")
|
||||
t.Error("ReplaceOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -452,7 +452,7 @@ func TestGetOrderStatus(t *testing.T) {
|
||||
|
||||
_, err := b.GetOrderStatus(1337)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetOrderStatus() error")
|
||||
t.Error("GetOrderStatus() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -464,7 +464,7 @@ func TestGetOpenOrders(t *testing.T) {
|
||||
|
||||
_, err := b.GetOpenOrders()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetOpenOrders() error")
|
||||
t.Error("GetOpenOrders() Expectederror")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -476,7 +476,7 @@ func TestGetActivePositions(t *testing.T) {
|
||||
|
||||
_, err := b.GetActivePositions()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetActivePositions() error")
|
||||
t.Error("GetActivePositions() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -488,7 +488,7 @@ func TestClaimPosition(t *testing.T) {
|
||||
|
||||
_, err := b.ClaimPosition(1337)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - ClaimPosition() error")
|
||||
t.Error("ClaimPosition() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -500,7 +500,7 @@ func TestGetBalanceHistory(t *testing.T) {
|
||||
|
||||
_, err := b.GetBalanceHistory("USD", time.Time{}, time.Time{}, 1, "deposit")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetBalanceHistory() error")
|
||||
t.Error("GetBalanceHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -512,7 +512,7 @@ func TestGetMovementHistory(t *testing.T) {
|
||||
|
||||
_, err := b.GetMovementHistory("USD", "bitcoin", time.Time{}, time.Time{}, 1)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetMovementHistory() error")
|
||||
t.Error("GetMovementHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -524,7 +524,7 @@ func TestGetTradeHistory(t *testing.T) {
|
||||
|
||||
_, err := b.GetTradeHistory("BTCUSD", time.Time{}, time.Time{}, 1, 0)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetTradeHistory() error")
|
||||
t.Error("GetTradeHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -536,7 +536,7 @@ func TestNewOffer(t *testing.T) {
|
||||
|
||||
_, err := b.NewOffer("BTC", 1, 1, 1, "loan")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - NewOffer() error")
|
||||
t.Error("NewOffer() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -548,7 +548,7 @@ func TestCancelOffer(t *testing.T) {
|
||||
|
||||
_, err := b.CancelOffer(1337)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CancelOffer() error")
|
||||
t.Error("CancelOffer() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -560,7 +560,7 @@ func TestGetOfferStatus(t *testing.T) {
|
||||
|
||||
_, err := b.GetOfferStatus(1337)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - NewOffer() error")
|
||||
t.Error("NewOffer() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -572,7 +572,7 @@ func TestGetActiveCredits(t *testing.T) {
|
||||
|
||||
_, err := b.GetActiveCredits()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetActiveCredits() error", err)
|
||||
t.Error("GetActiveCredits() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -584,7 +584,7 @@ func TestGetActiveOffers(t *testing.T) {
|
||||
|
||||
_, err := b.GetActiveOffers()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetActiveOffers() error", err)
|
||||
t.Error("GetActiveOffers() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -596,7 +596,7 @@ func TestGetActiveMarginFunding(t *testing.T) {
|
||||
|
||||
_, err := b.GetActiveMarginFunding()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetActiveMarginFunding() error", err)
|
||||
t.Error("GetActiveMarginFunding() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -608,7 +608,7 @@ func TestGetUnusedMarginFunds(t *testing.T) {
|
||||
|
||||
_, err := b.GetUnusedMarginFunds()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetUnusedMarginFunds() error", err)
|
||||
t.Error("GetUnusedMarginFunds() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -620,7 +620,7 @@ func TestGetMarginTotalTakenFunds(t *testing.T) {
|
||||
|
||||
_, err := b.GetMarginTotalTakenFunds()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetMarginTotalTakenFunds() error", err)
|
||||
t.Error("GetMarginTotalTakenFunds() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -632,7 +632,7 @@ func TestCloseMarginFunding(t *testing.T) {
|
||||
|
||||
_, err := b.CloseMarginFunding(1337)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CloseMarginFunding() error")
|
||||
t.Error("CloseMarginFunding() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -669,7 +669,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -677,7 +677,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(2000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -685,7 +685,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -693,7 +693,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -701,7 +701,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0004) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0004), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0004), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -710,7 +710,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -719,7 +719,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -728,7 +728,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -869,7 +869,7 @@ func TestCancelAllExchangeOrdera(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -978,12 +978,12 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if areTestAPIKeysSet() {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "deposit")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "deposit")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -70,9 +71,39 @@ func (b *Bitfinex) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
FiatWithdraw: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
SubmitOrders: true,
|
||||
ModifyOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
TradeFetching: true,
|
||||
UserTradeHistory: true,
|
||||
TradeFee: true,
|
||||
FiatDepositFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoDepositFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||
exchange.AutoWithdrawFiatWithAPIPermission,
|
||||
@@ -91,12 +122,6 @@ func (b *Bitfinex) SetDefaults() {
|
||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||
b.API.Endpoints.WebsocketURL = bitfinexWebsocket
|
||||
b.Websocket = wshandler.New()
|
||||
b.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported
|
||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -126,6 +151,7 @@ func (b *Bitfinex) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: b.WsConnect,
|
||||
Subscriber: b.Subscribe,
|
||||
UnSubscriber: b.Unsubscribe,
|
||||
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -28,11 +28,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bitflyer load config error", err)
|
||||
t.Fatal("Bitflyer load config error", err)
|
||||
}
|
||||
bitflyerConfig, err := cfg.GetExchangeConfig("Bitflyer")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - bitflyer Setup() init error")
|
||||
t.Error("bitflyer Setup() init error")
|
||||
}
|
||||
|
||||
bitflyerConfig.API.AuthenticatedSupport = true
|
||||
@@ -41,7 +41,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = b.Setup(bitflyerConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bitflyer setup error", err)
|
||||
t.Fatal("Bitflyer setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ func TestGetLatestBlockCA(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetLatestBlockCA()
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetLatestBlockCA() error:", err)
|
||||
t.Error("Bitflyer - GetLatestBlockCA() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ func TestGetBlockCA(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetBlockCA("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f")
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetBlockCA() error:", err)
|
||||
t.Error("Bitflyer - GetBlockCA() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ func TestGetBlockbyHeightCA(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetBlockbyHeightCA(0)
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetBlockbyHeightCA() error:", err)
|
||||
t.Error("Bitflyer - GetBlockbyHeightCA() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ func TestGetTransactionByHashCA(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetTransactionByHashCA("0562d1f063cd4127053d838b165630445af5e480ceb24e1fd9ecea52903cb772")
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetTransactionByHashCA() error:", err)
|
||||
t.Error("Bitflyer - GetTransactionByHashCA() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ func TestGetAddressInfoCA(t *testing.T) {
|
||||
t.Parallel()
|
||||
v, err := b.GetAddressInfoCA("1F5zVDgNjorJ51oGebSvNCrSAHpwGkUdDB")
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetAddressInfoCA() error:", err)
|
||||
t.Error("Bitflyer - GetAddressInfoCA() error:", err)
|
||||
}
|
||||
if v.UnconfirmedBalance == 0 || v.ConfirmedBalance == 0 {
|
||||
log.Warn(log.ExchangeSys, "Donation wallet is empty :( - please consider donating")
|
||||
@@ -92,7 +92,7 @@ func TestGetMarkets(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetMarkets()
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetMarkets() error:", err)
|
||||
t.Error("Bitflyer - GetMarkets() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ func TestGetOrderBook(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetOrderBook("BTC_JPY")
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetOrderBook() error:", err)
|
||||
t.Error("Bitflyer - GetOrderBook() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetTicker("BTC_JPY")
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetTicker() error:", err)
|
||||
t.Error("Bitflyer - GetTicker() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ func TestGetExecutionHistory(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetExecutionHistory("BTC_JPY")
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetExecutionHistory() error:", err)
|
||||
t.Error("Bitflyer - GetExecutionHistory() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@ func TestGetExchangeStatus(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetExchangeStatus()
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - GetExchangeStatus() error:", err)
|
||||
t.Error("Bitflyer - GetExchangeStatus() error:", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ func TestCheckFXString(t *testing.T) {
|
||||
p := currency.NewPairDelimiter("FXBTC_JPY", "_")
|
||||
p = b.CheckFXString(p)
|
||||
if p.Base.String() != "FX_BTC" {
|
||||
t.Error("test failed - Bitflyer - CheckFXString() error")
|
||||
t.Error("Bitflyer - CheckFXString() error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ func TestFetchTicker(t *testing.T) {
|
||||
|
||||
_, err := b.FetchTicker(p, asset.Spot)
|
||||
if err != nil {
|
||||
t.Error("test failed - Bitflyer - FetchTicker() error", err)
|
||||
t.Error("Bitflyer - FetchTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -198,7 +198,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.1) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.1), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.1), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -231,7 +231,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -240,7 +240,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.JPY
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(324) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(324), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(324), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -249,7 +249,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.JPY
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(540) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(540), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(540), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -397,7 +397,7 @@ func TestWithdraw(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -68,9 +69,13 @@ func (b *Bitflyer) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: false,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: false,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
TradeFee: true,
|
||||
FiatDepositFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.WithdrawCryptoViaWebsiteOnly |
|
||||
exchange.AutoWithdrawFiat,
|
||||
|
||||
@@ -26,11 +26,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bithumb load config error", err)
|
||||
t.Fatal("Bithumb load config error", err)
|
||||
}
|
||||
bitConfig, err := cfg.GetExchangeConfig("Bithumb")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Bithumb Setup() init error")
|
||||
t.Error("Bithumb Setup() init error")
|
||||
}
|
||||
|
||||
bitConfig.API.AuthenticatedSupport = true
|
||||
@@ -39,7 +39,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = b.Setup(bitConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bithumb setup error", err)
|
||||
t.Fatal("Bithumb setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ func TestGetTradablePairs(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetTradablePairs()
|
||||
if err != nil {
|
||||
t.Error("test failed - Bithumb GetTradablePairs() error", err)
|
||||
t.Error("Bithumb GetTradablePairs() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetTicker("btc")
|
||||
if err != nil {
|
||||
t.Error("test failed - Bithumb GetTicker() error", err)
|
||||
t.Error("Bithumb GetTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ func TestGetAllTickers(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetAllTickers()
|
||||
if err != nil {
|
||||
t.Error("test failed - Bithumb GetAllTickers() error", err)
|
||||
t.Error("Bithumb GetAllTickers() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ func TestGetOrderBook(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetOrderBook("btc")
|
||||
if err != nil {
|
||||
t.Error("test failed - Bithumb GetOrderBook() error", err)
|
||||
t.Error("Bithumb GetOrderBook() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ func TestGetTransactionHistory(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetTransactionHistory("btc")
|
||||
if err != nil {
|
||||
t.Error("test failed - Bithumb GetTransactionHistory() error", err)
|
||||
t.Error("Bithumb GetTransactionHistory() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ func TestGetAccountBalance(t *testing.T) {
|
||||
|
||||
_, err := b.GetAccountBalance("BTC")
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb GetAccountBalance() error", err)
|
||||
t.Error("Bithumb GetAccountBalance() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ func TestGetWalletAddress(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetWalletAddress("")
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb GetWalletAddress() error", err)
|
||||
t.Error("Bithumb GetWalletAddress() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ func TestGetLastTransaction(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetLastTransaction()
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb GetLastTransaction() error", err)
|
||||
t.Error("Bithumb GetLastTransaction() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@ func TestGetOrders(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetOrders("1337", "bid", "100", "", "BTC")
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb GetOrders() error", err)
|
||||
t.Error("Bithumb GetOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ func TestGetUserTransactions(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetUserTransactions()
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb GetUserTransactions() error", err)
|
||||
t.Error("Bithumb GetUserTransactions() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ func TestPlaceTrade(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.PlaceTrade("btc", "bid", 0, 0)
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb PlaceTrade() error", err)
|
||||
t.Error("Bithumb PlaceTrade() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ func TestGetOrderDetails(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetOrderDetails("1337", "bid", "btc")
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb GetOrderDetails() error", err)
|
||||
t.Error("Bithumb GetOrderDetails() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ func TestCancelTrade(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.CancelTrade("", "", "")
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb CancelTrade() error", err)
|
||||
t.Error("Bithumb CancelTrade() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ func TestWithdrawCrypto(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.WithdrawCrypto("LQxiDhKU7idKiWQhx4ALKYkBx8xKEQVxJR", "", "ltc", 0)
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb WithdrawCrypto() error", err)
|
||||
t.Error("Bithumb WithdrawCrypto() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ func TestRequestKRWDepositDetails(t *testing.T) {
|
||||
}
|
||||
_, err := b.RequestKRWDepositDetails()
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb RequestKRWDepositDetails() error", err)
|
||||
t.Error("Bithumb RequestKRWDepositDetails() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,7 +178,7 @@ func TestRequestKRWWithdraw(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.RequestKRWWithdraw("102_bank", "1337", 1000)
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb RequestKRWWithdraw() error", err)
|
||||
t.Error("Bithumb RequestKRWWithdraw() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ func TestMarketBuyOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.MarketBuyOrder("btc", 0)
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb MarketBuyOrder() error", err)
|
||||
t.Error("Bithumb MarketBuyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@ func TestMarketSellOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.MarketSellOrder("btc", 0)
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb MarketSellOrder() error", err)
|
||||
t.Error("Bithumb MarketSellOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,7 +230,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0025), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0025), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -238,7 +238,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(2500) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2500), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2500), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -246,7 +246,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0025), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0025), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -262,7 +262,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -270,7 +270,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -288,7 +288,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -432,12 +432,12 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
if apiKey != "" || apiSecret != "" {
|
||||
_, err := b.GetAccountInfo()
|
||||
if err != nil {
|
||||
t.Error("test failed - Bithumb GetAccountInfo() error", err)
|
||||
t.Error("Bithumb GetAccountInfo() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := b.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("test failed - Bithumb GetAccountInfo() error")
|
||||
t.Error("Bithumb GetAccountInfo() Expected error")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -450,7 +450,7 @@ func TestModifyOrder(t *testing.T) {
|
||||
OrderSide: exchange.SellOrderSide,
|
||||
CurrencyPair: curr})
|
||||
if err == nil {
|
||||
t.Error("Test Failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -534,12 +534,12 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if apiKey != "" && apiSecret != "" {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -70,9 +71,27 @@ func (b *Bithumb) SetDefaults() {
|
||||
b.Features = exchange.Features{
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
CryptoWithdrawal: true,
|
||||
FiatDeposit: true,
|
||||
FiatWithdraw: true,
|
||||
GetOrder: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
ModifyOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
TradeFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoDepositFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.AutoWithdrawFiat,
|
||||
|
||||
@@ -32,11 +32,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bitmex load config error", err)
|
||||
t.Fatal("Bitmex load config error", err)
|
||||
}
|
||||
bitmexConfig, err := cfg.GetExchangeConfig("Bitmex")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Bitmex Setup() init error")
|
||||
t.Error("Bitmex Setup() init error")
|
||||
}
|
||||
|
||||
bitmexConfig.API.AuthenticatedSupport = true
|
||||
@@ -46,7 +46,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = b.Setup(bitmexConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bitmex setup error", err)
|
||||
t.Fatal("Bitmex setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,42 +59,42 @@ func TestStart(t *testing.T) {
|
||||
func TestGetUrgentAnnouncement(t *testing.T) {
|
||||
_, err := b.GetUrgentAnnouncement()
|
||||
if err == nil {
|
||||
t.Error("test failed - GetUrgentAnnouncement() error", err)
|
||||
t.Error("GetUrgentAnnouncement() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAPIKeys(t *testing.T) {
|
||||
_, err := b.GetAPIKeys()
|
||||
if err == nil {
|
||||
t.Error("test failed - GetAPIKeys() error", err)
|
||||
t.Error("GetAPIKeys() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestRemoveAPIKey(t *testing.T) {
|
||||
_, err := b.RemoveAPIKey(APIKeyParams{APIKeyID: "1337"})
|
||||
if err == nil {
|
||||
t.Error("test failed - RemoveAPIKey() error", err)
|
||||
t.Error("RemoveAPIKey() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDisableAPIKey(t *testing.T) {
|
||||
_, err := b.DisableAPIKey(APIKeyParams{APIKeyID: "1337"})
|
||||
if err == nil {
|
||||
t.Error("test failed - DisableAPIKey() error", err)
|
||||
t.Error("DisableAPIKey() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestEnableAPIKey(t *testing.T) {
|
||||
_, err := b.EnableAPIKey(APIKeyParams{APIKeyID: "1337"})
|
||||
if err == nil {
|
||||
t.Error("test failed - EnableAPIKey() error", err)
|
||||
t.Error("EnableAPIKey() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTrollboxMessages(t *testing.T) {
|
||||
_, err := b.GetTrollboxMessages(ChatGetParams{Count: 5})
|
||||
if err != nil {
|
||||
t.Error("test failed - GetTrollboxMessages() error", err)
|
||||
t.Error("GetTrollboxMessages() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,126 +103,126 @@ func TestSendTrollboxMessage(t *testing.T) {
|
||||
ChannelID: 1337,
|
||||
Message: "Hello,World!"})
|
||||
if err == nil {
|
||||
t.Error("test failed - SendTrollboxMessage() error", err)
|
||||
t.Error("SendTrollboxMessage() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTrollboxChannels(t *testing.T) {
|
||||
_, err := b.GetTrollboxChannels()
|
||||
if err != nil {
|
||||
t.Error("test failed - GetTrollboxChannels() error", err)
|
||||
t.Error("GetTrollboxChannels() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTrollboxConnectedUsers(t *testing.T) {
|
||||
_, err := b.GetTrollboxConnectedUsers()
|
||||
if err == nil {
|
||||
t.Error("test failed - GetTrollboxConnectedUsers() error", err)
|
||||
t.Error("GetTrollboxConnectedUsers() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAccountExecutions(t *testing.T) {
|
||||
_, err := b.GetAccountExecutions(&GenericRequestParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - GetAccountExecutions() error", err)
|
||||
t.Error("GetAccountExecutions() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAccountExecutionTradeHistory(t *testing.T) {
|
||||
_, err := b.GetAccountExecutionTradeHistory(&GenericRequestParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - GetAccountExecutionTradeHistory() error", err)
|
||||
t.Error("GetAccountExecutionTradeHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetFundingHistory(t *testing.T) {
|
||||
_, err := b.GetFundingHistory()
|
||||
if err == nil {
|
||||
t.Error("test failed - GetFundingHistory() error", err)
|
||||
t.Error("GetFundingHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetInstruments(t *testing.T) {
|
||||
_, err := b.GetInstruments(&GenericRequestParams{})
|
||||
if err != nil {
|
||||
t.Error("test failed - GetInstruments() error", err)
|
||||
t.Error("GetInstruments() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetActiveInstruments(t *testing.T) {
|
||||
_, err := b.GetActiveInstruments(&GenericRequestParams{})
|
||||
if err != nil {
|
||||
t.Error("test failed - GetActiveInstruments() error", err)
|
||||
t.Error("GetActiveInstruments() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetActiveAndIndexInstruments(t *testing.T) {
|
||||
_, err := b.GetActiveAndIndexInstruments()
|
||||
if err != nil {
|
||||
t.Error("test failed - GetActiveAndIndexInstruments() error", err)
|
||||
t.Error("GetActiveAndIndexInstruments() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetActiveIntervals(t *testing.T) {
|
||||
_, err := b.GetActiveIntervals()
|
||||
if err == nil {
|
||||
t.Error("test failed - GetActiveIntervals() error", err)
|
||||
t.Error("GetActiveIntervals() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetCompositeIndex(t *testing.T) {
|
||||
_, err := b.GetCompositeIndex(&GenericRequestParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - GetCompositeIndex() error", err)
|
||||
t.Error("GetCompositeIndex() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetIndices(t *testing.T) {
|
||||
_, err := b.GetIndices()
|
||||
if err != nil {
|
||||
t.Error("test failed - GetIndices() error", err)
|
||||
t.Error("GetIndices() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetInsuranceFundHistory(t *testing.T) {
|
||||
_, err := b.GetInsuranceFundHistory(&GenericRequestParams{})
|
||||
if err != nil {
|
||||
t.Error("test failed - GetInsuranceFundHistory() error", err)
|
||||
t.Error("GetInsuranceFundHistory() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetLeaderboard(t *testing.T) {
|
||||
_, err := b.GetLeaderboard(LeaderboardGetParams{})
|
||||
if err != nil {
|
||||
t.Error("test failed - GetLeaderboard() error", err)
|
||||
t.Error("GetLeaderboard() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAliasOnLeaderboard(t *testing.T) {
|
||||
_, err := b.GetAliasOnLeaderboard()
|
||||
if err == nil {
|
||||
t.Error("test failed - GetAliasOnLeaderboard() error", err)
|
||||
t.Error("GetAliasOnLeaderboard() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetLiquidationOrders(t *testing.T) {
|
||||
_, err := b.GetLiquidationOrders(&GenericRequestParams{})
|
||||
if err != nil {
|
||||
t.Error("test failed - GetLiquidationOrders() error", err)
|
||||
t.Error("GetLiquidationOrders() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetCurrentNotifications(t *testing.T) {
|
||||
_, err := b.GetCurrentNotifications()
|
||||
if err == nil {
|
||||
t.Error("test failed - GetCurrentNotifications() error", err)
|
||||
t.Error("GetCurrentNotifications() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAmendOrder(t *testing.T) {
|
||||
_, err := b.AmendOrder(&OrderAmendParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - AmendOrder() error", err)
|
||||
t.Error("AmendOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,126 +232,126 @@ func TestCreateOrder(t *testing.T) {
|
||||
ClOrdID: "mm_bitmex_1a/oemUeQ4CAJZgP3fjHsA",
|
||||
OrderQty: 98})
|
||||
if err == nil {
|
||||
t.Error("test failed - CreateOrder() error", err)
|
||||
t.Error("CreateOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCancelOrders(t *testing.T) {
|
||||
_, err := b.CancelOrders(&OrderCancelParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - CancelOrders() error", err)
|
||||
t.Error("CancelOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCancelAllOrders(t *testing.T) {
|
||||
_, err := b.CancelAllExistingOrders(OrderCancelAllParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - CancelAllOrders(orderCancellation *exchange.OrderCancellation) (exchange.CancelAllOrdersResponse, error)", err)
|
||||
t.Error("CancelAllOrders(orderCancellation *exchange.OrderCancellation) (exchange.CancelAllOrdersResponse, error)", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAmendBulkOrders(t *testing.T) {
|
||||
_, err := b.AmendBulkOrders(OrderAmendBulkParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - AmendBulkOrders() error", err)
|
||||
t.Error("AmendBulkOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateBulkOrders(t *testing.T) {
|
||||
_, err := b.CreateBulkOrders(OrderNewBulkParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - CreateBulkOrders() error", err)
|
||||
t.Error("CreateBulkOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCancelAllOrdersAfterTime(t *testing.T) {
|
||||
_, err := b.CancelAllOrdersAfterTime(OrderCancelAllAfterParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - CancelAllOrdersAfterTime() error", err)
|
||||
t.Error("CancelAllOrdersAfterTime() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestClosePosition(t *testing.T) {
|
||||
_, err := b.ClosePosition(OrderClosePositionParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - ClosePosition() error", err)
|
||||
t.Error("ClosePosition() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetOrderbook(t *testing.T) {
|
||||
_, err := b.GetOrderbook(OrderBookGetL2Params{Symbol: "XBT"})
|
||||
if err != nil {
|
||||
t.Error("test failed - GetOrderbook() error", err)
|
||||
t.Error("GetOrderbook() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetPositions(t *testing.T) {
|
||||
_, err := b.GetPositions(PositionGetParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - GetPositions() error", err)
|
||||
t.Error("GetPositions() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIsolatePosition(t *testing.T) {
|
||||
_, err := b.IsolatePosition(PositionIsolateMarginParams{Symbol: "XBT"})
|
||||
if err == nil {
|
||||
t.Error("test failed - IsolatePosition() error", err)
|
||||
t.Error("IsolatePosition() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLeveragePosition(t *testing.T) {
|
||||
_, err := b.LeveragePosition(PositionUpdateLeverageParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - LeveragePosition() error", err)
|
||||
t.Error("LeveragePosition() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateRiskLimit(t *testing.T) {
|
||||
_, err := b.UpdateRiskLimit(PositionUpdateRiskLimitParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - UpdateRiskLimit() error", err)
|
||||
t.Error("UpdateRiskLimit() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestTransferMargin(t *testing.T) {
|
||||
_, err := b.TransferMargin(PositionTransferIsolatedMarginParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - TransferMargin() error", err)
|
||||
t.Error("TransferMargin() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetQuotesByBuckets(t *testing.T) {
|
||||
_, err := b.GetQuotesByBuckets(&QuoteGetBucketedParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - GetQuotesByBuckets() error", err)
|
||||
t.Error("GetQuotesByBuckets() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetSettlementHistory(t *testing.T) {
|
||||
_, err := b.GetSettlementHistory(&GenericRequestParams{})
|
||||
if err != nil {
|
||||
t.Error("test failed - GetSettlementHistory() error", err)
|
||||
t.Error("GetSettlementHistory() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetStats(t *testing.T) {
|
||||
_, err := b.GetStats()
|
||||
if err != nil {
|
||||
t.Error("test failed - GetStats() error", err)
|
||||
t.Error("GetStats() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetStatsHistorical(t *testing.T) {
|
||||
_, err := b.GetStatsHistorical()
|
||||
if err != nil {
|
||||
t.Error("test failed - GetStatsHistorical() error", err)
|
||||
t.Error("GetStatsHistorical() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetStatSummary(t *testing.T) {
|
||||
_, err := b.GetStatSummary()
|
||||
if err != nil {
|
||||
t.Error("test failed - GetStatSummary() error", err)
|
||||
t.Error("GetStatSummary() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,14 +361,14 @@ func TestGetTrade(t *testing.T) {
|
||||
StartTime: time.Now().Format(time.RFC3339),
|
||||
Reverse: true})
|
||||
if err != nil {
|
||||
t.Error("test failed - GetTrade() error", err)
|
||||
t.Error("GetTrade() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetPreviousTrades(t *testing.T) {
|
||||
_, err := b.GetPreviousTrades(&TradeGetBucketedParams{})
|
||||
if err == nil {
|
||||
t.Error("test failed - GetPreviousTrades() error", err)
|
||||
t.Error("GetPreviousTrades() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -404,7 +404,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.00075) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.00075), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.00075), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -412,7 +412,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(750) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(750), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(750), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -420,7 +420,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -428,7 +428,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -436,7 +436,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -444,7 +444,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -453,7 +453,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -462,7 +462,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -607,12 +607,12 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
if apiKey != "" || apiSecret != "" {
|
||||
_, err := b.GetAccountInfo()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := b.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error")
|
||||
t.Error("GetAccountInfo() error")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -620,7 +620,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{OrderID: "1337"})
|
||||
if err == nil {
|
||||
t.Error("Test Failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -685,12 +685,12 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if areTestAPIKeysSet() {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -90,9 +91,36 @@ func (b *Bitmex) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
SubmitOrders: true,
|
||||
ModifyOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
AccountInfo: true,
|
||||
DeadMansSwitch: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||
exchange.WithdrawCryptoWithEmail |
|
||||
@@ -113,13 +141,6 @@ func (b *Bitmex) SetDefaults() {
|
||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||
b.API.Endpoints.WebsocketURL = bitmexWSURL
|
||||
b.Websocket = wshandler.New()
|
||||
b.Websocket.Functionality = wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketAccountDataSupported |
|
||||
wshandler.WebsocketDeadMansSwitchSupported
|
||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -149,6 +170,7 @@ func (b *Bitmex) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: b.WsConnect,
|
||||
Subscriber: b.Subscribe,
|
||||
UnSubscriber: b.Unsubscribe,
|
||||
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -19,11 +19,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Bitstamp load config error", err)
|
||||
log.Fatal("Bitstamp load config error", err)
|
||||
}
|
||||
bitstampConfig, err := cfg.GetExchangeConfig("Bitstamp")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Bitstamp Setup() init error", err)
|
||||
log.Fatal("Bitstamp Setup() init error", err)
|
||||
}
|
||||
bitstampConfig.API.AuthenticatedSupport = true
|
||||
bitstampConfig.API.Credentials.Key = apiKey
|
||||
@@ -32,7 +32,7 @@ func TestMain(m *testing.M) {
|
||||
b.SetDefaults()
|
||||
err = b.Setup(bitstampConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Bitstamp setup error", err)
|
||||
log.Fatal("Bitstamp setup error", err)
|
||||
}
|
||||
log.Printf(sharedtestvalues.LiveTesting, b.GetName(), b.API.Endpoints.URL)
|
||||
os.Exit(m.Run())
|
||||
|
||||
@@ -22,11 +22,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Bitstamp load config error", err)
|
||||
log.Fatal("Bitstamp load config error", err)
|
||||
}
|
||||
bitstampConfig, err := cfg.GetExchangeConfig("Bitstamp")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Bitstamp Setup() init error", err)
|
||||
log.Fatal("Bitstamp Setup() init error", err)
|
||||
}
|
||||
b.SkipAuthCheck = true
|
||||
bitstampConfig.API.AuthenticatedSupport = true
|
||||
@@ -36,12 +36,12 @@ func TestMain(m *testing.M) {
|
||||
b.SetDefaults()
|
||||
err = b.Setup(bitstampConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Bitstamp setup error", err)
|
||||
log.Fatal("Bitstamp setup error", err)
|
||||
}
|
||||
|
||||
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
||||
if err != nil {
|
||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
||||
log.Fatalf("Mock server error %s", err)
|
||||
}
|
||||
|
||||
b.HTTPClient = newClient
|
||||
|
||||
@@ -60,7 +60,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || (areTestAPIKeysSet() && err != nil) {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
}
|
||||
@@ -70,7 +70,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || (areTestAPIKeysSet() && err != nil) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -80,7 +80,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || (areTestAPIKeysSet() && err != nil) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -90,7 +90,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || (areTestAPIKeysSet() && err != nil) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -100,7 +100,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -110,7 +110,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -121,7 +121,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(7.5) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(7.5),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -132,7 +132,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(15) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(15),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -147,18 +147,18 @@ func TestCalculateTradingFee(t *testing.T) {
|
||||
newBalance.BTCEURFee = 0
|
||||
|
||||
if resp := b.CalculateTradingFee(currency.BTC, currency.USD, 0, 0, newBalance); resp != 0 {
|
||||
t.Error("Test Failed - GetFee() error")
|
||||
t.Error("GetFee() error")
|
||||
}
|
||||
if resp := b.CalculateTradingFee(currency.BTC, currency.USD, 2, 2, newBalance); resp != float64(4) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(4), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(4), resp)
|
||||
}
|
||||
if resp := b.CalculateTradingFee(currency.BTC, currency.EUR, 2, 2, newBalance); resp != float64(0) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
}
|
||||
|
||||
dummy1, dummy2 := currency.NewCode(""), currency.NewCode("")
|
||||
if resp := b.CalculateTradingFee(dummy1, dummy2, 0, 0, newBalance); resp != 0 {
|
||||
t.Error("Test Failed - GetFee() error")
|
||||
t.Error("GetFee() error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ func TestGetTicker(t *testing.T) {
|
||||
|
||||
_, err := b.GetTicker(currency.BTC.String()+currency.USD.String(), false)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTicker() error", err)
|
||||
t.Error("GetTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ func TestGetOrderbook(t *testing.T) {
|
||||
|
||||
_, err := b.GetOrderbook(currency.BTC.String() + currency.USD.String())
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetOrderbook() error", err)
|
||||
t.Error("GetOrderbook() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@ func TestGetTradingPairs(t *testing.T) {
|
||||
|
||||
_, err := b.GetTradingPairs()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTradingPairs() error", err)
|
||||
t.Error("GetTradingPairs() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,7 +197,7 @@ func TestGetTransactions(t *testing.T) {
|
||||
|
||||
_, err := b.GetTransactions(currency.BTC.String()+currency.USD.String(), value)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTransactions() error", err)
|
||||
t.Error("GetTransactions() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,7 +206,7 @@ func TestGetEURUSDConversionRate(t *testing.T) {
|
||||
|
||||
_, err := b.GetEURUSDConversionRate()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetEURUSDConversionRate() error", err)
|
||||
t.Error("GetEURUSDConversionRate() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,11 +216,11 @@ func TestGetBalance(t *testing.T) {
|
||||
_, err := b.GetBalance()
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||
t.Error("Test Failed - GetBalance() error", err)
|
||||
t.Error("GetBalance() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - GetBalance() error", err)
|
||||
t.Error("GetBalance() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,11 +230,11 @@ func TestGetUserTransactions(t *testing.T) {
|
||||
_, err := b.GetUserTransactions("btcusd")
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||
t.Error("Test Failed - GetUserTransactions() error", err)
|
||||
t.Error("GetUserTransactions() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - GetUserTransactions() error", err)
|
||||
t.Error("GetUserTransactions() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -244,11 +244,11 @@ func TestGetOpenOrders(t *testing.T) {
|
||||
_, err := b.GetOpenOrders("btcusd")
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||
t.Error("Test Failed - GetOpenOrders() error", err)
|
||||
t.Error("GetOpenOrders() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - GetOpenOrders() error", err)
|
||||
t.Error("GetOpenOrders() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@ func TestGetOrderStatus(t *testing.T) {
|
||||
_, err := b.GetOrderStatus(1337)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||
t.Error("Test Failed - GetOrderStatus() error", err)
|
||||
t.Error("GetOrderStatus() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err == nil:
|
||||
@@ -272,11 +272,11 @@ func TestGetWithdrawalRequests(t *testing.T) {
|
||||
_, err := b.GetWithdrawalRequests(0)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||
t.Error("Test Failed - GetWithdrawalRequests() error", err)
|
||||
t.Error("GetWithdrawalRequests() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - GetWithdrawalRequests() error", err)
|
||||
t.Error("GetWithdrawalRequests() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -286,11 +286,11 @@ func TestGetUnconfirmedBitcoinDeposits(t *testing.T) {
|
||||
_, err := b.GetUnconfirmedBitcoinDeposits()
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||
t.Error("Test Failed - GetUnconfirmedBitcoinDeposits() error", err)
|
||||
t.Error("GetUnconfirmedBitcoinDeposits() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - GetUnconfirmedBitcoinDeposits() error", err)
|
||||
t.Error("GetUnconfirmedBitcoinDeposits() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -303,7 +303,7 @@ func TestTransferAccountBalance(t *testing.T) {
|
||||
|
||||
err := b.TransferAccountBalance(0.01, "btc", "testAccount", true)
|
||||
if !mockTests && err != nil {
|
||||
t.Error("Test Failed - TransferAccountBalance() error", err)
|
||||
t.Error("TransferAccountBalance() error", err)
|
||||
}
|
||||
if mockTests && err == nil {
|
||||
t.Error("Expecting an error until a QA pass can be completed")
|
||||
@@ -456,7 +456,7 @@ func TestModifyOrder(t *testing.T) {
|
||||
|
||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -575,10 +575,10 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||
switch {
|
||||
case areTestAPIKeysSet() && customerID != "" && err != nil && !mockTests:
|
||||
t.Error("Test Failed - GetDepositAddress error", err)
|
||||
t.Error("GetDepositAddress error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - GetDepositAddress error cannot be nil")
|
||||
t.Error("GetDepositAddress error cannot be nil")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - GetDepositAddress error", err)
|
||||
t.Error("GetDepositAddress error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,8 +70,33 @@ func (b *Bitstamp) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
FiatDeposit: true,
|
||||
FiatWithdraw: true,
|
||||
TradeFee: true,
|
||||
FiatDepositFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoDepositFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.AutoWithdrawFiat,
|
||||
@@ -89,10 +115,6 @@ func (b *Bitstamp) SetDefaults() {
|
||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||
b.API.Endpoints.WebsocketURL = bitstampWSURL
|
||||
b.Websocket = wshandler.New()
|
||||
b.Websocket.Functionality = wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported
|
||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -122,6 +144,7 @@ func (b *Bitstamp) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: b.WsConnect,
|
||||
Subscriber: b.Subscribe,
|
||||
UnSubscriber: b.Unsubscribe,
|
||||
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -21,7 +21,7 @@ var b Bittrex
|
||||
func TestSetDefaults(t *testing.T) {
|
||||
b.SetDefaults()
|
||||
if b.GetName() != "Bittrex" {
|
||||
t.Error("Test Failed - Bittrex - SetDefaults() error")
|
||||
t.Error("Bittrex - SetDefaults() error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,11 +29,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bittrex load config error", err)
|
||||
t.Fatal("Bittrex load config error", err)
|
||||
}
|
||||
bConfig, err := cfg.GetExchangeConfig("Bittrex")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Bittrex Setup() init error")
|
||||
t.Error("Bittrex Setup() init error")
|
||||
}
|
||||
bConfig.API.Credentials.Key = apiKey
|
||||
bConfig.API.Credentials.Secret = apiSecret
|
||||
@@ -41,12 +41,12 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = b.Setup(bConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Bittrex setup error", err)
|
||||
t.Fatal("Bittrex setup error", err)
|
||||
}
|
||||
|
||||
if !b.IsEnabled() || !b.API.AuthenticatedSupport ||
|
||||
b.Verbose || len(b.BaseCurrencies) < 1 {
|
||||
t.Error("Test Failed - Bittrex Setup values not set correctly")
|
||||
t.Error("Bittrex Setup values not set correctly")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ func TestGetMarkets(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetMarkets()
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Bittrex - GetMarkets() error: %s", err)
|
||||
t.Errorf("Bittrex - GetMarkets() error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ func TestGetCurrencies(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetCurrencies()
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Bittrex - GetCurrencies() error: %s", err)
|
||||
t.Errorf("Bittrex - GetCurrencies() error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ func TestGetTicker(t *testing.T) {
|
||||
|
||||
_, err := b.GetTicker(btc)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Bittrex - GetTicker() error: %s", err)
|
||||
t.Errorf("Bittrex - GetTicker() error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ func TestGetMarketSummaries(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetMarketSummaries()
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Bittrex - GetMarketSummaries() error: %s", err)
|
||||
t.Errorf("Bittrex - GetMarketSummaries() error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ func TestGetMarketSummary(t *testing.T) {
|
||||
|
||||
_, err := b.GetMarketSummary(pairOne)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Bittrex - GetMarketSummary() error: %s", err)
|
||||
t.Errorf("Bittrex - GetMarketSummary() error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +99,7 @@ func TestGetOrderbook(t *testing.T) {
|
||||
|
||||
_, err := b.GetOrderbook("btc-ltc")
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Bittrex - GetOrderbook() error: %s", err)
|
||||
t.Errorf("Bittrex - GetOrderbook() error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ func TestGetMarketHistory(t *testing.T) {
|
||||
|
||||
_, err := b.GetMarketHistory("btc-ltc")
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Bittrex - GetMarketHistory() error: %s", err)
|
||||
t.Errorf("Bittrex - GetMarketHistory() error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ func TestPlaceBuyLimit(t *testing.T) {
|
||||
|
||||
_, err := b.PlaceBuyLimit("btc-ltc", 1, 1)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - PlaceBuyLimit() error")
|
||||
t.Error("Bittrex - PlaceBuyLimit() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ func TestPlaceSellLimit(t *testing.T) {
|
||||
|
||||
_, err := b.PlaceSellLimit("btc-ltc", 1, 1)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - PlaceSellLimit() error")
|
||||
t.Error("Bittrex - PlaceSellLimit() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,11 +135,11 @@ func TestGetOpenOrders(t *testing.T) {
|
||||
|
||||
_, err := b.GetOpenOrders("")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetOrder() error")
|
||||
t.Error("Bittrex - GetOrder() Expected error")
|
||||
}
|
||||
_, err = b.GetOpenOrders("btc-ltc")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetOrder() error")
|
||||
t.Error("Bittrex - GetOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ func TestCancelExistingOrder(t *testing.T) {
|
||||
|
||||
_, err := b.CancelExistingOrder("blaaaaaaa")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - CancelExistingOrder() error")
|
||||
t.Error("Bittrex - CancelExistingOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ func TestGetAccountBalances(t *testing.T) {
|
||||
|
||||
_, err := b.GetAccountBalances()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetAccountBalances() error")
|
||||
t.Error("Bittrex - GetAccountBalances() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ func TestGetAccountBalanceByCurrency(t *testing.T) {
|
||||
|
||||
_, err := b.GetAccountBalanceByCurrency("btc")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetAccountBalanceByCurrency() error")
|
||||
t.Error("Bittrex - GetAccountBalanceByCurrency() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,11 +175,11 @@ func TestGetOrder(t *testing.T) {
|
||||
|
||||
_, err := b.GetOrder("0cb4c4e4-bdc7-4e13-8c13-430e587d2cc1")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetOrder() error")
|
||||
t.Error("Bittrex - GetOrder() Expected error")
|
||||
}
|
||||
_, err = b.GetOrder("")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetOrder() error")
|
||||
t.Error("Bittrex - GetOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,11 +188,11 @@ func TestGetOrderHistoryForCurrency(t *testing.T) {
|
||||
|
||||
_, err := b.GetOrderHistoryForCurrency("")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetOrderHistory() error")
|
||||
t.Error("Bittrex - GetOrderHistory() Expected error")
|
||||
}
|
||||
_, err = b.GetOrderHistoryForCurrency("btc-ltc")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetOrderHistory() error")
|
||||
t.Error("Bittrex - GetOrderHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,11 +201,11 @@ func TestGetwithdrawalHistory(t *testing.T) {
|
||||
|
||||
_, err := b.GetWithdrawalHistory("")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetWithdrawalHistory() error")
|
||||
t.Error("Bittrex - GetWithdrawalHistory() Expected error")
|
||||
}
|
||||
_, err = b.GetWithdrawalHistory("btc-ltc")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetWithdrawalHistory() error")
|
||||
t.Error("Bittrex - GetWithdrawalHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,11 +214,11 @@ func TestGetDepositHistory(t *testing.T) {
|
||||
|
||||
_, err := b.GetDepositHistory("")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetDepositHistory() error")
|
||||
t.Error("Bittrex - GetDepositHistory() Expected error")
|
||||
}
|
||||
_, err = b.GetDepositHistory("btc-ltc")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Bittrex - GetDepositHistory() error")
|
||||
t.Error("Bittrex - GetDepositHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -255,7 +255,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0025), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0025), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -263,7 +263,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(2500) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2500), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2500), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -271,7 +271,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0025), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0025), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -295,7 +295,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -304,7 +304,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -313,7 +313,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.HKD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -459,7 +459,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -524,12 +524,12 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if areTestAPIKeysSet() {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,9 +70,23 @@ func (b *Bittrex) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: false,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||
exchange.NoFiatWithdrawals,
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"github.com/thrasher-corp/gocryptotrader/common/crypto"
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||
)
|
||||
|
||||
@@ -46,6 +47,7 @@ const (
|
||||
// BTCMarkets is the overarching type across the BTCMarkets package
|
||||
type BTCMarkets struct {
|
||||
exchange.Base
|
||||
WebsocketConn *wshandler.WebsocketConnection
|
||||
}
|
||||
|
||||
// GetMarkets returns the BTCMarkets instruments
|
||||
|
||||
@@ -27,11 +27,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - BTC Markets load config error", err)
|
||||
t.Fatal("BTC Markets load config error", err)
|
||||
}
|
||||
bConfig, err := cfg.GetExchangeConfig("BTC Markets")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - BTC Markets Setup() init error")
|
||||
t.Error("BTC Markets Setup() init error")
|
||||
}
|
||||
bConfig.API.Credentials.Key = apiKey
|
||||
bConfig.API.Credentials.Secret = apiSecret
|
||||
@@ -39,7 +39,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = b.Setup(bConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - BTC Markets setup error", err)
|
||||
t.Fatal("BTC Markets setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ func TestGetMarkets(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetMarkets()
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetMarkets() error", err)
|
||||
t.Error("GetMarkets() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetTicker("BTC", "AUD")
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetTicker() error", err)
|
||||
t.Error("GetTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ func TestGetOrderbook(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetOrderbook("BTC", "AUD")
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetOrderbook() error", err)
|
||||
t.Error("GetOrderbook() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,14 +71,14 @@ func TestGetTrades(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetTrades("BTC", "AUD", nil)
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetTrades() error", err)
|
||||
t.Error("GetTrades() error", err)
|
||||
}
|
||||
|
||||
val := url.Values{}
|
||||
val.Set("since", "0")
|
||||
_, err = b.GetTrades("BTC", "AUD", val)
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetTrades() error", err)
|
||||
t.Error("GetTrades() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ func TestNewOrder(t *testing.T) {
|
||||
_, err := b.NewOrder("AUD", "BTC", 0, 0, "Bid",
|
||||
exchange.LimitOrderType.ToLower().ToString(), "testTest")
|
||||
if err == nil {
|
||||
t.Error("Test failed - NewOrder() error", err)
|
||||
t.Error("NewOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ func TestCancelExistingOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.CancelExistingOrder([]int64{1337})
|
||||
if err == nil {
|
||||
t.Error("Test failed - CancelExistingOrder() error", err)
|
||||
t.Error("CancelExistingOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,11 +103,11 @@ func TestGetOrders(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetOrders("AUD", "BTC", 10, 0, false)
|
||||
if err == nil {
|
||||
t.Error("Test failed - GetOrders() error", err)
|
||||
t.Error("GetOrders() Expected error")
|
||||
}
|
||||
_, err = b.GetOrders("AUD", "BTC", 10, 0, true)
|
||||
if err == nil {
|
||||
t.Error("Test failed - GetOrders() error", err)
|
||||
t.Error("GetOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ func TestGetOrderDetail(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetOrderDetail([]int64{1337})
|
||||
if err == nil {
|
||||
t.Error("Test failed - GetOrderDetail() error", err)
|
||||
t.Error("GetOrderDetail() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ func TestGetAccountBalance(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.GetAccountBalance()
|
||||
if err == nil {
|
||||
t.Error("Test failed - GetAccountBalance() error", err)
|
||||
t.Error("GetAccountBalance() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ func TestWithdrawCrypto(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.WithdrawCrypto(0, "BTC", "LOLOLOL")
|
||||
if err == nil {
|
||||
t.Error("Test failed - WithdrawCrypto() error", err)
|
||||
t.Error("WithdrawCrypto() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,21 +139,21 @@ func TestWithdrawAUD(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := b.WithdrawAUD("BLA", "1337", "blawest", "1336", 10000000)
|
||||
if err == nil {
|
||||
t.Error("Test failed - WithdrawAUD() error", err)
|
||||
t.Error("WithdrawAUD() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAccountInfo(t *testing.T) {
|
||||
_, err := b.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetFundingHistory(t *testing.T) {
|
||||
_, err := b.GetFundingHistory()
|
||||
if err == nil {
|
||||
t.Error("Test failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,14 +161,14 @@ func TestCancelOrder(t *testing.T) {
|
||||
_, err := b.CancelExistingOrder([]int64{1337})
|
||||
|
||||
if err == nil {
|
||||
t.Error("Test failed - CancelgOrder() error", err)
|
||||
t.Error("CancelgOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetOrderInfo(t *testing.T) {
|
||||
_, err := b.GetOrderInfo("1337")
|
||||
if err == nil {
|
||||
t.Error("Test failed - GetOrderInfo() error", err)
|
||||
t.Error("GetOrderInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -208,14 +208,14 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Quote = currency.USD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.00849999) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.00849999), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.00849999), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee Basic
|
||||
feeBuilder = setFeeBuilder()
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0022) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0022), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0022), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -223,7 +223,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(2200) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(22000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(22000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0022) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0022), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0022), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -248,7 +248,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -256,7 +256,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -265,7 +265,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.AUD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -274,7 +274,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.AUD
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -418,7 +418,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -500,6 +500,6 @@ func TestWithdrawInternationalBank(t *testing.T) {
|
||||
func TestGetDepositAddress(t *testing.T) {
|
||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
package btcmarkets
|
||||
|
||||
import "github.com/thrasher-corp/gocryptotrader/currency"
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
)
|
||||
|
||||
// Response is the genralized response type
|
||||
type Response struct {
|
||||
@@ -143,3 +147,54 @@ var WithdrawalFees = map[currency.Code]float64{
|
||||
currency.OMG: 0.15,
|
||||
currency.POWR: 5,
|
||||
}
|
||||
|
||||
// WsSubscribe message sent via ws to subscribe
|
||||
type WsSubscribe struct {
|
||||
MarketIDs []string `json:"marketIds,omitempty"`
|
||||
Channels []string `json:"channels"`
|
||||
MessageType string `json:"messageType"`
|
||||
}
|
||||
|
||||
// WsMessageType message sent via ws to determine type
|
||||
type WsMessageType struct {
|
||||
MessageType string `json:"messageType"`
|
||||
}
|
||||
|
||||
// WsTick message received for ticker data
|
||||
type WsTick struct {
|
||||
Currency string `json:"marketId"`
|
||||
Timestamp time.Time `json:"timestamp"`
|
||||
Bid float64 `json:"bestBid,string"`
|
||||
Ask float64 `json:"bestAsk,string"`
|
||||
Last float64 `json:"lastPrice,string"`
|
||||
Volume float64 `json:"volume24h,string"`
|
||||
Price24h float64 `json:"price24h,string"`
|
||||
Low24h float64 `json:"low24h,string"`
|
||||
High24 float64 `json:"high24h,string"`
|
||||
MessageType string `json:"messageType"`
|
||||
}
|
||||
|
||||
// WsTrade message received for trade data
|
||||
type WsTrade struct {
|
||||
Currency string `json:"marketId"`
|
||||
Timestamp time.Time `json:"timestamp"`
|
||||
TradeID int64 `json:"tradeId"`
|
||||
Price float64 `json:"price,string"`
|
||||
Volume float64 `json:"volume,string"`
|
||||
MessageType string `json:"messageType"`
|
||||
}
|
||||
|
||||
// WsOrderbook message received for orderbook data
|
||||
type WsOrderbook struct {
|
||||
Currency string `json:"marketId"`
|
||||
Timestamp time.Time `json:"timestamp"`
|
||||
Bids [][]string `json:"bids"`
|
||||
Asks [][]string `json:"asks"`
|
||||
MessageType string `json:"messageType"`
|
||||
}
|
||||
|
||||
type WsError struct {
|
||||
MessageType string `json:"messageType"`
|
||||
Code int64 `json:"code"`
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
207
exchanges/btcmarkets/btcmarkets_websocket.go
Normal file
207
exchanges/btcmarkets/btcmarkets_websocket.go
Normal file
@@ -0,0 +1,207 @@
|
||||
package btcmarkets
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/thrasher-corp/gocryptotrader/common"
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||
)
|
||||
|
||||
const (
|
||||
btcMarketsWSURL = "wss://socket.btcmarkets.net/v2"
|
||||
)
|
||||
|
||||
// WsConnect connects to a websocket feed
|
||||
func (b *BTCMarkets) WsConnect() error {
|
||||
if !b.Websocket.IsEnabled() || !b.IsEnabled() {
|
||||
return errors.New(wshandler.WebsocketNotEnabled)
|
||||
}
|
||||
var dialer websocket.Dialer
|
||||
err := b.WebsocketConn.Dial(&dialer, http.Header{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if b.Verbose {
|
||||
log.Debugf(log.ExchangeSys, "%s Connected to Websocket.\n", b.GetName())
|
||||
}
|
||||
|
||||
b.generateDefaultSubscriptions()
|
||||
go b.WsHandleData()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// WsHandleData handles websocket data from WsReadData
|
||||
func (b *BTCMarkets) WsHandleData() {
|
||||
b.Websocket.Wg.Add(1)
|
||||
defer func() {
|
||||
b.Websocket.Wg.Done()
|
||||
}()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-b.Websocket.ShutdownC:
|
||||
return
|
||||
default:
|
||||
resp, err := b.WebsocketConn.ReadMessage()
|
||||
if err != nil {
|
||||
b.Websocket.ReadMessageErrors <- err
|
||||
return
|
||||
}
|
||||
b.Websocket.TrafficAlert <- struct{}{}
|
||||
var wsResponse WsMessageType
|
||||
err = common.JSONDecode(resp.Raw, &wsResponse)
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
switch wsResponse.MessageType {
|
||||
case "heartbeat":
|
||||
if b.Verbose {
|
||||
log.Debugf(log.ExchangeSys, "%v - Websocket heartbeat received %s", b.GetName(), resp.Raw)
|
||||
}
|
||||
case "orderbook":
|
||||
var ob WsOrderbook
|
||||
err := common.JSONDecode(resp.Raw, &ob)
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
|
||||
p := currency.NewPairFromString(ob.Currency)
|
||||
var bids, asks []orderbook.Item
|
||||
for x := range ob.Bids {
|
||||
var price, amount float64
|
||||
price, err = strconv.ParseFloat(ob.Bids[x][0], 64)
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
amount, err = strconv.ParseFloat(ob.Bids[x][1], 64)
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
bids = append(bids, orderbook.Item{
|
||||
Amount: amount,
|
||||
Price: price,
|
||||
})
|
||||
}
|
||||
for x := range ob.Asks {
|
||||
var price, amount float64
|
||||
price, err = strconv.ParseFloat(ob.Asks[x][0], 64)
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
amount, err = strconv.ParseFloat(ob.Asks[x][1], 64)
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
asks = append(asks, orderbook.Item{
|
||||
Amount: amount,
|
||||
Price: price,
|
||||
})
|
||||
}
|
||||
err = b.Websocket.Orderbook.LoadSnapshot(&orderbook.Base{
|
||||
Pair: p,
|
||||
Bids: bids,
|
||||
Asks: asks,
|
||||
LastUpdated: ob.Timestamp,
|
||||
AssetType: asset.Spot,
|
||||
ExchangeName: b.Name,
|
||||
})
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
b.Websocket.DataHandler <- wshandler.WebsocketOrderbookUpdate{
|
||||
Pair: p,
|
||||
Asset: asset.Spot,
|
||||
Exchange: b.GetName(),
|
||||
}
|
||||
case "trade":
|
||||
var trade WsTrade
|
||||
err := common.JSONDecode(resp.Raw, &trade)
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
p := currency.NewPairFromString(trade.Currency)
|
||||
b.Websocket.DataHandler <- wshandler.TradeData{
|
||||
Timestamp: trade.Timestamp,
|
||||
CurrencyPair: p,
|
||||
AssetType: asset.Spot,
|
||||
Exchange: b.GetName(),
|
||||
Price: trade.Price,
|
||||
Amount: trade.Volume,
|
||||
}
|
||||
case "tick":
|
||||
var tick WsTick
|
||||
err := common.JSONDecode(resp.Raw, &tick)
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
|
||||
p := currency.NewPairFromString(tick.Currency)
|
||||
b.Websocket.DataHandler <- wshandler.TickerData{
|
||||
Exchange: b.GetName(),
|
||||
Volume: tick.Volume,
|
||||
High: tick.High24,
|
||||
Low: tick.Low24h,
|
||||
Bid: tick.Bid,
|
||||
Ask: tick.Ask,
|
||||
Last: tick.Last,
|
||||
Timestamp: tick.Timestamp,
|
||||
AssetType: asset.Spot,
|
||||
Pair: p,
|
||||
}
|
||||
case "error":
|
||||
var wsErr WsError
|
||||
err := common.JSONDecode(resp.Raw, &wsErr)
|
||||
if err != nil {
|
||||
b.Websocket.DataHandler <- err
|
||||
continue
|
||||
}
|
||||
b.Websocket.DataHandler <- fmt.Errorf("%v websocket error. Code: %v Message: %v", b.Name, wsErr.Code, wsErr.Message)
|
||||
default:
|
||||
b.Websocket.DataHandler <- fmt.Errorf("%v Unhandled websocket message %s", b.Name, resp.Raw)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (b *BTCMarkets) generateDefaultSubscriptions() {
|
||||
var channels = []string{"tick", "trade", "orderbook"}
|
||||
enabledCurrencies := b.GetEnabledPairs(asset.Spot)
|
||||
var subscriptions []wshandler.WebsocketChannelSubscription
|
||||
for i := range channels {
|
||||
for j := range enabledCurrencies {
|
||||
subscriptions = append(subscriptions, wshandler.WebsocketChannelSubscription{
|
||||
Channel: channels[i],
|
||||
Currency: enabledCurrencies[j],
|
||||
})
|
||||
}
|
||||
}
|
||||
b.Websocket.SubscribeToChannels(subscriptions)
|
||||
}
|
||||
|
||||
// Subscribe sends a websocket message to receive data from the channel
|
||||
func (b *BTCMarkets) Subscribe(channelToSubscribe wshandler.WebsocketChannelSubscription) error {
|
||||
req := WsSubscribe{
|
||||
MarketIDs: []string{channelToSubscribe.Currency.String()},
|
||||
Channels: []string{channelToSubscribe.Channel},
|
||||
MessageType: "subscribe",
|
||||
}
|
||||
return b.WebsocketConn.SendMessage(req)
|
||||
}
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -71,10 +72,31 @@ func (b *BTCMarkets) SetDefaults() {
|
||||
b.Features = exchange.Features{
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: false,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: false,
|
||||
Websocket: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoWithdrawal: true,
|
||||
FiatWithdraw: true,
|
||||
TradeFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AccountInfo: true,
|
||||
Subscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.AutoWithdrawFiat,
|
||||
@@ -88,6 +110,12 @@ func (b *BTCMarkets) SetDefaults() {
|
||||
request.NewRateLimit(time.Second*10, btcmarketsAuthLimit),
|
||||
request.NewRateLimit(time.Second*10, btcmarketsUnauthLimit),
|
||||
common.NewHTTPClientWithTimeout(exchange.DefaultHTTPTimeout))
|
||||
|
||||
b.API.Endpoints.WebsocketURL = btcMarketsWSURL
|
||||
b.Websocket = wshandler.New()
|
||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
}
|
||||
|
||||
// Setup takes in an exchange configuration and sets all parameters
|
||||
@@ -97,7 +125,38 @@ func (b *BTCMarkets) Setup(exch *config.ExchangeConfig) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
return b.SetupDefaults(exch)
|
||||
err := b.SetupDefaults(exch)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = b.Websocket.Setup(
|
||||
&wshandler.WebsocketSetup{
|
||||
Enabled: exch.Features.Enabled.Websocket,
|
||||
Verbose: exch.Verbose,
|
||||
AuthenticatedWebsocketAPISupport: exch.API.AuthenticatedWebsocketSupport,
|
||||
WebsocketTimeout: exch.WebsocketTrafficTimeout,
|
||||
DefaultURL: btcMarketsWSURL,
|
||||
ExchangeName: exch.Name,
|
||||
RunningURL: exch.API.Endpoints.WebsocketURL,
|
||||
Connector: b.WsConnect,
|
||||
Subscriber: b.Subscribe,
|
||||
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
b.WebsocketConn = &wshandler.WebsocketConnection{
|
||||
ExchangeName: b.Name,
|
||||
URL: b.Websocket.GetWebsocketURL(),
|
||||
ProxyURL: b.Websocket.GetProxyAddress(),
|
||||
Verbose: b.Verbose,
|
||||
ResponseCheckTimeout: exch.WebsocketResponseCheckTimeout,
|
||||
ResponseMaxLimit: exch.WebsocketResponseMaxLimit,
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Start starts the BTC Markets go routine
|
||||
@@ -440,7 +499,7 @@ func (b *BTCMarkets) WithdrawFiatFundsToInternationalBank(withdrawRequest *excha
|
||||
|
||||
// GetWebsocket returns a pointer to the exchange websocket
|
||||
func (b *BTCMarkets) GetWebsocket() (*wshandler.Websocket, error) {
|
||||
return nil, common.ErrNotYetImplemented
|
||||
return b.Websocket, nil
|
||||
}
|
||||
|
||||
// GetFeeByType returns an estimate of fee based on type of transaction
|
||||
|
||||
@@ -27,11 +27,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - BTSE load config error", err)
|
||||
log.Fatal("BTSE load config error", err)
|
||||
}
|
||||
btseConfig, err := cfg.GetExchangeConfig("BTSE")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - BTSE Setup() init error")
|
||||
t.Error("BTSE Setup() init error")
|
||||
}
|
||||
|
||||
btseConfig.API.AuthenticatedSupport = true
|
||||
@@ -40,7 +40,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = b.Setup(btseConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - BTSE setup error", err)
|
||||
t.Fatal("BTSE setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ func TestGetMarkets(t *testing.T) {
|
||||
b.SetDefaults()
|
||||
_, err := b.GetMarkets()
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. Err: %s", err)
|
||||
t.Fatalf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ func TestGetTrades(t *testing.T) {
|
||||
b.SetDefaults()
|
||||
_, err := b.GetTrades("BTC-USD")
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. Err: %s", err)
|
||||
t.Fatalf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ func TestGetTicker(t *testing.T) {
|
||||
b.SetDefaults()
|
||||
_, err := b.GetTicker("BTC-USD")
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. Err: %s", err)
|
||||
t.Fatalf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ func TestGetOrderbook(t *testing.T) {
|
||||
b.SetDefaults()
|
||||
_, err := b.GetOrderbook("BTC-USD", 0, 0, 0)
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. Err: %s", err)
|
||||
t.Fatalf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ func TestGetMarketStatistics(t *testing.T) {
|
||||
b.SetDefaults()
|
||||
_, err := b.GetMarketStatistics("BTC-USD")
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. Err: %s", err)
|
||||
t.Fatalf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ func TestGetServerTime(t *testing.T) {
|
||||
b.SetDefaults()
|
||||
_, err := b.GetServerTime()
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. Err: %s", err)
|
||||
t.Fatalf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ func TestGetOrderHistory(t *testing.T) {
|
||||
|
||||
_, err := b.GetOrderHistory(&getOrdersRequest)
|
||||
if err != common.ErrFunctionNotSupported {
|
||||
t.Fatal("Test failed. Expected different result")
|
||||
t.Fatal("Expected different result")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,49 +188,49 @@ func TestGetFee(t *testing.T) {
|
||||
}
|
||||
|
||||
if resp, err := b.GetFee(feeBuilder); resp != 0.00050 || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", 0.00050, resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", 0.00050, resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
feeBuilder.IsMaker = false
|
||||
if resp, err := b.GetFee(feeBuilder); resp != 0.0015 || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", 0.0015, resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", 0.0015, resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != 0.0005 || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", 0.0005, resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", 0.0005, resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
feeBuilder.Pair.Base = currency.USDT
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(5) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(5), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(5), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(3) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(3), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(3), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
feeBuilder.Amount = 1000000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(1000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(1000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(1000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
feeBuilder.Amount = 1000
|
||||
if resp, err := b.GetFee(feeBuilder); resp != float64(25) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(25), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(25), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -239,7 +239,7 @@ func TestParseOrderTime(t *testing.T) {
|
||||
expected := int64(1534794360)
|
||||
actual := parseOrderTime("2018-08-20 19:20:46").Unix()
|
||||
if expected != actual {
|
||||
t.Errorf("Test Failed. TestParseOrderTime expected: %d, got %d", expected, actual)
|
||||
t.Errorf("TestParseOrderTime expected: %d, got %d", expected, actual)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,8 +70,28 @@ func (b *BTSE) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
TradeFee: true,
|
||||
FiatDepositFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.NoAPIWithdrawalMethods,
|
||||
},
|
||||
@@ -87,10 +108,6 @@ func (b *BTSE) SetDefaults() {
|
||||
b.API.Endpoints.URLDefault = btseAPIURL
|
||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||
b.Websocket = wshandler.New()
|
||||
b.Websocket.Functionality = wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported
|
||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -121,6 +138,7 @@ func (b *BTSE) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: b.WsConnect,
|
||||
Subscriber: b.Subscribe,
|
||||
UnSubscriber: b.Unsubscribe,
|
||||
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -32,11 +32,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - coinbasepro load config error", err)
|
||||
t.Fatal("coinbasepro load config error", err)
|
||||
}
|
||||
gdxConfig, err := cfg.GetExchangeConfig("CoinbasePro")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - coinbasepro Setup() init error")
|
||||
t.Error("coinbasepro Setup() init error")
|
||||
}
|
||||
gdxConfig.API.Credentials.Key = apiKey
|
||||
gdxConfig.API.Credentials.Secret = apiSecret
|
||||
@@ -45,56 +45,56 @@ func TestSetup(t *testing.T) {
|
||||
gdxConfig.API.AuthenticatedWebsocketSupport = true
|
||||
err = c.Setup(gdxConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - CoinbasePro setup error", err)
|
||||
t.Fatal("CoinbasePro setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetProducts(t *testing.T) {
|
||||
_, err := c.GetProducts()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Coinbase, GetProducts() Error: %s", err)
|
||||
t.Errorf("Coinbase, GetProducts() Error: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTicker(t *testing.T) {
|
||||
_, err := c.GetTicker("BTC-USD")
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetTicker() error", err)
|
||||
t.Error("GetTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTrades(t *testing.T) {
|
||||
_, err := c.GetTrades("BTC-USD")
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetTrades() error", err)
|
||||
t.Error("GetTrades() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetHistoricRates(t *testing.T) {
|
||||
_, err := c.GetHistoricRates("BTC-USD", 0, 0, 0)
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetHistoricRates() error", err)
|
||||
t.Error("GetHistoricRates() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetStats(t *testing.T) {
|
||||
_, err := c.GetStats("BTC-USD")
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetStats() error", err)
|
||||
t.Error("GetStats() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetCurrencies(t *testing.T) {
|
||||
_, err := c.GetCurrencies()
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetCurrencies() error", err)
|
||||
t.Error("GetCurrencies() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetServerTime(t *testing.T) {
|
||||
_, err := c.GetServerTime()
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetServerTime() error", err)
|
||||
t.Error("GetServerTime() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ func TestAuthRequests(t *testing.T) {
|
||||
}
|
||||
_, err := c.GetAccounts()
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetAccounts() error", err)
|
||||
t.Error("GetAccounts() error", err)
|
||||
}
|
||||
accountResponse, err := c.GetAccount("13371337-1337-1337-1337-133713371337")
|
||||
if accountResponse.ID != "" {
|
||||
@@ -173,11 +173,11 @@ func TestAuthRequests(t *testing.T) {
|
||||
}
|
||||
_, err = c.GetPayMethods()
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetPayMethods() error", err)
|
||||
t.Error("GetPayMethods() error", err)
|
||||
}
|
||||
_, err = c.GetCoinbaseAccounts()
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetCoinbaseAccounts() error", err)
|
||||
t.Error("GetCoinbaseAccounts() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,7 +215,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0.003) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.003), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.003), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -223,7 +223,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(3000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(3000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(3000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.01), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.01), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -248,7 +248,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -256,7 +256,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -265,7 +265,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.EUR
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0.15) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -274,7 +274,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(25) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -290,7 +290,7 @@ func TestCalculateTradingFee(t *testing.T) {
|
||||
}
|
||||
|
||||
if resp := c.calculateTradingFee(volume, currency.BTC, currency.USD, "_", 1, 1, false); resp != float64(0.003) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.003), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.003), resp)
|
||||
}
|
||||
|
||||
// lowercase
|
||||
@@ -302,7 +302,7 @@ func TestCalculateTradingFee(t *testing.T) {
|
||||
}
|
||||
|
||||
if resp := c.calculateTradingFee(volume, currency.BTC, currency.USD, "_", 1, 1, false); resp != float64(0.003) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.003), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.003), resp)
|
||||
}
|
||||
|
||||
// mixedCase
|
||||
@@ -314,7 +314,7 @@ func TestCalculateTradingFee(t *testing.T) {
|
||||
}
|
||||
|
||||
if resp := c.calculateTradingFee(volume, currency.BTC, currency.USD, "_", 1, 1, false); resp != float64(0.003) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.003), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.003), resp)
|
||||
}
|
||||
|
||||
// medium volume
|
||||
@@ -326,7 +326,7 @@ func TestCalculateTradingFee(t *testing.T) {
|
||||
}
|
||||
|
||||
if resp := c.calculateTradingFee(volume, currency.BTC, currency.USD, "_", 1, 1, false); resp != float64(0.002) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
}
|
||||
|
||||
// high volume
|
||||
@@ -338,7 +338,7 @@ func TestCalculateTradingFee(t *testing.T) {
|
||||
}
|
||||
|
||||
if resp := c.calculateTradingFee(volume, currency.BTC, currency.USD, "_", 1, 1, false); resp != float64(0.001) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
}
|
||||
|
||||
// no match
|
||||
@@ -350,7 +350,7 @@ func TestCalculateTradingFee(t *testing.T) {
|
||||
}
|
||||
|
||||
if resp := c.calculateTradingFee(volume, currency.BTC, currency.USD, "_", 1, 1, false); resp != float64(0) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
}
|
||||
|
||||
// taker
|
||||
@@ -362,7 +362,7 @@ func TestCalculateTradingFee(t *testing.T) {
|
||||
}
|
||||
|
||||
if resp := c.calculateTradingFee(volume, currency.BTC, currency.USD, "_", 1, 1, true); resp != float64(0) {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -510,7 +510,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := c.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -592,7 +592,7 @@ func TestWithdrawInternationalBank(t *testing.T) {
|
||||
func TestGetDepositAddress(t *testing.T) {
|
||||
_, err := c.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -71,9 +72,36 @@ func (c *CoinbasePro) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: false,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
FiatDeposit: true,
|
||||
FiatWithdraw: true,
|
||||
TradeFee: true,
|
||||
FiatDepositFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
MessageSequenceNumbers: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||
exchange.AutoWithdrawFiatWithAPIPermission,
|
||||
@@ -92,12 +120,6 @@ func (c *CoinbasePro) SetDefaults() {
|
||||
c.API.Endpoints.URL = c.API.Endpoints.URLDefault
|
||||
c.API.Endpoints.WebsocketURL = coinbaseproWebsocketURL
|
||||
c.Websocket = wshandler.New()
|
||||
c.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketSequenceNumberSupported
|
||||
c.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
c.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
c.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -127,6 +149,7 @@ func (c *CoinbasePro) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: c.WsConnect,
|
||||
Subscriber: c.Subscribe,
|
||||
UnSubscriber: c.Unsubscribe,
|
||||
Features: &c.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -31,11 +31,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Coinut load config error", err)
|
||||
t.Fatal("Coinut load config error", err)
|
||||
}
|
||||
bConfig, err := cfg.GetExchangeConfig("COINUT")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Coinut Setup() init error")
|
||||
t.Error("Coinut Setup() init error")
|
||||
}
|
||||
bConfig.API.AuthenticatedSupport = true
|
||||
bConfig.API.AuthenticatedWebsocketSupport = true
|
||||
@@ -44,12 +44,12 @@ func TestSetup(t *testing.T) {
|
||||
bConfig.Verbose = true
|
||||
err = c.Setup(bConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Coinut setup error", err)
|
||||
t.Fatal("Coinut setup error", err)
|
||||
}
|
||||
|
||||
if !c.IsEnabled() || !c.Verbose ||
|
||||
c.Websocket.IsEnabled() || len(c.BaseCurrencies) < 1 {
|
||||
t.Error("Test Failed - Coinut Setup values not set correctly")
|
||||
t.Error("Coinut Setup values not set correctly")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ func setupWSTestAuth(t *testing.T) {
|
||||
func TestGetInstruments(t *testing.T) {
|
||||
_, err := c.GetInstruments()
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetInstruments() error", err)
|
||||
t.Error("GetInstruments() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0010), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0010), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -146,7 +146,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(1000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(1000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(1000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -178,7 +178,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.EUR
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -196,7 +196,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(10) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(10), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(10), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.SGD
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(10) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(10), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(10), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.CAD
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(2) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -232,7 +232,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.SGD
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(10) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(10), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(10), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.CAD
|
||||
if resp, err := c.GetFee(feeBuilder); resp != float64(2) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -384,12 +384,12 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
if apiKey != "" || clientID != "" {
|
||||
_, err := c.GetAccountInfo()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := c.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error")
|
||||
t.Error("GetAccountInfo() Expected error")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -397,7 +397,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := c.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -456,7 +456,7 @@ func TestWithdrawInternationalBank(t *testing.T) {
|
||||
func TestGetDepositAddress(t *testing.T) {
|
||||
_, err := c.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() function unsupported cannot be nil")
|
||||
t.Error("GetDepositAddress() function unsupported cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,9 +70,33 @@ func (c *COINUT) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: false,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
SubmitOrders: true,
|
||||
UserTradeHistory: true,
|
||||
TradeFee: true,
|
||||
FiatDepositFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
OrderbookFetching: true,
|
||||
TradeFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
SubmitOrder: true,
|
||||
SubmitOrders: true,
|
||||
CancelOrder: true,
|
||||
MessageCorrelation: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.WithdrawCryptoViaWebsiteOnly |
|
||||
exchange.WithdrawFiatViaWebsiteOnly,
|
||||
@@ -90,15 +115,6 @@ func (c *COINUT) SetDefaults() {
|
||||
c.API.Endpoints.URL = c.API.Endpoints.URLDefault
|
||||
c.API.Endpoints.WebsocketURL = coinutWebsocketURL
|
||||
c.Websocket = wshandler.New()
|
||||
c.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketSubmitOrderSupported |
|
||||
wshandler.WebsocketCancelOrderSupported |
|
||||
wshandler.WebsocketMessageCorrelationSupported
|
||||
c.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
c.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
c.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -128,6 +144,7 @@ func (c *COINUT) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: c.WsConnect,
|
||||
Subscriber: c.Subscribe,
|
||||
UnSubscriber: c.Unsubscribe,
|
||||
Features: &c.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"github.com/thrasher-corp/gocryptotrader/config"
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||
)
|
||||
@@ -101,7 +102,7 @@ func (e *Base) SetFeatureDefaults() {
|
||||
Supports: config.FeaturesSupportedConfig{
|
||||
Websocket: e.Features.Supports.Websocket,
|
||||
REST: e.Features.Supports.REST,
|
||||
RESTCapabilities: config.ProtocolFeaturesConfig{
|
||||
RESTCapabilities: protocol.Features{
|
||||
AutoPairUpdates: e.Features.Supports.RESTCapabilities.AutoPairUpdates,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/thrasher-corp/gocryptotrader/config"
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
)
|
||||
@@ -27,7 +28,7 @@ func TestSupportsRESTTickerBatchUpdates(t *testing.T) {
|
||||
Features: Features{
|
||||
Supports: FeaturesSupported{
|
||||
REST: true,
|
||||
RESTCapabilities: ProtocolFeatures{
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
},
|
||||
},
|
||||
@@ -35,7 +36,7 @@ func TestSupportsRESTTickerBatchUpdates(t *testing.T) {
|
||||
}
|
||||
|
||||
if !b.SupportsRESTTickerBatchUpdates() {
|
||||
t.Fatal("Test failed. TestSupportsRESTTickerBatchUpdates returned false")
|
||||
t.Fatal("TestSupportsRESTTickerBatchUpdates returned false")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,7 +47,7 @@ func TestHTTPClient(t *testing.T) {
|
||||
r.SetHTTPClientTimeout(time.Second * 5)
|
||||
|
||||
if r.GetHTTPClient().Timeout != time.Second*5 {
|
||||
t.Fatalf("Test failed. TestHTTPClient unexpected value")
|
||||
t.Fatalf("TestHTTPClient unexpected value")
|
||||
}
|
||||
|
||||
r.Requester = nil
|
||||
@@ -55,12 +56,12 @@ func TestHTTPClient(t *testing.T) {
|
||||
|
||||
r.SetHTTPClient(newClient)
|
||||
if r.GetHTTPClient().Timeout != time.Second*10 {
|
||||
t.Fatalf("Test failed. TestHTTPClient unexpected value")
|
||||
t.Fatalf("TestHTTPClient unexpected value")
|
||||
}
|
||||
|
||||
r.Requester = nil
|
||||
if r.GetHTTPClient() == nil {
|
||||
t.Fatalf("Test failed. TestHTTPClient unexpected value")
|
||||
t.Fatalf("TestHTTPClient unexpected value")
|
||||
}
|
||||
|
||||
b := Base{Name: "RAWR"}
|
||||
@@ -71,7 +72,7 @@ func TestHTTPClient(t *testing.T) {
|
||||
|
||||
b.SetHTTPClientTimeout(time.Second * 5)
|
||||
if b.GetHTTPClient().Timeout != time.Second*5 {
|
||||
t.Fatalf("Test failed. TestHTTPClient unexpected value")
|
||||
t.Fatalf("TestHTTPClient unexpected value")
|
||||
}
|
||||
|
||||
newClient = new(http.Client)
|
||||
@@ -79,7 +80,7 @@ func TestHTTPClient(t *testing.T) {
|
||||
|
||||
b.SetHTTPClient(newClient)
|
||||
if b.GetHTTPClient().Timeout != time.Second*10 {
|
||||
t.Fatalf("Test failed. TestHTTPClient unexpected value")
|
||||
t.Fatalf("TestHTTPClient unexpected value")
|
||||
}
|
||||
|
||||
b.SetHTTPClientUserAgent("epicUserAgent")
|
||||
@@ -103,16 +104,16 @@ func TestSetClientProxyAddress(t *testing.T) {
|
||||
newBase.Websocket = wshandler.New()
|
||||
err := newBase.SetClientProxyAddress(":invalid")
|
||||
if err == nil {
|
||||
t.Error("Test failed. SetClientProxyAddress parsed invalid URL")
|
||||
t.Error("SetClientProxyAddress parsed invalid URL")
|
||||
}
|
||||
|
||||
if newBase.Websocket.GetProxyAddress() != "" {
|
||||
t.Error("Test failed. SetClientProxyAddress error", err)
|
||||
t.Error("SetClientProxyAddress error", err)
|
||||
}
|
||||
|
||||
err = newBase.SetClientProxyAddress("www.valid.com")
|
||||
if err != nil {
|
||||
t.Error("Test failed. SetClientProxyAddress error", err)
|
||||
t.Error("SetClientProxyAddress error", err)
|
||||
}
|
||||
|
||||
// calling this again will cause the ws check to fail
|
||||
@@ -122,7 +123,7 @@ func TestSetClientProxyAddress(t *testing.T) {
|
||||
}
|
||||
|
||||
if newBase.Websocket.GetProxyAddress() != "www.valid.com" {
|
||||
t.Error("Test failed. SetClientProxyAddress error", err)
|
||||
t.Error("SetClientProxyAddress error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +138,7 @@ func TestSetFeatureDefaults(t *testing.T) {
|
||||
Features: Features{
|
||||
Supports: FeaturesSupported{
|
||||
REST: true,
|
||||
RESTCapabilities: ProtocolFeatures{
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
},
|
||||
Websocket: true,
|
||||
@@ -233,22 +234,22 @@ func TestSetHTTPRateLimiter(t *testing.T) {
|
||||
|
||||
func TestSetAutoPairDefaults(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig(config.ConfigTestFile, true)
|
||||
err := cfg.LoadConfig(config.TestFile, true)
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. TestSetAutoPairDefaults failed to load config file. Error: %s", err)
|
||||
t.Fatalf("TestSetAutoPairDefaults failed to load config file. Error: %s", err)
|
||||
}
|
||||
|
||||
exch, err := cfg.GetExchangeConfig("Bitstamp")
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. TestSetAutoPairDefaults load config failed. Error %s", err)
|
||||
t.Fatalf("TestSetAutoPairDefaults load config failed. Error %s", err)
|
||||
}
|
||||
|
||||
if !exch.Features.Supports.RESTCapabilities.AutoPairUpdates {
|
||||
t.Fatalf("Test failed. TestSetAutoPairDefaults Incorrect value")
|
||||
t.Fatalf("TestSetAutoPairDefaults Incorrect value")
|
||||
}
|
||||
|
||||
if exch.CurrencyPairs.LastUpdated != 0 {
|
||||
t.Fatalf("Test failed. TestSetAutoPairDefaults Incorrect value")
|
||||
t.Fatalf("TestSetAutoPairDefaults Incorrect value")
|
||||
}
|
||||
|
||||
exch.Features.Supports.RESTCapabilities.AutoPairUpdates = false
|
||||
@@ -256,11 +257,11 @@ func TestSetAutoPairDefaults(t *testing.T) {
|
||||
|
||||
exch, err = cfg.GetExchangeConfig("Bitstamp")
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. TestSetAutoPairDefaults load config failed. Error %s", err)
|
||||
t.Fatalf("TestSetAutoPairDefaults load config failed. Error %s", err)
|
||||
}
|
||||
|
||||
if exch.Features.Supports.RESTCapabilities.AutoPairUpdates {
|
||||
t.Fatal("Test failed. TestSetAutoPairDefaults Incorrect value")
|
||||
t.Fatal("TestSetAutoPairDefaults Incorrect value")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -289,7 +290,7 @@ func TestGetLastPairsUpdateTime(t *testing.T) {
|
||||
b.CurrencyPairs.LastUpdated = testTime
|
||||
|
||||
if b.GetLastPairsUpdateTime() != testTime {
|
||||
t.Fatal("Test failed. TestGetLastPairsUpdateTim Incorrect value")
|
||||
t.Fatal("TestGetLastPairsUpdateTim Incorrect value")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -339,13 +340,13 @@ func TestGetAssetTypes(t *testing.T) {
|
||||
|
||||
aT := testExchange.GetAssetTypes()
|
||||
if len(aT) != 3 {
|
||||
t.Error("Test failed. TestGetAssetTypes failed")
|
||||
t.Error("TestGetAssetTypes failed")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetClientBankAccounts(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig(config.ConfigTestFile, true)
|
||||
err := cfg.LoadConfig(config.TestFile, true)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -363,13 +364,13 @@ func TestGetClientBankAccounts(t *testing.T) {
|
||||
|
||||
r, err = b.GetClientBankAccounts("MEOW", "USD")
|
||||
if err == nil {
|
||||
t.Error("an error should of been thrown for a non-existent exchange")
|
||||
t.Error("an error should have been thrown for a non-existent exchange")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetExchangeBankAccounts(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig(config.ConfigTestFile, true)
|
||||
err := cfg.LoadConfig(config.TestFile, true)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -387,7 +388,7 @@ func TestGetExchangeBankAccounts(t *testing.T) {
|
||||
|
||||
_, err = b.GetExchangeBankAccounts("MEOW", "USD")
|
||||
if err == nil {
|
||||
t.Error("an error should of been thrown for a non-existent exchange")
|
||||
t.Error("an error should have been thrown for a non-existent exchange")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -451,17 +452,17 @@ func TestGetAuthenticatedAPISupport(t *testing.T) {
|
||||
}
|
||||
|
||||
if !base.GetAuthenticatedAPISupport(RestAuthentication) {
|
||||
t.Fatal("Test failed. Expected RestAuthentication to return true")
|
||||
t.Fatal("Expected RestAuthentication to return true")
|
||||
}
|
||||
if base.GetAuthenticatedAPISupport(WebsocketAuthentication) {
|
||||
t.Fatal("Test failed. Expected WebsocketAuthentication to return false")
|
||||
t.Fatal("Expected WebsocketAuthentication to return false")
|
||||
}
|
||||
base.API.AuthenticatedWebsocketSupport = true
|
||||
if !base.GetAuthenticatedAPISupport(WebsocketAuthentication) {
|
||||
t.Fatal("Test failed. Expected WebsocketAuthentication to return true")
|
||||
t.Fatal("Expected WebsocketAuthentication to return true")
|
||||
}
|
||||
if base.GetAuthenticatedAPISupport(2) {
|
||||
t.Fatal("Test failed. Expected default case of 'false' to be returned")
|
||||
t.Fatal("Expected default case of 'false' to be returned")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -474,7 +475,7 @@ func TestGetName(t *testing.T) {
|
||||
|
||||
name := b.GetName()
|
||||
if name != "TESTNAME" {
|
||||
t.Error("Test Failed - Exchange GetName() returned incorrect name")
|
||||
t.Error("Exchange GetName() returned incorrect name")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -563,21 +564,21 @@ func TestGetEnabledPairs(t *testing.T) {
|
||||
|
||||
c := b.GetEnabledPairs(assetType)
|
||||
if c[0].String() != defaultTestCurrencyPair {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
format.Delimiter = "~"
|
||||
b.CurrencyPairs.RequestFormat = &format
|
||||
c = b.GetEnabledPairs(assetType)
|
||||
if c[0].String() != "BTC~USD" {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
format.Delimiter = ""
|
||||
b.CurrencyPairs.ConfigFormat = &format
|
||||
c = b.GetEnabledPairs(assetType)
|
||||
if c[0].String() != "BTCUSD" {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||
@@ -586,7 +587,7 @@ func TestGetEnabledPairs(t *testing.T) {
|
||||
b.CurrencyPairs.ConfigFormat = &format
|
||||
c = b.GetEnabledPairs(assetType)
|
||||
if c[0].Base != currency.BTC && c[0].Quote != currency.DOGE {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||
@@ -595,7 +596,7 @@ func TestGetEnabledPairs(t *testing.T) {
|
||||
b.CurrencyPairs.ConfigFormat.Delimiter = "_"
|
||||
c = b.GetEnabledPairs(assetType)
|
||||
if c[0].Base != currency.BTC && c[0].Quote != currency.USD {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||
@@ -605,7 +606,7 @@ func TestGetEnabledPairs(t *testing.T) {
|
||||
b.CurrencyPairs.ConfigFormat.Index = currency.BTC.String()
|
||||
c = b.GetEnabledPairs(assetType)
|
||||
if c[0].Base != currency.BTC && c[0].Quote != currency.DOGE {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||
@@ -613,7 +614,7 @@ func TestGetEnabledPairs(t *testing.T) {
|
||||
b.CurrencyPairs.ConfigFormat.Index = ""
|
||||
c = b.GetEnabledPairs(assetType)
|
||||
if c[0].Base != currency.BTC && c[0].Quote != currency.USD {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -639,21 +640,21 @@ func TestGetAvailablePairs(t *testing.T) {
|
||||
|
||||
c := b.GetAvailablePairs(assetType)
|
||||
if c[0].String() != defaultTestCurrencyPair {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
format.Delimiter = "~"
|
||||
b.CurrencyPairs.RequestFormat = &format
|
||||
c = b.GetAvailablePairs(assetType)
|
||||
if c[0].String() != "BTC~USD" {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
format.Delimiter = ""
|
||||
b.CurrencyPairs.ConfigFormat = &format
|
||||
c = b.GetAvailablePairs(assetType)
|
||||
if c[0].String() != "BTCUSD" {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||
@@ -662,7 +663,7 @@ func TestGetAvailablePairs(t *testing.T) {
|
||||
b.CurrencyPairs.ConfigFormat = &format
|
||||
c = b.GetAvailablePairs(assetType)
|
||||
if c[0].Base != currency.BTC && c[0].Quote != currency.DOGE {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||
@@ -671,7 +672,7 @@ func TestGetAvailablePairs(t *testing.T) {
|
||||
b.CurrencyPairs.ConfigFormat.Delimiter = "_"
|
||||
c = b.GetAvailablePairs(assetType)
|
||||
if c[0].Base != currency.BTC && c[0].Quote != currency.USD {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||
@@ -681,7 +682,7 @@ func TestGetAvailablePairs(t *testing.T) {
|
||||
b.CurrencyPairs.ConfigFormat.Index = currency.BTC.String()
|
||||
c = b.GetAvailablePairs(assetType)
|
||||
if c[0].Base != currency.BTC && c[0].Quote != currency.DOGE {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
|
||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||
@@ -689,7 +690,7 @@ func TestGetAvailablePairs(t *testing.T) {
|
||||
b.CurrencyPairs.ConfigFormat.Index = ""
|
||||
c = b.GetAvailablePairs(assetType)
|
||||
if c[0].Base != currency.BTC && c[0].Quote != currency.USD {
|
||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
||||
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -717,15 +718,15 @@ func TestSupportsPair(t *testing.T) {
|
||||
assetType := asset.Spot
|
||||
|
||||
if !b.SupportsPair(currency.NewPair(currency.BTC, currency.USD), true, assetType) {
|
||||
t.Error("Test Failed - Exchange SupportsPair() incorrect value")
|
||||
t.Error("Exchange SupportsPair() incorrect value")
|
||||
}
|
||||
|
||||
if !b.SupportsPair(currency.NewPair(currency.ETH, currency.USD), false, assetType) {
|
||||
t.Error("Test Failed - Exchange SupportsPair() incorrect value")
|
||||
t.Error("Exchange SupportsPair() incorrect value")
|
||||
}
|
||||
|
||||
if b.SupportsPair(currency.NewPairFromStrings("ASD", "ASDF"), true, assetType) {
|
||||
t.Error("Test Failed - Exchange SupportsPair() incorrect value")
|
||||
t.Error("Exchange SupportsPair() incorrect value")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -756,11 +757,11 @@ func TestFormatExchangeCurrencies(t *testing.T) {
|
||||
|
||||
actual, err := e.FormatExchangeCurrencies(pairs, asset.Spot)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Exchange TestFormatExchangeCurrencies error %s", err)
|
||||
t.Errorf("Exchange TestFormatExchangeCurrencies error %s", err)
|
||||
}
|
||||
expected := "btc~usd^ltc~btc"
|
||||
if actual != expected {
|
||||
t.Errorf("Test failed - Exchange TestFormatExchangeCurrencies %s != %s",
|
||||
t.Errorf("Exchange TestFormatExchangeCurrencies %s != %s",
|
||||
actual, expected)
|
||||
}
|
||||
|
||||
@@ -785,7 +786,7 @@ func TestFormatExchangeCurrency(t *testing.T) {
|
||||
actual := b.FormatExchangeCurrency(p, asset.Spot)
|
||||
|
||||
if actual.String() != expected {
|
||||
t.Errorf("Test failed - Exchange TestFormatExchangeCurrency %s != %s",
|
||||
t.Errorf("Exchange TestFormatExchangeCurrency %s != %s",
|
||||
actual, expected)
|
||||
}
|
||||
}
|
||||
@@ -800,7 +801,7 @@ func TestSetEnabled(t *testing.T) {
|
||||
|
||||
SetEnabled.SetEnabled(true)
|
||||
if !SetEnabled.Enabled {
|
||||
t.Error("Test Failed - Exchange SetEnabled(true) did not set boolean")
|
||||
t.Error("Exchange SetEnabled(true) did not set boolean")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -813,7 +814,7 @@ func TestIsEnabled(t *testing.T) {
|
||||
}
|
||||
|
||||
if IsEnabled.IsEnabled() {
|
||||
t.Error("Test Failed - Exchange IsEnabled() did not return correct boolean")
|
||||
t.Error("Exchange IsEnabled() did not return correct boolean")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1048,14 +1049,14 @@ func TestSetPairs(t *testing.T) {
|
||||
|
||||
func TestUpdatePairs(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig(config.ConfigTestFile, true)
|
||||
err := cfg.LoadConfig(config.TestFile, true)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestUpdatePairs failed to load config")
|
||||
t.Fatal("TestUpdatePairs failed to load config")
|
||||
}
|
||||
|
||||
anxCfg, err := cfg.GetExchangeConfig(defaultTestExchange)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestUpdatePairs failed to load config")
|
||||
t.Fatal("TestUpdatePairs failed to load config")
|
||||
}
|
||||
|
||||
UAC := Base{Name: defaultTestExchange}
|
||||
@@ -1063,20 +1064,20 @@ func TestUpdatePairs(t *testing.T) {
|
||||
exchangeProducts := currency.NewPairsFromStrings([]string{"ltc", "btc", "usd", "aud", ""})
|
||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, true, false)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - TestUpdatePairs error: %s", err)
|
||||
t.Errorf("TestUpdatePairs error: %s", err)
|
||||
}
|
||||
|
||||
// Test updating the same new products, diff should be 0
|
||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, true, false)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - TestUpdatePairs error: %s", err)
|
||||
t.Errorf("TestUpdatePairs error: %s", err)
|
||||
}
|
||||
|
||||
// Test force updating to only one product
|
||||
exchangeProducts = currency.NewPairsFromStrings([]string{"btc"})
|
||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, true, true)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - TestUpdatePairs error: %s", err)
|
||||
t.Errorf("TestUpdatePairs error: %s", err)
|
||||
}
|
||||
|
||||
// Test updating exchange products
|
||||
@@ -1084,34 +1085,34 @@ func TestUpdatePairs(t *testing.T) {
|
||||
UAC.Name = defaultTestExchange
|
||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Exchange UpdatePairs() error: %s", err)
|
||||
t.Errorf("Exchange UpdatePairs() error: %s", err)
|
||||
}
|
||||
|
||||
// Test updating the same new products, diff should be 0
|
||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Exchange UpdatePairs() error: %s", err)
|
||||
t.Errorf("Exchange UpdatePairs() error: %s", err)
|
||||
}
|
||||
|
||||
// Test force updating to only one product
|
||||
exchangeProducts = currency.NewPairsFromStrings([]string{"btc"})
|
||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, true)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Forced Exchange UpdatePairs() error: %s", err)
|
||||
t.Errorf("Forced Exchange UpdatePairs() error: %s", err)
|
||||
}
|
||||
|
||||
// Test update currency pairs with btc excluded
|
||||
exchangeProducts = currency.NewPairsFromStrings([]string{"ltc", "eth"})
|
||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Forced Exchange UpdatePairs() error: %s", err)
|
||||
t.Errorf("Forced Exchange UpdatePairs() error: %s", err)
|
||||
}
|
||||
|
||||
// Test that empty exchange products should return an error
|
||||
exchangeProducts = nil
|
||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
||||
if err == nil {
|
||||
t.Errorf("Test failed - empty available pairs should return an error")
|
||||
t.Errorf("empty available pairs should return an error")
|
||||
}
|
||||
|
||||
// Test empty pair
|
||||
@@ -1122,7 +1123,7 @@ func TestUpdatePairs(t *testing.T) {
|
||||
}
|
||||
err = UAC.UpdatePairs(pairs, asset.Spot, true, true)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Forced Exchange UpdatePairs() error: %s", err)
|
||||
t.Errorf("Forced Exchange UpdatePairs() error: %s", err)
|
||||
}
|
||||
UAC.CurrencyPairs.UseGlobalFormat = true
|
||||
UAC.CurrencyPairs.ConfigFormat = ¤cy.PairFormat{
|
||||
@@ -1146,7 +1147,7 @@ func TestSetAPIURL(t *testing.T) {
|
||||
|
||||
err := tester.SetAPIURL()
|
||||
if err == nil {
|
||||
t.Error("test failed - setting zero value config")
|
||||
t.Error("setting zero value config")
|
||||
}
|
||||
|
||||
tester.Config.API.Endpoints.URL = testURL
|
||||
@@ -1157,23 +1158,23 @@ func TestSetAPIURL(t *testing.T) {
|
||||
|
||||
err = tester.SetAPIURL()
|
||||
if err != nil {
|
||||
t.Error("test failed", err)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if tester.GetAPIURL() != testURL {
|
||||
t.Error("test failed - incorrect return URL")
|
||||
t.Error("incorrect return URL")
|
||||
}
|
||||
|
||||
if tester.GetSecondaryAPIURL() != testURLSecondary {
|
||||
t.Error("test failed - incorrect return URL")
|
||||
t.Error("incorrect return URL")
|
||||
}
|
||||
|
||||
if tester.GetAPIURLDefault() != testURLDefault {
|
||||
t.Error("test failed - incorrect return URL")
|
||||
t.Error("incorrect return URL")
|
||||
}
|
||||
|
||||
if tester.GetAPIURLSecondaryDefault() != testURLSecondaryDefault {
|
||||
t.Error("test failed - incorrect return URL")
|
||||
t.Error("incorrect return URL")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1318,11 +1319,11 @@ func TestOrderSides(t *testing.T) {
|
||||
|
||||
var os = BuyOrderSide
|
||||
if os.ToString() != "BUY" {
|
||||
t.Errorf("test failed - unexpected string %s", os.ToString())
|
||||
t.Errorf("unexpected string %s", os.ToString())
|
||||
}
|
||||
|
||||
if os.ToLower() != "buy" {
|
||||
t.Errorf("test failed - unexpected string %s", os.ToString())
|
||||
t.Errorf("unexpected string %s", os.ToString())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1332,11 +1333,11 @@ func TestOrderTypes(t *testing.T) {
|
||||
var ot OrderType = "Mo'Money"
|
||||
|
||||
if ot.ToString() != "Mo'Money" {
|
||||
t.Errorf("test failed - unexpected string %s", ot.ToString())
|
||||
t.Errorf("unexpected string %s", ot.ToString())
|
||||
}
|
||||
|
||||
if ot.ToLower() != "mo'money" {
|
||||
t.Errorf("test failed - unexpected string %s", ot.ToString())
|
||||
t.Errorf("unexpected string %s", ot.ToString())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1491,12 +1492,12 @@ func TestSortOrdersByPrice(t *testing.T) {
|
||||
|
||||
SortOrdersByPrice(&orders, false)
|
||||
if orders[0].Price != 0 {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'", 0, orders[0].Price)
|
||||
t.Errorf("Expected: '%v', received: '%v'", 0, orders[0].Price)
|
||||
}
|
||||
|
||||
SortOrdersByPrice(&orders, true)
|
||||
if orders[0].Price != 100 {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'", 100, orders[0].Price)
|
||||
t.Errorf("Expected: '%v', received: '%v'", 100, orders[0].Price)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1515,14 +1516,14 @@ func TestSortOrdersByDate(t *testing.T) {
|
||||
|
||||
SortOrdersByDate(&orders, false)
|
||||
if orders[0].OrderDate.Unix() != time.Unix(0, 0).Unix() {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'",
|
||||
t.Errorf("Expected: '%v', received: '%v'",
|
||||
time.Unix(0, 0).Unix(),
|
||||
orders[0].OrderDate.Unix())
|
||||
}
|
||||
|
||||
SortOrdersByDate(&orders, true)
|
||||
if orders[0].OrderDate.Unix() != time.Unix(2, 0).Unix() {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'",
|
||||
t.Errorf("Expected: '%v', received: '%v'",
|
||||
time.Unix(2, 0).Unix(),
|
||||
orders[0].OrderDate.Unix())
|
||||
}
|
||||
@@ -1557,14 +1558,14 @@ func TestSortOrdersByCurrency(t *testing.T) {
|
||||
|
||||
SortOrdersByCurrency(&orders, false)
|
||||
if orders[0].CurrencyPair.String() != currency.BTC.String()+"-"+currency.RUB.String() {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'",
|
||||
t.Errorf("Expected: '%v', received: '%v'",
|
||||
currency.BTC.String()+"-"+currency.RUB.String(),
|
||||
orders[0].CurrencyPair.String())
|
||||
}
|
||||
|
||||
SortOrdersByCurrency(&orders, true)
|
||||
if orders[0].CurrencyPair.String() != currency.LTC.String()+"-"+currency.EUR.String() {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'",
|
||||
t.Errorf("Expected: '%v', received: '%v'",
|
||||
currency.LTC.String()+"-"+currency.EUR.String(),
|
||||
orders[0].CurrencyPair.String())
|
||||
}
|
||||
@@ -1587,14 +1588,14 @@ func TestSortOrdersByOrderSide(t *testing.T) {
|
||||
|
||||
SortOrdersBySide(&orders, false)
|
||||
if !strings.EqualFold(orders[0].OrderSide.ToString(), BuyOrderSide.ToString()) {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'",
|
||||
t.Errorf("Expected: '%v', received: '%v'",
|
||||
BuyOrderSide,
|
||||
orders[0].OrderSide)
|
||||
}
|
||||
|
||||
SortOrdersBySide(&orders, true)
|
||||
if !strings.EqualFold(orders[0].OrderSide.ToString(), SellOrderSide.ToString()) {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'",
|
||||
t.Errorf("Expected: '%v', received: '%v'",
|
||||
SellOrderSide,
|
||||
orders[0].OrderSide)
|
||||
}
|
||||
@@ -1617,12 +1618,12 @@ func TestSortOrdersByOrderType(t *testing.T) {
|
||||
|
||||
SortOrdersByType(&orders, false)
|
||||
if !strings.EqualFold(orders[0].OrderType.ToString(), ImmediateOrCancelOrderType.ToString()) {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'", ImmediateOrCancelOrderType, orders[0].OrderType)
|
||||
t.Errorf("Expected: '%v', received: '%v'", ImmediateOrCancelOrderType, orders[0].OrderType)
|
||||
}
|
||||
|
||||
SortOrdersByType(&orders, true)
|
||||
if !strings.EqualFold(orders[0].OrderType.ToString(), TrailingStopOrderType.ToString()) {
|
||||
t.Errorf("Test failed. Expected: '%v', received: '%v'", TrailingStopOrderType, orders[0].OrderType)
|
||||
t.Errorf("Expected: '%v', received: '%v'", TrailingStopOrderType, orders[0].OrderType)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/thrasher-corp/gocryptotrader/config"
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
)
|
||||
@@ -228,41 +229,12 @@ type FeaturesEnabled struct {
|
||||
AutoPairUpdates bool
|
||||
}
|
||||
|
||||
// ProtocolFeatures holds all variables for the exchanges supported features
|
||||
// for a protocol (e.g REST or Websocket)
|
||||
type ProtocolFeatures struct {
|
||||
TickerBatching bool
|
||||
TickerFetching bool
|
||||
OrderbookFetching bool
|
||||
AutoPairUpdates bool
|
||||
AccountInfo bool
|
||||
CryptoDeposit bool
|
||||
CryptoWithdrawal uint32
|
||||
FiatWithdraw bool
|
||||
GetOrder bool
|
||||
GetOrders bool
|
||||
CancelOrders bool
|
||||
CancelOrder bool
|
||||
SubmitOrder bool
|
||||
SubmitOrders bool
|
||||
ModifyOrder bool
|
||||
DepositHistory bool
|
||||
WithdrawalHistory bool
|
||||
TradeHistory bool
|
||||
UserTradeHistory bool
|
||||
TradeFee bool
|
||||
FiatDepositFee bool
|
||||
FiatWithdrawalFee bool
|
||||
CryptoDepositFee bool
|
||||
CryptoWithdrawalFee bool
|
||||
}
|
||||
|
||||
// FeaturesSupported stores the exchanges supported features
|
||||
type FeaturesSupported struct {
|
||||
REST bool
|
||||
RESTCapabilities ProtocolFeatures
|
||||
RESTCapabilities protocol.Features
|
||||
Websocket bool
|
||||
WebsocketCapabilities ProtocolFeatures
|
||||
WebsocketCapabilities protocol.Features
|
||||
WithdrawPermissions uint32
|
||||
}
|
||||
|
||||
|
||||
@@ -28,16 +28,16 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Exmo load config error", err)
|
||||
log.Fatal("Exmo load config error", err)
|
||||
}
|
||||
exmoConf, err := cfg.GetExchangeConfig("EXMO")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Exmo Setup() init error")
|
||||
t.Error("Exmo Setup() init error")
|
||||
}
|
||||
|
||||
err = e.Setup(exmoConf)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Exmo setup error", err)
|
||||
t.Fatal("Exmo setup error", err)
|
||||
}
|
||||
|
||||
e.API.AuthenticatedSupport = true
|
||||
@@ -49,7 +49,7 @@ func TestGetTrades(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := e.GetTrades("BTC_USD")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed. Err: %s", err)
|
||||
t.Errorf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ func TestGetOrderbook(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := e.GetOrderbook("BTC_USD")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed. Err: %s", err)
|
||||
t.Errorf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := e.GetTicker()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed. Err: %s", err)
|
||||
t.Errorf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ func TestGetPairSettings(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := e.GetPairSettings()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed. Err: %s", err)
|
||||
t.Errorf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ func TestGetCurrency(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := e.GetCurrency()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed. Err: %s", err)
|
||||
t.Errorf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ func TestGetUserInfo(t *testing.T) {
|
||||
TestSetup(t)
|
||||
_, err := e.GetUserInfo()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed. Err: %s", err)
|
||||
t.Errorf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ func TestGetRequiredAmount(t *testing.T) {
|
||||
TestSetup(t)
|
||||
_, err := e.GetRequiredAmount("BTC_USD", 100)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed. Err: %s", err)
|
||||
t.Errorf("Err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -153,7 +153,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(2000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -203,7 +203,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.RUB
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(1600) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(1600), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(1600), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -212,7 +212,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
feeBuilder.FiatCurrency = currency.PLN
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(30) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(30), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(30), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -221,7 +221,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.PLN
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(125) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(125), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(125), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -230,7 +230,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.TRY
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.EUR
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.RUB
|
||||
if resp, err := e.GetFee(feeBuilder); resp != float64(3200) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(3200), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(3200), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -393,7 +393,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := e.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -456,12 +456,12 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if areTestAPIKeysSet() {
|
||||
_, err := e.GetDepositAddress(currency.LTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := e.GetDepositAddress(currency.LTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -71,9 +72,27 @@ func (e *EXMO) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: false,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
FiatDepositFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoDepositFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithSetup |
|
||||
exchange.NoFiatWithdrawals,
|
||||
|
||||
@@ -32,11 +32,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - GateIO load config error", err)
|
||||
t.Fatal("GateIO load config error", err)
|
||||
}
|
||||
gateioConfig, err := cfg.GetExchangeConfig("GateIO")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GateIO Setup() init error")
|
||||
t.Error("GateIO Setup() init error")
|
||||
}
|
||||
gateioConfig.API.AuthenticatedSupport = true
|
||||
gateioConfig.API.AuthenticatedWebsocketSupport = true
|
||||
@@ -45,7 +45,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = g.Setup(gateioConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - GateIO setup error", err)
|
||||
t.Fatal("GateIO setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ func TestGetSymbols(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetSymbols()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio TestGetSymbols: %s", err)
|
||||
t.Errorf("Gateio TestGetSymbols: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ func TestGetMarketInfo(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetMarketInfo()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio GetMarketInfo: %s", err)
|
||||
t.Errorf("Gateio GetMarketInfo: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ func TestSpotNewOrder(t *testing.T) {
|
||||
Type: exchange.SellOrderSide.ToLower().ToString(),
|
||||
})
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio SpotNewOrder: %s", err)
|
||||
t.Errorf("Gateio SpotNewOrder: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ func TestCancelExistingOrder(t *testing.T) {
|
||||
|
||||
_, err := g.CancelExistingOrder(917591554, "btc_usdt")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio CancelExistingOrder: %s", err)
|
||||
t.Errorf("Gateio CancelExistingOrder: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ func TestGetBalances(t *testing.T) {
|
||||
|
||||
_, err := g.GetBalances()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio GetBalances: %s", err)
|
||||
t.Errorf("Gateio GetBalances: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ func TestGetLatestSpotPrice(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetLatestSpotPrice("btc_usdt")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio GetLatestSpotPrice: %s", err)
|
||||
t.Errorf("Gateio GetLatestSpotPrice: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetTicker("btc_usdt")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio GetTicker: %s", err)
|
||||
t.Errorf("Gateio GetTicker: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ func TestGetTickers(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetTickers()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio GetTicker: %s", err)
|
||||
t.Errorf("Gateio GetTicker: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ func TestGetOrderbook(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetOrderbook("btc_usdt")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio GetTicker: %s", err)
|
||||
t.Errorf("Gateio GetTicker: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ func TestGetSpotKline(t *testing.T) {
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Gateio GetSpotKline: %s", err)
|
||||
t.Errorf("Gateio GetSpotKline: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,7 +192,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -200,7 +200,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(2000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -224,7 +224,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -233,7 +233,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -249,7 +249,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -405,12 +405,12 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
if apiSecret == "" || apiKey == "" {
|
||||
_, err := g.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error")
|
||||
t.Error("GetAccountInfo() Expected error")
|
||||
}
|
||||
} else {
|
||||
_, err := g.GetAccountInfo()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() error", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -418,7 +418,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := g.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,9 +70,34 @@ func (g *Gateio) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
OrderbookFetching: true,
|
||||
TradeFetching: true,
|
||||
KlineFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
MessageCorrelation: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.NoFiatWithdrawals,
|
||||
@@ -92,14 +118,6 @@ func (g *Gateio) SetDefaults() {
|
||||
g.API.Endpoints.URLSecondary = g.API.Endpoints.URLSecondaryDefault
|
||||
g.API.Endpoints.WebsocketURL = gateioWebsocketEndpoint
|
||||
g.Websocket = wshandler.New()
|
||||
g.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketKlineSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketMessageCorrelationSupported
|
||||
g.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
g.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
g.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -129,6 +147,7 @@ func (g *Gateio) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: g.WsConnect,
|
||||
Subscriber: g.Subscribe,
|
||||
UnSubscriber: g.Unsubscribe,
|
||||
Features: &g.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -19,11 +19,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Gemini load config error", err)
|
||||
log.Fatal("Gemini load config error", err)
|
||||
}
|
||||
geminiConfig, err := cfg.GetExchangeConfig("Gemini")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Gemini Setup() init error", err)
|
||||
log.Fatal("Gemini Setup() init error", err)
|
||||
}
|
||||
geminiConfig.API.AuthenticatedSupport = true
|
||||
geminiConfig.API.Credentials.Key = apiKey
|
||||
@@ -31,7 +31,7 @@ func TestMain(m *testing.M) {
|
||||
g.SetDefaults()
|
||||
err = g.Setup(geminiConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Gemini setup error", err)
|
||||
log.Fatal("Gemini setup error", err)
|
||||
}
|
||||
g.API.Endpoints.URL = geminiSandboxAPIURL
|
||||
log.Printf(sharedtestvalues.LiveTesting, g.GetName(), g.API.Endpoints.URL)
|
||||
|
||||
@@ -22,11 +22,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Gemini load config error", err)
|
||||
log.Fatal("Gemini load config error", err)
|
||||
}
|
||||
geminiConfig, err := cfg.GetExchangeConfig("Gemini")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Mock server error", err)
|
||||
log.Fatal("Mock server error", err)
|
||||
}
|
||||
g.SkipAuthCheck = true
|
||||
geminiConfig.API.AuthenticatedSupport = true
|
||||
@@ -35,12 +35,12 @@ func TestMain(m *testing.M) {
|
||||
g.SetDefaults()
|
||||
err = g.Setup(geminiConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Gemini setup error", err)
|
||||
log.Fatal("Gemini setup error", err)
|
||||
}
|
||||
|
||||
serverDetails, newClient, err := mock.NewVCRServer(mockFile)
|
||||
if err != nil {
|
||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
||||
log.Fatalf("Mock server error %s", err)
|
||||
}
|
||||
|
||||
g.HTTPClient = newClient
|
||||
|
||||
@@ -30,7 +30,7 @@ func TestGetSymbols(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetSymbols()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetSymbols() error", err)
|
||||
t.Error("GetSymbols() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,11 +38,11 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetTicker("BTCUSD")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTicker() error", err)
|
||||
t.Error("GetTicker() error", err)
|
||||
}
|
||||
_, err = g.GetTicker("bla")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetTicker() error", err)
|
||||
t.Error("GetTicker() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ func TestGetOrderbook(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetOrderbook(testCurrency, url.Values{})
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetOrderbook() error", err)
|
||||
t.Error("GetOrderbook() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ func TestGetTrades(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetTrades(testCurrency, url.Values{})
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTrades() error", err)
|
||||
t.Error("GetTrades() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,9 +66,9 @@ func TestGetNotionalVolume(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetNotionalVolume()
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - GetNotionalVolume() error", err)
|
||||
t.Error("GetNotionalVolume() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - GetNotionalVolume() error cannot be nil")
|
||||
t.Error("GetNotionalVolume() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ func TestGetAuction(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetAuction(testCurrency)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAuction() error", err)
|
||||
t.Error("GetAuction() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ func TestGetAuctionHistory(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetAuctionHistory(testCurrency, url.Values{})
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAuctionHistory() error", err)
|
||||
t.Error("GetAuctionHistory() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -92,9 +92,9 @@ func TestNewOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.NewOrder(testCurrency, 1, 9000, "buy", "exchange limit")
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - NewOrder() error", err)
|
||||
t.Error("NewOrder() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - NewOrder() error cannot be nil")
|
||||
t.Error("NewOrder() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,9 +102,9 @@ func TestCancelExistingOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.CancelExistingOrder(265555413)
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - CancelExistingOrder() error", err)
|
||||
t.Error("CancelExistingOrder() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - CancelExistingOrder() error cannot be nil")
|
||||
t.Error("CancelExistingOrder() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,9 +112,9 @@ func TestCancelExistingOrders(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.CancelExistingOrders(false)
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - CancelExistingOrders() error", err)
|
||||
t.Error("CancelExistingOrders() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - CancelExistingOrders() error cannot be nil")
|
||||
t.Error("CancelExistingOrders() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,9 +122,9 @@ func TestGetOrderStatus(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetOrderStatus(265563260)
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - GetOrderStatus() error", err)
|
||||
t.Error("GetOrderStatus() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - GetOrderStatus() error cannot be nil")
|
||||
t.Error("GetOrderStatus() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,9 +132,9 @@ func TestGetOrders(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetOrders()
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - GetOrders() error", err)
|
||||
t.Error("GetOrders() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - GetOrders() error cannot be nil")
|
||||
t.Error("GetOrders() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,9 +142,9 @@ func TestGetTradeHistory(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetTradeHistory(testCurrency, 0)
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - GetTradeHistory() error", err)
|
||||
t.Error("GetTradeHistory() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - GetTradeHistory() error cannot be nil")
|
||||
t.Error("GetTradeHistory() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,9 +152,9 @@ func TestGetTradeVolume(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetTradeVolume()
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - GetTradeVolume() error", err)
|
||||
t.Error("GetTradeVolume() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - GetTradeVolume() error cannot be nil")
|
||||
t.Error("GetTradeVolume() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,9 +162,9 @@ func TestGetBalances(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetBalances()
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - GetBalances() error", err)
|
||||
t.Error("GetBalances() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - GetBalances() error cannot be nil")
|
||||
t.Error("GetBalances() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ func TestGetCryptoDepositAddress(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetCryptoDepositAddress("LOL123", "btc")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetCryptoDepositAddress() error", err)
|
||||
t.Error("GetCryptoDepositAddress() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ func TestWithdrawCrypto(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.WithdrawCrypto("LOL123", "btc", 1)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - WithdrawCrypto() error", err)
|
||||
t.Error("WithdrawCrypto() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,9 +188,9 @@ func TestPostHeartbeat(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.PostHeartbeat()
|
||||
if err != nil && mockTests {
|
||||
t.Error("Test Failed - PostHeartbeat() error", err)
|
||||
t.Error("PostHeartbeat() error", err)
|
||||
} else if err == nil && !mockTests {
|
||||
t.Error("Test Failed - PostHeartbeat() error cannot be nil")
|
||||
t.Error("PostHeartbeat() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,7 +234,7 @@ func TestGetFee(t *testing.T) {
|
||||
if areTestAPIKeysSet() || mockTests {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0.0035) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0.0035),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -245,7 +245,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(3500) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(3500),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -255,7 +255,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0.001),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -265,7 +265,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -275,7 +275,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -286,7 +286,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -296,7 +296,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -306,7 +306,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -317,7 +317,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := g.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0),
|
||||
resp)
|
||||
t.Error(err)
|
||||
@@ -470,7 +470,7 @@ func TestModifyOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -535,7 +535,7 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := g.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress error cannot be nil")
|
||||
t.Error("GetDepositAddress error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,9 +70,28 @@ func (g *Gemini) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: false,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
OrderbookFetching: true,
|
||||
TradeFetching: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
MessageSequenceNumbers: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||
exchange.AutoWithdrawCryptoWithSetup |
|
||||
@@ -91,10 +111,6 @@ func (g *Gemini) SetDefaults() {
|
||||
g.API.Endpoints.URL = g.API.Endpoints.URLDefault
|
||||
g.API.Endpoints.WebsocketURL = geminiWebsocketEndpoint
|
||||
g.Websocket = wshandler.New()
|
||||
g.Websocket.Functionality = wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketSequenceNumberSupported
|
||||
g.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
g.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
g.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -126,6 +142,7 @@ func (g *Gemini) Setup(exch *config.ExchangeConfig) error {
|
||||
ExchangeName: exch.Name,
|
||||
RunningURL: exch.API.Endpoints.WebsocketURL,
|
||||
Connector: g.WsConnect,
|
||||
Features: &g.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -33,11 +33,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - HitBTC load config error", err)
|
||||
t.Fatal("HitBTC load config error", err)
|
||||
}
|
||||
hitbtcConfig, err := cfg.GetExchangeConfig("HitBTC")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - HitBTC Setup() init error")
|
||||
t.Error("HitBTC Setup() init error")
|
||||
}
|
||||
hitbtcConfig.API.AuthenticatedSupport = true
|
||||
hitbtcConfig.API.AuthenticatedWebsocketSupport = true
|
||||
@@ -46,7 +46,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = h.Setup(hitbtcConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - HitBTC setup error", err)
|
||||
t.Fatal("HitBTC setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -151,7 +151,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(2000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -167,7 +167,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -175,7 +175,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0.042800) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.042800), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.042800), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err == nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -195,7 +195,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.BTC
|
||||
feeBuilder.Pair.Quote = currency.LTC
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0.0006) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0006), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0006), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -203,7 +203,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -212,7 +212,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -355,7 +355,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := h.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -418,12 +418,12 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if areTestAPIKeysSet() {
|
||||
_, err := h.GetDepositAddress(currency.BTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := h.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,9 +70,36 @@ func (h *HitBTC) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
ModifyOrder: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoDepositFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
SubmitOrder: true,
|
||||
CancelOrder: true,
|
||||
MessageSequenceNumbers: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.NoFiatWithdrawals,
|
||||
@@ -90,14 +118,6 @@ func (h *HitBTC) SetDefaults() {
|
||||
h.API.Endpoints.URL = h.API.Endpoints.URLDefault
|
||||
h.API.Endpoints.WebsocketURL = hitbtcWebsocketAddress
|
||||
h.Websocket = wshandler.New()
|
||||
h.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketSubmitOrderSupported |
|
||||
wshandler.WebsocketCancelOrderSupported |
|
||||
wshandler.WebsocketMessageCorrelationSupported
|
||||
h.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
h.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
h.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -127,6 +147,7 @@ func (h *HitBTC) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: h.WsConnect,
|
||||
Subscriber: h.Subscribe,
|
||||
UnSubscriber: h.Unsubscribe,
|
||||
Features: &h.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -40,11 +40,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Huobi load config error", err)
|
||||
log.Fatal("Huobi load config error", err)
|
||||
}
|
||||
hConfig, err := cfg.GetExchangeConfig("Huobi")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Huobi Setup() init error")
|
||||
t.Error("Huobi Setup() init error")
|
||||
}
|
||||
hConfig.API.AuthenticatedSupport = true
|
||||
hConfig.API.AuthenticatedWebsocketSupport = true
|
||||
@@ -53,7 +53,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = h.Setup(hConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Huobi setup error", err)
|
||||
t.Fatal("Huobi setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ func TestGetSpotKline(t *testing.T) {
|
||||
Size: 0,
|
||||
})
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetSpotKline: %s", err)
|
||||
t.Errorf("Huobi TestGetSpotKline: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ func TestGetMarketDetailMerged(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := h.GetMarketDetailMerged(testSymbol)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetMarketDetailMerged: %s", err)
|
||||
t.Errorf("Huobi TestGetMarketDetailMerged: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ func TestGetDepth(t *testing.T) {
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetDepth: %s", err)
|
||||
t.Errorf("Huobi TestGetDepth: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ func TestGetTrades(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := h.GetTrades(testSymbol)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetTrades: %s", err)
|
||||
t.Errorf("Huobi TestGetTrades: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ func TestGetLatestSpotPrice(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := h.GetLatestSpotPrice(testSymbol)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi GetLatestSpotPrice: %s", err)
|
||||
t.Errorf("Huobi GetLatestSpotPrice: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ func TestGetTradeHistory(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := h.GetTradeHistory(testSymbol, "50")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetTradeHistory: %s", err)
|
||||
t.Errorf("Huobi TestGetTradeHistory: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ func TestGetMarketDetail(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := h.GetMarketDetail(testSymbol)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetTradeHistory: %s", err)
|
||||
t.Errorf("Huobi TestGetTradeHistory: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ func TestGetSymbols(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := h.GetSymbols()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetSymbols: %s", err)
|
||||
t.Errorf("Huobi TestGetSymbols: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ func TestGetCurrencies(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := h.GetCurrencies()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetCurrencies: %s", err)
|
||||
t.Errorf("Huobi TestGetCurrencies: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,7 +188,7 @@ func TestGetTimestamp(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := h.GetTimestamp()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetTimestamp: %s", err)
|
||||
t.Errorf("Huobi TestGetTimestamp: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ func TestGetAccounts(t *testing.T) {
|
||||
|
||||
_, err := h.GetAccounts()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi GetAccounts: %s", err)
|
||||
t.Errorf("Huobi GetAccounts: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,13 +214,13 @@ func TestGetAccountBalance(t *testing.T) {
|
||||
|
||||
result, err := h.GetAccounts()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi GetAccounts: %s", err)
|
||||
t.Errorf("Huobi GetAccounts: %s", err)
|
||||
}
|
||||
|
||||
userID := strconv.FormatInt(result[0].ID, 10)
|
||||
_, err = h.GetAccountBalance(userID)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi GetAccountBalance: %s", err)
|
||||
t.Errorf("Huobi GetAccountBalance: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,7 +233,7 @@ func TestGetAggregatedBalance(t *testing.T) {
|
||||
|
||||
_, err := h.GetAggregatedBalance()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi GetAggregatedBalance: %s", err)
|
||||
t.Errorf("Huobi GetAggregatedBalance: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ func TestSpotNewOrder(t *testing.T) {
|
||||
|
||||
_, err := h.SpotNewOrder(arg)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi SpotNewOrder: %s", err)
|
||||
t.Errorf("Huobi SpotNewOrder: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +263,7 @@ func TestCancelExistingOrder(t *testing.T) {
|
||||
|
||||
_, err := h.CancelExistingOrder(1337)
|
||||
if err == nil {
|
||||
t.Error("Test failed - Huobi TestCancelExistingOrder: Invalid orderID returned true")
|
||||
t.Error("Huobi TestCancelExistingOrder Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -272,7 +272,7 @@ func TestGetOrder(t *testing.T) {
|
||||
|
||||
_, err := h.GetOrder(1337)
|
||||
if err == nil {
|
||||
t.Error("Test failed - Huobi TestCancelOrder: Invalid orderID returned true")
|
||||
t.Error("Huobi TestCancelOrder Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,7 +285,7 @@ func TestGetMarginLoanOrders(t *testing.T) {
|
||||
|
||||
_, err := h.GetMarginLoanOrders(testSymbol, "", "", "", "", "", "", "")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetMarginLoanOrders: %s", err)
|
||||
t.Errorf("Huobi TestGetMarginLoanOrders: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -298,7 +298,7 @@ func TestGetMarginAccountBalance(t *testing.T) {
|
||||
|
||||
_, err := h.GetMarginAccountBalance(testSymbol)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - Huobi TestGetMarginAccountBalance: %s", err)
|
||||
t.Errorf("Huobi TestGetMarginAccountBalance: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -307,7 +307,7 @@ func TestCancelWithdraw(t *testing.T) {
|
||||
|
||||
_, err := h.CancelWithdraw(1337)
|
||||
if err == nil {
|
||||
t.Error("Test failed - Huobi TestCancelWithdraw: Invalid withdraw-ID was valid")
|
||||
t.Error("Huobi TestCancelWithdraw Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -317,23 +317,23 @@ func TestPEMLoadAndSign(t *testing.T) {
|
||||
pemKey := strings.NewReader(h.API.Credentials.PEMKey)
|
||||
pemBytes, err := ioutil.ReadAll(pemKey)
|
||||
if err != nil {
|
||||
t.Fatalf("Test Failed. TestPEMLoadAndSign Unable to ioutil.ReadAll PEM key: %s", err)
|
||||
t.Fatalf("TestPEMLoadAndSign Unable to ioutil.ReadAll PEM key: %s", err)
|
||||
}
|
||||
|
||||
block, _ := pem.Decode(pemBytes)
|
||||
if block == nil {
|
||||
t.Fatalf("Test Failed. TestPEMLoadAndSign Block is nil")
|
||||
t.Fatalf("TestPEMLoadAndSign Block is nil")
|
||||
}
|
||||
|
||||
x509Encoded := block.Bytes
|
||||
privKey, err := x509.ParseECPrivateKey(x509Encoded)
|
||||
if err != nil {
|
||||
t.Fatalf("Test Failed. TestPEMLoadAndSign Unable to ParseECPrivKey: %s", err)
|
||||
t.Fatalf("TestPEMLoadAndSign Unable to ParseECPrivKey: %s", err)
|
||||
}
|
||||
|
||||
_, _, err = ecdsa.Sign(rand.Reader, privKey, crypto.GetSHA256([]byte("test")))
|
||||
if err != nil {
|
||||
t.Fatalf("Test Failed. TestPEMLoadAndSign Unable to sign: %s", err)
|
||||
t.Fatalf("TestPEMLoadAndSign Unable to sign: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -371,7 +371,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -379,7 +379,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(2000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -387,7 +387,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -395,14 +395,14 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// CryptocurrencyWithdrawalFee Basic
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -411,7 +411,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -419,7 +419,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -427,7 +427,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -436,7 +436,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := h.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -586,12 +586,12 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
if apiKey == "" || apiSecret == "" {
|
||||
_, err := h.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error")
|
||||
t.Error("GetAccountInfo() Expected error")
|
||||
}
|
||||
} else {
|
||||
_, err := h.GetAccountInfo()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() error", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -599,7 +599,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := h.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -661,7 +661,7 @@ func TestWithdrawInternationalBank(t *testing.T) {
|
||||
func TestGetDepositAddress(t *testing.T) {
|
||||
_, err := h.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -70,9 +71,31 @@ func (h *HUOBI) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
KlineFetching: true,
|
||||
OrderbookFetching: true,
|
||||
TradeFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
AccountInfo: true,
|
||||
MessageCorrelation: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithSetup |
|
||||
exchange.NoFiatWithdrawals,
|
||||
@@ -91,14 +114,6 @@ func (h *HUOBI) SetDefaults() {
|
||||
h.API.Endpoints.URL = h.API.Endpoints.URLDefault
|
||||
h.API.Endpoints.WebsocketURL = wsMarketURL
|
||||
h.Websocket = wshandler.New()
|
||||
h.Websocket.Functionality = wshandler.WebsocketKlineSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketAccountDataSupported |
|
||||
wshandler.WebsocketMessageCorrelationSupported
|
||||
h.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
h.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
h.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -131,6 +146,7 @@ func (h *HUOBI) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: h.WsConnect,
|
||||
Subscriber: h.Subscribe,
|
||||
UnSubscriber: h.Unsubscribe,
|
||||
Features: &h.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -28,11 +28,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Itbit load config error", err)
|
||||
t.Fatal("Itbit load config error", err)
|
||||
}
|
||||
itbitConfig, err := cfg.GetExchangeConfig("ITBIT")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Itbit Setup() init error")
|
||||
t.Error("Itbit Setup() init error")
|
||||
}
|
||||
itbitConfig.API.AuthenticatedSupport = true
|
||||
itbitConfig.API.Credentials.Key = apiKey
|
||||
@@ -41,7 +41,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = i.Setup(itbitConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Itbit setup error", err)
|
||||
t.Fatal("Itbit setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := i.GetTicker("XBTUSD")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTicker() error", err)
|
||||
t.Error("GetTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ func TestGetOrderbook(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := i.GetOrderbook("XBTSGD")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetOrderbook() error", err)
|
||||
t.Error("GetOrderbook() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,49 +65,49 @@ func TestGetTradeHistory(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := i.GetTradeHistory("XBTUSD", "0")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTradeHistory() error", err)
|
||||
t.Error("GetTradeHistory() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetWallets(t *testing.T) {
|
||||
_, err := i.GetWallets(url.Values{})
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetWallets() error", err)
|
||||
t.Error("GetWallets() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCreateWallet(t *testing.T) {
|
||||
_, err := i.CreateWallet("test")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CreateWallet() error", err)
|
||||
t.Error("CreateWallet() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetWallet(t *testing.T) {
|
||||
_, err := i.GetWallet("1337")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetWallet() error", err)
|
||||
t.Error("GetWallet() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetWalletBalance(t *testing.T) {
|
||||
_, err := i.GetWalletBalance("1337", "XRT")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetWalletBalance() error", err)
|
||||
t.Error("GetWalletBalance() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetWalletTrades(t *testing.T) {
|
||||
_, err := i.GetWalletTrades("1337", url.Values{})
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetWalletTrades() error", err)
|
||||
t.Error("GetWalletTrades() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetFundingHistory(t *testing.T) {
|
||||
_, err := i.GetFundingHistoryForWallet("1337", url.Values{})
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetFundingHistory() error", err)
|
||||
t.Error("GetFundingHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,14 +116,14 @@ func TestPlaceOrder(t *testing.T) {
|
||||
exchange.LimitOrderType.ToLower().ToString(), "USD", 1, 0.2, "banjo",
|
||||
"sauce")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - PlaceOrder() error", err)
|
||||
t.Error("PlaceOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetOrder(t *testing.T) {
|
||||
_, err := i.GetOrder("1337", url.Values{})
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetOrder() error", err)
|
||||
t.Error("GetOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,21 +131,21 @@ func TestCancelExistingOrder(t *testing.T) {
|
||||
t.Skip()
|
||||
err := i.CancelExistingOrder("1337", "1337order")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CancelOrder() error", err)
|
||||
t.Error("CancelOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetCryptoDepositAddress(t *testing.T) {
|
||||
_, err := i.GetCryptoDepositAddress("1337", "AUD")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetCryptoDepositAddress() error", err)
|
||||
t.Error("GetCryptoDepositAddress() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestWalletTransfer(t *testing.T) {
|
||||
_, err := i.WalletTransfer("1337", "mywallet", "anotherwallet", 200, "USD")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - WalletTransfer() error", err)
|
||||
t.Error("WalletTransfer() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(0.0035) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0035), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0035), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -191,7 +191,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(3500) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(3500), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(3500), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -199,7 +199,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -207,14 +207,14 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// CryptocurrencyWithdrawalFee Basic
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := i.GetFee(feeBuilder); resp != float64(40) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(40), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(40), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -390,7 +390,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
if apiKey != "" || apiSecret != "" || clientID != "" {
|
||||
_, err := i.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error")
|
||||
t.Error("GetAccountInfo() Expected error")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -398,7 +398,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := i.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -457,6 +457,6 @@ func TestWithdrawInternationalBank(t *testing.T) {
|
||||
func TestGetDepositAddress(t *testing.T) {
|
||||
_, err := i.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -68,9 +69,21 @@ func (i *ItBit) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: false,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: false,
|
||||
TickerBatching: false,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
TradeFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.WithdrawCryptoViaWebsiteOnly |
|
||||
exchange.WithdrawFiatViaWebsiteOnly,
|
||||
|
||||
@@ -34,11 +34,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Kraken load config error", err)
|
||||
log.Fatal("Kraken load config error", err)
|
||||
}
|
||||
krakenConfig, err := cfg.GetExchangeConfig("Kraken")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - kraken Setup() init error", err)
|
||||
t.Error("kraken Setup() init error", err)
|
||||
}
|
||||
krakenConfig.API.AuthenticatedSupport = true
|
||||
krakenConfig.API.Credentials.Key = apiKey
|
||||
@@ -49,7 +49,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = k.Setup(krakenConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Kraken setup error", err)
|
||||
t.Fatal("Kraken setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ func TestGetServerTime(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetServerTime()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetServerTime() error", err)
|
||||
t.Error("GetServerTime() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ func TestGetAssets(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetAssets()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAssets() error", err)
|
||||
t.Error("GetAssets() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ func TestGetAssetPairs(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetAssetPairs()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAssetPairs() error", err)
|
||||
t.Error("GetAssetPairs() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetTicker("BCHEUR")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTicker() error", err)
|
||||
t.Error("GetTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ func TestGetTickers(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetTickers("LTCUSD,ETCUSD")
|
||||
if err != nil {
|
||||
t.Error("Test failed - GetTickers() error", err)
|
||||
t.Error("GetTickers() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ func TestGetOHLC(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetOHLC("BCHEUR")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetOHLC() error", err)
|
||||
t.Error("GetOHLC() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ func TestGetDepth(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetDepth("BCHEUR")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepth() error", err)
|
||||
t.Error("GetDepth() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ func TestGetTrades(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetTrades("BCHEUR")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTrades() error", err)
|
||||
t.Error("GetTrades() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ func TestGetSpread(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetSpread("BCHEUR")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetSpread() error", err)
|
||||
t.Error("GetSpread() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ func TestGetBalance(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetBalance()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetBalance() error", err)
|
||||
t.Error("GetBalance() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ func TestGetTradeBalance(t *testing.T) {
|
||||
args := TradeBalanceOptions{Asset: "ZEUR"}
|
||||
_, err := k.GetTradeBalance(args)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetTradeBalance() error", err)
|
||||
t.Error("GetTradeBalance() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ func TestGetOpenOrders(t *testing.T) {
|
||||
args := OrderInfoOptions{Trades: true}
|
||||
_, err := k.GetOpenOrders(args)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetOpenOrders() error", err)
|
||||
t.Error("GetOpenOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ func TestGetClosedOrders(t *testing.T) {
|
||||
args := GetClosedOrdersOptions{Trades: true, Start: "OE4KV4-4FVQ5-V7XGPU"}
|
||||
_, err := k.GetClosedOrders(args)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetClosedOrders() error", err)
|
||||
t.Error("GetClosedOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ func TestQueryOrdersInfo(t *testing.T) {
|
||||
args := OrderInfoOptions{Trades: true}
|
||||
_, err := k.QueryOrdersInfo(args, "OR6ZFV-AA6TT-CKFFIW", "OAMUAJ-HLVKG-D3QJ5F")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - QueryOrdersInfo() error", err)
|
||||
t.Error("QueryOrdersInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,7 +189,7 @@ func TestGetTradesHistory(t *testing.T) {
|
||||
args := GetTradesHistoryOptions{Trades: true, Start: "TMZEDR-VBJN2-NGY6DX", End: "TVRXG2-R62VE-RWP3UW"}
|
||||
_, err := k.GetTradesHistory(args)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetTradesHistory() error", err)
|
||||
t.Error("GetTradesHistory() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ func TestQueryTrades(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.QueryTrades(true, "TMZEDR-VBJN2-NGY6DX", "TFLWIB-KTT7L-4TWR3L", "TDVRAH-2H6OS-SLSXRX")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - QueryTrades() error", err)
|
||||
t.Error("QueryTrades() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ func TestOpenPositions(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.OpenPositions(false)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - OpenPositions() error", err)
|
||||
t.Error("OpenPositions() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ func TestGetLedgers(t *testing.T) {
|
||||
args := GetLedgersOptions{Start: "LRUHXI-IWECY-K4JYGO", End: "L5NIY7-JZQJD-3J4M2V", Ofs: 15}
|
||||
_, err := k.GetLedgers(args)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetLedgers() error", err)
|
||||
t.Error("GetLedgers() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,7 +226,7 @@ func TestQueryLedgers(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.QueryLedgers("LVTSFS-NHZVM-EXNZ5M")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - QueryLedgers() error", err)
|
||||
t.Error("QueryLedgers() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,7 +235,7 @@ func TestGetTradeVolume(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.GetTradeVolume(true, "OAVY7T-MV5VK-KHDF5X")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetTradeVolume() error", err)
|
||||
t.Error("GetTradeVolume() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -247,7 +247,7 @@ func TestAddOrder(t *testing.T) {
|
||||
exchange.SellOrderSide.ToLower().ToString(), exchange.LimitOrderType.ToLower().ToString(),
|
||||
0.00000001, 0, 0, 0, &args)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - AddOrder() error", err)
|
||||
t.Error("AddOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,7 +256,7 @@ func TestCancelExistingOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := k.CancelExistingOrder("OAVY7T-MV5VK-KHDF5X")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CancelExistingOrder() error", err)
|
||||
t.Error("CancelExistingOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := k.GetFee(feeBuilder); resp != float64(0.0026) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0026), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0026), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -305,7 +305,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := k.GetFee(feeBuilder); resp != float64(2600) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2600), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2600), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -313,7 +313,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := k.GetFee(feeBuilder); resp != float64(0.0016) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0016), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0016), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -321,7 +321,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := k.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := k.GetFee(feeBuilder); resp != float64(5) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(5), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(5), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -339,7 +339,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
feeBuilder.Pair.Base = currency.XXBT
|
||||
if resp, err := k.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(5), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(5), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -347,7 +347,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := k.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -356,7 +356,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := k.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -365,7 +365,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := k.GetFee(feeBuilder); resp != float64(5) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(5), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(5), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -514,12 +514,12 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
if apiKey != "" || apiSecret != "" || clientID != "" {
|
||||
_, err := k.GetAccountInfo()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := k.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error")
|
||||
t.Error("GetAccountInfo() Expected error")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -528,7 +528,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := k.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -619,12 +619,12 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if areTestAPIKeysSet() {
|
||||
_, err := k.GetDepositAddress(currency.BTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := k.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error can not be nil")
|
||||
t.Error("GetDepositAddress() error can not be nil")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -637,12 +637,12 @@ func TestWithdrawStatus(t *testing.T) {
|
||||
if areTestAPIKeysSet() {
|
||||
_, err := k.WithdrawStatus(currency.BTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - WithdrawStatus() error", err)
|
||||
t.Error("WithdrawStatus() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := k.WithdrawStatus(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error can not be nil", err)
|
||||
t.Error("GetDepositAddress() error can not be nil")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -653,9 +653,9 @@ func TestWithdrawCancel(t *testing.T) {
|
||||
TestSetup(t)
|
||||
_, err := k.WithdrawCancel(currency.BTC, "")
|
||||
if areTestAPIKeysSet() && err == nil {
|
||||
t.Error("Test Failed - WithdrawCancel() error cannot be nil")
|
||||
t.Error("WithdrawCancel() error cannot be nil")
|
||||
} else if !areTestAPIKeysSet() && err == nil {
|
||||
t.Errorf("Test Failed - WithdrawCancel() error - expecting an error when no keys are set but received nil")
|
||||
t.Errorf("WithdrawCancel() error - expecting an error when no keys are set but received nil")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -72,9 +73,37 @@ func (k *Kraken) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: false,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
FiatDeposit: true,
|
||||
FiatWithdraw: true,
|
||||
TradeFee: true,
|
||||
FiatDepositFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoDepositFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
KlineFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
MessageCorrelation: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithSetup |
|
||||
exchange.WithdrawCryptoWith2FA |
|
||||
@@ -95,13 +124,6 @@ func (k *Kraken) SetDefaults() {
|
||||
k.API.Endpoints.URL = k.API.Endpoints.URLDefault
|
||||
k.Websocket = wshandler.New()
|
||||
k.API.Endpoints.WebsocketURL = krakenWSURL
|
||||
k.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketKlineSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketMessageCorrelationSupported
|
||||
k.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
k.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
k.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -131,6 +153,7 @@ func (k *Kraken) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: k.WsConnect,
|
||||
Subscriber: k.Subscribe,
|
||||
UnSubscriber: k.Unsubscribe,
|
||||
Features: &k.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -35,11 +35,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - LakeBTC load config error", err)
|
||||
log.Fatal("LakeBTC load config error", err)
|
||||
}
|
||||
lakebtcConfig, err := cfg.GetExchangeConfig("LakeBTC")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - LakeBTC Setup() init error")
|
||||
t.Error("LakeBTC Setup() init error")
|
||||
}
|
||||
lakebtcConfig.API.AuthenticatedSupport = true
|
||||
lakebtcConfig.API.Credentials.Key = apiKey
|
||||
@@ -47,7 +47,7 @@ func TestSetup(t *testing.T) {
|
||||
lakebtcConfig.Features.Enabled.Websocket = true
|
||||
err = l.Setup(lakebtcConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - LakeBTC setup error", err)
|
||||
t.Fatal("LakeBTC setup error", err)
|
||||
}
|
||||
l.API.Endpoints.WebsocketURL = lakeBTCWSURL
|
||||
setupRan = true
|
||||
@@ -58,7 +58,7 @@ func TestFetchTradablePairs(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := l.FetchTradablePairs(asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. GetTradablePairs err: %s", err)
|
||||
t.Fatalf("GetTradablePairs err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := l.GetTicker()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTicker() error", err)
|
||||
t.Error("GetTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ func TestGetOrderBook(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := l.GetOrderBook("BTCUSD")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetOrderBook() error", err)
|
||||
t.Error("GetOrderBook() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ func TestGetTradeHistory(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := l.GetTradeHistory("BTCUSD")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTradeHistory() error", err)
|
||||
t.Error("GetTradeHistory() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ func TestTrade(t *testing.T) {
|
||||
}
|
||||
_, err := l.Trade(false, 0, 0, "USD")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Trade() error", err)
|
||||
t.Error("Trade() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ func TestGetOpenOrders(t *testing.T) {
|
||||
}
|
||||
_, err := l.GetOpenOrders()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetOpenOrders() error", err)
|
||||
t.Error("GetOpenOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +115,7 @@ func TestGetOrders(t *testing.T) {
|
||||
}
|
||||
_, err := l.GetOrders([]int64{1, 2})
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetOrders() error", err)
|
||||
t.Error("GetOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ func TestCancelOrder(t *testing.T) {
|
||||
}
|
||||
err := l.CancelExistingOrder(1337)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CancelExistingOrder() error", err)
|
||||
t.Error("CancelExistingOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ func TestGetTrades(t *testing.T) {
|
||||
}
|
||||
_, err := l.GetTrades(1337)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetTrades() error", err)
|
||||
t.Error("GetTrades() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ func TestGetExternalAccounts(t *testing.T) {
|
||||
}
|
||||
_, err := l.GetExternalAccounts()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetExternalAccounts() error", err)
|
||||
t.Error("GetExternalAccounts() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -195,7 +195,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(2000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -203,7 +203,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0.0015) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -211,14 +211,14 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// CryptocurrencyWithdrawalFee Basic
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -227,7 +227,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -235,7 +235,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.001), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -252,7 +252,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -393,7 +393,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := l.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -456,12 +456,12 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if areTestAPIKeysSet() {
|
||||
_, err := l.GetDepositAddress(currency.BTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := l.GetDepositAddress(currency.DASH, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error cannot be nil")
|
||||
t.Error("GetDepositAddress() error cannot be nil")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,9 +70,27 @@ func (l *LakeBTC) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoDepositFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.WithdrawFiatViaWebsiteOnly,
|
||||
@@ -90,9 +109,6 @@ func (l *LakeBTC) SetDefaults() {
|
||||
l.API.Endpoints.URL = l.API.Endpoints.URLDefault
|
||||
l.Websocket = wshandler.New()
|
||||
l.API.Endpoints.WebsocketURL = lakeBTCWSURL
|
||||
l.Websocket.Functionality = wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketSubscribeSupported
|
||||
l.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
l.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
l.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -121,6 +137,7 @@ func (l *LakeBTC) Setup(exch *config.ExchangeConfig) error {
|
||||
RunningURL: exch.API.Endpoints.WebsocketURL,
|
||||
Connector: l.WsConnect,
|
||||
Subscriber: l.Subscribe,
|
||||
Features: &l.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -34,18 +34,18 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatalf("Test Failed - Lbank Setup() init error:, %v", err)
|
||||
t.Fatalf("Lbank Setup() init error:, %v", err)
|
||||
}
|
||||
lbankConfig, err := cfg.GetExchangeConfig("Lbank")
|
||||
if err != nil {
|
||||
t.Fatalf("Test Failed - Lbank Setup() init error: %v", err)
|
||||
t.Fatalf("Lbank Setup() init error: %v", err)
|
||||
}
|
||||
lbankConfig.API.AuthenticatedSupport = true
|
||||
lbankConfig.API.Credentials.Secret = testAPISecret
|
||||
lbankConfig.API.Credentials.Key = testAPIKey
|
||||
err = l.Setup(lbankConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - LBank setup error", err)
|
||||
t.Fatal("LBank setup error", err)
|
||||
}
|
||||
setupRan = true
|
||||
}
|
||||
@@ -58,7 +58,7 @@ func TestGetTicker(t *testing.T) {
|
||||
TestSetup(t)
|
||||
_, err := l.GetTicker("btc_usdt")
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ func TestGetTickers(t *testing.T) {
|
||||
TestSetup(t)
|
||||
tickers, err := l.GetTickers()
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
if len(tickers) <= 1 {
|
||||
t.Errorf("Expected multiple tickers, received %v", len(tickers))
|
||||
@@ -77,7 +77,7 @@ func TestGetCurrencyPairs(t *testing.T) {
|
||||
TestSetup(t)
|
||||
_, err := l.GetCurrencyPairs()
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,11 +97,11 @@ func TestGetTrades(t *testing.T) {
|
||||
TestSetup(t)
|
||||
_, err := l.GetTrades("btc_usdt", "600", fmt.Sprintf("%v", time.Now().Unix()))
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
a, err := l.GetTrades("btc_usdt", "600", "0")
|
||||
if len(a) != 600 && err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ func TestGetKlines(t *testing.T) {
|
||||
TestSetup(t)
|
||||
_, err := l.GetKlines("btc_usdt", "600", "minute1", fmt.Sprintf("%v", time.Now().Unix()))
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,15 +145,15 @@ func TestCreateOrder(t *testing.T) {
|
||||
cp := currency.NewPairWithDelimiter(currency.BTC.String(), currency.USDT.String(), "_")
|
||||
_, err := l.CreateOrder(cp.Lower().String(), "what", 1231, 12314)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CreateOrder error cannot be nil")
|
||||
t.Error("CreateOrder error cannot be nil")
|
||||
}
|
||||
_, err = l.CreateOrder(cp.Lower().String(), "buy", 0, 0)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CreateOrder error cannot be nil")
|
||||
t.Error("CreateOrder error cannot be nil")
|
||||
}
|
||||
_, err = l.CreateOrder(cp.Lower().String(), "sell", 1231, 0)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CreateOrder error cannot be nil")
|
||||
t.Error("CreateOrder error cannot be nil")
|
||||
}
|
||||
_, err = l.CreateOrder(cp.Lower().String(), "buy", 58, 681)
|
||||
if err != nil {
|
||||
@@ -193,7 +193,7 @@ func TestQueryOrderHistory(t *testing.T) {
|
||||
cp := currency.NewPairWithDelimiter(currency.BTC.String(), currency.USDT.String(), "_")
|
||||
_, err := l.QueryOrderHistory(cp.Lower().String(), "1", "100")
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -289,7 +289,7 @@ func TestLoadPrivKey(t *testing.T) {
|
||||
l.API.Credentials.Secret = "errortest"
|
||||
err = l.loadPrivKey()
|
||||
if err == nil {
|
||||
t.Errorf("expected error due to pemblock nil, got err: %v", err)
|
||||
t.Errorf("Expected error due to pemblock nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +302,7 @@ func TestSign(t *testing.T) {
|
||||
l.loadPrivKey()
|
||||
_, err := l.sign("hello123")
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -343,7 +343,7 @@ func TestCancelOrder(t *testing.T) {
|
||||
a.OrderID = "24f7ce27-af1d-4dca-a8c1-ef1cbeec1b23"
|
||||
err := l.CancelOrder(&a)
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -354,7 +354,7 @@ func TestGetOrderInfo(t *testing.T) {
|
||||
}
|
||||
_, err := l.GetOrderInfo("9ead39f5-701a-400b-b635-d7349eb0f6b")
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -365,7 +365,7 @@ func TestGetAllOpenOrderID(t *testing.T) {
|
||||
}
|
||||
_, err := l.getAllOpenOrderID()
|
||||
if err != nil {
|
||||
t.Errorf("test failed: %v", err)
|
||||
t.Errorf("%v", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -378,7 +378,7 @@ func TestGetFeeByType(t *testing.T) {
|
||||
input.Pair = cp
|
||||
a, err := l.GetFeeByType(&input)
|
||||
if err != nil {
|
||||
t.Errorf("test failed. couldnt get fee: %v", err)
|
||||
t.Errorf("couldnt get fee: %v", err)
|
||||
}
|
||||
if a != 0.0005 {
|
||||
t.Errorf("testGetFeeByType failed. Expected: 0.0005, Received: %v", a)
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -67,9 +68,23 @@ func (l *Lbank) SetDefaults() {
|
||||
l.Features = exchange.Features{
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||
exchange.NoFiatWithdrawals,
|
||||
|
||||
@@ -19,11 +19,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - LocalBitcoins load config error", err)
|
||||
log.Fatal("LocalBitcoins load config error", err)
|
||||
}
|
||||
localbitcoinsConfig, err := cfg.GetExchangeConfig("LocalBitcoins")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - LocalBitcoins Setup() init error", err)
|
||||
log.Fatal("LocalBitcoins Setup() init error", err)
|
||||
}
|
||||
localbitcoinsConfig.API.AuthenticatedSupport = true
|
||||
localbitcoinsConfig.API.Credentials.Key = apiKey
|
||||
@@ -31,7 +31,7 @@ func TestMain(m *testing.M) {
|
||||
l.SetDefaults()
|
||||
err = l.Setup(localbitcoinsConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Localbitcoins setup error", err)
|
||||
log.Fatal("Localbitcoins setup error", err)
|
||||
}
|
||||
log.Printf(sharedtestvalues.LiveTesting, l.GetName(), l.API.Endpoints.URL)
|
||||
os.Exit(m.Run())
|
||||
|
||||
@@ -22,11 +22,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Localbitcoins load config error", err)
|
||||
log.Fatal("Localbitcoins load config error", err)
|
||||
}
|
||||
localbitcoinsConfig, err := cfg.GetExchangeConfig("LocalBitcoins")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Localbitcoins Setup() init error", err)
|
||||
log.Fatal("Localbitcoins Setup() init error", err)
|
||||
}
|
||||
l.SkipAuthCheck = true
|
||||
localbitcoinsConfig.API.AuthenticatedSupport = true
|
||||
@@ -35,12 +35,12 @@ func TestMain(m *testing.M) {
|
||||
l.SetDefaults()
|
||||
err = l.Setup(localbitcoinsConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Localbitcoins setup error", err)
|
||||
log.Fatal("Localbitcoins setup error", err)
|
||||
}
|
||||
|
||||
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
||||
if err != nil {
|
||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
||||
log.Fatalf("Mock server error %s", err)
|
||||
}
|
||||
|
||||
l.HTTPClient = newClient
|
||||
|
||||
@@ -23,7 +23,7 @@ func TestGetTicker(t *testing.T) {
|
||||
|
||||
_, err := l.GetTicker()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - GetTicker() returned: %s", err)
|
||||
t.Errorf("GetTicker() returned: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ func TestGetTradableCurrencies(t *testing.T) {
|
||||
|
||||
_, err := l.GetTradableCurrencies()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - GetTradableCurrencies() returned: %s", err)
|
||||
t.Errorf("GetTradableCurrencies() returned: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -120,7 +120,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -136,14 +136,14 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// CryptocurrencyWithdrawalFee Basic
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -152,7 +152,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -177,7 +177,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := l.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -327,7 +327,7 @@ func TestModifyOrder(t *testing.T) {
|
||||
|
||||
_, err := l.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err != common.ErrFunctionNotSupported {
|
||||
t.Error("Test failed - ModifyOrder() error", err)
|
||||
t.Error("ModifyOrder() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -388,10 +388,10 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
_, err := l.GetDepositAddress(currency.BTC, "")
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||
t.Error("Test Failed - GetDepositAddress() expecting an error when no APIKeys are set")
|
||||
t.Error("GetDepositAddress() expecting an error when no APIKeys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -70,9 +71,19 @@ func (l *LocalBitcoins) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: false,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.WithdrawFiatViaWebsiteOnly,
|
||||
|
||||
@@ -56,7 +56,7 @@ func TestMain(m *testing.M) {
|
||||
cfg.LoadConfig("../../testdata/configtest.json")
|
||||
your_current_exchange_nameConfig, err := cfg.GetExchangeConfig("your_current_exchange_name")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - your_current_exchange_name Setup() init error", err)
|
||||
log.Fatal("your_current_exchange_name Setup() init error", err)
|
||||
}
|
||||
your_current_exchange_nameConfig.AuthenticatedAPISupport = true
|
||||
your_current_exchange_nameConfig.APIKey = apiKey
|
||||
@@ -96,7 +96,7 @@ func TestMain(m *testing.M) {
|
||||
cfg.LoadConfig("../../testdata/configtest.json")
|
||||
your_current_exchange_nameConfig, err := cfg.GetExchangeConfig("your_current_exchange_name")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - your_current_exchange_name Setup() init error", err)
|
||||
log.Fatal("your_current_exchange_name Setup() init error", err)
|
||||
}
|
||||
your_current_exchange_nameConfig.AuthenticatedAPISupport = true
|
||||
your_current_exchange_nameConfig.APIKey = apiKey
|
||||
@@ -106,7 +106,7 @@ func TestMain(m *testing.M) {
|
||||
|
||||
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
||||
if err != nil {
|
||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
||||
log.Fatalf("Mock server error %s", err)
|
||||
}
|
||||
|
||||
g.HTTPClient = newClient
|
||||
|
||||
@@ -19,42 +19,42 @@ func TestMatchURLVals(t *testing.T) {
|
||||
var expected = false
|
||||
received := MatchURLVals(testVal, emptyVal)
|
||||
if received != expected {
|
||||
t.Errorf("Test Failed - MatchURLVals error expected %v received %v",
|
||||
t.Errorf("MatchURLVals error expected %v received %v",
|
||||
expected,
|
||||
received)
|
||||
}
|
||||
|
||||
received = MatchURLVals(emptyVal, testVal)
|
||||
if received != expected {
|
||||
t.Errorf("Test Failed - MatchURLVals error expected %v received %v",
|
||||
t.Errorf("MatchURLVals error expected %v received %v",
|
||||
expected,
|
||||
received)
|
||||
}
|
||||
|
||||
received = MatchURLVals(testVal, testVal2)
|
||||
if received != expected {
|
||||
t.Errorf("Test Failed - MatchURLVals error expected %v received %v",
|
||||
t.Errorf("MatchURLVals error expected %v received %v",
|
||||
expected,
|
||||
received)
|
||||
}
|
||||
|
||||
received = MatchURLVals(testVal2, testVal)
|
||||
if received != expected {
|
||||
t.Errorf("Test Failed - MatchURLVals error expected %v received %v",
|
||||
t.Errorf("MatchURLVals error expected %v received %v",
|
||||
expected,
|
||||
received)
|
||||
}
|
||||
|
||||
received = MatchURLVals(testVal, testVal3)
|
||||
if received != expected {
|
||||
t.Errorf("Test Failed - MatchURLVals error expected %v received %v",
|
||||
t.Errorf("MatchURLVals error expected %v received %v",
|
||||
expected,
|
||||
received)
|
||||
}
|
||||
|
||||
received = MatchURLVals(nonceVal1, testVal2)
|
||||
if received != expected {
|
||||
t.Errorf("Test Failed - MatchURLVals error expected %v received %v",
|
||||
t.Errorf("MatchURLVals error expected %v received %v",
|
||||
expected,
|
||||
received)
|
||||
}
|
||||
@@ -62,21 +62,21 @@ func TestMatchURLVals(t *testing.T) {
|
||||
expected = true
|
||||
received = MatchURLVals(emptyVal, emptyVal)
|
||||
if received != expected {
|
||||
t.Errorf("Test Failed - MatchURLVals error expected %v received %v",
|
||||
t.Errorf("MatchURLVals error expected %v received %v",
|
||||
expected,
|
||||
received)
|
||||
}
|
||||
|
||||
received = MatchURLVals(testVal, testVal)
|
||||
if received != expected {
|
||||
t.Errorf("Test Failed - MatchURLVals error expected %v received %v",
|
||||
t.Errorf("MatchURLVals error expected %v received %v",
|
||||
expected,
|
||||
received)
|
||||
}
|
||||
|
||||
received = MatchURLVals(nonceVal1, nonceVal2)
|
||||
if received != expected {
|
||||
t.Errorf("Test Failed - MatchURLVals error expected %v received %v",
|
||||
t.Errorf("MatchURLVals error expected %v received %v",
|
||||
expected,
|
||||
received)
|
||||
}
|
||||
@@ -105,12 +105,12 @@ func TestDeriveURLValsFromJSON(t *testing.T) {
|
||||
|
||||
payload, err := json.Marshal(test1)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - marshal error", err)
|
||||
t.Error("marshal error", err)
|
||||
}
|
||||
|
||||
_, err = DeriveURLValsFromJSONMap(payload)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - DeriveURLValsFromJSON error", err)
|
||||
t.Error("DeriveURLValsFromJSON error", err)
|
||||
}
|
||||
|
||||
test2 := map[string]string{
|
||||
@@ -125,16 +125,16 @@ func TestDeriveURLValsFromJSON(t *testing.T) {
|
||||
|
||||
payload, err = json.Marshal(test2)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - marshal error", err)
|
||||
t.Error("marshal error", err)
|
||||
}
|
||||
|
||||
vals, err := DeriveURLValsFromJSONMap(payload)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - DeriveURLValsFromJSON error", err)
|
||||
t.Error("DeriveURLValsFromJSON error", err)
|
||||
}
|
||||
|
||||
if vals["val"][0] != "1" {
|
||||
t.Error("Test Failed - DeriveURLValsFromJSON unexpected value",
|
||||
t.Error("DeriveURLValsFromJSON unexpected value",
|
||||
vals["val"][0])
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ func TestGetFilteredHeader(t *testing.T) {
|
||||
}
|
||||
|
||||
if fMap.Get("Key") != "" {
|
||||
t.Error("Test Failed - risky vals where not replaced correctly")
|
||||
t.Error("risky vals where not replaced correctly")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,11 +29,11 @@ func TestGetFilteredURLVals(t *testing.T) {
|
||||
shadyVals.Set("real_name", superSecretData)
|
||||
cleanVals, err := GetFilteredURLVals(shadyVals)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetFilteredURLVals error", err)
|
||||
t.Error("GetFilteredURLVals error", err)
|
||||
}
|
||||
|
||||
if strings.Contains(cleanVals, superSecretData) {
|
||||
t.Error("Test Failed - Super secret data found")
|
||||
t.Error("Super secret data found")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,12 +46,12 @@ func TestCheckResponsePayload(t *testing.T) {
|
||||
|
||||
payload, err := json.Marshal(testbody)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - json marshal error", err)
|
||||
t.Fatal("json marshal error", err)
|
||||
}
|
||||
|
||||
data, err := CheckResponsePayload(payload)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - CheckBody error", err)
|
||||
t.Error("CheckBody error", err)
|
||||
}
|
||||
|
||||
expected := `{
|
||||
@@ -126,23 +126,23 @@ func TestCheckJSON(t *testing.T) {
|
||||
|
||||
exclusionList, err := GetExcludedItems()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetExcludedItems error", err)
|
||||
t.Error("GetExcludedItems error", err)
|
||||
}
|
||||
|
||||
vals, err := CheckJSON(testVal, &exclusionList)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Check JSON error", err)
|
||||
t.Error("Check JSON error", err)
|
||||
}
|
||||
|
||||
payload, err := json.Marshal(vals)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - json marshal error", err)
|
||||
t.Fatal("json marshal error", err)
|
||||
}
|
||||
|
||||
newStruct := TestStructLevel0{}
|
||||
err = json.Unmarshal(payload, &newStruct)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Umarshal error", err)
|
||||
t.Fatal("Umarshal error", err)
|
||||
}
|
||||
|
||||
if newStruct.StructVal.BadVal != "" {
|
||||
@@ -173,14 +173,14 @@ func TestCheckJSON(t *testing.T) {
|
||||
func TestGetExcludedItems(t *testing.T) {
|
||||
exclusionList, err := GetExcludedItems()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetExcludedItems error", err)
|
||||
t.Error("GetExcludedItems error", err)
|
||||
}
|
||||
|
||||
if len(exclusionList.Headers) == 0 {
|
||||
t.Error("Test Failed - Header exclusion list not popoulated")
|
||||
t.Error("Header exclusion list not popoulated")
|
||||
}
|
||||
|
||||
if len(exclusionList.Variables) == 0 {
|
||||
t.Error("Test Failed - Variable exclusion list not popoulated")
|
||||
t.Error("Variable exclusion list not popoulated")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ const testFile = "test.json"
|
||||
func TestNewVCRServer(t *testing.T) {
|
||||
_, _, err := NewVCRServer("")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - NewVCRServer error cannot be nil")
|
||||
t.Error("NewVCRServer error cannot be nil")
|
||||
}
|
||||
|
||||
// Set up mock data
|
||||
@@ -36,7 +36,7 @@ func TestNewVCRServer(t *testing.T) {
|
||||
Amount: 1,
|
||||
Currency: "bitcoin"})
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - marshal error", err)
|
||||
t.Fatal("marshal error", err)
|
||||
}
|
||||
|
||||
testValue := HTTPResponse{Data: rp, QueryString: queryString, BodyParams: queryString}
|
||||
@@ -44,17 +44,17 @@ func TestNewVCRServer(t *testing.T) {
|
||||
|
||||
payload, err := json.Marshal(test1)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - marshal error", err)
|
||||
t.Fatal("marshal error", err)
|
||||
}
|
||||
|
||||
err = ioutil.WriteFile(testFile, payload, os.ModePerm)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - marshal error", err)
|
||||
t.Fatal("marshal error", err)
|
||||
}
|
||||
|
||||
deets, client, err := NewVCRServer(testFile)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - NewVCRServer error", err)
|
||||
t.Error("NewVCRServer error", err)
|
||||
}
|
||||
|
||||
common.HTTPClient = client // Set common package global HTTP Client
|
||||
@@ -64,7 +64,7 @@ func TestNewVCRServer(t *testing.T) {
|
||||
nil,
|
||||
bytes.NewBufferString(""))
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Sending http request expected an error")
|
||||
t.Error("Sending http request expected an error")
|
||||
}
|
||||
|
||||
// Expected good outcome
|
||||
@@ -73,11 +73,11 @@ func TestNewVCRServer(t *testing.T) {
|
||||
nil,
|
||||
bytes.NewBufferString(""))
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Sending http request error", err)
|
||||
t.Error("Sending http request error", err)
|
||||
}
|
||||
|
||||
if !strings.Contains(r, "404 page not found") {
|
||||
t.Error("Test Failed - Was not expecting any value returned:", r)
|
||||
t.Error("Was not expecting any value returned:", r)
|
||||
}
|
||||
|
||||
r, err = common.SendHTTPRequest(http.MethodGet,
|
||||
@@ -85,33 +85,33 @@ func TestNewVCRServer(t *testing.T) {
|
||||
nil,
|
||||
bytes.NewBufferString(""))
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Sending http request error", err)
|
||||
t.Error("Sending http request error", err)
|
||||
}
|
||||
|
||||
var res responsePayload
|
||||
err = json.Unmarshal([]byte(r), &res)
|
||||
if err != nil {
|
||||
t.Error("Test Failed - unmarshal error", err)
|
||||
t.Error("unmarshal error", err)
|
||||
}
|
||||
|
||||
if res.Price != 8000 {
|
||||
t.Error("Test Failed - response error expected 8000 but received:",
|
||||
t.Error("response error expected 8000 but received:",
|
||||
res.Price)
|
||||
}
|
||||
|
||||
if res.Amount != 1 {
|
||||
t.Error("Test Failed - response error expected 1 but received:",
|
||||
t.Error("response error expected 1 but received:",
|
||||
res.Amount)
|
||||
}
|
||||
|
||||
if res.Currency != "bitcoin" {
|
||||
t.Error("Test Failed - response error expected \"bitcoin\" but received:",
|
||||
t.Error("response error expected \"bitcoin\" but received:",
|
||||
res.Currency)
|
||||
}
|
||||
|
||||
// clean up test.json file
|
||||
err = os.Remove(testFile)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Remove error", err)
|
||||
t.Fatal("Remove error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ func TestInc(t *testing.T) {
|
||||
expected := Value(2)
|
||||
result := nonce.Get()
|
||||
if result != expected {
|
||||
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
||||
t.Errorf("Expected %d got %d", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ func TestGet(t *testing.T) {
|
||||
expected := Value(112321313)
|
||||
result := nonce.Get()
|
||||
if expected != result {
|
||||
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
||||
t.Errorf("Expected %d got %d", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ func TestGetInc(t *testing.T) {
|
||||
expected := Value(2)
|
||||
result := nonce.GetInc()
|
||||
if expected != result {
|
||||
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
||||
t.Errorf("Expected %d got %d", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ func TestSet(t *testing.T) {
|
||||
expected := Value(1)
|
||||
result := nonce.Get()
|
||||
if expected != result {
|
||||
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
||||
t.Errorf("Expected %d got %d", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,12 +52,12 @@ func TestString(t *testing.T) {
|
||||
expected := "12312313131"
|
||||
result := nonce.String()
|
||||
if expected != result {
|
||||
t.Errorf("Test failed. Expected %s got %s", expected, result)
|
||||
t.Errorf("Expected %s got %s", expected, result)
|
||||
}
|
||||
|
||||
v := nonce.Get()
|
||||
if expected != v.String() {
|
||||
t.Errorf("Test failed. Expected %s got %s", expected, result)
|
||||
t.Errorf("Expected %s got %s", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,6 +75,6 @@ func TestNonceConcurrency(t *testing.T) {
|
||||
result := nonce.Get()
|
||||
expected := Value(12312 + 1000)
|
||||
if expected != result {
|
||||
t.Errorf("Test failed. Expected %d got %d", expected, result)
|
||||
t.Errorf("Expected %d got %d", expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ func TestSetDefaults(t *testing.T) {
|
||||
o.SetDefaults()
|
||||
}
|
||||
if o.GetName() != OKGroupExchange {
|
||||
t.Errorf("Test Failed - %v - SetDefaults() error", OKGroupExchange)
|
||||
t.Errorf("%v - SetDefaults() error", OKGroupExchange)
|
||||
}
|
||||
TestSetup(t)
|
||||
}
|
||||
@@ -64,11 +64,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Okcoin load config error", err)
|
||||
t.Fatal("Okcoin load config error", err)
|
||||
}
|
||||
okcoinConfig, err := cfg.GetExchangeConfig(OKGroupExchange)
|
||||
if err != nil {
|
||||
t.Fatalf("Test Failed - %v Setup() init error", OKGroupExchange)
|
||||
t.Fatalf("%v Setup() init error", OKGroupExchange)
|
||||
}
|
||||
if okcoinConfig.Features.Enabled.Websocket {
|
||||
websocketEnabled = true
|
||||
@@ -82,7 +82,7 @@ func TestSetup(t *testing.T) {
|
||||
okcoinConfig.API.Endpoints.WebsocketURL = o.API.Endpoints.WebsocketURL
|
||||
err = o.Setup(okcoinConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - OKCoin setup error", err)
|
||||
t.Fatal("OKCoin setup error", err)
|
||||
}
|
||||
testSetupRan = true
|
||||
o.Websocket.DataHandler = sharedtestvalues.GetWebsocketInterfaceChannelOverride()
|
||||
@@ -990,42 +990,42 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0.0015) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
}
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(1500) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(1500), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(1500), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// CryptocurrencyTradeFee IsMaker
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// CryptocurrencyTradeFee Negative purchase price
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// CyptocurrencyDepositFee Basic
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// InternationalBankDepositFee Basic
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// InternationalBankWithdrawalFee Basic
|
||||
@@ -1033,7 +1033,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -73,9 +74,37 @@ func (o *OKCoin) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
CancelOrders: true,
|
||||
SubmitOrder: true,
|
||||
SubmitOrders: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
KlineFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
MessageCorrelation: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.NoFiatWithdrawals,
|
||||
@@ -96,14 +125,6 @@ func (o *OKCoin) SetDefaults() {
|
||||
o.API.Endpoints.WebsocketURL = okCoinWebsocketURL
|
||||
o.APIVersion = okCoinAPIVersion
|
||||
o.Websocket = wshandler.New()
|
||||
o.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketKlineSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketMessageCorrelationSupported
|
||||
o.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
o.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
o.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
|
||||
@@ -39,7 +39,7 @@ func TestSetDefaults(t *testing.T) {
|
||||
o.SetDefaults()
|
||||
}
|
||||
if o.GetName() != OKGroupExchange {
|
||||
t.Errorf("Test Failed - %v - SetDefaults() error", OKGroupExchange)
|
||||
t.Errorf("%v - SetDefaults() error", OKGroupExchange)
|
||||
}
|
||||
TestSetup(t)
|
||||
}
|
||||
@@ -65,12 +65,12 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Okex load config error", err)
|
||||
t.Fatal("Okex load config error", err)
|
||||
}
|
||||
|
||||
okexConfig, err := cfg.GetExchangeConfig(OKGroupExchange)
|
||||
if err != nil {
|
||||
t.Fatalf("Test Failed - %v Setup() init error", OKGroupExchange)
|
||||
t.Fatalf("%v Setup() init error", OKGroupExchange)
|
||||
}
|
||||
if okexConfig.Features.Enabled.Websocket {
|
||||
websocketEnabled = true
|
||||
@@ -83,7 +83,7 @@ func TestSetup(t *testing.T) {
|
||||
okexConfig.API.Endpoints.WebsocketURL = o.API.Endpoints.WebsocketURL
|
||||
err = o.Setup(okexConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Okex setup error", err)
|
||||
t.Fatal("Okex setup error", err)
|
||||
}
|
||||
testSetupRan = true
|
||||
o.Websocket.DataHandler = sharedtestvalues.GetWebsocketInterfaceChannelOverride()
|
||||
@@ -1748,7 +1748,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0.0015) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -1756,7 +1756,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(1500) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(1500), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(1500), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -1764,7 +1764,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0005), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -1772,7 +1772,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -1780,7 +1780,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -1788,7 +1788,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -1797,7 +1797,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := o.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -90,9 +91,37 @@ func (o *OKEX) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
CancelOrders: true,
|
||||
SubmitOrder: true,
|
||||
SubmitOrders: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
KlineFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
MessageCorrelation: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.NoFiatWithdrawals,
|
||||
@@ -113,14 +142,6 @@ func (o *OKEX) SetDefaults() {
|
||||
o.API.Endpoints.WebsocketURL = OkExWebsocketURL
|
||||
o.Websocket = wshandler.New()
|
||||
o.APIVersion = okExAPIVersion
|
||||
o.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketKlineSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketMessageCorrelationSupported
|
||||
o.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
o.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
o.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
|
||||
@@ -42,6 +42,7 @@ func (o *OKGroup) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: o.WsConnect,
|
||||
Subscriber: o.Subscribe,
|
||||
UnSubscriber: o.Unsubscribe,
|
||||
Features: &o.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -56,7 +56,7 @@ func TestSubscribeOrderbook(t *testing.T) {
|
||||
|
||||
err = b.Process()
|
||||
if err != nil {
|
||||
t.Error("test failed - process error", err)
|
||||
t.Error("process error", err)
|
||||
}
|
||||
|
||||
_, err = SubscribeOrderbook("SubscribeOBTest", p, asset.Spot)
|
||||
@@ -67,7 +67,7 @@ func TestSubscribeOrderbook(t *testing.T) {
|
||||
// process redundant update
|
||||
err = b.Process()
|
||||
if err != nil {
|
||||
t.Error("test failed - process error", err)
|
||||
t.Error("process error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ func TestSubscribeToExchangeOrderbooks(t *testing.T) {
|
||||
|
||||
err = b.Process()
|
||||
if err != nil {
|
||||
t.Error("test failed:", err)
|
||||
t.Error("", err)
|
||||
}
|
||||
|
||||
_, err = SubscribeToExchangeOrderbooks("SubscribeToExchangeOrderbooks")
|
||||
@@ -167,7 +167,7 @@ func TestCalculateTotalBids(t *testing.T) {
|
||||
|
||||
a, b := base.TotalBidsAmount()
|
||||
if a != 10 && b != 1000 {
|
||||
t.Fatal("Test failed. TestCalculateTotalBids expected a = 10 and b = 1000")
|
||||
t.Fatal("TestCalculateTotalBids expected a = 10 and b = 1000")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ func TestCalculateTotaAsks(t *testing.T) {
|
||||
|
||||
a, b := base.TotalAsksAmount()
|
||||
if a != 10 && b != 1000 {
|
||||
t.Fatal("Test failed. TestCalculateTotalAsks expected a = 10 and b = 1000")
|
||||
t.Fatal("TestCalculateTotalAsks expected a = 10 and b = 1000")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,17 +202,17 @@ func TestUpdate(t *testing.T) {
|
||||
base.Update(bids, asks)
|
||||
|
||||
if !base.LastUpdated.After(timeNow) {
|
||||
t.Fatal("test failed. TestUpdate expected LastUpdated to be greater then original time")
|
||||
t.Fatal("TestUpdate expected LastUpdated to be greater then original time")
|
||||
}
|
||||
|
||||
a, b := base.TotalAsksAmount()
|
||||
if a != 100 && b != 20200 {
|
||||
t.Fatal("Test failed. TestUpdate expected a = 100 and b = 20100")
|
||||
t.Fatal("TestUpdate expected a = 100 and b = 20100")
|
||||
}
|
||||
|
||||
a, b = base.TotalBidsAmount()
|
||||
if a != 100 && b != 20100 {
|
||||
t.Fatal("Test failed. TestUpdate expected a = 100 and b = 20100")
|
||||
t.Fatal("TestUpdate expected a = 100 and b = 20100")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,28 +233,28 @@ func TestGetOrderbook(t *testing.T) {
|
||||
|
||||
result, err := Get("Exchange", c, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatalf("Test failed. TestGetOrderbook failed to get orderbook. Error %s",
|
||||
t.Fatalf("TestGetOrderbook failed to get orderbook. Error %s",
|
||||
err)
|
||||
}
|
||||
if !result.Pair.Equal(c) {
|
||||
t.Fatal("Test failed. TestGetOrderbook failed. Mismatched pairs")
|
||||
t.Fatal("TestGetOrderbook failed. Mismatched pairs")
|
||||
}
|
||||
|
||||
_, err = Get("nonexistent", c, asset.Spot)
|
||||
if err == nil {
|
||||
t.Fatal("Test failed. TestGetOrderbook retrieved non-existent orderbook")
|
||||
t.Fatal("TestGetOrderbook retrieved non-existent orderbook")
|
||||
}
|
||||
|
||||
c.Base = currency.NewCode("blah")
|
||||
_, err = Get("Exchange", c, asset.Spot)
|
||||
if err == nil {
|
||||
t.Fatal("Test failed. TestGetOrderbook retrieved non-existent orderbook using invalid first currency")
|
||||
t.Fatal("TestGetOrderbook retrieved non-existent orderbook using invalid first currency")
|
||||
}
|
||||
|
||||
newCurrency := currency.NewPairFromStrings("BTC", "AUD")
|
||||
_, err = Get("Exchange", newCurrency, asset.Spot)
|
||||
if err == nil {
|
||||
t.Fatal("Test failed. TestGetOrderbook retrieved non-existent orderbook using invalid second currency")
|
||||
t.Fatal("TestGetOrderbook retrieved non-existent orderbook using invalid second currency")
|
||||
}
|
||||
|
||||
base.Pair = newCurrency
|
||||
@@ -286,21 +286,21 @@ func TestCreateNewOrderbook(t *testing.T) {
|
||||
|
||||
result, err := Get("testCreateNewOrderbook", c, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestCreateNewOrderbook failed to create new orderbook", err)
|
||||
t.Fatal("TestCreateNewOrderbook failed to create new orderbook", err)
|
||||
}
|
||||
|
||||
if !result.Pair.Equal(c) {
|
||||
t.Fatal("Test failed. TestCreateNewOrderbook result pair is incorrect")
|
||||
t.Fatal("TestCreateNewOrderbook result pair is incorrect")
|
||||
}
|
||||
|
||||
a, b := result.TotalAsksAmount()
|
||||
if a != 10 && b != 1000 {
|
||||
t.Fatal("Test failed. TestCreateNewOrderbook CalculateTotalAsks value is incorrect")
|
||||
t.Fatal("TestCreateNewOrderbook CalculateTotalAsks value is incorrect")
|
||||
}
|
||||
|
||||
a, b = result.TotalBidsAmount()
|
||||
if a != 10 && b != 2000 {
|
||||
t.Fatal("Test failed. TestCreateNewOrderbook CalculateTotalBids value is incorrect")
|
||||
t.Fatal("TestCreateNewOrderbook CalculateTotalBids value is incorrect")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -334,10 +334,10 @@ func TestProcessOrderbook(t *testing.T) {
|
||||
}
|
||||
result, err := Get("ProcessOrderbook", c, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessOrderbook failed to create new orderbook")
|
||||
t.Fatal("TestProcessOrderbook failed to create new orderbook")
|
||||
}
|
||||
if !result.Pair.Equal(c) {
|
||||
t.Fatal("Test failed. TestProcessOrderbook result pair is incorrect")
|
||||
t.Fatal("TestProcessOrderbook result pair is incorrect")
|
||||
}
|
||||
|
||||
// now test for processing a pair with a different quote currency
|
||||
@@ -345,14 +345,14 @@ func TestProcessOrderbook(t *testing.T) {
|
||||
base.Pair = c
|
||||
err = base.Process()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Process() error", err)
|
||||
t.Error("Process() error", err)
|
||||
}
|
||||
result, err = Get("ProcessOrderbook", c, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessOrderbook failed to retrieve new orderbook")
|
||||
t.Fatal("TestProcessOrderbook failed to retrieve new orderbook")
|
||||
}
|
||||
if !result.Pair.Equal(c) {
|
||||
t.Fatal("Test failed. TestProcessOrderbook result pair is incorrect")
|
||||
t.Fatal("TestProcessOrderbook result pair is incorrect")
|
||||
}
|
||||
|
||||
// now test for processing a pair which has a different base currency
|
||||
@@ -360,31 +360,31 @@ func TestProcessOrderbook(t *testing.T) {
|
||||
base.Pair = c
|
||||
err = base.Process()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Process() error", err)
|
||||
t.Error("Process() error", err)
|
||||
}
|
||||
result, err = Get("ProcessOrderbook", c, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessOrderbook failed to retrieve new orderbook")
|
||||
t.Fatal("TestProcessOrderbook failed to retrieve new orderbook")
|
||||
}
|
||||
if !result.Pair.Equal(c) {
|
||||
t.Fatal("Test failed. TestProcessOrderbook result pair is incorrect")
|
||||
t.Fatal("TestProcessOrderbook result pair is incorrect")
|
||||
}
|
||||
|
||||
base.Asks = []Item{{Price: 200, Amount: 200}}
|
||||
base.AssetType = "monthly"
|
||||
err = base.Process()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Process() error", err)
|
||||
t.Error("Process() error", err)
|
||||
}
|
||||
|
||||
result, err = Get("ProcessOrderbook", c, "monthly")
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessOrderbook failed to retrieve new orderbook")
|
||||
t.Fatal("TestProcessOrderbook failed to retrieve new orderbook")
|
||||
}
|
||||
|
||||
a, b := result.TotalAsksAmount()
|
||||
if a != 200 && b != 40000 {
|
||||
t.Fatal("Test failed. TestProcessOrderbook CalculateTotalsAsks incorrect values")
|
||||
t.Fatal("TestProcessOrderbook CalculateTotalsAsks incorrect values")
|
||||
}
|
||||
|
||||
base.Bids = []Item{{Price: 420, Amount: 200}}
|
||||
@@ -392,16 +392,16 @@ func TestProcessOrderbook(t *testing.T) {
|
||||
base.AssetType = "quarterly"
|
||||
err = base.Process()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Process() error", err)
|
||||
t.Error("Process() error", err)
|
||||
}
|
||||
|
||||
result, err = Get("Blah", c, "quarterly")
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessOrderbook failed to create new orderbook")
|
||||
t.Fatal("TestProcessOrderbook failed to create new orderbook")
|
||||
}
|
||||
|
||||
if a != 200 && b != 84000 {
|
||||
t.Fatal("Test failed. TestProcessOrderbook CalculateTotalsBids incorrect values")
|
||||
t.Fatal("TestProcessOrderbook CalculateTotalsBids incorrect values")
|
||||
}
|
||||
|
||||
type quick struct {
|
||||
@@ -456,7 +456,7 @@ func TestProcessOrderbook(t *testing.T) {
|
||||
}
|
||||
|
||||
if catastrophicFailure {
|
||||
t.Fatal("Test Failed - Process() error", err)
|
||||
t.Fatal("Process() error", err)
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
@@ -472,18 +472,18 @@ func TestProcessOrderbook(t *testing.T) {
|
||||
}
|
||||
|
||||
if result.Asks[0] != test.Asks[0] {
|
||||
t.Error("Test failed. TestProcessOrderbook failed bad values")
|
||||
t.Error("TestProcessOrderbook failed bad values")
|
||||
}
|
||||
|
||||
if result.Bids[0] != test.Bids[0] {
|
||||
t.Error("Test failed. TestProcessOrderbook failed bad values")
|
||||
t.Error("TestProcessOrderbook failed bad values")
|
||||
}
|
||||
|
||||
wg.Done()
|
||||
}(test)
|
||||
|
||||
if fatalErr {
|
||||
t.Fatal("Test failed. TestProcessOrderbook failed to retrieve new orderbook")
|
||||
t.Fatal("TestProcessOrderbook failed to retrieve new orderbook")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -493,13 +493,13 @@ func TestProcessOrderbook(t *testing.T) {
|
||||
func TestSetNewData(t *testing.T) {
|
||||
err := service.SetNewData(nil)
|
||||
if err == nil {
|
||||
t.Error("error cannot be nil ")
|
||||
t.Error("error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetAssociations(t *testing.T) {
|
||||
_, err := service.GetAssociations(nil)
|
||||
if err == nil {
|
||||
t.Error("error cannot be nil ")
|
||||
t.Error("error cannot be nil")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,31 +7,31 @@ import (
|
||||
func TestNewOrder(t *testing.T) {
|
||||
ID := NewOrder("ANX", 2000, 20.00)
|
||||
if ID != 0 {
|
||||
t.Error("Test Failed - Orders_test.go NewOrder() - Error")
|
||||
t.Error("Orders_test.go NewOrder() - Error")
|
||||
}
|
||||
ID = NewOrder("BATMAN", 400, 25.00)
|
||||
if ID != 1 {
|
||||
t.Error("Test Failed - Orders_test.go NewOrder() - Error")
|
||||
t.Error("Orders_test.go NewOrder() - Error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteOrder(t *testing.T) {
|
||||
if value := DeleteOrder(0); !value {
|
||||
t.Error("Test Failed - Orders_test.go DeleteOrder() - Error")
|
||||
t.Error("Orders_test.go DeleteOrder() - Error")
|
||||
}
|
||||
if value := DeleteOrder(100); value {
|
||||
t.Error("Test Failed - Orders_test.go DeleteOrder() - Error")
|
||||
t.Error("Orders_test.go DeleteOrder() - Error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetOrdersByExchange(t *testing.T) {
|
||||
if value := GetOrdersByExchange("ANX"); len(value) != 0 {
|
||||
t.Error("Test Failed - Orders_test.go GetOrdersByExchange() - Error")
|
||||
t.Error("Orders_test.go GetOrdersByExchange() - Error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetOrderByOrderID(t *testing.T) {
|
||||
if value := GetOrderByOrderID(69); value != nil {
|
||||
t.Error("Test Failed - Orders_test.go GetOrdersByExchange() - Error")
|
||||
t.Error("Orders_test.go GetOrdersByExchange() - Error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,11 +19,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Poloniex load config error", err)
|
||||
log.Fatal("Poloniex load config error", err)
|
||||
}
|
||||
poloniexConfig, err := cfg.GetExchangeConfig("Poloniex")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Poloniex Setup() init error", err)
|
||||
log.Fatal("Poloniex Setup() init error", err)
|
||||
}
|
||||
poloniexConfig.API.AuthenticatedSupport = true
|
||||
poloniexConfig.API.Credentials.Key = apiKey
|
||||
@@ -31,7 +31,7 @@ func TestMain(m *testing.M) {
|
||||
p.SetDefaults()
|
||||
err = p.Setup(poloniexConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Poloniex setup error", err)
|
||||
log.Fatal("Poloniex setup error", err)
|
||||
}
|
||||
log.Printf(sharedtestvalues.LiveTesting, p.GetName(), p.API.Endpoints.URL)
|
||||
os.Exit(m.Run())
|
||||
|
||||
@@ -22,11 +22,11 @@ func TestMain(m *testing.M) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Poloniex load config error", err)
|
||||
log.Fatal("Poloniex load config error", err)
|
||||
}
|
||||
poloniexConfig, err := cfg.GetExchangeConfig("Poloniex")
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Poloniex Setup() init error", err)
|
||||
log.Fatal("Poloniex Setup() init error", err)
|
||||
}
|
||||
p.SkipAuthCheck = true
|
||||
poloniexConfig.API.AuthenticatedSupport = true
|
||||
@@ -35,12 +35,12 @@ func TestMain(m *testing.M) {
|
||||
p.SetDefaults()
|
||||
err = p.Setup(poloniexConfig)
|
||||
if err != nil {
|
||||
log.Fatal("Test Failed - Poloniex setup error", err)
|
||||
log.Fatal("Poloniex setup error", err)
|
||||
}
|
||||
|
||||
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
||||
if err != nil {
|
||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
||||
log.Fatalf("Mock server error %s", err)
|
||||
}
|
||||
|
||||
p.HTTPClient = newClient
|
||||
|
||||
@@ -30,7 +30,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := p.GetTicker()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - Poloniex GetTicker() error", err)
|
||||
t.Error("Poloniex GetTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,7 +124,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := p.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0.0025), resp)
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := p.GetFee(feeBuilder); resp != float64(2500) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(2500), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -142,7 +142,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := p.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -151,7 +151,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := p.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0.001), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -161,7 +161,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := p.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -170,7 +170,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := p.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -179,7 +179,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := p.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -189,7 +189,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := p.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||
float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
@@ -219,11 +219,11 @@ func TestGetActiveOrders(t *testing.T) {
|
||||
_, err := p.GetActiveOrders(&getOrdersRequest)
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - GetActiveOrders() error", err)
|
||||
t.Error("GetActiveOrders() error", err)
|
||||
case !areTestAPIKeysSet() && !mockTests && err == nil:
|
||||
t.Error("Test Failed - Expecting an error when no keys are set")
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock GetActiveOrders() err", err)
|
||||
t.Error("Mock GetActiveOrders() err", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ func TestSubmitOrder(t *testing.T) {
|
||||
case !areTestAPIKeysSet() && !mockTests && err == nil:
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock SubmitOrder() err", err)
|
||||
t.Error("Mock SubmitOrder() err", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ func TestCancelExchangeOrder(t *testing.T) {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Errorf("Could not cancel orders: %v", err)
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock CancelExchangeOrder() err", err)
|
||||
t.Error("Mock CancelExchangeOrder() err", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -323,7 +323,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Errorf("Could not cancel orders: %v", err)
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock CancelAllExchangeOrders() err", err)
|
||||
t.Error("Mock CancelAllExchangeOrders() err", err)
|
||||
}
|
||||
if len(resp.OrderStatus) > 0 {
|
||||
t.Errorf("%v orders failed to cancel", len(resp.OrderStatus))
|
||||
@@ -339,11 +339,11 @@ func TestModifyOrder(t *testing.T) {
|
||||
_, err := p.ModifyOrder(&exchange.ModifyOrder{OrderID: "1337", Price: 1337})
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil && mockTests:
|
||||
t.Error("Test Failed - ModifyOrder() error", err)
|
||||
t.Error("ModifyOrder() error", err)
|
||||
case !areTestAPIKeysSet() && !mockTests && err == nil:
|
||||
t.Error("Test Failed - ModifyOrder() error cannot be nil")
|
||||
t.Error("ModifyOrder() error cannot be nil")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock ModifyOrder() err", err)
|
||||
t.Error("Mock ModifyOrder() err", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -369,7 +369,7 @@ func TestWithdraw(t *testing.T) {
|
||||
case !areTestAPIKeysSet() && !mockTests && err == nil:
|
||||
t.Error("Expecting an error when no keys are set")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock Withdraw() err", err)
|
||||
t.Error("Mock Withdraw() err", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -406,11 +406,11 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
_, err := p.GetDepositAddress(currency.DASH, "")
|
||||
switch {
|
||||
case areTestAPIKeysSet() && err != nil:
|
||||
t.Error("Test Failed - GetDepositAddress()", err)
|
||||
t.Error("GetDepositAddress()", err)
|
||||
case !areTestAPIKeysSet() && !mockTests && err == nil:
|
||||
t.Error("Test Failed - GetDepositAddress() cannot be nil")
|
||||
t.Error("GetDepositAddress() cannot be nil")
|
||||
case mockTests && err != nil:
|
||||
t.Error("Test Failed - Mock GetDepositAddress() err", err)
|
||||
t.Error("Mock GetDepositAddress() err", err)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,9 +70,34 @@ func (p *Poloniex) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
CancelOrders: true,
|
||||
SubmitOrder: true,
|
||||
DepositHistory: true,
|
||||
WithdrawalHistory: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
Unsubscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||
exchange.NoFiatWithdrawals,
|
||||
@@ -90,12 +116,6 @@ func (p *Poloniex) SetDefaults() {
|
||||
p.API.Endpoints.URL = p.API.Endpoints.URLDefault
|
||||
p.API.Endpoints.WebsocketURL = poloniexWebsocketAddress
|
||||
p.Websocket = wshandler.New()
|
||||
p.Websocket.Functionality = wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketUnsubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported
|
||||
p.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
p.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
p.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||
@@ -125,6 +145,7 @@ func (p *Poloniex) Setup(exch *config.ExchangeConfig) error {
|
||||
Connector: p.WsConnect,
|
||||
Subscriber: p.Subscribe,
|
||||
UnSubscriber: p.Unsubscribe,
|
||||
Features: &p.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
40
exchanges/protocol/features.go
Normal file
40
exchanges/protocol/features.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package protocol
|
||||
|
||||
// Features holds all variables for the exchanges supported features
|
||||
// for a protocol (e.g REST or Websocket)
|
||||
type Features struct {
|
||||
TickerBatching bool `json:"tickerBatching,omitempty"`
|
||||
AutoPairUpdates bool `json:"autoPairUpdates,omitempty"`
|
||||
AccountBalance bool `json:"accountBalance,omitempty"`
|
||||
CryptoDeposit bool `json:"cryptoDeposit,omitempty"`
|
||||
CryptoWithdrawal bool `json:"cryptoWithdrawal,omitempty"`
|
||||
FiatWithdraw bool `json:"fiatWithdraw,omitempty"`
|
||||
GetOrder bool `json:"getOrder,omitempty"`
|
||||
GetOrders bool `json:"getOrders,omitempty"`
|
||||
CancelOrders bool `json:"cancelOrders,omitempty"`
|
||||
CancelOrder bool `json:"cancelOrder,omitempty"`
|
||||
SubmitOrder bool `json:"submitOrder,omitempty"`
|
||||
SubmitOrders bool `json:"submitOrders,omitempty"`
|
||||
ModifyOrder bool `json:"modifyOrder,omitempty"`
|
||||
DepositHistory bool `json:"depositHistory,omitempty"`
|
||||
WithdrawalHistory bool `json:"withdrawalHistory,omitempty"`
|
||||
TradeHistory bool `json:"tradeHistory,omitempty"`
|
||||
UserTradeHistory bool `json:"userTradeHistory,omitempty"`
|
||||
TradeFee bool `json:"tradeFee,omitempty"`
|
||||
FiatDepositFee bool `json:"fiatDepositFee,omitempty"`
|
||||
FiatWithdrawalFee bool `json:"fiatWithdrawalFee,omitempty"`
|
||||
CryptoDepositFee bool `json:"cryptoDepositFee,omitempty"`
|
||||
CryptoWithdrawalFee bool `json:"cryptoWithdrawalFee,omitempty"`
|
||||
TickerFetching bool `json:"tickerFetching,omitempty"`
|
||||
KlineFetching bool `json:"klineFetching,omitempty"`
|
||||
TradeFetching bool `json:"tradeFetching,omitempty"`
|
||||
OrderbookFetching bool `json:"orderbookFetching,omitempty"`
|
||||
AccountInfo bool `json:"accountInfo,omitempty"`
|
||||
FiatDeposit bool `json:"fiatDeposit,omitempty"`
|
||||
DeadMansSwitch bool `json:"deadMansSwitch,omitempty"`
|
||||
Subscribe bool `json:"subscribe,omitempty"`
|
||||
Unsubscribe bool `json:"unsubscribe,omitempty"`
|
||||
AuthenticatedEndpoints bool `json:"authenticatedEndpoints,omitempty"`
|
||||
MessageCorrelation bool `json:"messageCorrelation,omitempty"`
|
||||
MessageSequenceNumbers bool `json:"messageSequenceNumbers,omitempty"`
|
||||
}
|
||||
@@ -202,32 +202,29 @@ func TestDoRequest(t *testing.T) {
|
||||
var test = new(Requester)
|
||||
err := test.SendPayload(http.MethodGet, "https://www.google.com", nil, nil, nil, false, false, true, false, false)
|
||||
if err == nil {
|
||||
t.Fatal("not iniitalised")
|
||||
t.Fatal("Expected error")
|
||||
}
|
||||
|
||||
r := New("", NewRateLimit(time.Second*10, 5), NewRateLimit(time.Second*20, 100), new(http.Client))
|
||||
if err == nil {
|
||||
t.Fatal("unexpected values")
|
||||
}
|
||||
|
||||
r.Name = "bitfinex"
|
||||
err = r.SendPayload("BLAH", "https://www.google.com", nil, nil, nil, false, false, true, false, false)
|
||||
if err == nil {
|
||||
t.Fatal("unexpected values")
|
||||
t.Fatal("Expected error")
|
||||
}
|
||||
|
||||
err = r.SendPayload(http.MethodGet, "", nil, nil, nil, false, false, true, false, false)
|
||||
if err == nil {
|
||||
t.Fatal("unexpected values")
|
||||
t.Fatal("Expected error")
|
||||
}
|
||||
|
||||
err = r.SendPayload(http.MethodGet, "https://www.google.com", nil, nil, nil, false, false, true, false, false)
|
||||
if err != nil {
|
||||
t.Fatal("unexpected values")
|
||||
t.Fatal("unexpected values", err)
|
||||
}
|
||||
|
||||
if !r.RequiresRateLimiter() {
|
||||
t.Fatal("unexpcted values")
|
||||
t.Fatal("unexpected values")
|
||||
}
|
||||
|
||||
r.SetRateLimit(false, time.Second, 0)
|
||||
@@ -235,7 +232,7 @@ func TestDoRequest(t *testing.T) {
|
||||
|
||||
err = r.SendPayload(http.MethodGet, "https://www.google.com", nil, nil, nil, false, false, true, false, false)
|
||||
if err != nil {
|
||||
t.Fatal("unexpected values")
|
||||
t.Fatal("unexpected values", err)
|
||||
}
|
||||
|
||||
if r.RequiresRateLimiter() {
|
||||
@@ -247,7 +244,7 @@ func TestDoRequest(t *testing.T) {
|
||||
r.Cycle = time.Now().Add(time.Millisecond * -201)
|
||||
|
||||
if r.IsValidCycle(false) {
|
||||
t.Fatal("unexepcted values")
|
||||
t.Fatal("unexpected values")
|
||||
}
|
||||
|
||||
err = r.SendPayload(http.MethodGet, "https://www.google.com", nil, nil, nil, false, false, true, false, false)
|
||||
@@ -288,18 +285,18 @@ func TestDoRequest(t *testing.T) {
|
||||
|
||||
err = r.SetTimeoutRetryAttempts(1)
|
||||
if err != nil {
|
||||
t.Fatal("test failed - setting timeout retry attempts")
|
||||
t.Fatal("setting timeout retry attempts")
|
||||
}
|
||||
|
||||
err = r.SetTimeoutRetryAttempts(-1)
|
||||
if err == nil {
|
||||
t.Fatal("test failed - setting timeout retry attempts with negative value")
|
||||
t.Fatal("setting timeout retry attempts with negative value")
|
||||
}
|
||||
|
||||
r.HTTPClient.Timeout = 1 * time.Second
|
||||
err = r.SendPayload(http.MethodPost, "https://httpstat.us/200?sleep=20000", nil, nil, nil, false, false, true, false, false)
|
||||
if err == nil {
|
||||
t.Fatal(err)
|
||||
t.Fatal("Expected error")
|
||||
}
|
||||
|
||||
proxy, err := url.Parse("")
|
||||
@@ -309,7 +306,7 @@ func TestDoRequest(t *testing.T) {
|
||||
|
||||
err = r.SetProxy(proxy)
|
||||
if err == nil {
|
||||
t.Error("failed to set proxy")
|
||||
t.Error("Expected error")
|
||||
}
|
||||
|
||||
proxy, err = url.Parse("https://192.0.0.1")
|
||||
|
||||
@@ -20,7 +20,7 @@ func TestLenByPrice(t *testing.T) {
|
||||
}
|
||||
|
||||
if ByPrice.Len(Items) < 1 {
|
||||
t.Error("Test Failed - stats LenByPrice() length not correct.")
|
||||
t.Error("stats LenByPrice() length not correct.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,10 +45,10 @@ func TestLessByPrice(t *testing.T) {
|
||||
}
|
||||
|
||||
if !ByPrice.Less(Items, 1, 0) {
|
||||
t.Error("Test Failed - stats LessByPrice() incorrect return.")
|
||||
t.Error("stats LessByPrice() incorrect return.")
|
||||
}
|
||||
if ByPrice.Less(Items, 0, 1) {
|
||||
t.Error("Test Failed - stats LessByPrice() incorrect return.")
|
||||
t.Error("stats LessByPrice() incorrect return.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,22 +74,22 @@ func TestSwapByPrice(t *testing.T) {
|
||||
|
||||
ByPrice.Swap(Items, 0, 1)
|
||||
if Items[0].Exchange != "bitfinex" || Items[1].Exchange != "bitstamp" {
|
||||
t.Error("Test Failed - stats SwapByPrice did not swap values.")
|
||||
t.Error("stats SwapByPrice did not swap values.")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLenByVolume(t *testing.T) {
|
||||
if ByVolume.Len(Items) != 2 {
|
||||
t.Error("Test Failed - stats lenByVolume did not swap values.")
|
||||
t.Error("stats lenByVolume did not swap values.")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLessByVolume(t *testing.T) {
|
||||
if !ByVolume.Less(Items, 1, 0) {
|
||||
t.Error("Test Failed - stats LessByVolume() incorrect return.")
|
||||
t.Error("stats LessByVolume() incorrect return.")
|
||||
}
|
||||
if ByVolume.Less(Items, 0, 1) {
|
||||
t.Error("Test Failed - stats LessByVolume() incorrect return.")
|
||||
t.Error("stats LessByVolume() incorrect return.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ func TestSwapByVolume(t *testing.T) {
|
||||
ByPrice.Swap(Items, 0, 1)
|
||||
|
||||
if Items[1].Exchange != "bitfinex" || Items[0].Exchange != "bitstamp" {
|
||||
t.Error("Test Failed - stats SwapByVolume did not swap values.")
|
||||
t.Error("stats SwapByVolume did not swap values.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,27 +107,27 @@ func TestAdd(t *testing.T) {
|
||||
Add("ANX", p, asset.Spot, 1200, 42)
|
||||
|
||||
if len(Items) < 1 {
|
||||
t.Error("Test Failed - stats Add did not add exchange info.")
|
||||
t.Error("stats Add did not add exchange info.")
|
||||
}
|
||||
|
||||
Add("", p, "", 0, 0)
|
||||
|
||||
if len(Items) != 1 {
|
||||
t.Error("Test Failed - stats Add did not add exchange info.")
|
||||
t.Error("stats Add did not add exchange info.")
|
||||
}
|
||||
|
||||
p.Base = currency.XBT
|
||||
Add("ANX", p, asset.Spot, 1201, 43)
|
||||
|
||||
if Items[1].Pair.String() != "XBTUSD" {
|
||||
t.Fatal("Test failed. stats Add did not add exchange info.")
|
||||
t.Fatal("stats Add did not add exchange info.")
|
||||
}
|
||||
|
||||
p = currency.NewPairFromStrings("ETH", "USDT")
|
||||
Add("ANX", p, asset.Spot, 300, 1000)
|
||||
|
||||
if Items[2].Pair.String() != "ETHUSD" {
|
||||
t.Fatal("Test failed. stats Add did not add exchange info.")
|
||||
t.Fatal("stats Add did not add exchange info.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,23 +135,23 @@ func TestAppend(t *testing.T) {
|
||||
p := currency.NewPairFromStrings("BTC", "USD")
|
||||
Append("sillyexchange", p, asset.Spot, 1234, 45)
|
||||
if len(Items) < 2 {
|
||||
t.Error("Test Failed - stats Append did not add exchange values.")
|
||||
t.Error("stats Append did not add exchange values.")
|
||||
}
|
||||
|
||||
Append("sillyexchange", p, asset.Spot, 1234, 45)
|
||||
if len(Items) == 3 {
|
||||
t.Error("Test Failed - stats Append added exchange values")
|
||||
t.Error("stats Append added exchange values")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAlreadyExists(t *testing.T) {
|
||||
p := currency.NewPairFromStrings("BTC", "USD")
|
||||
if !AlreadyExists("ANX", p, asset.Spot, 1200, 42) {
|
||||
t.Error("Test Failed - stats AlreadyExists exchange does not exist.")
|
||||
t.Error("stats AlreadyExists exchange does not exist.")
|
||||
}
|
||||
p.Base = currency.NewCode("dii")
|
||||
if AlreadyExists("bla", p, asset.Spot, 1234, 123) {
|
||||
t.Error("Test Failed - stats AlreadyExists found incorrect exchange.")
|
||||
t.Error("stats AlreadyExists found incorrect exchange.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,12 +159,12 @@ func TestSortExchangesByVolume(t *testing.T) {
|
||||
p := currency.NewPairFromStrings("BTC", "USD")
|
||||
topVolume := SortExchangesByVolume(p, asset.Spot, true)
|
||||
if topVolume[0].Exchange != "sillyexchange" {
|
||||
t.Error("Test Failed - stats SortExchangesByVolume incorrectly sorted values.")
|
||||
t.Error("stats SortExchangesByVolume incorrectly sorted values.")
|
||||
}
|
||||
|
||||
topVolume = SortExchangesByVolume(p, asset.Spot, false)
|
||||
if topVolume[0].Exchange != "ANX" {
|
||||
t.Error("Test Failed - stats SortExchangesByVolume incorrectly sorted values.")
|
||||
t.Error("stats SortExchangesByVolume incorrectly sorted values.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,11 +172,11 @@ func TestSortExchangesByPrice(t *testing.T) {
|
||||
p := currency.NewPairFromStrings("BTC", "USD")
|
||||
topPrice := SortExchangesByPrice(p, asset.Spot, true)
|
||||
if topPrice[0].Exchange != "sillyexchange" {
|
||||
t.Error("Test Failed - stats SortExchangesByPrice incorrectly sorted values.")
|
||||
t.Error("stats SortExchangesByPrice incorrectly sorted values.")
|
||||
}
|
||||
|
||||
topPrice = SortExchangesByPrice(p, asset.Spot, false)
|
||||
if topPrice[0].Exchange != "ANX" {
|
||||
t.Error("Test Failed - stats SortExchangesByPrice incorrectly sorted values.")
|
||||
t.Error("stats SortExchangesByPrice incorrectly sorted values.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,64 +107,64 @@ func TestGetTicker(t *testing.T) {
|
||||
|
||||
err := ProcessTicker("bitfinex", &priceStruct, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. ProcessTicker error", err)
|
||||
t.Fatal("ProcessTicker error", err)
|
||||
}
|
||||
|
||||
tickerPrice, err := GetTicker("bitfinex", newPair, asset.Spot)
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Ticker GetTicker init error: %s", err)
|
||||
t.Errorf("Ticker GetTicker init error: %s", err)
|
||||
}
|
||||
if !tickerPrice.Pair.Equal(newPair) {
|
||||
t.Error("Test Failed - ticker tickerPrice.CurrencyPair value is incorrect")
|
||||
t.Error("ticker tickerPrice.CurrencyPair value is incorrect")
|
||||
}
|
||||
|
||||
_, err = GetTicker("blah", newPair, asset.Spot)
|
||||
if err == nil {
|
||||
t.Fatal("Test Failed. TestGetTicker returned nil error on invalid exchange")
|
||||
t.Fatal("TestGetTicker returned nil error on invalid exchange")
|
||||
}
|
||||
|
||||
newPair.Base = currency.ETH
|
||||
_, err = GetTicker("bitfinex", newPair, asset.Spot)
|
||||
if err == nil {
|
||||
t.Fatal("Test Failed. TestGetTicker returned ticker for invalid first currency")
|
||||
t.Fatal("TestGetTicker returned ticker for invalid first currency")
|
||||
}
|
||||
|
||||
btcltcPair := currency.NewPairFromStrings("BTC", "LTC")
|
||||
_, err = GetTicker("bitfinex", btcltcPair, asset.Spot)
|
||||
if err == nil {
|
||||
t.Fatal("Test Failed. TestGetTicker returned ticker for invalid second currency")
|
||||
t.Fatal("TestGetTicker returned ticker for invalid second currency")
|
||||
}
|
||||
|
||||
priceStruct.PriceATH = 9001
|
||||
priceStruct.Pair.Base = currency.ETH
|
||||
err = ProcessTicker("bitfinex", &priceStruct, "futures_3m")
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. ProcessTicker error", err)
|
||||
t.Fatal("ProcessTicker error", err)
|
||||
}
|
||||
|
||||
tickerPrice, err = GetTicker("bitfinex", newPair, "futures_3m")
|
||||
if err != nil {
|
||||
t.Errorf("Test Failed - Ticker GetTicker init error: %s", err)
|
||||
t.Errorf("Ticker GetTicker init error: %s", err)
|
||||
}
|
||||
|
||||
if tickerPrice.PriceATH != 9001 {
|
||||
t.Error("Test Failed - ticker tickerPrice.PriceATH value is incorrect")
|
||||
t.Error("ticker tickerPrice.PriceATH value is incorrect")
|
||||
}
|
||||
|
||||
_, err = GetTicker("bitfinex", newPair, "meowCats")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Ticker GetTicker error cannot be nil")
|
||||
t.Error("Ticker GetTicker error cannot be nil")
|
||||
}
|
||||
|
||||
err = ProcessTicker("bitfinex", &priceStruct, "meowCats")
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. ProcessTicker error", err)
|
||||
t.Fatal("ProcessTicker error", err)
|
||||
}
|
||||
|
||||
// process update again
|
||||
err = ProcessTicker("bitfinex", &priceStruct, "meowCats")
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. ProcessTicker error", err)
|
||||
t.Fatal("ProcessTicker error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,20 +196,20 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers
|
||||
priceStruct.Pair = newPair
|
||||
err = ProcessTicker(exchName, &priceStruct, "")
|
||||
if err == nil {
|
||||
t.Fatal("Test failed. ProcessTicker error cannot be nil")
|
||||
t.Fatal("ProcessTicker error cannot be nil")
|
||||
}
|
||||
|
||||
// now process a valid ticker
|
||||
err = ProcessTicker(exchName, &priceStruct, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. ProcessTicker error", err)
|
||||
t.Fatal("ProcessTicker error", err)
|
||||
}
|
||||
result, err := GetTicker(exchName, newPair, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessTicker failed to create and return a new ticker")
|
||||
t.Fatal("TestProcessTicker failed to create and return a new ticker")
|
||||
}
|
||||
if !result.Pair.Equal(newPair) {
|
||||
t.Fatal("Test failed. TestProcessTicker pair mismatch")
|
||||
t.Fatal("TestProcessTicker pair mismatch")
|
||||
}
|
||||
|
||||
// now test for processing a pair with a different quote currency
|
||||
@@ -217,15 +217,15 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers
|
||||
priceStruct.Pair = newPair
|
||||
err = ProcessTicker(exchName, &priceStruct, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. ProcessTicker error", err)
|
||||
t.Fatal("ProcessTicker error", err)
|
||||
}
|
||||
result, err = GetTicker(exchName, newPair, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessTicker failed to create and return a new ticker")
|
||||
t.Fatal("TestProcessTicker failed to create and return a new ticker")
|
||||
}
|
||||
result, err = GetTicker(exchName, newPair, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessTicker failed to return an existing ticker")
|
||||
t.Fatal("TestProcessTicker failed to return an existing ticker")
|
||||
}
|
||||
|
||||
// now test for processing a pair which has a different base currency
|
||||
@@ -233,15 +233,15 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers
|
||||
priceStruct.Pair = newPair
|
||||
err = ProcessTicker(exchName, &priceStruct, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. ProcessTicker error", err)
|
||||
t.Fatal("ProcessTicker error", err)
|
||||
}
|
||||
result, err = GetTicker(exchName, newPair, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessTicker failed to create and return a new ticker")
|
||||
t.Fatal("TestProcessTicker failed to create and return a new ticker")
|
||||
}
|
||||
result, err = GetTicker(exchName, newPair, asset.Spot)
|
||||
if err != nil {
|
||||
t.Fatal("Test failed. TestProcessTicker failed to return an existing ticker")
|
||||
t.Fatal("TestProcessTicker failed to return an existing ticker")
|
||||
}
|
||||
|
||||
type quick struct {
|
||||
@@ -289,7 +289,7 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers
|
||||
}
|
||||
|
||||
if catastrophicFailure {
|
||||
t.Fatal("Test failed. ProcessTicker error")
|
||||
t.Fatal("ProcessTicker error")
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
@@ -305,14 +305,14 @@ func TestProcessTicker(t *testing.T) { // non-appending function to tickers
|
||||
}
|
||||
|
||||
if result.Last != test.TP.Last {
|
||||
t.Error("Test failed. TestProcessTicker failed bad values")
|
||||
t.Error("TestProcessTicker failed bad values")
|
||||
}
|
||||
|
||||
wg.Done()
|
||||
}(test)
|
||||
|
||||
if fatalErr {
|
||||
t.Fatal("Test failed. TestProcessTicker failed to retrieve new ticker")
|
||||
t.Fatal("TestProcessTicker failed to retrieve new ticker")
|
||||
}
|
||||
}
|
||||
wg.Wait()
|
||||
@@ -343,7 +343,7 @@ func TestSetItemID(t *testing.T) {
|
||||
func TestGetAssociation(t *testing.T) {
|
||||
_, err := service.GetAssociations(nil)
|
||||
if err == nil {
|
||||
t.Error("error cannot be nil ")
|
||||
t.Error("error cannot be nil")
|
||||
}
|
||||
|
||||
p := currency.NewPair(currency.CYC, currency.CYG)
|
||||
@@ -352,7 +352,7 @@ func TestGetAssociation(t *testing.T) {
|
||||
|
||||
_, err = service.GetAssociations(&Price{Pair: p, ExchangeName: "GetAssociation"})
|
||||
if err == nil {
|
||||
t.Error("error cannot be nil ")
|
||||
t.Error("error cannot be nil")
|
||||
}
|
||||
|
||||
service.mux = cpyMux
|
||||
|
||||
@@ -45,6 +45,7 @@ func (w *Websocket) Setup(setupData *WebsocketSetup) error {
|
||||
w.SetExchangeName(setupData.ExchangeName)
|
||||
w.SetCanUseAuthenticatedEndpoints(setupData.AuthenticatedWebsocketAPISupport)
|
||||
w.trafficTimeout = setupData.WebsocketTimeout
|
||||
w.features = setupData.Features
|
||||
err := w.Initialise()
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -91,7 +92,7 @@ func (w *Websocket) Connect() error {
|
||||
if !w.IsConnectionMonitorRunning() {
|
||||
go w.connectionMonitor()
|
||||
}
|
||||
if w.SupportsFunctionality(WebsocketSubscribeSupported) || w.SupportsFunctionality(WebsocketUnsubscribeSupported) {
|
||||
if w.features.Subscribe || w.features.Unsubscribe {
|
||||
w.Wg.Add(1)
|
||||
go w.manageSubscriptions()
|
||||
}
|
||||
@@ -402,87 +403,6 @@ func (w *Websocket) GetName() string {
|
||||
return w.exchangeName
|
||||
}
|
||||
|
||||
// GetFunctionality returns a functionality bitmask for the websocket
|
||||
// connection
|
||||
func (w *Websocket) GetFunctionality() uint32 {
|
||||
return w.Functionality
|
||||
}
|
||||
|
||||
// SupportsFunctionality returns if the functionality is supported as a boolean
|
||||
func (w *Websocket) SupportsFunctionality(f uint32) bool {
|
||||
return w.GetFunctionality()&f == f
|
||||
}
|
||||
|
||||
// FormatFunctionality will return each of the websocket connection compatible
|
||||
// stream methods as a string
|
||||
func (w *Websocket) FormatFunctionality() string {
|
||||
var functionality []string
|
||||
for i := 0; i < 32; i++ {
|
||||
var check uint32 = 1 << uint32(i)
|
||||
if w.GetFunctionality()&check != 0 {
|
||||
switch check {
|
||||
case WebsocketTickerSupported:
|
||||
functionality = append(functionality, WebsocketTickerSupportedText)
|
||||
|
||||
case WebsocketOrderbookSupported:
|
||||
functionality = append(functionality, WebsocketOrderbookSupportedText)
|
||||
|
||||
case WebsocketKlineSupported:
|
||||
functionality = append(functionality, WebsocketKlineSupportedText)
|
||||
|
||||
case WebsocketTradeDataSupported:
|
||||
functionality = append(functionality, WebsocketTradeDataSupportedText)
|
||||
|
||||
case WebsocketAccountSupported:
|
||||
functionality = append(functionality, WebsocketAccountSupportedText)
|
||||
|
||||
case WebsocketAllowsRequests:
|
||||
functionality = append(functionality, WebsocketAllowsRequestsText)
|
||||
|
||||
case WebsocketSubscribeSupported:
|
||||
functionality = append(functionality, WebsocketSubscribeSupportedText)
|
||||
|
||||
case WebsocketUnsubscribeSupported:
|
||||
functionality = append(functionality, WebsocketUnsubscribeSupportedText)
|
||||
|
||||
case WebsocketAuthenticatedEndpointsSupported:
|
||||
functionality = append(functionality, WebsocketAuthenticatedEndpointsSupportedText)
|
||||
|
||||
case WebsocketAccountDataSupported:
|
||||
functionality = append(functionality, WebsocketAccountDataSupportedText)
|
||||
|
||||
case WebsocketSubmitOrderSupported:
|
||||
functionality = append(functionality, WebsocketSubmitOrderSupportedText)
|
||||
|
||||
case WebsocketCancelOrderSupported:
|
||||
functionality = append(functionality, WebsocketCancelOrderSupportedText)
|
||||
|
||||
case WebsocketWithdrawSupported:
|
||||
functionality = append(functionality, WebsocketWithdrawSupportedText)
|
||||
|
||||
case WebsocketMessageCorrelationSupported:
|
||||
functionality = append(functionality, WebsocketMessageCorrelationSupportedText)
|
||||
|
||||
case WebsocketSequenceNumberSupported:
|
||||
functionality = append(functionality, WebsocketSequenceNumberSupportedText)
|
||||
|
||||
case WebsocketDeadMansSwitchSupported:
|
||||
functionality = append(functionality, WebsocketDeadMansSwitchSupportedText)
|
||||
|
||||
default:
|
||||
functionality = append(functionality,
|
||||
fmt.Sprintf("%s[1<<%v]", UnknownWebsocketFunctionality, i))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(functionality) > 0 {
|
||||
return strings.Join(functionality, " & ")
|
||||
}
|
||||
|
||||
return NoWebsocketSupportText
|
||||
}
|
||||
|
||||
// SetChannelSubscriber sets the function to use the base subscribe func
|
||||
func (w *Websocket) SetChannelSubscriber(subscriber func(channelToSubscribe WebsocketChannelSubscription) error) {
|
||||
w.channelSubscriber = subscriber
|
||||
@@ -495,7 +415,7 @@ func (w *Websocket) SetChannelUnsubscriber(unsubscriber func(channelToUnsubscrib
|
||||
|
||||
// ManageSubscriptions ensures the subscriptions specified continue to be subscribed to
|
||||
func (w *Websocket) manageSubscriptions() {
|
||||
if !w.SupportsFunctionality(WebsocketSubscribeSupported) && !w.SupportsFunctionality(WebsocketUnsubscribeSupported) {
|
||||
if !w.features.Subscribe && !w.features.Unsubscribe {
|
||||
w.DataHandler <- fmt.Errorf("%v does not support channel subscriptions, exiting ManageSubscriptions()", w.exchangeName)
|
||||
return
|
||||
}
|
||||
@@ -528,13 +448,13 @@ func (w *Websocket) manageSubscriptions() {
|
||||
log.Debugf(log.WebsocketMgr, "%v checking subscriptions", w.exchangeName)
|
||||
}
|
||||
// Subscribe to channels Pending a subscription
|
||||
if w.SupportsFunctionality(WebsocketSubscribeSupported) {
|
||||
if w.features.Subscribe {
|
||||
err := w.appendSubscribedChannels()
|
||||
if err != nil {
|
||||
w.DataHandler <- err
|
||||
}
|
||||
}
|
||||
if w.SupportsFunctionality(WebsocketUnsubscribeSupported) {
|
||||
if w.features.Unsubscribe {
|
||||
err := w.unsubscribeToChannels()
|
||||
if err != nil {
|
||||
w.DataHandler <- err
|
||||
|
||||
@@ -16,6 +16,7 @@ import (
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/thrasher-corp/gocryptotrader/common"
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
)
|
||||
|
||||
func TestTrafficMonitorTimeout(t *testing.T) {
|
||||
@@ -85,6 +86,7 @@ func TestConnectionMessageErrors(t *testing.T) {
|
||||
ws.DataHandler = make(chan interface{})
|
||||
ws.ShutdownC = make(chan struct{})
|
||||
ws.connector = func() error { return nil }
|
||||
ws.features = &protocol.Features{}
|
||||
go ws.connectionMonitor()
|
||||
timer := time.NewTimer(900 * time.Millisecond)
|
||||
ws.ReadMessageErrors <- errors.New("errorText")
|
||||
@@ -126,7 +128,7 @@ func TestWebsocket(t *testing.T) {
|
||||
ws = *New()
|
||||
err = ws.SetProxyAddress("testProxy")
|
||||
if err != nil {
|
||||
t.Error("test failed - SetProxyAddress", err)
|
||||
t.Error("SetProxyAddress", err)
|
||||
}
|
||||
|
||||
err = ws.Setup(
|
||||
@@ -140,102 +142,60 @@ func TestWebsocket(t *testing.T) {
|
||||
Connector: func() error { return nil },
|
||||
Subscriber: func(test WebsocketChannelSubscription) error { return nil },
|
||||
UnSubscriber: func(test WebsocketChannelSubscription) error { return nil },
|
||||
Features: &protocol.Features{},
|
||||
})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if ws.GetName() != "exchangeName" {
|
||||
t.Error("test failed - WebsocketSetup")
|
||||
t.Error("WebsocketSetup")
|
||||
}
|
||||
|
||||
if !ws.IsEnabled() {
|
||||
t.Error("test failed - WebsocketSetup")
|
||||
t.Error("WebsocketSetup")
|
||||
}
|
||||
|
||||
if ws.GetProxyAddress() != "testProxy" {
|
||||
t.Error("test failed - WebsocketSetup")
|
||||
t.Error("WebsocketSetup")
|
||||
}
|
||||
|
||||
if ws.GetDefaultURL() != "testDefaultURL" {
|
||||
t.Error("test failed - WebsocketSetup")
|
||||
t.Error("WebsocketSetup")
|
||||
}
|
||||
|
||||
if ws.GetWebsocketURL() != "testRunningURL" {
|
||||
t.Error("test failed - WebsocketSetup")
|
||||
t.Error("WebsocketSetup")
|
||||
}
|
||||
|
||||
if ws.trafficTimeout != time.Duration(2) {
|
||||
t.Error("test failed - WebsocketSetup")
|
||||
t.Error("WebsocketSetup")
|
||||
}
|
||||
// -- Not connected shutdown
|
||||
err = ws.Shutdown()
|
||||
if err == nil {
|
||||
t.Fatal("test failed - should not be connected to able to shut down")
|
||||
t.Fatal("should not be connected to able to shut down")
|
||||
}
|
||||
ws.Wg.Wait()
|
||||
// -- Normal connect
|
||||
err = ws.Connect()
|
||||
if err != nil {
|
||||
t.Fatal("test failed - WebsocketSetup", err)
|
||||
t.Fatal("WebsocketSetup", err)
|
||||
}
|
||||
ws.SetWebsocketURL("ws://demos.kaazing.com/echo")
|
||||
// -- Already connected connect
|
||||
err = ws.Connect()
|
||||
if err == nil {
|
||||
t.Fatal("test failed - should not connect, already connected")
|
||||
t.Fatal("should not connect, already connected")
|
||||
}
|
||||
// -- Normal shutdown
|
||||
err = ws.Shutdown()
|
||||
if err != nil {
|
||||
t.Fatal("test failed - WebsocketSetup", err)
|
||||
t.Fatal("WebsocketSetup", err)
|
||||
}
|
||||
ws.Wg.Wait()
|
||||
}
|
||||
|
||||
func TestFunctionality(t *testing.T) {
|
||||
ws := New()
|
||||
if ws.FormatFunctionality() != NoWebsocketSupportText {
|
||||
t.Fatalf("Test Failed - FormatFunctionality error expected %s but received %s",
|
||||
NoWebsocketSupportText, ws.FormatFunctionality())
|
||||
}
|
||||
|
||||
ws.Functionality = 1 << 31
|
||||
|
||||
if ws.FormatFunctionality() != UnknownWebsocketFunctionality+"[1<<31]" {
|
||||
t.Fatal("Test Failed - GetFunctionality error incorrect error returned")
|
||||
}
|
||||
|
||||
ws.Functionality = WebsocketOrderbookSupported
|
||||
|
||||
if ws.GetFunctionality() != WebsocketOrderbookSupported {
|
||||
t.Fatal("Test Failed - GetFunctionality error incorrect bitmask returned")
|
||||
}
|
||||
|
||||
if !ws.SupportsFunctionality(WebsocketOrderbookSupported) {
|
||||
t.Fatal("Test Failed - SupportsFunctionality error should be true")
|
||||
}
|
||||
|
||||
ws.Functionality = WebsocketTickerSupported | WebsocketOrderbookSupported | WebsocketKlineSupported |
|
||||
WebsocketTradeDataSupported | WebsocketAccountSupported | WebsocketAllowsRequests |
|
||||
WebsocketSubscribeSupported | WebsocketUnsubscribeSupported | WebsocketAuthenticatedEndpointsSupported |
|
||||
WebsocketAccountDataSupported | WebsocketSubmitOrderSupported | WebsocketCancelOrderSupported |
|
||||
WebsocketWithdrawSupported | WebsocketMessageCorrelationSupported | WebsocketSequenceNumberSupported |
|
||||
WebsocketDeadMansSwitchSupported
|
||||
formatted := ws.FormatFunctionality()
|
||||
|
||||
if !strings.Contains(formatted, WebsocketTickerSupportedText) || !strings.Contains(formatted, WebsocketOrderbookSupportedText) ||
|
||||
!strings.Contains(formatted, WebsocketKlineSupportedText) || !strings.Contains(formatted, WebsocketTradeDataSupportedText) ||
|
||||
!strings.Contains(formatted, WebsocketAccountSupportedText) || !strings.Contains(formatted, WebsocketAllowsRequestsText) ||
|
||||
!strings.Contains(formatted, WebsocketSubscribeSupportedText) || !strings.Contains(formatted, WebsocketUnsubscribeSupportedText) ||
|
||||
!strings.Contains(formatted, WebsocketAuthenticatedEndpointsSupportedText) || !strings.Contains(formatted, WebsocketAccountDataSupportedText) ||
|
||||
!strings.Contains(formatted, WebsocketSubmitOrderSupportedText) || !strings.Contains(formatted, WebsocketCancelOrderSupportedText) ||
|
||||
!strings.Contains(formatted, WebsocketWithdrawSupportedText) || !strings.Contains(formatted, WebsocketMessageCorrelationSupportedText) ||
|
||||
!strings.Contains(formatted, WebsocketSequenceNumberSupportedText) || !strings.Contains(formatted, WebsocketDeadMansSwitchSupportedText) {
|
||||
t.Error("Failed to format and include supported websocket features")
|
||||
}
|
||||
}
|
||||
|
||||
// placeholderSubscriber basic function to test subscriptions
|
||||
func placeholderSubscriber(channelToSubscribe WebsocketChannelSubscription) error {
|
||||
return nil
|
||||
@@ -349,8 +309,8 @@ func TestUnsubscriptionWithExistingEntry(t *testing.T) {
|
||||
// TestManageSubscriptionsStartStop logic test
|
||||
func TestManageSubscriptionsStartStop(t *testing.T) {
|
||||
w := Websocket{
|
||||
ShutdownC: make(chan struct{}),
|
||||
Functionality: WebsocketSubscribeSupported | WebsocketUnsubscribeSupported,
|
||||
ShutdownC: make(chan struct{}),
|
||||
features: &protocol.Features{Subscribe: true, Unsubscribe: true},
|
||||
}
|
||||
w.Wg.Add(1)
|
||||
go w.manageSubscriptions()
|
||||
@@ -361,8 +321,8 @@ func TestManageSubscriptionsStartStop(t *testing.T) {
|
||||
// TestManageSubscriptions logic test
|
||||
func TestManageSubscriptions(t *testing.T) {
|
||||
w := Websocket{
|
||||
ShutdownC: make(chan struct{}),
|
||||
Functionality: WebsocketSubscribeSupported | WebsocketUnsubscribeSupported,
|
||||
ShutdownC: make(chan struct{}),
|
||||
features: &protocol.Features{Subscribe: true, Unsubscribe: true},
|
||||
subscribedChannels: []WebsocketChannelSubscription{
|
||||
{
|
||||
Channel: "hello",
|
||||
|
||||
@@ -7,47 +7,12 @@ import (
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wsorderbook"
|
||||
)
|
||||
|
||||
// Websocket functionality list and state consts
|
||||
const (
|
||||
NoWebsocketSupport uint32 = 0
|
||||
WebsocketTickerSupported uint32 = 1 << (iota - 1)
|
||||
WebsocketOrderbookSupported
|
||||
WebsocketKlineSupported
|
||||
WebsocketTradeDataSupported
|
||||
WebsocketAccountSupported
|
||||
WebsocketAllowsRequests
|
||||
WebsocketSubscribeSupported
|
||||
WebsocketUnsubscribeSupported
|
||||
WebsocketAuthenticatedEndpointsSupported
|
||||
WebsocketAccountDataSupported
|
||||
WebsocketSubmitOrderSupported
|
||||
WebsocketCancelOrderSupported
|
||||
WebsocketWithdrawSupported
|
||||
WebsocketMessageCorrelationSupported
|
||||
WebsocketSequenceNumberSupported
|
||||
WebsocketDeadMansSwitchSupported
|
||||
|
||||
WebsocketTickerSupportedText = "TICKER STREAMING SUPPORTED"
|
||||
WebsocketOrderbookSupportedText = "ORDERBOOK STREAMING SUPPORTED"
|
||||
WebsocketKlineSupportedText = "KLINE STREAMING SUPPORTED"
|
||||
WebsocketTradeDataSupportedText = "TRADE STREAMING SUPPORTED"
|
||||
WebsocketAccountSupportedText = "ACCOUNT STREAMING SUPPORTED"
|
||||
WebsocketAllowsRequestsText = "WEBSOCKET REQUESTS SUPPORTED"
|
||||
NoWebsocketSupportText = "WEBSOCKET NOT SUPPORTED"
|
||||
UnknownWebsocketFunctionality = "UNKNOWN FUNCTIONALITY BITMASK"
|
||||
WebsocketSubscribeSupportedText = "WEBSOCKET SUBSCRIBE SUPPORTED"
|
||||
WebsocketUnsubscribeSupportedText = "WEBSOCKET UNSUBSCRIBE SUPPORTED"
|
||||
WebsocketAuthenticatedEndpointsSupportedText = "WEBSOCKET AUTHENTICATED ENDPOINTS SUPPORTED"
|
||||
WebsocketAccountDataSupportedText = "WEBSOCKET ACCOUNT DATA SUPPORTED"
|
||||
WebsocketSubmitOrderSupportedText = "WEBSOCKET SUBMIT ORDER SUPPORTED"
|
||||
WebsocketCancelOrderSupportedText = "WEBSOCKET CANCEL ORDER SUPPORTED"
|
||||
WebsocketWithdrawSupportedText = "WEBSOCKET WITHDRAW SUPPORTED"
|
||||
WebsocketMessageCorrelationSupportedText = "WEBSOCKET MESSAGE CORRELATION SUPPORTED"
|
||||
WebsocketSequenceNumberSupportedText = "WEBSOCKET SEQUENCE NUMBER SUPPORTED"
|
||||
WebsocketDeadMansSwitchSupportedText = "WEBSOCKET DEAD MANS SWITCH SUPPORTED"
|
||||
// WebsocketNotEnabled alerts of a disabled websocket
|
||||
WebsocketNotEnabled = "exchange_websocket_not_enabled"
|
||||
manageSubscriptionsDelay = 5 * time.Second
|
||||
@@ -58,8 +23,6 @@ const (
|
||||
// Websocket defines a return type for websocket connections via the interface
|
||||
// wrapper for routine processing in routines.go
|
||||
type Websocket struct {
|
||||
// Functionality defines websocket stream capabilities
|
||||
Functionality uint32
|
||||
canUseAuthenticatedEndpoints bool
|
||||
enabled bool
|
||||
init bool
|
||||
@@ -93,6 +56,7 @@ type Websocket struct {
|
||||
TrafficAlert chan struct{}
|
||||
// ReadMessageErrors will received all errors from ws.ReadMessage() and verify if its a disconnection
|
||||
ReadMessageErrors chan error
|
||||
features *protocol.Features
|
||||
}
|
||||
|
||||
type WebsocketSetup struct {
|
||||
@@ -106,6 +70,7 @@ type WebsocketSetup struct {
|
||||
Connector func() error
|
||||
Subscriber func(channelToSubscribe WebsocketChannelSubscription) error
|
||||
UnSubscriber func(channelToUnsubscribe WebsocketChannelSubscription) error
|
||||
Features *protocol.Features
|
||||
}
|
||||
|
||||
// WebsocketChannelSubscription container for websocket subscriptions
|
||||
|
||||
@@ -242,6 +242,39 @@ func BenchmarkNoBufferPerformance(b *testing.B) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdates(t *testing.T) {
|
||||
obl, curr, _, _, err := createSnapshot()
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
obl.updateAsksByPrice(obl.ob[curr][asset.Spot], &WebsocketOrderbookUpdate{
|
||||
Bids: itemArray[5],
|
||||
Asks: itemArray[5],
|
||||
CurrencyPair: curr,
|
||||
UpdateTime: time.Now(),
|
||||
AssetType: asset.Spot,
|
||||
})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
obl.updateAsksByPrice(obl.ob[curr][asset.Spot], &WebsocketOrderbookUpdate{
|
||||
Bids: itemArray[0],
|
||||
Asks: itemArray[0],
|
||||
CurrencyPair: curr,
|
||||
UpdateTime: time.Now(),
|
||||
AssetType: asset.Spot,
|
||||
})
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
if len(obl.ob[curr][asset.Spot].Asks) != 3 {
|
||||
t.Error("Did not update")
|
||||
}
|
||||
}
|
||||
|
||||
// TestHittingTheBuffer logic test
|
||||
func TestHittingTheBuffer(t *testing.T) {
|
||||
obl, curr, _, _, err := createSnapshot()
|
||||
|
||||
@@ -29,11 +29,11 @@ func TestSetup(t *testing.T) {
|
||||
yobitConfig := config.GetConfig()
|
||||
err := yobitConfig.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Yobit load config error", err)
|
||||
t.Fatal("Yobit load config error", err)
|
||||
}
|
||||
conf, err := yobitConfig.GetExchangeConfig("Yobit")
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Yobit init error", err)
|
||||
t.Fatal("Yobit init error", err)
|
||||
}
|
||||
conf.API.Credentials.Key = apiKey
|
||||
conf.API.Credentials.Secret = apiSecret
|
||||
@@ -41,7 +41,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = y.Setup(conf)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - Yobit setup error", err)
|
||||
t.Fatal("Yobit setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ func TestFetchTradablePairs(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.FetchTradablePairs(asset.Spot)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed. FetchTradablePairs err: %s", err)
|
||||
t.Errorf("FetchTradablePairs err: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ func TestGetInfo(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.GetInfo()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetInfo() error")
|
||||
t.Error("GetInfo() error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.GetTicker("btc_usd")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTicker() error", err)
|
||||
t.Error("GetTicker() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ func TestGetDepth(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.GetDepth("btc_usd")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepth() error", err)
|
||||
t.Error("GetDepth() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ func TestGetTrades(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.GetTrades("btc_usd")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetTrades() error", err)
|
||||
t.Error("GetTrades() error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ func TestGetOpenOrders(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.GetOpenOrders("")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetOpenOrders() error", err)
|
||||
t.Error("GetOpenOrders() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ func TestGetOrderInfo(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.GetOrderInfo("6196974")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetOrderInfo() error", err)
|
||||
t.Error("GetOrderInfo() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ func TestCancelOrder(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.CancelExistingOrder(1337)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CancelOrder() error", err)
|
||||
t.Error("CancelOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ func TestTrade(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.Trade("", exchange.BuyOrderSide.ToLower().ToString(), 0, 0)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - Trade() error", err)
|
||||
t.Error("Trade() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ func TestWithdrawCoinsToAddress(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.WithdrawCoinsToAddress("", 0, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - WithdrawCoinsToAddress() error", err)
|
||||
t.Error("WithdrawCoinsToAddress() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ func TestCreateYobicode(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.CreateCoupon("bla", 0)
|
||||
if err == nil {
|
||||
t.Error("Test Failed - CreateYobicode() error", err)
|
||||
t.Error("CreateYobicode() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ func TestRedeemYobicode(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := y.RedeemCoupon("bla2")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - RedeemYobicode() error", err)
|
||||
t.Error("RedeemYobicode() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -193,7 +193,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(2000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -209,14 +209,14 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// CryptocurrencyWithdrawalFee Basic
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -225,7 +225,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -233,7 +233,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -250,7 +250,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -260,7 +260,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
feeBuilder.BankTransactionType = exchange.Qiwi
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -270,7 +270,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
feeBuilder.BankTransactionType = exchange.WireTransfer
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -280,7 +280,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
feeBuilder.BankTransactionType = exchange.Payeer
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0.03) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.03), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.03), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -290,7 +290,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FiatCurrency = currency.RUR
|
||||
feeBuilder.BankTransactionType = exchange.Capitalist
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -300,7 +300,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
feeBuilder.BankTransactionType = exchange.AdvCash
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0.04) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.04), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.04), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -310,7 +310,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FiatCurrency = currency.RUR
|
||||
feeBuilder.BankTransactionType = exchange.PerfectMoney
|
||||
if resp, err := y.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -458,7 +458,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := y.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -521,12 +521,12 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if apiKey != "" || apiSecret != "" {
|
||||
_, err := y.GetDepositAddress(currency.BTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
||||
t.Error("GetDepositAddress() Expected error")
|
||||
}
|
||||
} else {
|
||||
_, err := y.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error")
|
||||
t.Error("GetDepositAddress() error")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -72,9 +73,23 @@ func (y *Yobit) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: false,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
UserTradeHistory: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
FiatDepositFee: true,
|
||||
FiatWithdrawalFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||
exchange.WithdrawFiatViaWebsiteOnly,
|
||||
|
||||
@@ -31,11 +31,11 @@ func TestSetup(t *testing.T) {
|
||||
cfg := config.GetConfig()
|
||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - ZB load config error", err)
|
||||
t.Fatal("ZB load config error", err)
|
||||
}
|
||||
zbConfig, err := cfg.GetExchangeConfig("ZB")
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - ZB Setup() init error", err)
|
||||
t.Fatal("ZB Setup() init error", err)
|
||||
}
|
||||
zbConfig.API.AuthenticatedSupport = true
|
||||
zbConfig.API.AuthenticatedWebsocketSupport = true
|
||||
@@ -44,7 +44,7 @@ func TestSetup(t *testing.T) {
|
||||
|
||||
err = z.Setup(zbConfig)
|
||||
if err != nil {
|
||||
t.Fatal("Test Failed - ZB setup error", err)
|
||||
t.Fatal("ZB setup error", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +90,7 @@ func TestSpotNewOrder(t *testing.T) {
|
||||
}
|
||||
orderid, err := z.SpotNewOrder(arg)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - ZB SpotNewOrder: %s", err)
|
||||
t.Errorf("ZB SpotNewOrder: %s", err)
|
||||
} else {
|
||||
t.Log(orderid)
|
||||
}
|
||||
@@ -105,7 +105,7 @@ func TestCancelExistingOrder(t *testing.T) {
|
||||
|
||||
err := z.CancelExistingOrder(20180629145864850, "btc_usdt")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - ZB CancelExistingOrder: %s", err)
|
||||
t.Errorf("ZB CancelExistingOrder: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ func TestGetLatestSpotPrice(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := z.GetLatestSpotPrice("btc_usdt")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - ZB GetLatestSpotPrice: %s", err)
|
||||
t.Errorf("ZB GetLatestSpotPrice: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ func TestGetTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := z.GetTicker("btc_usdt")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - ZB GetTicker: %s", err)
|
||||
t.Errorf("ZB GetTicker: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ func TestGetTickers(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := z.GetTickers()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - ZB GetTicker: %s", err)
|
||||
t.Errorf("ZB GetTicker: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +137,7 @@ func TestGetOrderbook(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := z.GetOrderbook("btc_usdt")
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - ZB GetTicker: %s", err)
|
||||
t.Errorf("ZB GetTicker: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ func TestGetMarkets(t *testing.T) {
|
||||
t.Parallel()
|
||||
_, err := z.GetMarkets()
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - ZB GetMarkets: %s", err)
|
||||
t.Errorf("ZB GetMarkets: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ func TestGetSpotKline(t *testing.T) {
|
||||
}
|
||||
_, err := z.GetSpotKline(arg)
|
||||
if err != nil {
|
||||
t.Errorf("Test failed - ZB GetSpotKline: %s", err)
|
||||
t.Errorf("ZB GetSpotKline: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,7 @@ func TestGetFee(t *testing.T) {
|
||||
// CryptocurrencyTradeFee Basic
|
||||
if resp, err := z.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Error(err)
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.0015), resp)
|
||||
}
|
||||
|
||||
// CryptocurrencyTradeFee High quantity
|
||||
@@ -207,7 +207,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Amount = 1000
|
||||
feeBuilder.PurchasePrice = 1000
|
||||
if resp, err := z.GetFee(feeBuilder); resp != float64(2000) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(2000), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -215,7 +215,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.IsMaker = true
|
||||
if resp, err := z.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.002), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -223,14 +223,14 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.PurchasePrice = -1000
|
||||
if resp, err := z.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
// CryptocurrencyWithdrawalFee Basic
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := z.GetFee(feeBuilder); resp != float64(0.005) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0.005), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0.005), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -239,7 +239,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.Pair.Base = currency.NewCode("hello")
|
||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||
if resp, err := z.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -247,7 +247,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||
if resp, err := z.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -255,7 +255,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder = setFeeBuilder()
|
||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||
if resp, err := z.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
|
||||
@@ -264,7 +264,7 @@ func TestGetFee(t *testing.T) {
|
||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||
feeBuilder.FiatCurrency = currency.USD
|
||||
if resp, err := z.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Errorf("GetFee() error. Expected: %f, Received: %f", float64(0), resp)
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
@@ -413,12 +413,12 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
if z.ValidateAPICredentials() {
|
||||
_, err := z.GetAccountInfo()
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
||||
t.Error("GetAccountInfo() error", err)
|
||||
}
|
||||
} else {
|
||||
_, err := z.GetAccountInfo()
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetAccountInfo() error")
|
||||
t.Error("GetAccountInfo() Expected error")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -426,7 +426,7 @@ func TestGetAccountInfo(t *testing.T) {
|
||||
func TestModifyOrder(t *testing.T) {
|
||||
_, err := z.ModifyOrder(&exchange.ModifyOrder{})
|
||||
if err == nil {
|
||||
t.Error("Test failed - ModifyOrder() error")
|
||||
t.Error("ModifyOrder() Expected error")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -490,13 +490,13 @@ func TestGetDepositAddress(t *testing.T) {
|
||||
if apiKey != "" || apiSecret != "" {
|
||||
_, err := z.GetDepositAddress(currency.BTC, "")
|
||||
if err != nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error PLEASE MAKE SURE YOU CREATE DEPOSIT ADDRESSES VIA ZB.COM",
|
||||
t.Error("GetDepositAddress() error PLEASE MAKE SURE YOU CREATE DEPOSIT ADDRESSES VIA ZB.COM",
|
||||
err)
|
||||
}
|
||||
} else {
|
||||
_, err := z.GetDepositAddress(currency.BTC, "")
|
||||
if err == nil {
|
||||
t.Error("Test Failed - GetDepositAddress() error")
|
||||
t.Error("GetDepositAddress() Expected error")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||
@@ -69,9 +70,32 @@ func (z *ZB) SetDefaults() {
|
||||
Supports: exchange.FeaturesSupported{
|
||||
REST: true,
|
||||
Websocket: true,
|
||||
RESTCapabilities: exchange.ProtocolFeatures{
|
||||
AutoPairUpdates: true,
|
||||
TickerBatching: true,
|
||||
RESTCapabilities: protocol.Features{
|
||||
TickerBatching: true,
|
||||
TickerFetching: true,
|
||||
KlineFetching: true,
|
||||
OrderbookFetching: true,
|
||||
AutoPairUpdates: true,
|
||||
AccountInfo: true,
|
||||
GetOrder: true,
|
||||
GetOrders: true,
|
||||
CancelOrder: true,
|
||||
CryptoDeposit: true,
|
||||
CryptoWithdrawal: true,
|
||||
TradeFee: true,
|
||||
CryptoDepositFee: true,
|
||||
CryptoWithdrawalFee: true,
|
||||
},
|
||||
WebsocketCapabilities: protocol.Features{
|
||||
TickerFetching: true,
|
||||
TradeFetching: true,
|
||||
OrderbookFetching: true,
|
||||
Subscribe: true,
|
||||
AuthenticatedEndpoints: true,
|
||||
AccountInfo: true,
|
||||
CancelOrder: true,
|
||||
SubmitOrder: true,
|
||||
MessageCorrelation: true,
|
||||
},
|
||||
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||
exchange.NoFiatWithdrawals,
|
||||
@@ -92,15 +116,6 @@ func (z *ZB) SetDefaults() {
|
||||
z.API.Endpoints.URLSecondary = z.API.Endpoints.URLSecondaryDefault
|
||||
z.API.Endpoints.WebsocketURL = zbWebsocketAPI
|
||||
z.Websocket = wshandler.New()
|
||||
z.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
||||
wshandler.WebsocketOrderbookSupported |
|
||||
wshandler.WebsocketTradeDataSupported |
|
||||
wshandler.WebsocketSubscribeSupported |
|
||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
||||
wshandler.WebsocketAccountDataSupported |
|
||||
wshandler.WebsocketCancelOrderSupported |
|
||||
wshandler.WebsocketSubmitOrderSupported |
|
||||
wshandler.WebsocketMessageCorrelationSupported
|
||||
z.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||
z.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||
}
|
||||
@@ -128,6 +143,7 @@ func (z *ZB) Setup(exch *config.ExchangeConfig) error {
|
||||
RunningURL: exch.API.Endpoints.WebsocketURL,
|
||||
Connector: z.WsConnect,
|
||||
Subscriber: z.Subscribe,
|
||||
Features: &z.Features.Supports.WebsocketCapabilities,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user