mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-13 15:09:42 +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:
@@ -6,13 +6,13 @@ func TestEncryptOrDecrypt(t *testing.T) {
|
|||||||
reValue := EncryptOrDecrypt(true)
|
reValue := EncryptOrDecrypt(true)
|
||||||
if reValue != "encrypted" {
|
if reValue != "encrypted" {
|
||||||
t.Error(
|
t.Error(
|
||||||
"Test failed - Tools/Config/Config_test.go - EncryptOrDecrypt Error",
|
"Tools/Config/Config_test.go - EncryptOrDecrypt Error",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
reValue = EncryptOrDecrypt(false)
|
reValue = EncryptOrDecrypt(false)
|
||||||
if reValue != "decrypted" {
|
if reValue != "decrypted" {
|
||||||
t.Error(
|
t.Error(
|
||||||
"Test failed - Tools/Config/Config_test.go - EncryptOrDecrypt Error",
|
"Tools/Config/Config_test.go - EncryptOrDecrypt Error",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ func TestSetup(t *testing.T) {
|
|||||||
cfg.LoadConfig("../../testdata/configtest.json")
|
cfg.LoadConfig("../../testdata/configtest.json")
|
||||||
{{.Name}}Config, err := cfg.GetExchangeConfig("{{.CapitalName}}")
|
{{.Name}}Config, err := cfg.GetExchangeConfig("{{.CapitalName}}")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - {{.CapitalName}} Setup() init error")
|
t.Error("{{.CapitalName}} Setup() init error")
|
||||||
}
|
}
|
||||||
|
|
||||||
{{.Name}}Config.API.AuthenticatedSupport = true
|
{{.Name}}Config.API.AuthenticatedSupport = true
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ func SendWebsocketEvent(event string, reqData interface{}, result *WebsocketEven
|
|||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig(config.ConfigFile, true)
|
err := cfg.LoadConfig(config.File, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to load config file: %s", err)
|
log.Fatalf("Failed to load config file: %s", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,13 +16,13 @@ func TestIsEnabled(t *testing.T) {
|
|||||||
expected := "Enabled"
|
expected := "Enabled"
|
||||||
actual := IsEnabled(true)
|
actual := IsEnabled(true)
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf("Test failed. Expected %s. Actual %s", expected, actual)
|
t.Errorf("Expected %s. Actual %s", expected, actual)
|
||||||
}
|
}
|
||||||
|
|
||||||
expected = "Disabled"
|
expected = "Disabled"
|
||||||
actual = IsEnabled(false)
|
actual = IsEnabled(false)
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf("Test failed. Expected %s. Actual %s", expected, actual)
|
t.Errorf("Expected %s. Actual %s", expected, actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,44 +30,44 @@ func TestIsValidCryptoAddress(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
b, err := IsValidCryptoAddress("1Mz7153HMuxXTuR2R1t78mGSdzaAtNbBWX", "bTC")
|
b, err := IsValidCryptoAddress("1Mz7153HMuxXTuR2R1t78mGSdzaAtNbBWX", "bTC")
|
||||||
if err != nil && !b {
|
if err != nil && !b {
|
||||||
t.Errorf("Test Failed - Common IsValidCryptoAddress error: %s", err)
|
t.Errorf("Common IsValidCryptoAddress error: %s", err)
|
||||||
}
|
}
|
||||||
b, err = IsValidCryptoAddress("0Mz7153HMuxXTuR2R1t78mGSdzaAtNbBWX", "btc")
|
b, err = IsValidCryptoAddress("0Mz7153HMuxXTuR2R1t78mGSdzaAtNbBWX", "btc")
|
||||||
if err == nil && b {
|
if err == nil && b {
|
||||||
t.Error("Test Failed - Common IsValidCryptoAddress error")
|
t.Error("Common IsValidCryptoAddress error")
|
||||||
}
|
}
|
||||||
b, err = IsValidCryptoAddress("1Mz7153HMuxXTuR2R1t78mGSdzaAtNbBWX", "lTc")
|
b, err = IsValidCryptoAddress("1Mz7153HMuxXTuR2R1t78mGSdzaAtNbBWX", "lTc")
|
||||||
if err == nil && b {
|
if err == nil && b {
|
||||||
t.Error("Test Failed - Common IsValidCryptoAddress error")
|
t.Error("Common IsValidCryptoAddress error")
|
||||||
}
|
}
|
||||||
b, err = IsValidCryptoAddress("3CDJNfdWX8m2NwuGUV3nhXHXEeLygMXoAj", "ltc")
|
b, err = IsValidCryptoAddress("3CDJNfdWX8m2NwuGUV3nhXHXEeLygMXoAj", "ltc")
|
||||||
if err != nil && !b {
|
if err != nil && !b {
|
||||||
t.Errorf("Test Failed - Common IsValidCryptoAddress error: %s", err)
|
t.Errorf("Common IsValidCryptoAddress error: %s", err)
|
||||||
}
|
}
|
||||||
b, err = IsValidCryptoAddress("NCDJNfdWX8m2NwuGUV3nhXHXEeLygMXoAj", "lTc")
|
b, err = IsValidCryptoAddress("NCDJNfdWX8m2NwuGUV3nhXHXEeLygMXoAj", "lTc")
|
||||||
if err == nil && b {
|
if err == nil && b {
|
||||||
t.Error("Test Failed - Common IsValidCryptoAddress error")
|
t.Error("Common IsValidCryptoAddress error")
|
||||||
}
|
}
|
||||||
b, err = IsValidCryptoAddress(
|
b, err = IsValidCryptoAddress(
|
||||||
"0xb794f5ea0ba39494ce839613fffba74279579268",
|
"0xb794f5ea0ba39494ce839613fffba74279579268",
|
||||||
"eth",
|
"eth",
|
||||||
)
|
)
|
||||||
if err != nil && b {
|
if err != nil && b {
|
||||||
t.Errorf("Test Failed - Common IsValidCryptoAddress error: %s", err)
|
t.Errorf("Common IsValidCryptoAddress error: %s", err)
|
||||||
}
|
}
|
||||||
b, err = IsValidCryptoAddress(
|
b, err = IsValidCryptoAddress(
|
||||||
"xxb794f5ea0ba39494ce839613fffba74279579268",
|
"xxb794f5ea0ba39494ce839613fffba74279579268",
|
||||||
"eTh",
|
"eTh",
|
||||||
)
|
)
|
||||||
if err == nil && b {
|
if err == nil && b {
|
||||||
t.Error("Test Failed - Common IsValidCryptoAddress error")
|
t.Error("Common IsValidCryptoAddress error")
|
||||||
}
|
}
|
||||||
b, err = IsValidCryptoAddress(
|
b, err = IsValidCryptoAddress(
|
||||||
"xxb794f5ea0ba39494ce839613fffba74279579268",
|
"xxb794f5ea0ba39494ce839613fffba74279579268",
|
||||||
"ding",
|
"ding",
|
||||||
)
|
)
|
||||||
if err == nil && b {
|
if err == nil && b {
|
||||||
t.Error("Test Failed - Common IsValidCryptoAddress error")
|
t.Error("Common IsValidCryptoAddress error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +78,7 @@ func TestStringSliceDifference(t *testing.T) {
|
|||||||
expectedOutput := []string{"hello moto"}
|
expectedOutput := []string{"hello moto"}
|
||||||
actualResult := StringSliceDifference(originalInputOne, originalInputTwo)
|
actualResult := StringSliceDifference(originalInputOne, originalInputTwo)
|
||||||
if reflect.DeepEqual(expectedOutput, actualResult) {
|
if reflect.DeepEqual(expectedOutput, actualResult) {
|
||||||
t.Errorf("Test failed. Expected '%s'. Actual '%s'",
|
t.Errorf("Expected '%s'. Actual '%s'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,12 +92,12 @@ func TestStringDataContains(t *testing.T) {
|
|||||||
expectedOutputTwo := false
|
expectedOutputTwo := false
|
||||||
actualResult := StringDataContains(originalHaystack, originalNeedle)
|
actualResult := StringDataContains(originalHaystack, originalNeedle)
|
||||||
if actualResult != expectedOutput {
|
if actualResult != expectedOutput {
|
||||||
t.Errorf("Test failed. Expected '%v'. Actual '%v'",
|
t.Errorf("Expected '%v'. Actual '%v'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
actualResult = StringDataContains(originalHaystack, anotherNeedle)
|
actualResult = StringDataContains(originalHaystack, anotherNeedle)
|
||||||
if actualResult != expectedOutputTwo {
|
if actualResult != expectedOutputTwo {
|
||||||
t.Errorf("Test failed. Expected '%v'. Actual '%v'",
|
t.Errorf("Expected '%v'. Actual '%v'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,12 +111,12 @@ func TestStringDataCompare(t *testing.T) {
|
|||||||
expectedOutputTwo := false
|
expectedOutputTwo := false
|
||||||
actualResult := StringDataCompare(originalHaystack, originalNeedle)
|
actualResult := StringDataCompare(originalHaystack, originalNeedle)
|
||||||
if actualResult != expectedOutput {
|
if actualResult != expectedOutput {
|
||||||
t.Errorf("Test failed. Expected '%v'. Actual '%v'",
|
t.Errorf("Expected '%v'. Actual '%v'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
actualResult = StringDataCompare(originalHaystack, anotherNeedle)
|
actualResult = StringDataCompare(originalHaystack, anotherNeedle)
|
||||||
if actualResult != expectedOutputTwo {
|
if actualResult != expectedOutputTwo {
|
||||||
t.Errorf("Test failed. Expected '%v'. Actual '%v'",
|
t.Errorf("Expected '%v'. Actual '%v'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,13 +130,13 @@ func TestStringDataCompareUpper(t *testing.T) {
|
|||||||
expectedOutputTwo := false
|
expectedOutputTwo := false
|
||||||
actualResult := StringDataCompareInsensitive(originalHaystack, originalNeedle)
|
actualResult := StringDataCompareInsensitive(originalHaystack, originalNeedle)
|
||||||
if actualResult != expectedOutput {
|
if actualResult != expectedOutput {
|
||||||
t.Errorf("Test failed. Expected '%v'. Actual '%v'",
|
t.Errorf("Expected '%v'. Actual '%v'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
actualResult = StringDataCompareInsensitive(originalHaystack, anotherNeedle)
|
actualResult = StringDataCompareInsensitive(originalHaystack, anotherNeedle)
|
||||||
if actualResult != expectedOutputTwo {
|
if actualResult != expectedOutputTwo {
|
||||||
t.Errorf("Test failed. Expected '%v'. Actual '%v'",
|
t.Errorf("Expected '%v'. Actual '%v'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -150,12 +150,12 @@ func TestStringDataContainsUpper(t *testing.T) {
|
|||||||
expectedOutputTwo := false
|
expectedOutputTwo := false
|
||||||
actualResult := StringDataContainsInsensitive(originalHaystack, originalNeedle)
|
actualResult := StringDataContainsInsensitive(originalHaystack, originalNeedle)
|
||||||
if actualResult != expectedOutput {
|
if actualResult != expectedOutput {
|
||||||
t.Errorf("Test failed. Expected '%v'. Actual '%v'",
|
t.Errorf("Expected '%v'. Actual '%v'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
actualResult = StringDataContainsInsensitive(originalHaystack, anotherNeedle)
|
actualResult = StringDataContainsInsensitive(originalHaystack, anotherNeedle)
|
||||||
if actualResult != expectedOutputTwo {
|
if actualResult != expectedOutputTwo {
|
||||||
t.Errorf("Test failed. Expected '%v'. Actual '%v'",
|
t.Errorf("Expected '%v'. Actual '%v'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -163,13 +163,13 @@ func TestStringDataContainsUpper(t *testing.T) {
|
|||||||
func TestYesOrNo(t *testing.T) {
|
func TestYesOrNo(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
if !YesOrNo("y") {
|
if !YesOrNo("y") {
|
||||||
t.Error("Test failed - Common YesOrNo Error.")
|
t.Error("Common YesOrNo Error.")
|
||||||
}
|
}
|
||||||
if !YesOrNo("yes") {
|
if !YesOrNo("yes") {
|
||||||
t.Error("Test failed - Common YesOrNo Error.")
|
t.Error("Common YesOrNo Error.")
|
||||||
}
|
}
|
||||||
if YesOrNo("ding") {
|
if YesOrNo("ding") {
|
||||||
t.Error("Test failed - Common YesOrNo Error.")
|
t.Error("Common YesOrNo Error.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,42 +187,42 @@ func TestSendHTTPRequest(t *testing.T) {
|
|||||||
strings.NewReader(""),
|
strings.NewReader(""),
|
||||||
)
|
)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. ")
|
t.Error("Expected error 'invalid HTTP method specified'")
|
||||||
}
|
}
|
||||||
_, err = SendHTTPRequest(
|
_, err = SendHTTPRequest(
|
||||||
methodPost, "https://www.google.com", headers,
|
methodPost, "https://www.google.com", headers,
|
||||||
strings.NewReader(""),
|
strings.NewReader(""),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed. %s ", err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
_, err = SendHTTPRequest(
|
_, err = SendHTTPRequest(
|
||||||
methodGet, "https://www.google.com", headers,
|
methodGet, "https://www.google.com", headers,
|
||||||
strings.NewReader(""),
|
strings.NewReader(""),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed. %s ", err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
_, err = SendHTTPRequest(
|
_, err = SendHTTPRequest(
|
||||||
methodDelete, "https://www.google.com", headers,
|
methodDelete, "https://www.google.com", headers,
|
||||||
strings.NewReader(""),
|
strings.NewReader(""),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed. %s ", err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
_, err = SendHTTPRequest(
|
_, err = SendHTTPRequest(
|
||||||
methodGet, ":missingprotocolscheme", headers,
|
methodGet, ":missingprotocolscheme", headers,
|
||||||
strings.NewReader(""),
|
strings.NewReader(""),
|
||||||
)
|
)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common HTTPRequest accepted missing protocol")
|
t.Error("Common HTTPRequest accepted missing protocol")
|
||||||
}
|
}
|
||||||
_, err = SendHTTPRequest(
|
_, err = SendHTTPRequest(
|
||||||
methodGet, "test://unsupportedprotocolscheme", headers,
|
methodGet, "test://unsupportedprotocolscheme", headers,
|
||||||
strings.NewReader(""),
|
strings.NewReader(""),
|
||||||
)
|
)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common HTTPRequest accepted invalid protocol")
|
t.Error("Common HTTPRequest accepted invalid protocol")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,23 +243,23 @@ func TestSendHTTPGetRequest(t *testing.T) {
|
|||||||
|
|
||||||
err := SendHTTPGetRequest(ethURL, true, true, &result)
|
err := SendHTTPGetRequest(ethURL, true, true, &result)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed - common SendHTTPGetRequest error: %s", err)
|
t.Errorf("common SendHTTPGetRequest error: %s", err)
|
||||||
}
|
}
|
||||||
err = SendHTTPGetRequest("DINGDONG", true, false, &result)
|
err = SendHTTPGetRequest("DINGDONG", true, false, &result)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed - common SendHTTPGetRequest error")
|
t.Error("common SendHTTPGetRequest error")
|
||||||
}
|
}
|
||||||
err = SendHTTPGetRequest(ethURL, false, false, &result)
|
err = SendHTTPGetRequest(ethURL, false, false, &result)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed - common SendHTTPGetRequest error: %s", err)
|
t.Errorf("common SendHTTPGetRequest error: %s", err)
|
||||||
}
|
}
|
||||||
err = SendHTTPGetRequest("https://httpstat.us/202", false, false, &result)
|
err = SendHTTPGetRequest("https://httpstat.us/202", false, false, &result)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed = common SendHTTPGetRequest error: Ignored unexpected status code")
|
t.Error("= common SendHTTPGetRequest error: Ignored unexpected status code")
|
||||||
}
|
}
|
||||||
err = SendHTTPGetRequest(ethURL, true, false, &badresult)
|
err = SendHTTPGetRequest(ethURL, true, false, &badresult)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed - common SendHTTPGetRequest error: Unmarshalled into bad type")
|
t.Error("common SendHTTPGetRequest error: Unmarshalled into bad type")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -282,14 +282,14 @@ func TestJSONEncode(t *testing.T) {
|
|||||||
|
|
||||||
bitey, err := JSONEncode(v)
|
bitey, err := JSONEncode(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed - common JSONEncode error: %s", err)
|
t.Errorf("common JSONEncode error: %s", err)
|
||||||
}
|
}
|
||||||
if string(bitey) != expectOutputString {
|
if string(bitey) != expectOutputString {
|
||||||
t.Error("Test failed - common JSONEncode error")
|
t.Error("common JSONEncode error")
|
||||||
}
|
}
|
||||||
_, err = JSONEncode("WigWham")
|
_, err = JSONEncode("WigWham")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed - common JSONEncode error: %s", err)
|
t.Errorf("common JSONEncode error: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -299,7 +299,7 @@ func TestJSONDecode(t *testing.T) {
|
|||||||
result := "Not a memory address"
|
result := "Not a memory address"
|
||||||
err := JSONDecode(data, result)
|
err := JSONDecode(data, result)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common JSONDecode, unmarshalled when address not supplied")
|
t.Error("Common JSONDecode, unmarshalled when address not supplied")
|
||||||
}
|
}
|
||||||
|
|
||||||
type test struct {
|
type test struct {
|
||||||
@@ -314,7 +314,7 @@ func TestJSONDecode(t *testing.T) {
|
|||||||
data = []byte(`{"status":1,"data":null}`)
|
data = []byte(`{"status":1,"data":null}`)
|
||||||
err = JSONDecode(data, &v)
|
err = JSONDecode(data, &v)
|
||||||
if err != nil || v.Status != 1 {
|
if err != nil || v.Status != 1 {
|
||||||
t.Errorf("Test failed. Common JSONDecode. Data: %v \nError: %s",
|
t.Errorf("Common JSONDecode. Data: %v \nError: %s",
|
||||||
v, err)
|
v, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -329,7 +329,7 @@ func TestEncodeURLValues(t *testing.T) {
|
|||||||
|
|
||||||
output := EncodeURLValues(urlstring, values)
|
output := EncodeURLValues(urlstring, values)
|
||||||
if output != expectedOutput {
|
if output != expectedOutput {
|
||||||
t.Error("Test Failed - common EncodeURLValues error")
|
t.Error("common EncodeURLValues error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -341,12 +341,12 @@ func TestExtractHost(t *testing.T) {
|
|||||||
actualResult := ExtractHost(address)
|
actualResult := ExtractHost(address)
|
||||||
if expectedOutput != actualResult {
|
if expectedOutput != actualResult {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
"Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
actualResultTwo := ExtractHost(addresstwo)
|
actualResultTwo := ExtractHost(addresstwo)
|
||||||
if expectedOutput != actualResultTwo {
|
if expectedOutput != actualResultTwo {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
"Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
|
|
||||||
address = "192.168.1.100:1337"
|
address = "192.168.1.100:1337"
|
||||||
@@ -354,7 +354,7 @@ func TestExtractHost(t *testing.T) {
|
|||||||
actualResult = ExtractHost(address)
|
actualResult = ExtractHost(address)
|
||||||
if expectedOutput != actualResult {
|
if expectedOutput != actualResult {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
"Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -365,7 +365,7 @@ func TestExtractPort(t *testing.T) {
|
|||||||
actualResult := ExtractPort(address)
|
actualResult := ExtractPort(address)
|
||||||
if expectedOutput != actualResult {
|
if expectedOutput != actualResult {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%d'. Actual '%d'.", expectedOutput, actualResult)
|
"Expected '%d'. Actual '%d'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,11 +378,11 @@ func TestOutputCSV(t *testing.T) {
|
|||||||
|
|
||||||
err := OutputCSV(path, data)
|
err := OutputCSV(path, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed - common OutputCSV error: %s", err)
|
t.Errorf("common OutputCSV error: %s", err)
|
||||||
}
|
}
|
||||||
err = OutputCSV("/:::notapath:::", data)
|
err = OutputCSV("/:::notapath:::", data)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed - common OutputCSV, tried writing to invalid path")
|
t.Error("common OutputCSV, tried writing to invalid path")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -397,7 +397,7 @@ func TestGetURIPath(t *testing.T) {
|
|||||||
for testInput, expectedOutput := range testTable {
|
for testInput, expectedOutput := range testTable {
|
||||||
actualOutput := GetURIPath(testInput)
|
actualOutput := GetURIPath(testInput)
|
||||||
if actualOutput != expectedOutput {
|
if actualOutput != expectedOutput {
|
||||||
t.Errorf("Test failed. Expected '%s'. Actual '%s'.",
|
t.Errorf("Expected '%s'. Actual '%s'.",
|
||||||
expectedOutput, actualOutput)
|
expectedOutput, actualOutput)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -407,7 +407,7 @@ func TestGetExecutablePath(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
_, err := GetExecutablePath()
|
_, err := GetExecutablePath()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed. Common GetExecutablePath. Error: %s", err)
|
t.Errorf("Common GetExecutablePath. Error: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,20 +12,20 @@ func TestFloatFromString(t *testing.T) {
|
|||||||
|
|
||||||
actualOutput, err := FloatFromString(testString)
|
actualOutput, err := FloatFromString(testString)
|
||||||
if actualOutput != expectedOutput || err != nil {
|
if actualOutput != expectedOutput || err != nil {
|
||||||
t.Errorf("Test failed. Common FloatFromString. Expected '%v'. Actual '%v'. Error: %s",
|
t.Errorf("Common FloatFromString. Expected '%v'. Actual '%v'. Error: %s",
|
||||||
expectedOutput, actualOutput, err)
|
expectedOutput, actualOutput, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var testByte []byte
|
var testByte []byte
|
||||||
_, err = FloatFromString(testByte)
|
_, err = FloatFromString(testByte)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common FloatFromString. Converted non-string.")
|
t.Error("Common FloatFromString. Converted non-string.")
|
||||||
}
|
}
|
||||||
|
|
||||||
testString = " something unconvertible "
|
testString = " something unconvertible "
|
||||||
_, err = FloatFromString(testString)
|
_, err = FloatFromString(testString)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common FloatFromString. Converted invalid syntax.")
|
t.Error("Common FloatFromString. Converted invalid syntax.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,20 +36,20 @@ func TestIntFromString(t *testing.T) {
|
|||||||
|
|
||||||
actualOutput, err := IntFromString(testString)
|
actualOutput, err := IntFromString(testString)
|
||||||
if actualOutput != expectedOutput || err != nil {
|
if actualOutput != expectedOutput || err != nil {
|
||||||
t.Errorf("Test failed. Common IntFromString. Expected '%v'. Actual '%v'. Error: %s",
|
t.Errorf("Common IntFromString. Expected '%v'. Actual '%v'. Error: %s",
|
||||||
expectedOutput, actualOutput, err)
|
expectedOutput, actualOutput, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var testByte []byte
|
var testByte []byte
|
||||||
_, err = IntFromString(testByte)
|
_, err = IntFromString(testByte)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common IntFromString. Converted non-string.")
|
t.Error("Common IntFromString. Converted non-string.")
|
||||||
}
|
}
|
||||||
|
|
||||||
testString = "1.41421356237"
|
testString = "1.41421356237"
|
||||||
_, err = IntFromString(testString)
|
_, err = IntFromString(testString)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common IntFromString. Converted invalid syntax.")
|
t.Error("Common IntFromString. Converted invalid syntax.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,20 +60,20 @@ func TestInt64FromString(t *testing.T) {
|
|||||||
|
|
||||||
actualOutput, err := Int64FromString(testString)
|
actualOutput, err := Int64FromString(testString)
|
||||||
if actualOutput != expectedOutput || err != nil {
|
if actualOutput != expectedOutput || err != nil {
|
||||||
t.Errorf("Test failed. Common Int64FromString. Expected '%v'. Actual '%v'. Error: %s",
|
t.Errorf("Common Int64FromString. Expected '%v'. Actual '%v'. Error: %s",
|
||||||
expectedOutput, actualOutput, err)
|
expectedOutput, actualOutput, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var testByte []byte
|
var testByte []byte
|
||||||
_, err = Int64FromString(testByte)
|
_, err = Int64FromString(testByte)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common Int64FromString. Converted non-string.")
|
t.Error("Common Int64FromString. Converted non-string.")
|
||||||
}
|
}
|
||||||
|
|
||||||
testString = "1.41421356237"
|
testString = "1.41421356237"
|
||||||
_, err = Int64FromString(testString)
|
_, err = Int64FromString(testString)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common Int64FromString. Converted invalid syntax.")
|
t.Error("Common Int64FromString. Converted invalid syntax.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,14 +84,14 @@ func TestTimeFromUnixTimestampFloat(t *testing.T) {
|
|||||||
|
|
||||||
actualOutput, err := TimeFromUnixTimestampFloat(testTimestamp)
|
actualOutput, err := TimeFromUnixTimestampFloat(testTimestamp)
|
||||||
if actualOutput.UTC().String() != expectedOutput.UTC().String() || err != nil {
|
if actualOutput.UTC().String() != expectedOutput.UTC().String() || err != nil {
|
||||||
t.Errorf("Test failed. Common TimeFromUnixTimestampFloat. Expected '%v'. Actual '%v'. Error: %s",
|
t.Errorf("Common TimeFromUnixTimestampFloat. Expected '%v'. Actual '%v'. Error: %s",
|
||||||
expectedOutput, actualOutput, err)
|
expectedOutput, actualOutput, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
testString := "Time"
|
testString := "Time"
|
||||||
_, err = TimeFromUnixTimestampFloat(testString)
|
_, err = TimeFromUnixTimestampFloat(testString)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common TimeFromUnixTimestampFloat. Converted invalid syntax.")
|
t.Error("Common TimeFromUnixTimestampFloat. Converted invalid syntax.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ func TestUnixTimestampToTime(t *testing.T) {
|
|||||||
actualResult := UnixTimestampToTime(testTime)
|
actualResult := UnixTimestampToTime(testTime)
|
||||||
if tm.String() != actualResult.String() {
|
if tm.String() != actualResult.String() {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
"Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,11 +118,11 @@ func TestUnixTimestampStrToTime(t *testing.T) {
|
|||||||
}
|
}
|
||||||
if actualResult.UTC().String() != expectedOutput {
|
if actualResult.UTC().String() != expectedOutput {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
"Expected '%s'. Actual '%s'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
actualResult, err = UnixTimestampStrToTime(incorrectTime)
|
actualResult, err = UnixTimestampStrToTime(incorrectTime)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Common UnixTimestampStrToTime error")
|
t.Error("Common UnixTimestampStrToTime error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ func TestUnixMillis(t *testing.T) {
|
|||||||
|
|
||||||
actualOutput := UnixMillis(testTime)
|
actualOutput := UnixMillis(testTime)
|
||||||
if actualOutput != expectedOutput {
|
if actualOutput != expectedOutput {
|
||||||
t.Errorf("Test failed. Common UnixMillis. Expected '%d'. Actual '%d'.",
|
t.Errorf("Common UnixMillis. Expected '%d'. Actual '%d'.",
|
||||||
expectedOutput, actualOutput)
|
expectedOutput, actualOutput)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ func TestRecvWindow(t *testing.T) {
|
|||||||
|
|
||||||
actualOutput := RecvWindow(testTime)
|
actualOutput := RecvWindow(testTime)
|
||||||
if actualOutput != expectedOutput {
|
if actualOutput != expectedOutput {
|
||||||
t.Errorf("Test failed. Common RecvWindow. Expected '%d'. Actual '%d'",
|
t.Errorf("Common RecvWindow. Expected '%d'. Actual '%d'",
|
||||||
expectedOutput, actualOutput)
|
expectedOutput, actualOutput)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ func TestHexEncodeToString(t *testing.T) {
|
|||||||
expectedOutput := "737472696e67"
|
expectedOutput := "737472696e67"
|
||||||
actualResult := HexEncodeToString(originalInput)
|
actualResult := HexEncodeToString(originalInput)
|
||||||
if actualResult != expectedOutput {
|
if actualResult != expectedOutput {
|
||||||
t.Errorf("Test failed. Expected '%s'. Actual '%s'",
|
t.Errorf("Expected '%s'. Actual '%s'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22,13 +22,13 @@ func TestBase64Decode(t *testing.T) {
|
|||||||
expectedOutput := []byte("hello")
|
expectedOutput := []byte("hello")
|
||||||
actualResult, err := Base64Decode(originalInput)
|
actualResult, err := Base64Decode(originalInput)
|
||||||
if !bytes.Equal(actualResult, expectedOutput) {
|
if !bytes.Equal(actualResult, expectedOutput) {
|
||||||
t.Errorf("Test failed. Expected '%s'. Actual '%s'. Error: %s",
|
t.Errorf("Expected '%s'. Actual '%s'. Error: %s",
|
||||||
expectedOutput, actualResult, err)
|
expectedOutput, actualResult, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = Base64Decode("-")
|
_, err = Base64Decode("-")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. Bad base64 string failed returned nil error")
|
t.Error("Bad base64 string failed returned nil error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ func TestBase64Encode(t *testing.T) {
|
|||||||
expectedOutput := "aGVsbG8="
|
expectedOutput := "aGVsbG8="
|
||||||
actualResult := Base64Encode(originalInput)
|
actualResult := Base64Encode(originalInput)
|
||||||
if actualResult != expectedOutput {
|
if actualResult != expectedOutput {
|
||||||
t.Errorf("Test failed. Expected '%s'. Actual '%s'",
|
t.Errorf("Expected '%s'. Actual '%s'",
|
||||||
expectedOutput, actualResult)
|
expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,7 +48,7 @@ func TestGetRandomSalt(t *testing.T) {
|
|||||||
|
|
||||||
_, err := GetRandomSalt(nil, -1)
|
_, err := GetRandomSalt(nil, -1)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test failed. Expected err on negative salt length")
|
t.Fatal("Expected err on negative salt length")
|
||||||
}
|
}
|
||||||
|
|
||||||
salt, err := GetRandomSalt(nil, 10)
|
salt, err := GetRandomSalt(nil, 10)
|
||||||
@@ -57,7 +57,7 @@ func TestGetRandomSalt(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(salt) != 10 {
|
if len(salt) != 10 {
|
||||||
t.Fatal("Test failed. Expected salt of len=10")
|
t.Fatal("Expected salt of len=10")
|
||||||
}
|
}
|
||||||
|
|
||||||
salt, err = GetRandomSalt([]byte("RAWR"), 12)
|
salt, err = GetRandomSalt([]byte("RAWR"), 12)
|
||||||
@@ -66,7 +66,7 @@ func TestGetRandomSalt(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(salt) != 16 {
|
if len(salt) != 16 {
|
||||||
t.Fatal("Test failed. Expected salt of len=16")
|
t.Fatal("Expected salt of len=16")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ func TestGetMD5(t *testing.T) {
|
|||||||
actualOutput := GetMD5(originalString)
|
actualOutput := GetMD5(originalString)
|
||||||
actualStr := HexEncodeToString(actualOutput)
|
actualStr := HexEncodeToString(actualOutput)
|
||||||
if !bytes.Equal(expectedOutput, []byte(actualStr)) {
|
if !bytes.Equal(expectedOutput, []byte(actualStr)) {
|
||||||
t.Errorf("Test failed. Expected '%s'. Actual '%s'",
|
t.Errorf("Expected '%s'. Actual '%s'",
|
||||||
expectedOutput, []byte(actualStr))
|
expectedOutput, []byte(actualStr))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ func TestGetSHA512(t *testing.T) {
|
|||||||
actualOutput := GetSHA512(originalString)
|
actualOutput := GetSHA512(originalString)
|
||||||
actualStr := HexEncodeToString(actualOutput)
|
actualStr := HexEncodeToString(actualOutput)
|
||||||
if !bytes.Equal(expectedOutput, []byte(actualStr)) {
|
if !bytes.Equal(expectedOutput, []byte(actualStr)) {
|
||||||
t.Errorf("Test failed. Expected '%x'. Actual '%x'",
|
t.Errorf("Expected '%x'. Actual '%x'",
|
||||||
expectedOutput, []byte(actualStr))
|
expectedOutput, []byte(actualStr))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -106,7 +106,7 @@ func TestGetSHA256(t *testing.T) {
|
|||||||
actualOutput := GetSHA256(originalString)
|
actualOutput := GetSHA256(originalString)
|
||||||
actualStr := HexEncodeToString(actualOutput)
|
actualStr := HexEncodeToString(actualOutput)
|
||||||
if !bytes.Equal(expectedOutput, []byte(actualStr)) {
|
if !bytes.Equal(expectedOutput, []byte(actualStr)) {
|
||||||
t.Errorf("Test failed. Expected '%x'. Actual '%x'", expectedOutput,
|
t.Errorf("Expected '%x'. Actual '%x'", expectedOutput,
|
||||||
[]byte(actualStr))
|
[]byte(actualStr))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -138,31 +138,31 @@ func TestGetHMAC(t *testing.T) {
|
|||||||
|
|
||||||
sha1 := GetHMAC(HashSHA1, []byte("Hello,World"), []byte("1234"))
|
sha1 := GetHMAC(HashSHA1, []byte("Hello,World"), []byte("1234"))
|
||||||
if string(sha1) != string(expectedSha1) {
|
if string(sha1) != string(expectedSha1) {
|
||||||
t.Errorf("Test failed. Common GetHMAC error: Expected '%x'. Actual '%x'",
|
t.Errorf("Common GetHMAC error: Expected '%x'. Actual '%x'",
|
||||||
expectedSha1, sha1,
|
expectedSha1, sha1,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
sha256 := GetHMAC(HashSHA256, []byte("Hello,World"), []byte("1234"))
|
sha256 := GetHMAC(HashSHA256, []byte("Hello,World"), []byte("1234"))
|
||||||
if string(sha256) != string(expectedsha256) {
|
if string(sha256) != string(expectedsha256) {
|
||||||
t.Errorf("Test failed. Common GetHMAC error: Expected '%x'. Actual '%x'",
|
t.Errorf("Common GetHMAC error: Expected '%x'. Actual '%x'",
|
||||||
expectedsha256, sha256,
|
expectedsha256, sha256,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
sha512 := GetHMAC(HashSHA512, []byte("Hello,World"), []byte("1234"))
|
sha512 := GetHMAC(HashSHA512, []byte("Hello,World"), []byte("1234"))
|
||||||
if string(sha512) != string(expectedsha512) {
|
if string(sha512) != string(expectedsha512) {
|
||||||
t.Errorf("Test failed. Common GetHMAC error: Expected '%x'. Actual '%x'",
|
t.Errorf("Common GetHMAC error: Expected '%x'. Actual '%x'",
|
||||||
expectedsha512, sha512,
|
expectedsha512, sha512,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
sha512384 := GetHMAC(HashSHA512_384, []byte("Hello,World"), []byte("1234"))
|
sha512384 := GetHMAC(HashSHA512_384, []byte("Hello,World"), []byte("1234"))
|
||||||
if string(sha512384) != string(expectedsha512384) {
|
if string(sha512384) != string(expectedsha512384) {
|
||||||
t.Errorf("Test failed. Common GetHMAC error: Expected '%x'. Actual '%x'",
|
t.Errorf("Common GetHMAC error: Expected '%x'. Actual '%x'",
|
||||||
expectedsha512384, sha512384,
|
expectedsha512384, sha512384,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
md5 := GetHMAC(HashMD5, []byte("Hello World"), []byte("1234"))
|
md5 := GetHMAC(HashMD5, []byte("Hello World"), []byte("1234"))
|
||||||
if string(md5) != string(expectedmd5) {
|
if string(md5) != string(expectedmd5) {
|
||||||
t.Errorf("Test failed. Common GetHMAC error: Expected '%x'. Actual '%x'",
|
t.Errorf("Common GetHMAC error: Expected '%x'. Actual '%x'",
|
||||||
expectedmd5, md5,
|
expectedmd5, md5,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -174,7 +174,7 @@ func TestSha1Tohex(t *testing.T) {
|
|||||||
expectedResult := "fcfbfcd7d31d994ef660f6972399ab5d7a890149"
|
expectedResult := "fcfbfcd7d31d994ef660f6972399ab5d7a890149"
|
||||||
actualResult := Sha1ToHex("Testing Sha1ToHex")
|
actualResult := Sha1ToHex("Testing Sha1ToHex")
|
||||||
if actualResult != expectedResult {
|
if actualResult != expectedResult {
|
||||||
t.Errorf("Test failed. Expected '%s'. Actual '%s'",
|
t.Errorf("Expected '%s'. Actual '%s'",
|
||||||
expectedResult, actualResult)
|
expectedResult, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ func TestCalculateFee(t *testing.T) {
|
|||||||
actualResult := CalculateFee(originalInput, fee)
|
actualResult := CalculateFee(originalInput, fee)
|
||||||
if expectedOutput != actualResult {
|
if expectedOutput != actualResult {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
"Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ func TestCalculateAmountWithFee(t *testing.T) {
|
|||||||
actualResult := CalculateAmountWithFee(originalInput, fee)
|
actualResult := CalculateAmountWithFee(originalInput, fee)
|
||||||
if expectedOutput != actualResult {
|
if expectedOutput != actualResult {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
"Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ func TestCalculatePercentageGainOrLoss(t *testing.T) {
|
|||||||
actualResult := CalculatePercentageGainOrLoss(originalInput, secondInput)
|
actualResult := CalculatePercentageGainOrLoss(originalInput, secondInput)
|
||||||
if expectedOutput != actualResult {
|
if expectedOutput != actualResult {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
"Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ func TestCalculatePercentageDifference(t *testing.T) {
|
|||||||
actualResult := CalculatePercentageDifference(originalInput, secondAmount)
|
actualResult := CalculatePercentageDifference(originalInput, secondAmount)
|
||||||
if expectedOutput != actualResult {
|
if expectedOutput != actualResult {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
"Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ func TestCalculateNetProfit(t *testing.T) {
|
|||||||
actualResult := CalculateNetProfit(amount, priceThen, priceNow, costs)
|
actualResult := CalculateNetProfit(amount, priceThen, priceNow, costs)
|
||||||
if expectedOutput != actualResult {
|
if expectedOutput != actualResult {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
"Expected '%f'. Actual '%f'.", expectedOutput, actualResult)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ func TestRoundFloat(t *testing.T) {
|
|||||||
for testInput, expectedOutput := range testTable {
|
for testInput, expectedOutput := range testTable {
|
||||||
actualOutput := RoundFloat(testInput, 2)
|
actualOutput := RoundFloat(testInput, 2)
|
||||||
if actualOutput != expectedOutput {
|
if actualOutput != expectedOutput {
|
||||||
t.Errorf("Test failed. RoundFloat Expected '%f'. Actual '%f'.",
|
t.Errorf("RoundFloat Expected '%f'. Actual '%f'.",
|
||||||
expectedOutput, actualOutput)
|
expectedOutput, actualOutput)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,19 +19,19 @@ func TestStart(t *testing.T) {
|
|||||||
|
|
||||||
func TestIsEnabled(t *testing.T) {
|
func TestIsEnabled(t *testing.T) {
|
||||||
if !b.IsEnabled() {
|
if !b.IsEnabled() {
|
||||||
t.Error("test failed - base IsEnabled() error")
|
t.Error("base IsEnabled() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsConnected(t *testing.T) {
|
func TestIsConnected(t *testing.T) {
|
||||||
if !b.IsConnected() {
|
if !b.IsConnected() {
|
||||||
t.Error("test failed - base IsConnected() error")
|
t.Error("base IsConnected() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetName(t *testing.T) {
|
func TestGetName(t *testing.T) {
|
||||||
if b.GetName() != "test" {
|
if b.GetName() != "test" {
|
||||||
t.Error("test failed - base GetName() error")
|
t.Error("base GetName() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ func TestNewComm(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(communications.IComm) != 4 {
|
if len(communications.IComm) != 4 {
|
||||||
t.Errorf("Test failed, communications NewComm, expected len 4, got len %d",
|
t.Errorf("communications NewComm, expected len 4, got len %d",
|
||||||
len(communications.IComm))
|
len(communications.IComm))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ func TestSetup(t *testing.T) {
|
|||||||
func TestConnect(t *testing.T) {
|
func TestConnect(t *testing.T) {
|
||||||
err := s.Connect()
|
err := s.Connect()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack Connect() error cannot be nil")
|
t.Error("slack Connect() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ func TestPushEvent(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
err := s.PushEvent(base.Event{})
|
err := s.PushEvent(base.Event{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack PushEvent() error cannot be nil")
|
t.Error("slack PushEvent() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ func TestBuildURL(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
v := s.BuildURL("lol123")
|
v := s.BuildURL("lol123")
|
||||||
if v != "https://slack.com/api/rtm.start?token=lol123" {
|
if v != "https://slack.com/api/rtm.start?token=lol123" {
|
||||||
t.Error("test failed - slack BuildURL() error")
|
t.Error("slack BuildURL() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,14 +101,14 @@ func TestGetChannelsString(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !testpassed {
|
if !testpassed {
|
||||||
t.Error("test failed - slack GetChannelsString() error")
|
t.Error("slack GetChannelsString() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetUsernameByID(t *testing.T) {
|
func TestGetUsernameByID(t *testing.T) {
|
||||||
username := s.GetUsernameByID("1337")
|
username := s.GetUsernameByID("1337")
|
||||||
if username != "" {
|
if username != "" {
|
||||||
t.Error("test failed - slack GetUsernameByID() error")
|
t.Error("slack GetUsernameByID() error")
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Details.Users = append(s.Details.Users, struct {
|
s.Details.Users = append(s.Details.Users, struct {
|
||||||
@@ -141,7 +141,7 @@ func TestGetUsernameByID(t *testing.T) {
|
|||||||
|
|
||||||
username = s.GetUsernameByID("1337")
|
username = s.GetUsernameByID("1337")
|
||||||
if username != "cranktakular" {
|
if username != "cranktakular" {
|
||||||
t.Error("test failed - slack GetUsernameByID() error")
|
t.Error("slack GetUsernameByID() error")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -149,7 +149,7 @@ func TestGetUsernameByID(t *testing.T) {
|
|||||||
func TestGetIDByName(t *testing.T) {
|
func TestGetIDByName(t *testing.T) {
|
||||||
id, err := s.GetIDByName("batman")
|
id, err := s.GetIDByName("batman")
|
||||||
if err == nil || id != "" {
|
if err == nil || id != "" {
|
||||||
t.Error("test failed - slack GetIDByName() error")
|
t.Error("slack GetIDByName() error")
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Details.Groups = append(s.Details.Groups, group{
|
s.Details.Groups = append(s.Details.Groups, group{
|
||||||
@@ -158,7 +158,7 @@ func TestGetIDByName(t *testing.T) {
|
|||||||
})
|
})
|
||||||
id, err = s.GetIDByName("this is a group")
|
id, err = s.GetIDByName("this is a group")
|
||||||
if err != nil || id != "210314" {
|
if err != nil || id != "210314" {
|
||||||
t.Errorf("test failed - slack GetIDByName() Expected '210314' Actual '%s' Error: %s",
|
t.Errorf("slack GetIDByName() Expected '210314' Actual '%s' Error: %s",
|
||||||
id, err)
|
id, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,7 +166,7 @@ func TestGetIDByName(t *testing.T) {
|
|||||||
func TestGetGroupIDByName(t *testing.T) {
|
func TestGetGroupIDByName(t *testing.T) {
|
||||||
id, err := s.GetGroupIDByName("batman")
|
id, err := s.GetGroupIDByName("batman")
|
||||||
if err == nil || id != "" {
|
if err == nil || id != "" {
|
||||||
t.Error("test failed - slack GetGroupIDByName() error")
|
t.Error("slack GetGroupIDByName() error")
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Details.Groups = append(s.Details.Groups, group{
|
s.Details.Groups = append(s.Details.Groups, group{
|
||||||
@@ -175,7 +175,7 @@ func TestGetGroupIDByName(t *testing.T) {
|
|||||||
})
|
})
|
||||||
id, err = s.GetGroupIDByName("another group")
|
id, err = s.GetGroupIDByName("another group")
|
||||||
if err != nil || id != "11223344" {
|
if err != nil || id != "11223344" {
|
||||||
t.Errorf("test failed - slack GetGroupIDByName() Expected '11223344' Actual '%s' Error: %s",
|
t.Errorf("slack GetGroupIDByName() Expected '11223344' Actual '%s' Error: %s",
|
||||||
id, err)
|
id, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ func TestGetGroupIDByName(t *testing.T) {
|
|||||||
func TestGetChannelIDByName(t *testing.T) {
|
func TestGetChannelIDByName(t *testing.T) {
|
||||||
id, err := s.GetChannelIDByName("1337")
|
id, err := s.GetChannelIDByName("1337")
|
||||||
if err == nil || id != "" {
|
if err == nil || id != "" {
|
||||||
t.Error("test failed - slack GetChannelIDByName() error")
|
t.Error("slack GetChannelIDByName() error")
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Details.Channels = append(s.Details.Channels, struct {
|
s.Details.Channels = append(s.Details.Channels, struct {
|
||||||
@@ -208,7 +208,7 @@ func TestGetChannelIDByName(t *testing.T) {
|
|||||||
|
|
||||||
id, err = s.GetChannelIDByName("Slack Test")
|
id, err = s.GetChannelIDByName("Slack Test")
|
||||||
if err != nil || id != "2048" {
|
if err != nil || id != "2048" {
|
||||||
t.Errorf("test failed - slack GetChannelIDByName() Expected '2048' Actual '%s' Error: %s",
|
t.Errorf("slack GetChannelIDByName() Expected '2048' Actual '%s' Error: %s",
|
||||||
id, err)
|
id, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -216,7 +216,7 @@ func TestGetChannelIDByName(t *testing.T) {
|
|||||||
func TestGetUsersInGroup(t *testing.T) {
|
func TestGetUsersInGroup(t *testing.T) {
|
||||||
username := s.GetUsersInGroup("supergroup")
|
username := s.GetUsersInGroup("supergroup")
|
||||||
if len(username) != 0 {
|
if len(username) != 0 {
|
||||||
t.Error("test failed - slack GetUsersInGroup() error")
|
t.Error("slack GetUsersInGroup() error")
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Details.Groups = append(s.Details.Groups, group{
|
s.Details.Groups = append(s.Details.Groups, group{
|
||||||
@@ -227,7 +227,7 @@ func TestGetUsersInGroup(t *testing.T) {
|
|||||||
|
|
||||||
username = s.GetUsersInGroup("three guys")
|
username = s.GetUsersInGroup("three guys")
|
||||||
if len(username) != 3 {
|
if len(username) != 3 {
|
||||||
t.Errorf("test failed - slack GetUsersInGroup() Expected '3' Actual '%s'",
|
t.Errorf("slack GetUsersInGroup() Expected '3' Actual '%s'",
|
||||||
username)
|
username)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -235,14 +235,14 @@ func TestGetUsersInGroup(t *testing.T) {
|
|||||||
func TestNewConnection(t *testing.T) {
|
func TestNewConnection(t *testing.T) {
|
||||||
err := s.NewConnection()
|
err := s.NewConnection()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack NewConnection() error")
|
t.Error("slack NewConnection() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestWebsocketConnect(t *testing.T) {
|
func TestWebsocketConnect(t *testing.T) {
|
||||||
err := s.WebsocketConnect()
|
err := s.WebsocketConnect()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack WebsocketConnect() error")
|
t.Error("slack WebsocketConnect() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -253,13 +253,13 @@ func TestHandlePresenceChange(t *testing.T) {
|
|||||||
|
|
||||||
err := s.handlePresenceChange([]byte(`{"malformedjson}`))
|
err := s.handlePresenceChange([]byte(`{"malformedjson}`))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack handlePresenceChange(), unmarshalled malformed json")
|
t.Error("slack handlePresenceChange(), unmarshalled malformed json")
|
||||||
}
|
}
|
||||||
|
|
||||||
data, _ := common.JSONEncode(pres)
|
data, _ := common.JSONEncode(pres)
|
||||||
err = s.handlePresenceChange(data)
|
err = s.handlePresenceChange(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("test failed - slack handlePresenceChange() Error: %s", err)
|
t.Errorf("slack handlePresenceChange() Error: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,7 +269,7 @@ func TestHandleMessageResponse(t *testing.T) {
|
|||||||
|
|
||||||
err := s.handleMessageResponse(nil, data)
|
err := s.handleMessageResponse(nil, data)
|
||||||
if err.Error() != "reply to is != 0" {
|
if err.Error() != "reply to is != 0" {
|
||||||
t.Errorf("test failed - slack handleMessageResponse(), Incorrect Error: %s",
|
t.Errorf("slack handleMessageResponse(), Incorrect Error: %s",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,7 +277,7 @@ func TestHandleMessageResponse(t *testing.T) {
|
|||||||
|
|
||||||
err = s.handleMessageResponse([]byte(`{"malformedjson}`), data)
|
err = s.handleMessageResponse([]byte(`{"malformedjson}`), data)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack handleMessageResponse(), unmarshalled malformed json")
|
t.Error("slack handleMessageResponse(), unmarshalled malformed json")
|
||||||
}
|
}
|
||||||
|
|
||||||
var msg Message
|
var msg Message
|
||||||
@@ -287,7 +287,7 @@ func TestHandleMessageResponse(t *testing.T) {
|
|||||||
|
|
||||||
err = s.handleMessageResponse(resp, data)
|
err = s.handleMessageResponse(resp, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - slack HandleMessage(), Sent message through nil websocket")
|
t.Error("slack HandleMessage(), Sent message through nil websocket")
|
||||||
}
|
}
|
||||||
|
|
||||||
msg.Text = "!notacommand"
|
msg.Text = "!notacommand"
|
||||||
@@ -295,7 +295,7 @@ func TestHandleMessageResponse(t *testing.T) {
|
|||||||
|
|
||||||
err = s.handleMessageResponse(resp, data)
|
err = s.handleMessageResponse(resp, data)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("test failed - slack handleMessageResponse() Error: %s", err)
|
t.Errorf("slack handleMessageResponse() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -303,13 +303,13 @@ func TestHandleErrorResponse(t *testing.T) {
|
|||||||
var data WebsocketResponse
|
var data WebsocketResponse
|
||||||
err := s.handleErrorResponse(data)
|
err := s.handleErrorResponse(data)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack handleErrorResponse() Ignored strange input")
|
t.Error("slack handleErrorResponse() Ignored strange input")
|
||||||
}
|
}
|
||||||
|
|
||||||
data.Error.Msg = "Socket URL has expired"
|
data.Error.Msg = "Socket URL has expired"
|
||||||
err = s.handleErrorResponse(data)
|
err = s.handleErrorResponse(data)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack handleErrorResponse() Didn't error on nil websocket")
|
t.Error("slack handleErrorResponse() Didn't error on nil websocket")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -320,7 +320,7 @@ func TestHandleHelloResponse(t *testing.T) {
|
|||||||
func TestHandleReconnectResponse(t *testing.T) {
|
func TestHandleReconnectResponse(t *testing.T) {
|
||||||
err := s.handleReconnectResponse([]byte(`{"malformedjson}`))
|
err := s.handleReconnectResponse([]byte(`{"malformedjson}`))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack handleReconnectResponse(), unmarshalled malformed json")
|
t.Error("slack handleReconnectResponse(), unmarshalled malformed json")
|
||||||
}
|
}
|
||||||
|
|
||||||
var testURL struct {
|
var testURL struct {
|
||||||
@@ -332,7 +332,7 @@ func TestHandleReconnectResponse(t *testing.T) {
|
|||||||
|
|
||||||
err = s.handleReconnectResponse(data)
|
err = s.handleReconnectResponse(data)
|
||||||
if err != nil || s.ReconnectURL != "https://www.thrasher.io" {
|
if err != nil || s.ReconnectURL != "https://www.thrasher.io" {
|
||||||
t.Errorf("test failed - slack handleReconnectResponse() Expected 'https://www.thrasher.io' Actual '%s' Error: %s",
|
t.Errorf("slack handleReconnectResponse() Expected 'https://www.thrasher.io' Actual '%s' Error: %s",
|
||||||
s.ReconnectURL, err)
|
s.ReconnectURL, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -340,7 +340,7 @@ func TestHandleReconnectResponse(t *testing.T) {
|
|||||||
func TestWebsocketSend(t *testing.T) {
|
func TestWebsocketSend(t *testing.T) {
|
||||||
err := s.WebsocketSend("test", "Hello World!")
|
err := s.WebsocketSend("test", "Hello World!")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack WebsocketSend(), Sent message through nil websocket")
|
t.Error("slack WebsocketSend(), Sent message through nil websocket")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -348,16 +348,16 @@ func TestHandleMessage(t *testing.T) {
|
|||||||
msg := &Message{}
|
msg := &Message{}
|
||||||
err := s.HandleMessage(msg)
|
err := s.HandleMessage(msg)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack HandleMessage(), Sent message through nil websocket")
|
t.Error("slack HandleMessage(), Sent message through nil websocket")
|
||||||
}
|
}
|
||||||
msg.Text = cmdStatus
|
msg.Text = cmdStatus
|
||||||
err = s.HandleMessage(msg)
|
err = s.HandleMessage(msg)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack HandleMessage(), Sent message through nil websocket")
|
t.Error("slack HandleMessage(), Sent message through nil websocket")
|
||||||
}
|
}
|
||||||
msg.Text = cmdHelp
|
msg.Text = cmdHelp
|
||||||
err = s.HandleMessage(msg)
|
err = s.HandleMessage(msg)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - slack HandleMessage(), Sent message through nil websocket")
|
t.Error("slack HandleMessage(), Sent message through nil websocket")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,82 +22,82 @@ func TestSetup(t *testing.T) {
|
|||||||
func TestConnect(t *testing.T) {
|
func TestConnect(t *testing.T) {
|
||||||
err := s.Connect()
|
err := s.Connect()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - SMSGlobal Connect() error", err)
|
t.Error("SMSGlobal Connect() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPushEvent(t *testing.T) {
|
func TestPushEvent(t *testing.T) {
|
||||||
err := s.PushEvent(base.Event{})
|
err := s.PushEvent(base.Event{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - SMSGlobal PushEvent() error", err)
|
t.Error("SMSGlobal PushEvent() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetEnabledContacts(t *testing.T) {
|
func TestGetEnabledContacts(t *testing.T) {
|
||||||
v := s.GetEnabledContacts()
|
v := s.GetEnabledContacts()
|
||||||
if v != 1 {
|
if v != 1 {
|
||||||
t.Error("test failed - SMSGlobal GetEnabledContacts() error")
|
t.Error("SMSGlobal GetEnabledContacts() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetContactByNumber(t *testing.T) {
|
func TestGetContactByNumber(t *testing.T) {
|
||||||
_, err := s.GetContactByNumber("1231424")
|
_, err := s.GetContactByNumber("1231424")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - SMSGlobal GetContactByNumber() error", err)
|
t.Error("SMSGlobal GetContactByNumber() error", err)
|
||||||
}
|
}
|
||||||
_, err = s.GetContactByNumber("basketball")
|
_, err = s.GetContactByNumber("basketball")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - SMSGlobal GetContactByNumber() error")
|
t.Error("SMSGlobal GetContactByNumber() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetContactByName(t *testing.T) {
|
func TestGetContactByName(t *testing.T) {
|
||||||
_, err := s.GetContactByName("StyleGherkin")
|
_, err := s.GetContactByName("StyleGherkin")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - SMSGlobal GetContactByName() error", err)
|
t.Error("SMSGlobal GetContactByName() error", err)
|
||||||
}
|
}
|
||||||
_, err = s.GetContactByName("blah")
|
_, err = s.GetContactByName("blah")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - SMSGlobal GetContactByName() error")
|
t.Error("SMSGlobal GetContactByName() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAddContact(t *testing.T) {
|
func TestAddContact(t *testing.T) {
|
||||||
err := s.AddContact(Contact{Name: "bra", Number: "2876", Enabled: true})
|
err := s.AddContact(Contact{Name: "bra", Number: "2876", Enabled: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - SMSGlobal AddContact() error", err)
|
t.Error("SMSGlobal AddContact() error", err)
|
||||||
}
|
}
|
||||||
err = s.AddContact(Contact{Name: "StyleGherkin", Number: "1231424", Enabled: true})
|
err = s.AddContact(Contact{Name: "StyleGherkin", Number: "1231424", Enabled: true})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - SMSGlobal AddContact() error")
|
t.Error("SMSGlobal AddContact() error")
|
||||||
}
|
}
|
||||||
err = s.AddContact(Contact{Name: "", Number: "", Enabled: true})
|
err = s.AddContact(Contact{Name: "", Number: "", Enabled: true})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - SMSGlobal AddContact() error")
|
t.Error("SMSGlobal AddContact() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRemoveContact(t *testing.T) {
|
func TestRemoveContact(t *testing.T) {
|
||||||
err := s.RemoveContact(Contact{Name: "StyleGherkin", Number: "1231424", Enabled: true})
|
err := s.RemoveContact(Contact{Name: "StyleGherkin", Number: "1231424", Enabled: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - SMSGlobal RemoveContact() error", err)
|
t.Error("SMSGlobal RemoveContact() error", err)
|
||||||
}
|
}
|
||||||
err = s.RemoveContact(Contact{Name: "frieda", Number: "243453", Enabled: true})
|
err = s.RemoveContact(Contact{Name: "frieda", Number: "243453", Enabled: true})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - SMSGlobal RemoveContact() error", err)
|
t.Error("SMSGlobal RemoveContact() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSendMessageToAll(t *testing.T) {
|
func TestSendMessageToAll(t *testing.T) {
|
||||||
err := s.SendMessageToAll("Hello,World!")
|
err := s.SendMessageToAll("Hello,World!")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - SMSGlobal SendMessageToAll() error", err)
|
t.Error("SMSGlobal SendMessageToAll() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSendMessage(t *testing.T) {
|
func TestSendMessage(t *testing.T) {
|
||||||
err := s.SendMessage("1337", "Hello!")
|
err := s.SendMessage("1337", "Hello!")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - SMSGlobal SendMessage() error", err)
|
t.Error("SMSGlobal SendMessage() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,24 +22,24 @@ func TestSetup(t *testing.T) {
|
|||||||
func TestConnect(t *testing.T) {
|
func TestConnect(t *testing.T) {
|
||||||
err := s.Connect()
|
err := s.Connect()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - smtpservice Connect() error", err)
|
t.Error("smtpservice Connect() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPushEvent(t *testing.T) {
|
func TestPushEvent(t *testing.T) {
|
||||||
err := s.PushEvent(base.Event{})
|
err := s.PushEvent(base.Event{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - smtpservice PushEvent() error cannot be nil")
|
t.Error("smtpservice PushEvent() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSend(t *testing.T) {
|
func TestSend(t *testing.T) {
|
||||||
err := s.Send("", "")
|
err := s.Send("", "")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - smtpservice Send() error cannot be nil")
|
t.Error("smtpservice Send() error cannot be nil")
|
||||||
}
|
}
|
||||||
err = s.Send("subject", "alertmessage")
|
err = s.Send("subject", "alertmessage")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - smtpservice Send() error cannot be nil")
|
t.Error("smtpservice Send() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ func TestSetup(t *testing.T) {
|
|||||||
commsCfg := cfg.GetCommunicationsConfig()
|
commsCfg := cfg.GetCommunicationsConfig()
|
||||||
T.Setup(&commsCfg)
|
T.Setup(&commsCfg)
|
||||||
if T.Name != "Telegram" || T.Enabled || T.Token != "testest" || T.Verbose {
|
if T.Name != "Telegram" || T.Enabled || T.Token != "testest" || T.Verbose {
|
||||||
t.Error("test failed - telegram Setup() error, unexpected setup values",
|
t.Error("telegram Setup() error, unexpected setup values",
|
||||||
T.Name,
|
T.Name,
|
||||||
T.Enabled,
|
T.Enabled,
|
||||||
T.Token,
|
T.Token,
|
||||||
@@ -33,19 +33,19 @@ func TestSetup(t *testing.T) {
|
|||||||
func TestConnect(t *testing.T) {
|
func TestConnect(t *testing.T) {
|
||||||
err := T.Connect()
|
err := T.Connect()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - telegram Connect() error")
|
t.Error("telegram Connect() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPushEvent(t *testing.T) {
|
func TestPushEvent(t *testing.T) {
|
||||||
err := T.PushEvent(base.Event{})
|
err := T.PushEvent(base.Event{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - telegram PushEvent() error", err)
|
t.Error("telegram PushEvent() error", err)
|
||||||
}
|
}
|
||||||
T.AuthorisedClients = append(T.AuthorisedClients, 1337)
|
T.AuthorisedClients = append(T.AuthorisedClients, 1337)
|
||||||
err = T.PushEvent(base.Event{})
|
err = T.PushEvent(base.Event{})
|
||||||
if err.Error() != testErrNotFound {
|
if err.Error() != testErrNotFound {
|
||||||
t.Errorf("test failed - telegram PushEvent() error, expected 'Not found' got '%s'",
|
t.Errorf("telegram PushEvent() error, expected 'Not found' got '%s'",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -55,27 +55,27 @@ func TestHandleMessages(t *testing.T) {
|
|||||||
chatID := int64(1337)
|
chatID := int64(1337)
|
||||||
err := T.HandleMessages(cmdHelp, chatID)
|
err := T.HandleMessages(cmdHelp, chatID)
|
||||||
if err.Error() != testErrNotFound {
|
if err.Error() != testErrNotFound {
|
||||||
t.Errorf("test failed - telegram HandleMessages() error, expected 'Not found' got '%s'",
|
t.Errorf("telegram HandleMessages() error, expected 'Not found' got '%s'",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
err = T.HandleMessages(cmdStart, chatID)
|
err = T.HandleMessages(cmdStart, chatID)
|
||||||
if err.Error() != testErrNotFound {
|
if err.Error() != testErrNotFound {
|
||||||
t.Errorf("test failed - telegram HandleMessages() error, expected 'Not found' got '%s'",
|
t.Errorf("telegram HandleMessages() error, expected 'Not found' got '%s'",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
err = T.HandleMessages(cmdStatus, chatID)
|
err = T.HandleMessages(cmdStatus, chatID)
|
||||||
if err.Error() != testErrNotFound {
|
if err.Error() != testErrNotFound {
|
||||||
t.Errorf("test failed - telegram HandleMessages() error, expected 'Not found' got '%s'",
|
t.Errorf("telegram HandleMessages() error, expected 'Not found' got '%s'",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
err = T.HandleMessages(cmdSettings, chatID)
|
err = T.HandleMessages(cmdSettings, chatID)
|
||||||
if err.Error() != testErrNotFound {
|
if err.Error() != testErrNotFound {
|
||||||
t.Errorf("test failed - telegram HandleMessages() error, expected 'Not found' got '%s'",
|
t.Errorf("telegram HandleMessages() error, expected 'Not found' got '%s'",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
err = T.HandleMessages("Not a command", chatID)
|
err = T.HandleMessages("Not a command", chatID)
|
||||||
if err.Error() != testErrNotFound {
|
if err.Error() != testErrNotFound {
|
||||||
t.Errorf("test failed - telegram HandleMessages() error, expected 'Not found' got '%s'",
|
t.Errorf("telegram HandleMessages() error, expected 'Not found' got '%s'",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -84,7 +84,7 @@ func TestGetUpdates(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
_, err := T.GetUpdates()
|
_, err := T.GetUpdates()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - telegram GetUpdates() error", err)
|
t.Error("telegram GetUpdates() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,7 +92,7 @@ func TestTestConnection(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
err := T.TestConnection()
|
err := T.TestConnection()
|
||||||
if err.Error() != testErrNotFound {
|
if err.Error() != testErrNotFound {
|
||||||
t.Errorf("test failed - telegram TestConnection() error, expected 'Not found' got '%s'",
|
t.Errorf("telegram TestConnection() error, expected 'Not found' got '%s'",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -101,7 +101,7 @@ func TestSendMessage(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
err := T.SendMessage("Test message", int64(1337))
|
err := T.SendMessage("Test message", int64(1337))
|
||||||
if err.Error() != testErrNotFound {
|
if err.Error() != testErrNotFound {
|
||||||
t.Errorf("test failed - telegram SendMessage() error, expected 'Not found' got '%s'",
|
t.Errorf("telegram SendMessage() error, expected 'Not found' got '%s'",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,6 +110,6 @@ func TestSendHTTPRequest(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
err := T.SendHTTPRequest("0.0.0.0", nil, nil)
|
err := T.SendHTTPRequest("0.0.0.0", nil, nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - telegram SendHTTPRequest() error")
|
t.Error("telegram SendHTTPRequest() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
145
config/config.go
145
config/config.go
@@ -13,7 +13,6 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/thrasher-corp/gocryptotrader/common"
|
"github.com/thrasher-corp/gocryptotrader/common"
|
||||||
@@ -27,67 +26,6 @@ import (
|
|||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Constants declared here are filename strings and test strings
|
|
||||||
const (
|
|
||||||
FXProviderFixer = "fixer"
|
|
||||||
EncryptedConfigFile = "config.dat"
|
|
||||||
ConfigFile = "config.json"
|
|
||||||
ConfigTestFile = "../testdata/configtest.json"
|
|
||||||
configFileEncryptionPrompt = 0
|
|
||||||
configFileEncryptionEnabled = 1
|
|
||||||
configFileEncryptionDisabled = -1
|
|
||||||
configPairsLastUpdatedWarningThreshold = 30 // 30 days
|
|
||||||
configDefaultHTTPTimeout = time.Second * 15
|
|
||||||
configDefaultWebsocketResponseCheckTimeout = time.Millisecond * 30
|
|
||||||
configDefaultWebsocketResponseMaxLimit = time.Second * 7
|
|
||||||
configDefaultWebsocketOrderbookBufferLimit = 5
|
|
||||||
configDefaultWebsocketTrafficTimeout = time.Second * 30
|
|
||||||
configMaxAuthFailures = 3
|
|
||||||
defaultNTPAllowedDifference = 50000000
|
|
||||||
defaultNTPAllowedNegativeDifference = 50000000
|
|
||||||
|
|
||||||
DefaultAPIKey = "Key"
|
|
||||||
DefaultAPISecret = "Secret"
|
|
||||||
DefaultAPIClientID = "ClientID"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Constants here hold some messages
|
|
||||||
const (
|
|
||||||
ErrExchangeNameEmpty = "exchange #%d name is empty"
|
|
||||||
ErrExchangeAvailablePairsEmpty = "exchange %s available pairs is empty"
|
|
||||||
ErrExchangeEnabledPairsEmpty = "exchange %s enabled pairs is empty"
|
|
||||||
ErrExchangeBaseCurrenciesEmpty = "exchange %s base currencies is empty"
|
|
||||||
ErrExchangeNotFound = "exchange %s not found"
|
|
||||||
ErrNoEnabledExchanges = "no exchanges enabled"
|
|
||||||
ErrCryptocurrenciesEmpty = "cryptocurrencies variable is empty"
|
|
||||||
ErrFailureOpeningConfig = "fatal error opening %s file. Error: %s"
|
|
||||||
ErrCheckingConfigValues = "fatal error checking config values. Error: %s"
|
|
||||||
ErrSavingConfigBytesMismatch = "config file %q bytes comparison doesn't match, read %s expected %s"
|
|
||||||
WarningWebserverCredentialValuesEmpty = "webserver support disabled due to empty Username/Password values"
|
|
||||||
WarningWebserverListenAddressInvalid = "webserver support disabled due to invalid listen address"
|
|
||||||
WarningExchangeAuthAPIDefaultOrEmptyValues = "exchange %s authenticated API support disabled due to default/empty APIKey/Secret/ClientID values"
|
|
||||||
WarningPairsLastUpdatedThresholdExceeded = "exchange %s last manual update of available currency pairs has exceeded %d days. Manual update required!"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Constants here define unset default values displayed in the config.json
|
|
||||||
// file
|
|
||||||
const (
|
|
||||||
APIURLNonDefaultMessage = "NON_DEFAULT_HTTP_LINK_TO_EXCHANGE_API"
|
|
||||||
WebsocketURLNonDefaultMessage = "NON_DEFAULT_HTTP_LINK_TO_WEBSOCKET_EXCHANGE_API"
|
|
||||||
DefaultUnsetAPIKey = "Key"
|
|
||||||
DefaultUnsetAPISecret = "Secret"
|
|
||||||
DefaultUnsetAccountPlan = "accountPlan"
|
|
||||||
DefaultForexProviderExchangeRatesAPI = "ExchangeRates"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Variables here are used for configuration
|
|
||||||
var (
|
|
||||||
Cfg Config
|
|
||||||
IsInitialSetup bool
|
|
||||||
testBypass bool
|
|
||||||
m sync.Mutex
|
|
||||||
)
|
|
||||||
|
|
||||||
// GetCurrencyConfig returns currency configurations
|
// GetCurrencyConfig returns currency configurations
|
||||||
func (c *Config) GetCurrencyConfig() CurrencyConfig {
|
func (c *Config) GetCurrencyConfig() CurrencyConfig {
|
||||||
return c.Currency
|
return c.Currency
|
||||||
@@ -982,14 +920,14 @@ func (c *Config) CheckExchangeConfigValues() error {
|
|||||||
}
|
}
|
||||||
if !c.Exchanges[i].Features.Supports.RESTCapabilities.AutoPairUpdates && !c.Exchanges[i].Features.Supports.WebsocketCapabilities.AutoPairUpdates {
|
if !c.Exchanges[i].Features.Supports.RESTCapabilities.AutoPairUpdates && !c.Exchanges[i].Features.Supports.WebsocketCapabilities.AutoPairUpdates {
|
||||||
lastUpdated := convert.UnixTimestampToTime(c.Exchanges[i].CurrencyPairs.LastUpdated)
|
lastUpdated := convert.UnixTimestampToTime(c.Exchanges[i].CurrencyPairs.LastUpdated)
|
||||||
lastUpdated = lastUpdated.AddDate(0, 0, configPairsLastUpdatedWarningThreshold)
|
lastUpdated = lastUpdated.AddDate(0, 0, pairsLastUpdatedWarningThreshold)
|
||||||
if lastUpdated.Unix() <= time.Now().Unix() {
|
if lastUpdated.Unix() <= time.Now().Unix() {
|
||||||
log.Warnf(log.ExchangeSys, WarningPairsLastUpdatedThresholdExceeded, c.Exchanges[i].Name, configPairsLastUpdatedWarningThreshold)
|
log.Warnf(log.ExchangeSys, WarningPairsLastUpdatedThresholdExceeded, c.Exchanges[i].Name, pairsLastUpdatedWarningThreshold)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if c.Exchanges[i].HTTPTimeout <= 0 {
|
if c.Exchanges[i].HTTPTimeout <= 0 {
|
||||||
log.Warnf(log.ExchangeSys, "Exchange %s HTTP Timeout value not set, defaulting to %v.\n", c.Exchanges[i].Name, configDefaultHTTPTimeout)
|
log.Warnf(log.ExchangeSys, "Exchange %s HTTP Timeout value not set, defaulting to %v.\n", c.Exchanges[i].Name, defaultHTTPTimeout)
|
||||||
c.Exchanges[i].HTTPTimeout = configDefaultHTTPTimeout
|
c.Exchanges[i].HTTPTimeout = defaultHTTPTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Exchanges[i].HTTPRateLimiter != nil {
|
if c.Exchanges[i].HTTPRateLimiter != nil {
|
||||||
@@ -1016,24 +954,24 @@ func (c *Config) CheckExchangeConfigValues() error {
|
|||||||
|
|
||||||
if c.Exchanges[i].WebsocketResponseCheckTimeout <= 0 {
|
if c.Exchanges[i].WebsocketResponseCheckTimeout <= 0 {
|
||||||
log.Warnf(log.ExchangeSys, "Exchange %s Websocket response check timeout value not set, defaulting to %v.",
|
log.Warnf(log.ExchangeSys, "Exchange %s Websocket response check timeout value not set, defaulting to %v.",
|
||||||
c.Exchanges[i].Name, configDefaultWebsocketResponseCheckTimeout)
|
c.Exchanges[i].Name, defaultWebsocketResponseCheckTimeout)
|
||||||
c.Exchanges[i].WebsocketResponseCheckTimeout = configDefaultWebsocketResponseCheckTimeout
|
c.Exchanges[i].WebsocketResponseCheckTimeout = defaultWebsocketResponseCheckTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Exchanges[i].WebsocketResponseMaxLimit <= 0 {
|
if c.Exchanges[i].WebsocketResponseMaxLimit <= 0 {
|
||||||
log.Warnf(log.ExchangeSys, "Exchange %s Websocket response max limit value not set, defaulting to %v.",
|
log.Warnf(log.ExchangeSys, "Exchange %s Websocket response max limit value not set, defaulting to %v.",
|
||||||
c.Exchanges[i].Name, configDefaultWebsocketResponseMaxLimit)
|
c.Exchanges[i].Name, defaultWebsocketResponseMaxLimit)
|
||||||
c.Exchanges[i].WebsocketResponseMaxLimit = configDefaultWebsocketResponseMaxLimit
|
c.Exchanges[i].WebsocketResponseMaxLimit = defaultWebsocketResponseMaxLimit
|
||||||
}
|
}
|
||||||
if c.Exchanges[i].WebsocketTrafficTimeout <= 0 {
|
if c.Exchanges[i].WebsocketTrafficTimeout <= 0 {
|
||||||
log.Warnf(log.ExchangeSys, "Exchange %s Websocket response traffic timeout value not set, defaulting to %v.",
|
log.Warnf(log.ExchangeSys, "Exchange %s Websocket response traffic timeout value not set, defaulting to %v.",
|
||||||
c.Exchanges[i].Name, configDefaultWebsocketTrafficTimeout)
|
c.Exchanges[i].Name, defaultWebsocketTrafficTimeout)
|
||||||
c.Exchanges[i].WebsocketTrafficTimeout = configDefaultWebsocketTrafficTimeout
|
c.Exchanges[i].WebsocketTrafficTimeout = defaultWebsocketTrafficTimeout
|
||||||
}
|
}
|
||||||
if c.Exchanges[i].WebsocketOrderbookBufferLimit <= 0 {
|
if c.Exchanges[i].WebsocketOrderbookBufferLimit <= 0 {
|
||||||
log.Warnf(log.ExchangeSys, "Exchange %s Websocket orderbook buffer limit value not set, defaulting to %v.",
|
log.Warnf(log.ExchangeSys, "Exchange %s Websocket orderbook buffer limit value not set, defaulting to %v.",
|
||||||
c.Exchanges[i].Name, configDefaultWebsocketOrderbookBufferLimit)
|
c.Exchanges[i].Name, defaultWebsocketOrderbookBufferLimit)
|
||||||
c.Exchanges[i].WebsocketOrderbookBufferLimit = configDefaultWebsocketOrderbookBufferLimit
|
c.Exchanges[i].WebsocketOrderbookBufferLimit = defaultWebsocketOrderbookBufferLimit
|
||||||
}
|
}
|
||||||
err := c.CheckPairConsistency(c.Exchanges[i].Name)
|
err := c.CheckPairConsistency(c.Exchanges[i].Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1065,10 +1003,7 @@ func (c *Config) CheckExchangeConfigValues() error {
|
|||||||
|
|
||||||
// CheckCurrencyConfigValues checks to see if the currency config values are correct or not
|
// CheckCurrencyConfigValues checks to see if the currency config values are correct or not
|
||||||
func (c *Config) CheckCurrencyConfigValues() error {
|
func (c *Config) CheckCurrencyConfigValues() error {
|
||||||
fxProviders := forexprovider.GetAvailableForexProviders()
|
fxProviders := forexprovider.GetSupportedForexProviders()
|
||||||
if len(fxProviders) == 0 {
|
|
||||||
return errors.New("no forex providers available")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(fxProviders) != len(c.Currency.ForexProviders) {
|
if len(fxProviders) != len(c.Currency.ForexProviders) {
|
||||||
for x := range fxProviders {
|
for x := range fxProviders {
|
||||||
@@ -1088,27 +1023,25 @@ func (c *Config) CheckCurrencyConfigValues() error {
|
|||||||
count := 0
|
count := 0
|
||||||
for i := range c.Currency.ForexProviders {
|
for i := range c.Currency.ForexProviders {
|
||||||
if c.Currency.ForexProviders[i].Enabled {
|
if c.Currency.ForexProviders[i].Enabled {
|
||||||
if c.Currency.ForexProviders[i].APIKey == DefaultUnsetAPIKey && c.Currency.ForexProviders[i].Name != DefaultForexProviderExchangeRatesAPI {
|
if c.Currency.ForexProviders[i].Name == "CurrencyConverter" &&
|
||||||
|
c.Currency.ForexProviders[i].PrimaryProvider &&
|
||||||
|
(c.Currency.ForexProviders[i].APIKey == "" ||
|
||||||
|
c.Currency.ForexProviders[i].APIKey == DefaultUnsetAPIKey) {
|
||||||
|
log.Warnln(log.Global, "CurrencyConverter forex provider no longer supports unset API key requests. Switching to ExchangeRates FX provider..")
|
||||||
|
c.Currency.ForexProviders[i].Enabled = false
|
||||||
|
c.Currency.ForexProviders[i].PrimaryProvider = false
|
||||||
|
c.Currency.ForexProviders[i].APIKey = DefaultUnsetAPIKey
|
||||||
|
c.Currency.ForexProviders[i].APIKeyLvl = -1
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if c.Currency.ForexProviders[i].APIKey == DefaultUnsetAPIKey &&
|
||||||
|
c.Currency.ForexProviders[i].Name != DefaultForexProviderExchangeRatesAPI {
|
||||||
log.Warnf(log.Global, "%s enabled forex provider API key not set. Please set this in your config.json file\n", c.Currency.ForexProviders[i].Name)
|
log.Warnf(log.Global, "%s enabled forex provider API key not set. Please set this in your config.json file\n", c.Currency.ForexProviders[i].Name)
|
||||||
c.Currency.ForexProviders[i].Enabled = false
|
c.Currency.ForexProviders[i].Enabled = false
|
||||||
c.Currency.ForexProviders[i].PrimaryProvider = false
|
c.Currency.ForexProviders[i].PrimaryProvider = false
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.Currency.ForexProviders[i].Name == "CurrencyConverter" {
|
|
||||||
if c.Currency.ForexProviders[i].Enabled &&
|
|
||||||
c.Currency.ForexProviders[i].PrimaryProvider &&
|
|
||||||
(c.Currency.ForexProviders[i].APIKey == "" ||
|
|
||||||
c.Currency.ForexProviders[i].APIKey == DefaultUnsetAPIKey) {
|
|
||||||
log.Warnln(log.Global, "CurrencyConverter forex provider no longer supports unset API key requests. Switching to ExchangeRates FX provider..")
|
|
||||||
c.Currency.ForexProviders[i].Enabled = false
|
|
||||||
c.Currency.ForexProviders[i].PrimaryProvider = false
|
|
||||||
c.Currency.ForexProviders[i].APIKey = DefaultUnsetAPIKey
|
|
||||||
c.Currency.ForexProviders[i].APIKeyLvl = -1
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if c.Currency.ForexProviders[i].APIKeyLvl == -1 && c.Currency.ForexProviders[i].Name != DefaultForexProviderExchangeRatesAPI {
|
if c.Currency.ForexProviders[i].APIKeyLvl == -1 && c.Currency.ForexProviders[i].Name != DefaultForexProviderExchangeRatesAPI {
|
||||||
log.Warnf(log.Global, "%s APIKey Level not set, functions limited. Please set this in your config.json file\n",
|
log.Warnf(log.Global, "%s APIKey Level not set, functions limited. Please set this in your config.json file\n",
|
||||||
c.Currency.ForexProviders[i].Name)
|
c.Currency.ForexProviders[i].Name)
|
||||||
@@ -1406,7 +1339,7 @@ func GetFilePath(file string) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if flag.Lookup("test.v") != nil && !testBypass {
|
if flag.Lookup("test.v") != nil && !testBypass {
|
||||||
return ConfigTestFile, nil
|
return TestFile, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
exePath, err := common.GetExecutablePath()
|
exePath, err := common.GetExecutablePath()
|
||||||
@@ -1415,8 +1348,8 @@ func GetFilePath(file string) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
oldDirs := []string{
|
oldDirs := []string{
|
||||||
filepath.Join(exePath, ConfigFile),
|
filepath.Join(exePath, File),
|
||||||
filepath.Join(exePath, EncryptedConfigFile),
|
filepath.Join(exePath, EncryptedFile),
|
||||||
}
|
}
|
||||||
|
|
||||||
newDir := common.GetDefaultDataDir(runtime.GOOS)
|
newDir := common.GetDefaultDataDir(runtime.GOOS)
|
||||||
@@ -1425,8 +1358,8 @@ func GetFilePath(file string) (string, error) {
|
|||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
newDirs := []string{
|
newDirs := []string{
|
||||||
filepath.Join(newDir, ConfigFile),
|
filepath.Join(newDir, File),
|
||||||
filepath.Join(newDir, EncryptedConfigFile),
|
filepath.Join(newDir, EncryptedFile),
|
||||||
}
|
}
|
||||||
|
|
||||||
// First upgrade the old dir config file if it exists to the corresponding
|
// First upgrade the old dir config file if it exists to the corresponding
|
||||||
@@ -1522,23 +1455,23 @@ func (c *Config) ReadConfig(configPath string, dryrun bool) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.EncryptConfig == configFileEncryptionDisabled {
|
if c.EncryptConfig == fileEncryptionDisabled {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.EncryptConfig == configFileEncryptionPrompt {
|
if c.EncryptConfig == fileEncryptionPrompt {
|
||||||
m.Lock()
|
m.Lock()
|
||||||
IsInitialSetup = true
|
IsInitialSetup = true
|
||||||
m.Unlock()
|
m.Unlock()
|
||||||
if c.PromptForConfigEncryption(configPath, dryrun) {
|
if c.PromptForConfigEncryption(configPath, dryrun) {
|
||||||
c.EncryptConfig = configFileEncryptionEnabled
|
c.EncryptConfig = fileEncryptionEnabled
|
||||||
return c.SaveConfig(defaultPath, dryrun)
|
return c.SaveConfig(defaultPath, dryrun)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
errCounter := 0
|
errCounter := 0
|
||||||
for {
|
for {
|
||||||
if errCounter >= configMaxAuthFailures {
|
if errCounter >= maxAuthFailures {
|
||||||
return errors.New("failed to decrypt config after 3 attempts")
|
return errors.New("failed to decrypt config after 3 attempts")
|
||||||
}
|
}
|
||||||
key, err := PromptForConfigKey(IsInitialSetup)
|
key, err := PromptForConfigKey(IsInitialSetup)
|
||||||
@@ -1559,7 +1492,7 @@ func (c *Config) ReadConfig(configPath string, dryrun bool) error {
|
|||||||
|
|
||||||
err = ConfirmConfigJSON(data, &c)
|
err = ConfirmConfigJSON(data, &c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errCounter < configMaxAuthFailures {
|
if errCounter < maxAuthFailures {
|
||||||
log.Error(log.ConfigMgr, "Invalid password.")
|
log.Error(log.ConfigMgr, "Invalid password.")
|
||||||
}
|
}
|
||||||
errCounter++
|
errCounter++
|
||||||
@@ -1587,7 +1520,7 @@ func (c *Config) SaveConfig(configPath string, dryrun bool) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.EncryptConfig == configFileEncryptionEnabled {
|
if c.EncryptConfig == fileEncryptionEnabled {
|
||||||
var key []byte
|
var key []byte
|
||||||
|
|
||||||
if IsInitialSetup {
|
if IsInitialSetup {
|
||||||
@@ -1678,8 +1611,8 @@ func (c *Config) CheckConfig() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if c.GlobalHTTPTimeout <= 0 {
|
if c.GlobalHTTPTimeout <= 0 {
|
||||||
log.Warnf(log.ConfigMgr, "Global HTTP Timeout value not set, defaulting to %v.\n", configDefaultHTTPTimeout)
|
log.Warnf(log.ConfigMgr, "Global HTTP Timeout value not set, defaulting to %v.\n", defaultHTTPTimeout)
|
||||||
c.GlobalHTTPTimeout = configDefaultHTTPTimeout
|
c.GlobalHTTPTimeout = defaultHTTPTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
if c.NTPClient.Level != 0 {
|
if c.NTPClient.Level != 0 {
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ func (c *Config) PromptForConfigEncryption(configPath string, dryrun bool) bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !common.YesOrNo(input) {
|
if !common.YesOrNo(input) {
|
||||||
c.EncryptConfig = configFileEncryptionDisabled
|
c.EncryptConfig = fileEncryptionDisabled
|
||||||
err := c.SaveConfig(configPath, dryrun)
|
err := c.SaveConfig(configPath, dryrun)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf(log.ConfigMgr, "cannot save config %s", err)
|
log.Errorf(log.ConfigMgr, "cannot save config %s", err)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ func TestPromptForConfigEncryption(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
|
|
||||||
if Cfg.PromptForConfigEncryption("", true) {
|
if Cfg.PromptForConfigEncryption("", true) {
|
||||||
t.Error("Test failed. PromptForConfigEncryption return incorrect bool")
|
t.Error("PromptForConfigEncryption return incorrect bool")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,25 +18,25 @@ func TestPromptForConfigKey(t *testing.T) {
|
|||||||
|
|
||||||
byteyBite, err := PromptForConfigKey(true)
|
byteyBite, err := PromptForConfigKey(true)
|
||||||
if err == nil && len(byteyBite) > 1 {
|
if err == nil && len(byteyBite) > 1 {
|
||||||
t.Errorf("Test failed. PromptForConfigKey: %s", err)
|
t.Errorf("PromptForConfigKey: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = PromptForConfigKey(false)
|
_, err = PromptForConfigKey(false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal(err)
|
t.Error("Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEncryptConfigFile(t *testing.T) {
|
func TestEncryptConfigFile(t *testing.T) {
|
||||||
_, err := EncryptConfigFile([]byte("test"), nil)
|
_, err := EncryptConfigFile([]byte("test"), nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test failed. Expected different result")
|
t.Fatal("Expected error")
|
||||||
}
|
}
|
||||||
|
|
||||||
sessionDK = []byte("a")
|
sessionDK = []byte("a")
|
||||||
_, err = EncryptConfigFile([]byte("test"), nil)
|
_, err = EncryptConfigFile([]byte("test"), nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test failed. Expected different result")
|
t.Fatal("Expected error")
|
||||||
}
|
}
|
||||||
|
|
||||||
sessionDK, err = makeNewSessionDK([]byte("asdf"))
|
sessionDK, err = makeNewSessionDK([]byte("asdf"))
|
||||||
@@ -60,17 +60,17 @@ func TestDecryptConfigFile(t *testing.T) {
|
|||||||
|
|
||||||
_, err = DecryptConfigFile(result, nil)
|
_, err = DecryptConfigFile(result, nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test failed. Expected different result")
|
t.Fatal("Expected error")
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = DecryptConfigFile([]byte("test"), nil)
|
_, err = DecryptConfigFile([]byte("test"), nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test failed. Expected different result")
|
t.Fatal("Expected error")
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = DecryptConfigFile([]byte("test"), []byte("AAAAAAAAAAAAAAAA"))
|
_, err = DecryptConfigFile([]byte("test"), []byte("AAAAAAAAAAAAAAAA"))
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("Test failed. Expected %s", errAESBlockSize)
|
t.Fatalf("Expected %s", errAESBlockSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err = EncryptConfigFile([]byte("test"), []byte("key"))
|
result, err = EncryptConfigFile([]byte("test"), []byte("key"))
|
||||||
@@ -86,14 +86,14 @@ func TestDecryptConfigFile(t *testing.T) {
|
|||||||
|
|
||||||
func TestConfirmConfigJSON(t *testing.T) {
|
func TestConfirmConfigJSON(t *testing.T) {
|
||||||
var result interface{}
|
var result interface{}
|
||||||
testConfirmJSON, err := ioutil.ReadFile(ConfigTestFile)
|
testConfirmJSON, err := ioutil.ReadFile(TestFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed. testConfirmJSON: %s", err)
|
t.Errorf("testConfirmJSON: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ConfirmConfigJSON(testConfirmJSON, &result)
|
err = ConfirmConfigJSON(testConfirmJSON, &result)
|
||||||
if err != nil || result == nil {
|
if err != nil || result == nil {
|
||||||
t.Errorf("Test failed. testConfirmJSON: %s", err)
|
t.Errorf("testConfirmJSON: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,7 +102,7 @@ func TestConfirmECS(t *testing.T) {
|
|||||||
|
|
||||||
ECStest := []byte(EncryptConfirmString)
|
ECStest := []byte(EncryptConfirmString)
|
||||||
if !ConfirmECS(ECStest) {
|
if !ConfirmECS(ECStest) {
|
||||||
t.Errorf("Test failed. TestConfirmECS: Error finding ECS.")
|
t.Errorf("TestConfirmECS: Error finding ECS.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ func TestRemoveECS(t *testing.T) {
|
|||||||
isremoved := RemoveECS(ECStest)
|
isremoved := RemoveECS(ECStest)
|
||||||
|
|
||||||
if string(isremoved) != "" {
|
if string(isremoved) != "" {
|
||||||
t.Errorf("Test failed. TestConfirmECS: Error ECS not deleted.")
|
t.Errorf("TestConfirmECS: Error ECS not deleted.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,6 +122,6 @@ func TestMakeNewSessionDK(t *testing.T) {
|
|||||||
|
|
||||||
_, err := makeNewSessionDK(nil)
|
_, err := makeNewSessionDK(nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test failed. makeNewSessionDK passed with nil key")
|
t.Fatal("makeNewSessionDK passed with nil key")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -3,15 +3,77 @@ package config
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||||
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider/base"
|
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider/base"
|
||||||
"github.com/thrasher-corp/gocryptotrader/database"
|
"github.com/thrasher-corp/gocryptotrader/database"
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/exchanges/protocol"
|
||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
"github.com/thrasher-corp/gocryptotrader/portfolio"
|
"github.com/thrasher-corp/gocryptotrader/portfolio"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Constants declared here are filename strings and test strings
|
||||||
|
const (
|
||||||
|
FXProviderFixer = "fixer"
|
||||||
|
EncryptedFile = "config.dat"
|
||||||
|
File = "config.json"
|
||||||
|
TestFile = "../testdata/configtest.json"
|
||||||
|
fileEncryptionPrompt = 0
|
||||||
|
fileEncryptionEnabled = 1
|
||||||
|
fileEncryptionDisabled = -1
|
||||||
|
pairsLastUpdatedWarningThreshold = 30 // 30 days
|
||||||
|
defaultHTTPTimeout = time.Second * 15
|
||||||
|
defaultWebsocketResponseCheckTimeout = time.Millisecond * 30
|
||||||
|
defaultWebsocketResponseMaxLimit = time.Second * 7
|
||||||
|
defaultWebsocketOrderbookBufferLimit = 5
|
||||||
|
defaultWebsocketTrafficTimeout = time.Second * 30
|
||||||
|
maxAuthFailures = 3
|
||||||
|
defaultNTPAllowedDifference = 50000000
|
||||||
|
defaultNTPAllowedNegativeDifference = 50000000
|
||||||
|
DefaultAPIKey = "Key"
|
||||||
|
DefaultAPISecret = "Secret"
|
||||||
|
DefaultAPIClientID = "ClientID"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Constants here hold some messages
|
||||||
|
const (
|
||||||
|
ErrExchangeNameEmpty = "exchange #%d name is empty"
|
||||||
|
ErrExchangeAvailablePairsEmpty = "exchange %s available pairs is empty"
|
||||||
|
ErrExchangeEnabledPairsEmpty = "exchange %s enabled pairs is empty"
|
||||||
|
ErrExchangeBaseCurrenciesEmpty = "exchange %s base currencies is empty"
|
||||||
|
ErrExchangeNotFound = "exchange %s not found"
|
||||||
|
ErrNoEnabledExchanges = "no exchanges enabled"
|
||||||
|
ErrCryptocurrenciesEmpty = "cryptocurrencies variable is empty"
|
||||||
|
ErrFailureOpeningConfig = "fatal error opening %s file. Error: %s"
|
||||||
|
ErrCheckingConfigValues = "fatal error checking config values. Error: %s"
|
||||||
|
ErrSavingConfigBytesMismatch = "config file %q bytes comparison doesn't match, read %s expected %s"
|
||||||
|
WarningWebserverCredentialValuesEmpty = "webserver support disabled due to empty Username/Password values"
|
||||||
|
WarningWebserverListenAddressInvalid = "webserver support disabled due to invalid listen address"
|
||||||
|
WarningExchangeAuthAPIDefaultOrEmptyValues = "exchange %s authenticated API support disabled due to default/empty APIKey/Secret/ClientID values"
|
||||||
|
WarningPairsLastUpdatedThresholdExceeded = "exchange %s last manual update of available currency pairs has exceeded %d days. Manual update required!"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Constants here define unset default values displayed in the config.json
|
||||||
|
// file
|
||||||
|
const (
|
||||||
|
APIURLNonDefaultMessage = "NON_DEFAULT_HTTP_LINK_TO_EXCHANGE_API"
|
||||||
|
WebsocketURLNonDefaultMessage = "NON_DEFAULT_HTTP_LINK_TO_WEBSOCKET_EXCHANGE_API"
|
||||||
|
DefaultUnsetAPIKey = "Key"
|
||||||
|
DefaultUnsetAPISecret = "Secret"
|
||||||
|
DefaultUnsetAccountPlan = "accountPlan"
|
||||||
|
DefaultForexProviderExchangeRatesAPI = "ExchangeRates"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Variables here are used for configuration
|
||||||
|
var (
|
||||||
|
Cfg Config
|
||||||
|
IsInitialSetup bool
|
||||||
|
testBypass bool
|
||||||
|
m sync.Mutex
|
||||||
|
)
|
||||||
|
|
||||||
// Config is the overarching object that holds all the information for
|
// Config is the overarching object that holds all the information for
|
||||||
// prestart management of Portfolio, Communications, Webserver and Enabled
|
// prestart management of Portfolio, Communications, Webserver and Enabled
|
||||||
// Exchanges
|
// Exchanges
|
||||||
@@ -313,39 +375,12 @@ type TelegramConfig struct {
|
|||||||
VerificationToken string `json:"verificationToken"`
|
VerificationToken string `json:"verificationToken"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProtocolFeaturesConfig holds all variables for the exchanges supported features
|
|
||||||
// for a protocol (e.g REST or Websocket)
|
|
||||||
type ProtocolFeaturesConfig struct {
|
|
||||||
TickerBatching bool `json:"tickerBatching,omitempty"`
|
|
||||||
AutoPairUpdates bool `json:"autoPairUpdates,omitempty"`
|
|
||||||
AccountBalance bool `json:"accountBalance,omitempty"`
|
|
||||||
CryptoDeposit bool `json:"cryptoDeposit,omitempty"`
|
|
||||||
CryptoWithdrawal uint32 `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"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// FeaturesSupportedConfig stores the exchanges supported features
|
// FeaturesSupportedConfig stores the exchanges supported features
|
||||||
type FeaturesSupportedConfig struct {
|
type FeaturesSupportedConfig struct {
|
||||||
REST bool `json:"restAPI"`
|
REST bool `json:"restAPI"`
|
||||||
RESTCapabilities ProtocolFeaturesConfig `json:"restCapabilities,omitempty"`
|
RESTCapabilities protocol.Features `json:"restCapabilities,omitempty"`
|
||||||
Websocket bool `json:"websocketAPI"`
|
Websocket bool `json:"websocketAPI"`
|
||||||
WebsocketCapabilities ProtocolFeaturesConfig `json:"websocketCapabilities,omitempty"`
|
WebsocketCapabilities protocol.Features `json:"websocketCapabilities,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// FeaturesEnabledConfig stores the exchanges enabled features
|
// FeaturesEnabledConfig stores the exchanges enabled features
|
||||||
|
|||||||
@@ -9,22 +9,22 @@ func TestConnection(t *testing.T) {
|
|||||||
faultyHost := []string{"faultyHost"}
|
faultyHost := []string{"faultyHost"}
|
||||||
_, err := New(faultyDomain, nil, 100000)
|
_, err := New(faultyDomain, nil, 100000)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test Failed - New error cannot be nil")
|
t.Fatal("New error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = New(DefaultDNSList, nil, 100000)
|
_, err = New(DefaultDNSList, nil, 100000)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - New error", err)
|
t.Fatal("New error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = New(nil, faultyHost, 100000)
|
_, err = New(nil, faultyHost, 100000)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - New error cannot be nil", err)
|
t.Fatal("New error cannot be nil", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err := New(nil, nil, 0)
|
c, err := New(nil, nil, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - New error", err)
|
t.Fatal("New error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !c.IsConnected() {
|
if !c.IsConnected() {
|
||||||
|
|||||||
1655
currency/code.go
1655
currency/code.go
File diff suppressed because it is too large
Load Diff
@@ -8,31 +8,31 @@ import (
|
|||||||
|
|
||||||
func TestRoleString(t *testing.T) {
|
func TestRoleString(t *testing.T) {
|
||||||
if Unset.String() != UnsetRollString {
|
if Unset.String() != UnsetRollString {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
UnsetRollString,
|
UnsetRollString,
|
||||||
Unset)
|
Unset)
|
||||||
}
|
}
|
||||||
|
|
||||||
if Fiat.String() != FiatCurrencyString {
|
if Fiat.String() != FiatCurrencyString {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
FiatCurrencyString,
|
FiatCurrencyString,
|
||||||
Fiat)
|
Fiat)
|
||||||
}
|
}
|
||||||
|
|
||||||
if Cryptocurrency.String() != CryptocurrencyString {
|
if Cryptocurrency.String() != CryptocurrencyString {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
CryptocurrencyString,
|
CryptocurrencyString,
|
||||||
Cryptocurrency)
|
Cryptocurrency)
|
||||||
}
|
}
|
||||||
|
|
||||||
if Token.String() != TokenString {
|
if Token.String() != TokenString {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
TokenString,
|
TokenString,
|
||||||
Token)
|
Token)
|
||||||
}
|
}
|
||||||
|
|
||||||
if Contract.String() != ContractString {
|
if Contract.String() != ContractString {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
ContractString,
|
ContractString,
|
||||||
Contract)
|
Contract)
|
||||||
}
|
}
|
||||||
@@ -40,7 +40,7 @@ func TestRoleString(t *testing.T) {
|
|||||||
var random Role = 1 << 7
|
var random Role = 1 << 7
|
||||||
|
|
||||||
if random.String() != "UNKNOWN" {
|
if random.String() != "UNKNOWN" {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
"UNKNOWN",
|
"UNKNOWN",
|
||||||
random)
|
random)
|
||||||
}
|
}
|
||||||
@@ -49,17 +49,18 @@ func TestRoleString(t *testing.T) {
|
|||||||
func TestRoleMarshalJSON(t *testing.T) {
|
func TestRoleMarshalJSON(t *testing.T) {
|
||||||
d, err := common.JSONEncode(Fiat)
|
d, err := common.JSONEncode(Fiat)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - Role MarshalJSON() error", err)
|
t.Error("Role MarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := `"fiatCurrency"`
|
expected := `"fiatCurrency"`
|
||||||
if string(d) != expected {
|
if string(d) != expected {
|
||||||
t.Errorf("Test Failed - Role MarshalJSON() error expected %s but received %s",
|
t.Errorf("Role MarshalJSON() error expected %s but received %s",
|
||||||
expected,
|
expected,
|
||||||
string(d))
|
string(d))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestRoleUnmarshalJSON logic test
|
||||||
func TestRoleUnmarshalJSON(t *testing.T) {
|
func TestRoleUnmarshalJSON(t *testing.T) {
|
||||||
type AllTheRoles struct {
|
type AllTheRoles struct {
|
||||||
RoleOne Role `json:"RoleOne"`
|
RoleOne Role `json:"RoleOne"`
|
||||||
@@ -80,136 +81,158 @@ func TestRoleUnmarshalJSON(t *testing.T) {
|
|||||||
|
|
||||||
e, err := common.JSONEncode(1337)
|
e, err := common.JSONEncode(1337)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Role UnmarshalJSON() error", err)
|
t.Fatal("Role UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var incoming AllTheRoles
|
var incoming AllTheRoles
|
||||||
err = common.JSONDecode(e, &incoming)
|
err = common.JSONDecode(e, &incoming)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test Failed - Role UnmarshalJSON() error", err)
|
t.Fatal("Role UnmarshalJSON() Expected error")
|
||||||
}
|
}
|
||||||
|
|
||||||
e, err = common.JSONEncode(outgoing)
|
e, err = common.JSONEncode(outgoing)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Role UnmarshalJSON() error", err)
|
t.Fatal("Role UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = common.JSONDecode(e, &incoming)
|
err = common.JSONDecode(e, &incoming)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Role UnmarshalJSON() error", err)
|
t.Fatal("Role UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if incoming.RoleOne != Unset {
|
if incoming.RoleOne != Unset {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
Unset,
|
Unset,
|
||||||
incoming.RoleOne)
|
incoming.RoleOne)
|
||||||
}
|
}
|
||||||
|
|
||||||
if incoming.RoleTwo != Cryptocurrency {
|
if incoming.RoleTwo != Cryptocurrency {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
Cryptocurrency,
|
Cryptocurrency,
|
||||||
incoming.RoleTwo)
|
incoming.RoleTwo)
|
||||||
}
|
}
|
||||||
|
|
||||||
if incoming.RoleThree != Fiat {
|
if incoming.RoleThree != Fiat {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
Fiat,
|
Fiat,
|
||||||
incoming.RoleThree)
|
incoming.RoleThree)
|
||||||
}
|
}
|
||||||
|
|
||||||
if incoming.RoleFour != Token {
|
if incoming.RoleFour != Token {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
Token,
|
Token,
|
||||||
incoming.RoleFour)
|
incoming.RoleFour)
|
||||||
}
|
}
|
||||||
|
|
||||||
if incoming.RoleFive != Contract {
|
if incoming.RoleFive != Contract {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
Contract,
|
Contract,
|
||||||
incoming.RoleFive)
|
incoming.RoleFive)
|
||||||
}
|
}
|
||||||
|
|
||||||
if incoming.RoleUnknown != Unset {
|
if incoming.RoleUnknown != Unset {
|
||||||
t.Errorf("Test Failed - Role String() error expected %s but received %s",
|
t.Errorf("Role String() error expected %s but received %s",
|
||||||
incoming.RoleFive,
|
incoming.RoleFive,
|
||||||
incoming.RoleUnknown)
|
incoming.RoleUnknown)
|
||||||
}
|
}
|
||||||
|
var unhandled Role
|
||||||
|
err = unhandled.UnmarshalJSON([]byte("\"ThisIsntReal\""))
|
||||||
|
if err == nil {
|
||||||
|
t.Error("Expected unmarshall error")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestBaseCode(t *testing.T) {
|
func TestBaseCode(t *testing.T) {
|
||||||
var main BaseCodes
|
var main BaseCodes
|
||||||
if main.HasData() {
|
if main.HasData() {
|
||||||
t.Errorf("Test Failed - BaseCode HasData() error expected false but received %v",
|
t.Errorf("BaseCode HasData() error expected false but received %v",
|
||||||
main.HasData())
|
main.HasData())
|
||||||
}
|
}
|
||||||
|
|
||||||
catsCode := main.Register("CATS")
|
catsCode := main.Register("CATS")
|
||||||
if !main.HasData() {
|
if !main.HasData() {
|
||||||
t.Errorf("Test Failed - BaseCode HasData() error expected true but received %v",
|
t.Errorf("BaseCode HasData() error expected true but received %v",
|
||||||
main.HasData())
|
main.HasData())
|
||||||
}
|
}
|
||||||
|
|
||||||
if !main.Register("CATS").Match(catsCode) {
|
if !main.Register("CATS").Match(catsCode) {
|
||||||
t.Errorf("Test Failed - BaseCode Match() error expected true but received %v",
|
t.Errorf("BaseCode Match() error expected true but received %v",
|
||||||
false)
|
false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if main.Register("DOGS").Match(catsCode) {
|
if main.Register("DOGS").Match(catsCode) {
|
||||||
t.Errorf("Test Failed - BaseCode Match() error expected false but received %v",
|
t.Errorf("BaseCode Match() error expected false but received %v",
|
||||||
true)
|
true)
|
||||||
}
|
}
|
||||||
|
|
||||||
loadedCurrencies := main.GetCurrencies()
|
loadedCurrencies := main.GetCurrencies()
|
||||||
|
|
||||||
if loadedCurrencies.Contains(main.Register("OWLS")) {
|
if loadedCurrencies.Contains(main.Register("OWLS")) {
|
||||||
t.Errorf("Test Failed - BaseCode Contains() error expected false but received %v",
|
t.Errorf("BaseCode Contains() error expected false but received %v",
|
||||||
true)
|
true)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !loadedCurrencies.Contains(catsCode) {
|
if !loadedCurrencies.Contains(catsCode) {
|
||||||
t.Errorf("Test Failed - BaseCode Contains() error expected true but received %v",
|
t.Errorf("BaseCode Contains() error expected true but received %v",
|
||||||
false)
|
false)
|
||||||
}
|
}
|
||||||
|
|
||||||
err := main.UpdateContract("Bitcoin Perpetual", "XBTUSD", "Bitmex")
|
err := main.UpdateContract("Bitcoin Perpetual", "XBTUSD", "Bitmex")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - BaseCode UpdateContract error", err)
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = main.UpdateCryptocurrency("Bitcoin", "BTC", 1337)
|
err = main.UpdateCryptocurrency("Bitcoin", "BTC", 1337)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - BaseCode UpdateContract error", err)
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = main.UpdateFiatCurrency("Unreal Dollar", "AUD", 1111)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
|
}
|
||||||
|
if main.Items[5].FullName != "Unreal Dollar" {
|
||||||
|
t.Error("Expected fullname to update for AUD")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = main.UpdateFiatCurrency("Australian Dollar", "AUD", 1336)
|
err = main.UpdateFiatCurrency("Australian Dollar", "AUD", 1336)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - BaseCode UpdateContract error", err)
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
main.Items[5].Role = Unset
|
||||||
|
err = main.UpdateFiatCurrency("Australian Dollar", "AUD", 1336)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
|
}
|
||||||
|
if main.Items[5].Role != Fiat {
|
||||||
|
t.Error("Expected role to change to Fiat")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = main.UpdateToken("Populous", "PPT", "ETH", 1335)
|
err = main.UpdateToken("Populous", "PPT", "ETH", 1335)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - BaseCode UpdateContract error", err)
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
contract := main.Register("XBTUSD")
|
contract := main.Register("XBTUSD")
|
||||||
|
|
||||||
if contract.IsFiatCurrency() {
|
if contract.IsFiatCurrency() {
|
||||||
t.Errorf("Test Failed - BaseCode IsFiatCurrency() error expected false but received %v",
|
t.Errorf("BaseCode IsFiatCurrency() error expected false but received %v",
|
||||||
true)
|
true)
|
||||||
}
|
}
|
||||||
|
|
||||||
if contract.IsCryptocurrency() {
|
if contract.IsCryptocurrency() {
|
||||||
t.Errorf("Test Failed - BaseCode IsFiatCurrency() error expected false but received %v",
|
t.Errorf("BaseCode IsFiatCurrency() error expected false but received %v",
|
||||||
true)
|
true)
|
||||||
}
|
}
|
||||||
|
|
||||||
if contract.IsDefaultFiatCurrency() {
|
if contract.IsDefaultFiatCurrency() {
|
||||||
t.Errorf("Test Failed - BaseCode IsDefaultFiatCurrency() error expected false but received %v",
|
t.Errorf("BaseCode IsDefaultFiatCurrency() error expected false but received %v",
|
||||||
true)
|
true)
|
||||||
}
|
}
|
||||||
|
|
||||||
if contract.IsDefaultFiatCurrency() {
|
if contract.IsDefaultFiatCurrency() {
|
||||||
t.Errorf("Test Failed - BaseCode IsFiatCurrency() error expected false but received %v",
|
t.Errorf("BaseCode IsFiatCurrency() error expected false but received %v",
|
||||||
true)
|
true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,50 +243,101 @@ func TestBaseCode(t *testing.T) {
|
|||||||
Symbol: "ADA",
|
Symbol: "ADA",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - BaseCode LoadItem() error", err)
|
t.Error("BaseCode LoadItem() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
full, err := main.GetFullCurrencyData()
|
full, err := main.GetFullCurrencyData()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - BaseCode GetFullCurrencyData error", err)
|
t.Error("BaseCode GetFullCurrencyData error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(full.Contracts) != 1 {
|
if len(full.Contracts) != 1 {
|
||||||
t.Errorf("Test Failed - BaseCode GetFullCurrencyData() error expected 1 but received %v",
|
t.Errorf("BaseCode GetFullCurrencyData() error expected 1 but received %v",
|
||||||
len(full.Contracts))
|
len(full.Contracts))
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(full.Cryptocurrency) != 2 {
|
if len(full.Cryptocurrency) != 2 {
|
||||||
t.Errorf("Test Failed - BaseCode GetFullCurrencyData() error expected 1 but received %v",
|
t.Errorf("BaseCode GetFullCurrencyData() error expected 1 but received %v",
|
||||||
len(full.Cryptocurrency))
|
len(full.Cryptocurrency))
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(full.FiatCurrency) != 1 {
|
if len(full.FiatCurrency) != 1 {
|
||||||
t.Errorf("Test Failed - BaseCode GetFullCurrencyData() error expected 1 but received %v",
|
t.Errorf("BaseCode GetFullCurrencyData() error expected 1 but received %v",
|
||||||
len(full.FiatCurrency))
|
len(full.FiatCurrency))
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(full.Token) != 1 {
|
if len(full.Token) != 1 {
|
||||||
t.Errorf("Test Failed - BaseCode GetFullCurrencyData() error expected 1 but received %v",
|
t.Errorf("BaseCode GetFullCurrencyData() error expected 1 but received %v",
|
||||||
len(full.Token))
|
len(full.Token))
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(full.UnsetCurrency) != 3 {
|
if len(full.UnsetCurrency) != 3 {
|
||||||
t.Errorf("Test Failed - BaseCode GetFullCurrencyData() error expected 3 but received %v",
|
t.Errorf("BaseCode GetFullCurrencyData() error expected 3 but received %v",
|
||||||
len(full.UnsetCurrency))
|
len(full.UnsetCurrency))
|
||||||
}
|
}
|
||||||
|
|
||||||
if !full.LastMainUpdate.IsZero() {
|
if !full.LastMainUpdate.IsZero() {
|
||||||
t.Errorf("Test Failed - BaseCode GetFullCurrencyData() error expected 0 but received %s",
|
t.Errorf("BaseCode GetFullCurrencyData() error expected 0 but received %s",
|
||||||
full.LastMainUpdate)
|
full.LastMainUpdate)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err = main.LoadItem(&Item{
|
||||||
|
ID: 0,
|
||||||
|
FullName: "Cardano",
|
||||||
|
Role: Role(99),
|
||||||
|
Symbol: "ADA",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
t.Error("BaseCode LoadItem() error", err)
|
||||||
|
}
|
||||||
|
_, err = main.GetFullCurrencyData()
|
||||||
|
if err == nil {
|
||||||
|
t.Error("Expected 'Role undefined'")
|
||||||
|
}
|
||||||
|
|
||||||
|
main.Items[0].FullName = "Hello"
|
||||||
|
err = main.UpdateCryptocurrency("MEWOW", "CATS", 1338)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
|
}
|
||||||
|
if main.Items[0].FullName != "MEWOW" {
|
||||||
|
t.Error("Fullname not updated")
|
||||||
|
}
|
||||||
|
err = main.UpdateCryptocurrency("MEWOW", "CATS", 1338)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
main.Items[0].Role = Cryptocurrency
|
||||||
|
err = main.UpdateCryptocurrency("MEWOW", "CATS", 3)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
|
}
|
||||||
|
if main.Items[0].ID != 3 {
|
||||||
|
t.Error("ID not updated")
|
||||||
|
}
|
||||||
|
|
||||||
|
main.Items[0].Role = Unset
|
||||||
|
err = main.UpdateCryptocurrency("MEWOW", "CATS", 1338)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("BaseCode UpdateContract error", err)
|
||||||
|
}
|
||||||
|
if main.Items[0].ID != 1338 {
|
||||||
|
t.Error("ID not updated")
|
||||||
|
}
|
||||||
|
|
||||||
|
main.Items[0].Role = Token
|
||||||
|
err = main.UpdateCryptocurrency("MEWOW", "CATS", 3)
|
||||||
|
if err == nil {
|
||||||
|
t.Error("Expecting cryptocurrency to already exist")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCodeString(t *testing.T) {
|
func TestCodeString(t *testing.T) {
|
||||||
expected := "TEST"
|
expected := "TEST"
|
||||||
cc := NewCode("TEST")
|
cc := NewCode("TEST")
|
||||||
if cc.String() != expected {
|
if cc.String() != expected {
|
||||||
t.Errorf("Test Failed - Currency Code String() error expected %s but received %s",
|
t.Errorf("Currency Code String() error expected %s but received %s",
|
||||||
expected, cc)
|
expected, cc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -272,7 +346,7 @@ func TestCodeLower(t *testing.T) {
|
|||||||
expected := "test"
|
expected := "test"
|
||||||
cc := NewCode("TEST")
|
cc := NewCode("TEST")
|
||||||
if cc.Lower().String() != expected {
|
if cc.Lower().String() != expected {
|
||||||
t.Errorf("Test Failed - Currency Code Lower() error expected %s but received %s",
|
t.Errorf("Currency Code Lower() error expected %s but received %s",
|
||||||
expected,
|
expected,
|
||||||
cc.Lower())
|
cc.Lower())
|
||||||
}
|
}
|
||||||
@@ -282,7 +356,7 @@ func TestCodeUpper(t *testing.T) {
|
|||||||
expected := "TEST"
|
expected := "TEST"
|
||||||
cc := NewCode("test")
|
cc := NewCode("test")
|
||||||
if cc.Upper().String() != expected {
|
if cc.Upper().String() != expected {
|
||||||
t.Errorf("Test Failed - Currency Code Upper() error expected %s but received %s",
|
t.Errorf("Currency Code Upper() error expected %s but received %s",
|
||||||
expected,
|
expected,
|
||||||
cc.Upper())
|
cc.Upper())
|
||||||
}
|
}
|
||||||
@@ -293,21 +367,21 @@ func TestCodeUnmarshalJSON(t *testing.T) {
|
|||||||
expected := "BRO"
|
expected := "BRO"
|
||||||
encoded, err := common.JSONEncode(expected)
|
encoded, err := common.JSONEncode(expected)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Currency Code UnmarshalJSON error", err)
|
t.Fatal("Currency Code UnmarshalJSON error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = common.JSONDecode(encoded, &unmarshalHere)
|
err = common.JSONDecode(encoded, &unmarshalHere)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Currency Code UnmarshalJSON error", err)
|
t.Fatal("Currency Code UnmarshalJSON error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = common.JSONDecode(encoded, &unmarshalHere)
|
err = common.JSONDecode(encoded, &unmarshalHere)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Currency Code UnmarshalJSON error", err)
|
t.Fatal("Currency Code UnmarshalJSON error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if unmarshalHere.String() != expected {
|
if unmarshalHere.String() != expected {
|
||||||
t.Errorf("Test Failed - Currency Code Upper() error expected %s but received %s",
|
t.Errorf("Currency Code Upper() error expected %s but received %s",
|
||||||
expected,
|
expected,
|
||||||
unmarshalHere)
|
unmarshalHere)
|
||||||
}
|
}
|
||||||
@@ -324,11 +398,11 @@ func TestCodeMarshalJSON(t *testing.T) {
|
|||||||
|
|
||||||
encoded, err := common.JSONEncode(quickstruct)
|
encoded, err := common.JSONEncode(quickstruct)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Currency Code UnmarshalJSON error", err)
|
t.Fatal("Currency Code UnmarshalJSON error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if string(encoded) != expectedJSON {
|
if string(encoded) != expectedJSON {
|
||||||
t.Errorf("Test Failed - Currency Code Upper() error expected %s but received %s",
|
t.Errorf("Currency Code Upper() error expected %s but received %s",
|
||||||
expectedJSON,
|
expectedJSON,
|
||||||
string(encoded))
|
string(encoded))
|
||||||
}
|
}
|
||||||
@@ -341,42 +415,42 @@ func TestCodeMarshalJSON(t *testing.T) {
|
|||||||
|
|
||||||
encoded, err = common.JSONEncode(quickstruct)
|
encoded, err = common.JSONEncode(quickstruct)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Currency Code UnmarshalJSON error", err)
|
t.Fatal("Currency Code UnmarshalJSON error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
newExpectedJSON := `{"sweetCodes":""}`
|
newExpectedJSON := `{"sweetCodes":""}`
|
||||||
if string(encoded) != newExpectedJSON {
|
if string(encoded) != newExpectedJSON {
|
||||||
t.Errorf("Test Failed - Currency Code Upper() error expected %s but received %s",
|
t.Errorf("Currency Code Upper() error expected %s but received %s",
|
||||||
newExpectedJSON, string(encoded))
|
newExpectedJSON, string(encoded))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsDefaultCurrency(t *testing.T) {
|
func TestIsDefaultCurrency(t *testing.T) {
|
||||||
if !USD.IsDefaultFiatCurrency() {
|
if !USD.IsDefaultFiatCurrency() {
|
||||||
t.Errorf("Test Failed. TestIsDefaultCurrency Cannot match currency %s.",
|
t.Errorf("TestIsDefaultCurrency Cannot match currency %s.",
|
||||||
USD)
|
USD)
|
||||||
}
|
}
|
||||||
if !AUD.IsDefaultFiatCurrency() {
|
if !AUD.IsDefaultFiatCurrency() {
|
||||||
t.Errorf("Test Failed. TestIsDefaultCurrency Cannot match currency, %s.",
|
t.Errorf("TestIsDefaultCurrency Cannot match currency, %s.",
|
||||||
AUD)
|
AUD)
|
||||||
}
|
}
|
||||||
if LTC.IsDefaultFiatCurrency() {
|
if LTC.IsDefaultFiatCurrency() {
|
||||||
t.Errorf("Test Failed. TestIsDefaultCurrency Function return is incorrect with, %s.",
|
t.Errorf("TestIsDefaultCurrency Function return is incorrect with, %s.",
|
||||||
LTC)
|
LTC)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsDefaultCryptocurrency(t *testing.T) {
|
func TestIsDefaultCryptocurrency(t *testing.T) {
|
||||||
if !BTC.IsDefaultCryptocurrency() {
|
if !BTC.IsDefaultCryptocurrency() {
|
||||||
t.Errorf("Test Failed. TestIsDefaultCryptocurrency cannot match currency, %s.",
|
t.Errorf("TestIsDefaultCryptocurrency cannot match currency, %s.",
|
||||||
BTC)
|
BTC)
|
||||||
}
|
}
|
||||||
if !LTC.IsDefaultCryptocurrency() {
|
if !LTC.IsDefaultCryptocurrency() {
|
||||||
t.Errorf("Test Failed. TestIsDefaultCryptocurrency cannot match currency, %s.",
|
t.Errorf("TestIsDefaultCryptocurrency cannot match currency, %s.",
|
||||||
LTC)
|
LTC)
|
||||||
}
|
}
|
||||||
if AUD.IsDefaultCryptocurrency() {
|
if AUD.IsDefaultCryptocurrency() {
|
||||||
t.Errorf("Test Failed. TestIsDefaultCryptocurrency function return is incorrect with, %s.",
|
t.Errorf("TestIsDefaultCryptocurrency function return is incorrect with, %s.",
|
||||||
AUD)
|
AUD)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -384,30 +458,30 @@ func TestIsDefaultCryptocurrency(t *testing.T) {
|
|||||||
func TestIsFiatCurrency(t *testing.T) {
|
func TestIsFiatCurrency(t *testing.T) {
|
||||||
if !USD.IsFiatCurrency() {
|
if !USD.IsFiatCurrency() {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test Failed. TestIsFiatCurrency cannot match currency, %s.", USD)
|
"TestIsFiatCurrency cannot match currency, %s.", USD)
|
||||||
}
|
}
|
||||||
if !CNY.IsFiatCurrency() {
|
if !CNY.IsFiatCurrency() {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test Failed. TestIsFiatCurrency cannot match currency, %s.", CNY)
|
"TestIsFiatCurrency cannot match currency, %s.", CNY)
|
||||||
}
|
}
|
||||||
if LINO.IsFiatCurrency() {
|
if LINO.IsFiatCurrency() {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test Failed. TestIsFiatCurrency cannot match currency, %s.", LINO,
|
"TestIsFiatCurrency cannot match currency, %s.", LINO,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsCryptocurrency(t *testing.T) {
|
func TestIsCryptocurrency(t *testing.T) {
|
||||||
if !BTC.IsCryptocurrency() {
|
if !BTC.IsCryptocurrency() {
|
||||||
t.Errorf("Test Failed. TestIsFiatCurrency cannot match currency, %s.",
|
t.Errorf("TestIsFiatCurrency cannot match currency, %s.",
|
||||||
BTC)
|
BTC)
|
||||||
}
|
}
|
||||||
if !LTC.IsCryptocurrency() {
|
if !LTC.IsCryptocurrency() {
|
||||||
t.Errorf("Test Failed. TestIsFiatCurrency cannot match currency, %s.",
|
t.Errorf("TestIsFiatCurrency cannot match currency, %s.",
|
||||||
LTC)
|
LTC)
|
||||||
}
|
}
|
||||||
if AUD.IsCryptocurrency() {
|
if AUD.IsCryptocurrency() {
|
||||||
t.Errorf("Test Failed. TestIsFiatCurrency cannot match currency, %s.",
|
t.Errorf("TestIsFiatCurrency cannot match currency, %s.",
|
||||||
AUD)
|
AUD)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -419,7 +493,7 @@ func TestItemString(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if newItem.String() != expected {
|
if newItem.String() != expected {
|
||||||
t.Errorf("Test Failed - Item String() error expected %s but received %s",
|
t.Errorf("Item String() error expected %s but received %s",
|
||||||
expected,
|
expected,
|
||||||
&newItem)
|
&newItem)
|
||||||
}
|
}
|
||||||
|
|||||||
1655
currency/code_types.go
Normal file
1655
currency/code_types.go
Normal file
File diff suppressed because it is too large
Load Diff
@@ -18,53 +18,6 @@ import (
|
|||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Coinmarketcap account plan bitmasks, url and enpoint consts
|
|
||||||
const (
|
|
||||||
Basic uint8 = 1 << iota
|
|
||||||
Hobbyist
|
|
||||||
Startup
|
|
||||||
Standard
|
|
||||||
Professional
|
|
||||||
Enterprise
|
|
||||||
|
|
||||||
baseURL = "https://pro-api.coinmarketcap.com"
|
|
||||||
sandboxURL = "https://sandbox-api.coinmarketcap.com"
|
|
||||||
version = "/v1/"
|
|
||||||
|
|
||||||
endpointCryptocurrencyInfo = "cryptocurrency/info"
|
|
||||||
endpointCryptocurrencyMap = "cryptocurrency/map"
|
|
||||||
endpointCryptocurrencyHistoricalListings = "cryptocurrency/listings/historical"
|
|
||||||
endpointCryptocurrencyLatestListings = "cryptocurrency/listings/latest"
|
|
||||||
endpointCryptocurrencyMarketPairs = "cryptocurrency/market-pairs/latest"
|
|
||||||
endpointOHLCVHistorical = "cryptocurrency/ohlcv/historical"
|
|
||||||
endpointOHLCVLatest = "cryptocurrency/ohlcv/latest"
|
|
||||||
endpointGetMarketQuotesHistorical = "cryptocurrency/quotes/historical"
|
|
||||||
endpointGetMarketQuotesLatest = "cryptocurrency/quotes/latest"
|
|
||||||
endpointExchangeInfo = "exchange/info"
|
|
||||||
endpointExchangeMap = "exchange/map"
|
|
||||||
endpointExchangeMarketPairsLatest = "exchange/market-pairs/latest"
|
|
||||||
endpointExchangeMarketQuoteHistorical = "exchange/quotes/historical"
|
|
||||||
endpointExchangeMarketQuoteLatest = "exchange/quotes/latest"
|
|
||||||
endpointGlobalQuoteHistorical = "global-metrics/quotes/historical"
|
|
||||||
endpointGlobalQuoteLatest = "global-metrics/quotes/latest"
|
|
||||||
endpointPriceConversion = "tools/price-conversion"
|
|
||||||
|
|
||||||
authrate = 0
|
|
||||||
defaultTimeOut = time.Second * 15
|
|
||||||
)
|
|
||||||
|
|
||||||
// Coinmarketcap is the overarching type across this package
|
|
||||||
type Coinmarketcap struct {
|
|
||||||
Verbose bool
|
|
||||||
Enabled bool
|
|
||||||
Name string
|
|
||||||
APIkey string
|
|
||||||
APIUrl string
|
|
||||||
APIVersion string
|
|
||||||
Plan uint8
|
|
||||||
Requester *request.Requester
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetDefaults sets default values for the exchange
|
// SetDefaults sets default values for the exchange
|
||||||
func (c *Coinmarketcap) SetDefaults() {
|
func (c *Coinmarketcap) SetDefaults() {
|
||||||
c.Name = "CoinMarketCap"
|
c.Name = "CoinMarketCap"
|
||||||
|
|||||||
@@ -58,32 +58,32 @@ func TestCheckAccountPlan(t *testing.T) {
|
|||||||
if areAPICredtionalsSet(Basic) {
|
if areAPICredtionalsSet(Basic) {
|
||||||
err := c.CheckAccountPlan(Enterprise)
|
err := c.CheckAccountPlan(Enterprise)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - CheckAccountPlan() error cannot be nil")
|
t.Error("CheckAccountPlan() error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = c.CheckAccountPlan(Professional)
|
err = c.CheckAccountPlan(Professional)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - CheckAccountPlan() error cannot be nil")
|
t.Error("CheckAccountPlan() error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = c.CheckAccountPlan(Standard)
|
err = c.CheckAccountPlan(Standard)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - CheckAccountPlan() error cannot be nil")
|
t.Error("CheckAccountPlan() error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = c.CheckAccountPlan(Hobbyist)
|
err = c.CheckAccountPlan(Hobbyist)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - CheckAccountPlan() error cannot be nil")
|
t.Error("CheckAccountPlan() error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = c.CheckAccountPlan(Startup)
|
err = c.CheckAccountPlan(Startup)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - CheckAccountPlan() error cannot be nil")
|
t.Error("CheckAccountPlan() error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = c.CheckAccountPlan(Basic)
|
err = c.CheckAccountPlan(Basic)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - CheckAccountPlan() error", err)
|
t.Error("CheckAccountPlan() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -94,11 +94,11 @@ func TestGetCryptocurrencyInfo(t *testing.T) {
|
|||||||
_, err := c.GetCryptocurrencyInfo(1)
|
_, err := c.GetCryptocurrencyInfo(1)
|
||||||
if areAPICredtionalsSet(Basic) {
|
if areAPICredtionalsSet(Basic) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyInfo() error", err)
|
t.Error("GetCryptocurrencyInfo() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyInfo() error cannot be nil")
|
t.Error("GetCryptocurrencyInfo() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -109,11 +109,11 @@ func TestGetCryptocurrencyIDMap(t *testing.T) {
|
|||||||
_, err := c.GetCryptocurrencyIDMap()
|
_, err := c.GetCryptocurrencyIDMap()
|
||||||
if areAPICredtionalsSet(Basic) {
|
if areAPICredtionalsSet(Basic) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyIDMap() error", err)
|
t.Error("GetCryptocurrencyIDMap() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyIDMap() error cannot be nil")
|
t.Error("GetCryptocurrencyIDMap() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -123,7 +123,7 @@ func TestGetCryptocurrencyHistoricalListings(t *testing.T) {
|
|||||||
TestSetup(t)
|
TestSetup(t)
|
||||||
_, err := c.GetCryptocurrencyHistoricalListings()
|
_, err := c.GetCryptocurrencyHistoricalListings()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyHistoricalListings() error cannot be nil")
|
t.Error("GetCryptocurrencyHistoricalListings() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,11 +133,11 @@ func TestGetCryptocurrencyLatestListing(t *testing.T) {
|
|||||||
_, err := c.GetCryptocurrencyLatestListing(0, 0)
|
_, err := c.GetCryptocurrencyLatestListing(0, 0)
|
||||||
if areAPICredtionalsSet(Basic) {
|
if areAPICredtionalsSet(Basic) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyLatestListing() error", err)
|
t.Error("GetCryptocurrencyLatestListing() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyLatestListing() error cannot be nil")
|
t.Error("GetCryptocurrencyLatestListing() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -148,12 +148,12 @@ func TestGetCryptocurrencyLatestMarketPairs(t *testing.T) {
|
|||||||
_, err := c.GetCryptocurrencyLatestMarketPairs(1, 0, 0)
|
_, err := c.GetCryptocurrencyLatestMarketPairs(1, 0, 0)
|
||||||
if areAPICredtionalsSet(Standard) {
|
if areAPICredtionalsSet(Standard) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyLatestMarketPairs() error",
|
t.Error("GetCryptocurrencyLatestMarketPairs() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyLatestMarketPairs() error cannot be nil")
|
t.Error("GetCryptocurrencyLatestMarketPairs() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -164,12 +164,12 @@ func TestGetCryptocurrencyOHLCHistorical(t *testing.T) {
|
|||||||
_, err := c.GetCryptocurrencyOHLCHistorical(1, time.Now(), time.Now())
|
_, err := c.GetCryptocurrencyOHLCHistorical(1, time.Now(), time.Now())
|
||||||
if areAPICredtionalsSet(Standard) {
|
if areAPICredtionalsSet(Standard) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyOHLCHistorical() error",
|
t.Error("GetCryptocurrencyOHLCHistorical() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyOHLCHistorical() error cannot be nil")
|
t.Error("GetCryptocurrencyOHLCHistorical() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -180,12 +180,12 @@ func TestGetCryptocurrencyOHLCLatest(t *testing.T) {
|
|||||||
_, err := c.GetCryptocurrencyOHLCLatest(1)
|
_, err := c.GetCryptocurrencyOHLCLatest(1)
|
||||||
if areAPICredtionalsSet(Startup) {
|
if areAPICredtionalsSet(Startup) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyOHLCLatest() error",
|
t.Error("GetCryptocurrencyOHLCLatest() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyOHLCLatest() error cannot be nil")
|
t.Error("GetCryptocurrencyOHLCLatest() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -196,12 +196,12 @@ func TestGetCryptocurrencyLatestQuotes(t *testing.T) {
|
|||||||
_, err := c.GetCryptocurrencyLatestQuotes(1)
|
_, err := c.GetCryptocurrencyLatestQuotes(1)
|
||||||
if areAPICredtionalsSet(Basic) {
|
if areAPICredtionalsSet(Basic) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyLatestQuotes() error",
|
t.Error("GetCryptocurrencyLatestQuotes() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyLatestQuotes() error cannot be nil")
|
t.Error("GetCryptocurrencyLatestQuotes() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -212,12 +212,12 @@ func TestGetCryptocurrencyHistoricalQuotes(t *testing.T) {
|
|||||||
_, err := c.GetCryptocurrencyHistoricalQuotes(1, time.Now(), time.Now())
|
_, err := c.GetCryptocurrencyHistoricalQuotes(1, time.Now(), time.Now())
|
||||||
if areAPICredtionalsSet(Standard) {
|
if areAPICredtionalsSet(Standard) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyHistoricalQuotes() error",
|
t.Error("GetCryptocurrencyHistoricalQuotes() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetCryptocurrencyHistoricalQuotes() error cannot be nil")
|
t.Error("GetCryptocurrencyHistoricalQuotes() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -228,12 +228,12 @@ func TestGetExchangeInfo(t *testing.T) {
|
|||||||
_, err := c.GetExchangeInfo(1)
|
_, err := c.GetExchangeInfo(1)
|
||||||
if areAPICredtionalsSet(Startup) {
|
if areAPICredtionalsSet(Startup) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetExchangeInfo() error",
|
t.Error("GetExchangeInfo() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetExchangeInfo() error cannot be nil")
|
t.Error("GetExchangeInfo() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -244,12 +244,12 @@ func TestGetExchangeMap(t *testing.T) {
|
|||||||
_, err := c.GetExchangeMap(0, 0)
|
_, err := c.GetExchangeMap(0, 0)
|
||||||
if areAPICredtionalsSet(Startup) {
|
if areAPICredtionalsSet(Startup) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetExchangeMap() error",
|
t.Error("GetExchangeMap() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetExchangeMap() error cannot be nil")
|
t.Error("GetExchangeMap() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -260,7 +260,7 @@ func TestGetExchangeHistoricalListings(t *testing.T) {
|
|||||||
_, err := c.GetExchangeHistoricalListings()
|
_, err := c.GetExchangeHistoricalListings()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// TODO: update this once the feature above is implemented
|
// TODO: update this once the feature above is implemented
|
||||||
t.Error("Test Failed - GetExchangeHistoricalListings() error cannot be nil")
|
t.Error("GetExchangeHistoricalListings() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ func TestGetExchangeLatestListings(t *testing.T) {
|
|||||||
_, err := c.GetExchangeLatestListings()
|
_, err := c.GetExchangeLatestListings()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// TODO: update this once the feature above is implemented
|
// TODO: update this once the feature above is implemented
|
||||||
t.Error("Test Failed - GetExchangeHistoricalListings() error cannot be nil")
|
t.Error("GetExchangeHistoricalListings() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -280,12 +280,12 @@ func TestGetExchangeLatestMarketPairs(t *testing.T) {
|
|||||||
_, err := c.GetExchangeLatestMarketPairs(1, 0, 0)
|
_, err := c.GetExchangeLatestMarketPairs(1, 0, 0)
|
||||||
if areAPICredtionalsSet(Standard) {
|
if areAPICredtionalsSet(Standard) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetExchangeLatestMarketPairs() error",
|
t.Error("GetExchangeLatestMarketPairs() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetExchangeLatestMarketPairs() error cannot be nil")
|
t.Error("GetExchangeLatestMarketPairs() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -296,12 +296,12 @@ func TestGetExchangeLatestQuotes(t *testing.T) {
|
|||||||
_, err := c.GetExchangeLatestQuotes(1)
|
_, err := c.GetExchangeLatestQuotes(1)
|
||||||
if areAPICredtionalsSet(Standard) {
|
if areAPICredtionalsSet(Standard) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetExchangeLatestQuotes() error",
|
t.Error("GetExchangeLatestQuotes() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetExchangeLatestQuotes() error cannot be nil")
|
t.Error("GetExchangeLatestQuotes() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -312,12 +312,12 @@ func TestGetExchangeHistoricalQuotes(t *testing.T) {
|
|||||||
_, err := c.GetExchangeHistoricalQuotes(1, time.Now(), time.Now())
|
_, err := c.GetExchangeHistoricalQuotes(1, time.Now(), time.Now())
|
||||||
if areAPICredtionalsSet(Standard) {
|
if areAPICredtionalsSet(Standard) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetExchangeHistoricalQuotes() error",
|
t.Error("GetExchangeHistoricalQuotes() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetExchangeHistoricalQuotes() error cannot be nil")
|
t.Error("GetExchangeHistoricalQuotes() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -328,12 +328,12 @@ func TestGetGlobalMeticLatestQuotes(t *testing.T) {
|
|||||||
_, err := c.GetGlobalMeticLatestQuotes()
|
_, err := c.GetGlobalMeticLatestQuotes()
|
||||||
if areAPICredtionalsSet(Basic) {
|
if areAPICredtionalsSet(Basic) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetGlobalMeticLatestQuotes() error",
|
t.Error("GetGlobalMeticLatestQuotes() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetGlobalMeticLatestQuotes() error cannot be nil")
|
t.Error("GetGlobalMeticLatestQuotes() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -344,12 +344,12 @@ func TestGetGlobalMeticHistoricalQuotes(t *testing.T) {
|
|||||||
_, err := c.GetGlobalMeticHistoricalQuotes(time.Now(), time.Now())
|
_, err := c.GetGlobalMeticHistoricalQuotes(time.Now(), time.Now())
|
||||||
if areAPICredtionalsSet(Standard) {
|
if areAPICredtionalsSet(Standard) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetGlobalMeticHistoricalQuotes() error",
|
t.Error("GetGlobalMeticHistoricalQuotes() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetGlobalMeticHistoricalQuotes() error cannot be nil")
|
t.Error("GetGlobalMeticHistoricalQuotes() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -360,12 +360,12 @@ func TestGetPriceConversion(t *testing.T) {
|
|||||||
_, err := c.GetPriceConversion(0, 1, time.Now())
|
_, err := c.GetPriceConversion(0, 1, time.Now())
|
||||||
if areAPICredtionalsSet(Hobbyist) {
|
if areAPICredtionalsSet(Hobbyist) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetPriceConversion() error",
|
t.Error("GetPriceConversion() error",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetPriceConversion() error cannot be nil")
|
t.Error("GetPriceConversion() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -375,38 +375,38 @@ func TestSetAccountPlan(t *testing.T) {
|
|||||||
for _, plan := range accPlans {
|
for _, plan := range accPlans {
|
||||||
err := c.SetAccountPlan(plan)
|
err := c.SetAccountPlan(plan)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - SetAccountPlan() error", err)
|
t.Error("SetAccountPlan() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch plan {
|
switch plan {
|
||||||
case "basic":
|
case "basic":
|
||||||
if c.Plan != Basic {
|
if c.Plan != Basic {
|
||||||
t.Error("Test Failed - SetAccountPlan() error basic plan not set correctly")
|
t.Error("SetAccountPlan() error basic plan not set correctly")
|
||||||
}
|
}
|
||||||
case "startup":
|
case "startup":
|
||||||
if c.Plan != Startup {
|
if c.Plan != Startup {
|
||||||
t.Error("Test Failed - SetAccountPlan() error startup plan not set correctly")
|
t.Error("SetAccountPlan() error startup plan not set correctly")
|
||||||
}
|
}
|
||||||
case "hobbyist":
|
case "hobbyist":
|
||||||
if c.Plan != Hobbyist {
|
if c.Plan != Hobbyist {
|
||||||
t.Error("Test Failed - SetAccountPlan() error hobbyist plan not set correctly")
|
t.Error("SetAccountPlan() error hobbyist plan not set correctly")
|
||||||
}
|
}
|
||||||
case "standard":
|
case "standard":
|
||||||
if c.Plan != Standard {
|
if c.Plan != Standard {
|
||||||
t.Error("Test Failed - SetAccountPlan() error standard plan not set correctly")
|
t.Error("SetAccountPlan() error standard plan not set correctly")
|
||||||
}
|
}
|
||||||
case "professional":
|
case "professional":
|
||||||
if c.Plan != Professional {
|
if c.Plan != Professional {
|
||||||
t.Error("Test Failed - SetAccountPlan() error professional plan not set correctly")
|
t.Error("SetAccountPlan() error professional plan not set correctly")
|
||||||
}
|
}
|
||||||
case "enterprise":
|
case "enterprise":
|
||||||
if c.Plan != Enterprise {
|
if c.Plan != Enterprise {
|
||||||
t.Error("Test Failed - SetAccountPlan() error enterprise plan not set correctly")
|
t.Error("SetAccountPlan() error enterprise plan not set correctly")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := c.SetAccountPlan("bra"); err == nil {
|
if err := c.SetAccountPlan("bra"); err == nil {
|
||||||
t.Error("Test Failed - SetAccountPlan() error cannot be nil")
|
t.Error("SetAccountPlan() error cannot be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,57 @@
|
|||||||
package coinmarketcap
|
package coinmarketcap
|
||||||
|
|
||||||
import "time"
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Coinmarketcap account plan bitmasks, url and enpoint consts
|
||||||
|
const (
|
||||||
|
Basic uint8 = 1 << iota
|
||||||
|
Hobbyist
|
||||||
|
Startup
|
||||||
|
Standard
|
||||||
|
Professional
|
||||||
|
Enterprise
|
||||||
|
|
||||||
|
baseURL = "https://pro-api.coinmarketcap.com"
|
||||||
|
sandboxURL = "https://sandbox-api.coinmarketcap.com"
|
||||||
|
version = "/v1/"
|
||||||
|
|
||||||
|
endpointCryptocurrencyInfo = "cryptocurrency/info"
|
||||||
|
endpointCryptocurrencyMap = "cryptocurrency/map"
|
||||||
|
endpointCryptocurrencyHistoricalListings = "cryptocurrency/listings/historical"
|
||||||
|
endpointCryptocurrencyLatestListings = "cryptocurrency/listings/latest"
|
||||||
|
endpointCryptocurrencyMarketPairs = "cryptocurrency/market-pairs/latest"
|
||||||
|
endpointOHLCVHistorical = "cryptocurrency/ohlcv/historical"
|
||||||
|
endpointOHLCVLatest = "cryptocurrency/ohlcv/latest"
|
||||||
|
endpointGetMarketQuotesHistorical = "cryptocurrency/quotes/historical"
|
||||||
|
endpointGetMarketQuotesLatest = "cryptocurrency/quotes/latest"
|
||||||
|
endpointExchangeInfo = "exchange/info"
|
||||||
|
endpointExchangeMap = "exchange/map"
|
||||||
|
endpointExchangeMarketPairsLatest = "exchange/market-pairs/latest"
|
||||||
|
endpointExchangeMarketQuoteHistorical = "exchange/quotes/historical"
|
||||||
|
endpointExchangeMarketQuoteLatest = "exchange/quotes/latest"
|
||||||
|
endpointGlobalQuoteHistorical = "global-metrics/quotes/historical"
|
||||||
|
endpointGlobalQuoteLatest = "global-metrics/quotes/latest"
|
||||||
|
endpointPriceConversion = "tools/price-conversion"
|
||||||
|
|
||||||
|
authrate = 0
|
||||||
|
defaultTimeOut = time.Second * 15
|
||||||
|
)
|
||||||
|
|
||||||
|
// Coinmarketcap is the overarching type across this package
|
||||||
|
type Coinmarketcap struct {
|
||||||
|
Verbose bool
|
||||||
|
Enabled bool
|
||||||
|
Name string
|
||||||
|
APIkey string
|
||||||
|
APIUrl string
|
||||||
|
APIVersion string
|
||||||
|
Plan uint8
|
||||||
|
Requester *request.Requester
|
||||||
|
}
|
||||||
|
|
||||||
// Settings defines the current settings from configuration file
|
// Settings defines the current settings from configuration file
|
||||||
type Settings struct {
|
type Settings struct {
|
||||||
|
|||||||
@@ -254,11 +254,6 @@ func (c *ConversionRates) GetFullRates() Conversions {
|
|||||||
// Conversions define a list of conversion data
|
// Conversions define a list of conversion data
|
||||||
type Conversions []Conversion
|
type Conversions []Conversion
|
||||||
|
|
||||||
// Slice exposes the underlying Conversion slice type
|
|
||||||
func (c Conversions) Slice() []Conversion {
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewConversionFromString splits a string from a foreign exchange provider
|
// NewConversionFromString splits a string from a foreign exchange provider
|
||||||
func NewConversionFromString(p string) (Conversion, error) {
|
func NewConversionFromString(p string) (Conversion, error) {
|
||||||
return NewConversionFromStrings(p[:3], p[3:])
|
return NewConversionFromStrings(p[:3], p[3:])
|
||||||
@@ -302,7 +297,7 @@ func (c Conversion) String() string {
|
|||||||
return c.From.String() + c.To.String()
|
return c.From.String() + c.To.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetRate returns system rate if availabled
|
// GetRate returns system rate if available
|
||||||
func (c Conversion) GetRate() (float64, error) {
|
func (c Conversion) GetRate() (float64, error) {
|
||||||
c.mtx.Lock()
|
c.mtx.Lock()
|
||||||
defer c.mtx.Unlock()
|
defer c.mtx.Unlock()
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package currency
|
package currency
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
@@ -9,10 +10,10 @@ func TestNewConversionFromString(t *testing.T) {
|
|||||||
expected := "AUDUSD"
|
expected := "AUDUSD"
|
||||||
conv, err := NewConversionFromString(expected)
|
conv, err := NewConversionFromString(expected)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - NewConversionFromString() error", err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
if conv.String() != expected {
|
if conv.String() != expected {
|
||||||
t.Errorf("Test Failed - NewConversion() error expected %s but received %s",
|
t.Errorf("NewConversion() error expected %s but received %s",
|
||||||
expected,
|
expected,
|
||||||
conv)
|
conv)
|
||||||
}
|
}
|
||||||
@@ -20,10 +21,10 @@ func TestNewConversionFromString(t *testing.T) {
|
|||||||
newexpected := strings.ToLower(expected)
|
newexpected := strings.ToLower(expected)
|
||||||
conv, err = NewConversionFromString(newexpected)
|
conv, err = NewConversionFromString(newexpected)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - NewConversionFromString() error", err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
if conv.String() != newexpected {
|
if conv.String() != newexpected {
|
||||||
t.Errorf("Test Failed - NewConversion() error expected %s but received %s",
|
t.Errorf("NewConversion() error expected %s but received %s",
|
||||||
newexpected,
|
newexpected,
|
||||||
conv)
|
conv)
|
||||||
}
|
}
|
||||||
@@ -36,11 +37,11 @@ func TestNewConversionFromStrings(t *testing.T) {
|
|||||||
|
|
||||||
conv, err := NewConversionFromStrings(from, to)
|
conv, err := NewConversionFromStrings(from, to)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - NewConversionFromString() error", err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if conv.String() != expected {
|
if conv.String() != expected {
|
||||||
t.Errorf("Test Failed - NewConversion() error expected %s but received %s",
|
t.Errorf("NewConversion() error expected %s but received %s",
|
||||||
expected,
|
expected,
|
||||||
conv)
|
conv)
|
||||||
}
|
}
|
||||||
@@ -53,11 +54,11 @@ func TestNewConversion(t *testing.T) {
|
|||||||
|
|
||||||
conv, err := NewConversion(from, to)
|
conv, err := NewConversion(from, to)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - NewConversionFromCode() error", err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if conv.String() != expected {
|
if conv.String() != expected {
|
||||||
t.Errorf("Test Failed - NewConversion() error expected %s but received %s",
|
t.Errorf("NewConversion() error expected %s but received %s",
|
||||||
expected,
|
expected,
|
||||||
conv)
|
conv)
|
||||||
}
|
}
|
||||||
@@ -69,18 +70,18 @@ func TestConversionIsInvalid(t *testing.T) {
|
|||||||
|
|
||||||
conv, err := NewConversion(from, to)
|
conv, err := NewConversion(from, to)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - NewConversion() error", err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if conv.IsInvalid() {
|
if conv.IsInvalid() {
|
||||||
t.Errorf("Test Failed - IsInvalid() error expected false but received %v",
|
t.Errorf("IsInvalid() error expected false but received %v",
|
||||||
conv.IsInvalid())
|
conv.IsInvalid())
|
||||||
}
|
}
|
||||||
|
|
||||||
to = AUD
|
to = AUD
|
||||||
conv, err = NewConversion(from, to)
|
conv, err = NewConversion(from, to)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test Failed - NewConversion() error", err)
|
t.Error("Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,18 +91,18 @@ func TestConversionIsFiatPair(t *testing.T) {
|
|||||||
|
|
||||||
conv, err := NewConversion(from, to)
|
conv, err := NewConversion(from, to)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - NewConversion() error", err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !conv.IsFiat() {
|
if !conv.IsFiat() {
|
||||||
t.Errorf("Test Failed - IsFiatPair() error expected true but received %v",
|
t.Errorf("IsFiatPair() error expected true but received %v",
|
||||||
conv.IsFiat())
|
conv.IsFiat())
|
||||||
}
|
}
|
||||||
|
|
||||||
to = LTC
|
to = LTC
|
||||||
conv, err = NewConversion(from, to)
|
conv, err = NewConversion(from, to)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test Failed - NewConversion() error", err)
|
t.Error("Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -109,7 +110,7 @@ func TestConversionsRatesSystem(t *testing.T) {
|
|||||||
var SuperDuperConversionSystem ConversionRates
|
var SuperDuperConversionSystem ConversionRates
|
||||||
|
|
||||||
if SuperDuperConversionSystem.HasData() {
|
if SuperDuperConversionSystem.HasData() {
|
||||||
t.Fatalf("Test Failed - HasData() error expected false but received %v",
|
t.Fatalf("HasData() error expected false but received %v",
|
||||||
SuperDuperConversionSystem.HasData())
|
SuperDuperConversionSystem.HasData())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,16 +142,16 @@ func TestConversionsRatesSystem(t *testing.T) {
|
|||||||
|
|
||||||
err := SuperDuperConversionSystem.Update(testmap)
|
err := SuperDuperConversionSystem.Update(testmap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Update() error", err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = SuperDuperConversionSystem.Update(nil)
|
err = SuperDuperConversionSystem.Update(nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test Failed - Update() error cannot be nil")
|
t.Fatal("Update() error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !SuperDuperConversionSystem.HasData() {
|
if !SuperDuperConversionSystem.HasData() {
|
||||||
t.Fatalf("Test Failed - HasData() error expected true but received %v",
|
t.Fatalf("HasData() error expected true but received %v",
|
||||||
SuperDuperConversionSystem.HasData())
|
SuperDuperConversionSystem.HasData())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,7 +162,7 @@ func TestConversionsRatesSystem(t *testing.T) {
|
|||||||
r := *p * 1000
|
r := *p * 1000
|
||||||
expectedRate := 1396.9317581
|
expectedRate := 1396.9317581
|
||||||
if r != expectedRate {
|
if r != expectedRate {
|
||||||
t.Errorf("Test Failed - Convert() error expected %.13f but received %.13f",
|
t.Errorf("Convert() error expected %.13f but received %.13f",
|
||||||
expectedRate,
|
expectedRate,
|
||||||
r)
|
r)
|
||||||
}
|
}
|
||||||
@@ -169,8 +170,78 @@ func TestConversionsRatesSystem(t *testing.T) {
|
|||||||
inverseR := *pi * expectedRate
|
inverseR := *pi * expectedRate
|
||||||
expectedInverseRate := float64(1000)
|
expectedInverseRate := float64(1000)
|
||||||
if inverseR != expectedInverseRate {
|
if inverseR != expectedInverseRate {
|
||||||
t.Errorf("Test Failed - Convert() error expected %.13f but received %.13f",
|
t.Errorf("Convert() error expected %.13f but received %.13f",
|
||||||
expectedInverseRate,
|
expectedInverseRate,
|
||||||
inverseR)
|
inverseR)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetRate(t *testing.T) {
|
||||||
|
from := NewCode("AUD")
|
||||||
|
to := NewCode("USD")
|
||||||
|
|
||||||
|
c, err := NewConversion(from, to)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
rate, err := c.GetRate()
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
if rate == 0 {
|
||||||
|
t.Error("Rate not set")
|
||||||
|
}
|
||||||
|
inv, err := c.GetInversionRate()
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
if inv == 0 {
|
||||||
|
t.Error("Inverted rate not set")
|
||||||
|
}
|
||||||
|
conv, err := c.Convert(1)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
if rate != conv {
|
||||||
|
t.Errorf("Incorrect rate %v %v", rate, conv)
|
||||||
|
}
|
||||||
|
invConv, err := c.ConvertInverse(1)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
if inv != invConv {
|
||||||
|
t.Errorf("Incorrect rate %v %v", conv, invConv)
|
||||||
|
}
|
||||||
|
|
||||||
|
var convs ConversionRates
|
||||||
|
var convRate float64
|
||||||
|
_, err = convs.GetRate(BTC, USDT)
|
||||||
|
if err == nil {
|
||||||
|
t.Errorf("Expected %s", fmt.Errorf("rate not found for from %s to %s conversion",
|
||||||
|
BTC,
|
||||||
|
USD))
|
||||||
|
}
|
||||||
|
convRate, err = convs.GetRate(USDT, USD)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
if convRate != 1 {
|
||||||
|
t.Errorf("Expected rate to be 1")
|
||||||
|
}
|
||||||
|
|
||||||
|
convRate, err = convs.GetRate(RUR, RUB)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
if convRate != 1 {
|
||||||
|
t.Errorf("Expected rate to be 1")
|
||||||
|
}
|
||||||
|
|
||||||
|
convRate, err = convs.GetRate(RUB, RUR)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
if convRate != 1 {
|
||||||
|
t.Errorf("Expected rate to be 1")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -88,11 +88,6 @@ func (c Currencies) Match(other Currencies) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Slice exposes the underlying type
|
|
||||||
func (c Currencies) Slice() []Code {
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasData checks to see if Currencies type has actual currencies
|
// HasData checks to see if Currencies type has actual currencies
|
||||||
func (c Currencies) HasData() bool {
|
func (c Currencies) HasData() bool {
|
||||||
return len(c) != 0
|
return len(c) != 0
|
||||||
|
|||||||
@@ -11,21 +11,21 @@ func TestCurrenciesUnmarshalJSON(t *testing.T) {
|
|||||||
expected := "btc,usd,ltc,bro,things"
|
expected := "btc,usd,ltc,bro,things"
|
||||||
encoded, err := common.JSONEncode(expected)
|
encoded, err := common.JSONEncode(expected)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Currencies UnmarshalJSON() error", err)
|
t.Fatal("Currencies UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = common.JSONDecode(encoded, &unmarshalHere)
|
err = common.JSONDecode(encoded, &unmarshalHere)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Currencies UnmarshalJSON() error", err)
|
t.Fatal("Currencies UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = common.JSONDecode(encoded, &unmarshalHere)
|
err = common.JSONDecode(encoded, &unmarshalHere)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Currencies UnmarshalJSON() error", err)
|
t.Fatal("Currencies UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if unmarshalHere.Join() != expected {
|
if unmarshalHere.Join() != expected {
|
||||||
t.Errorf("Test Failed - Currencies UnmarshalJSON() error expected %s but received %s",
|
t.Errorf("Currencies UnmarshalJSON() error expected %s but received %s",
|
||||||
expected, unmarshalHere.Join())
|
expected, unmarshalHere.Join())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39,12 +39,12 @@ func TestCurrenciesMarshalJSON(t *testing.T) {
|
|||||||
|
|
||||||
encoded, err := common.JSONEncode(quickStruct)
|
encoded, err := common.JSONEncode(quickStruct)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Currencies MarshalJSON() error", err)
|
t.Fatal("Currencies MarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := `{"amazingCurrencies":"btc,usd,ltc,bro,things"}`
|
expected := `{"amazingCurrencies":"btc,usd,ltc,bro,things"}`
|
||||||
if string(encoded) != expected {
|
if string(encoded) != expected {
|
||||||
t.Errorf("Test Failed - Currencies MarshalJSON() error expected %s but received %s",
|
t.Errorf("Currencies MarshalJSON() error expected %s but received %s",
|
||||||
expected, string(encoded))
|
expected, string(encoded))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,12 +7,12 @@ import (
|
|||||||
func TestGetDefaultExchangeRates(t *testing.T) {
|
func TestGetDefaultExchangeRates(t *testing.T) {
|
||||||
rates, err := GetDefaultExchangeRates()
|
rates, err := GetDefaultExchangeRates()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetDefaultExchangeRates() err", err)
|
t.Error("GetDefaultExchangeRates() err", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, val := range rates {
|
for _, val := range rates {
|
||||||
if !val.IsFiat() {
|
if !val.IsFiat() {
|
||||||
t.Errorf("Test failed - GetDefaultExchangeRates() %s is not fiat pair",
|
t.Errorf("GetDefaultExchangeRates() %s is not fiat pair",
|
||||||
val)
|
val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,12 +21,12 @@ func TestGetDefaultExchangeRates(t *testing.T) {
|
|||||||
func TestGetExchangeRates(t *testing.T) {
|
func TestGetExchangeRates(t *testing.T) {
|
||||||
rates, err := GetExchangeRates()
|
rates, err := GetExchangeRates()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetExchangeRates() err", err)
|
t.Error("GetExchangeRates() err", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, val := range rates {
|
for _, val := range rates {
|
||||||
if !val.IsFiat() {
|
if !val.IsFiat() {
|
||||||
t.Errorf("Test failed - GetExchangeRates() %s is not fiat pair",
|
t.Errorf("GetExchangeRates() %s is not fiat pair",
|
||||||
val)
|
val)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,23 +35,23 @@ func TestGetExchangeRates(t *testing.T) {
|
|||||||
func TestUpdateBaseCurrency(t *testing.T) {
|
func TestUpdateBaseCurrency(t *testing.T) {
|
||||||
err := UpdateBaseCurrency(AUD)
|
err := UpdateBaseCurrency(AUD)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - UpdateBaseCurrency() err", err)
|
t.Error("UpdateBaseCurrency() err", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = UpdateBaseCurrency(LTC)
|
err = UpdateBaseCurrency(LTC)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed - UpdateBaseCurrency() cannot be nil")
|
t.Error("UpdateBaseCurrency() error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
if GetBaseCurrency() != AUD {
|
if GetBaseCurrency() != AUD {
|
||||||
t.Errorf("Test failed - GetBaseCurrency() expected %s but received %s",
|
t.Errorf("GetBaseCurrency() expected %s but received %s",
|
||||||
AUD, GetBaseCurrency())
|
AUD, GetBaseCurrency())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetDefaultBaseCurrency(t *testing.T) {
|
func TestGetDefaultBaseCurrency(t *testing.T) {
|
||||||
if GetDefaultBaseCurrency() != USD {
|
if GetDefaultBaseCurrency() != USD {
|
||||||
t.Errorf("Test failed - GetDefaultBaseCurrency() expected %s but received %s",
|
t.Errorf("GetDefaultBaseCurrency() expected %s but received %s",
|
||||||
USD, GetDefaultBaseCurrency())
|
USD, GetDefaultBaseCurrency())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -59,7 +59,7 @@ func TestGetDefaultBaseCurrency(t *testing.T) {
|
|||||||
func TestGetDefaulCryptoCurrencies(t *testing.T) {
|
func TestGetDefaulCryptoCurrencies(t *testing.T) {
|
||||||
expected := Currencies{BTC, LTC, ETH, DOGE, DASH, XRP, XMR}
|
expected := Currencies{BTC, LTC, ETH, DOGE, DASH, XRP, XMR}
|
||||||
if !GetDefaultCryptocurrencies().Match(expected) {
|
if !GetDefaultCryptocurrencies().Match(expected) {
|
||||||
t.Errorf("Test failed - GetDefaultCryptocurrencies() expected %s but received %s",
|
t.Errorf("GetDefaultCryptocurrencies() expected %s but received %s",
|
||||||
expected, GetDefaultCryptocurrencies())
|
expected, GetDefaultCryptocurrencies())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -67,7 +67,7 @@ func TestGetDefaulCryptoCurrencies(t *testing.T) {
|
|||||||
func TestGetDefaultFiatCurrencies(t *testing.T) {
|
func TestGetDefaultFiatCurrencies(t *testing.T) {
|
||||||
expected := Currencies{USD, AUD, EUR, CNY}
|
expected := Currencies{USD, AUD, EUR, CNY}
|
||||||
if !GetDefaultFiatCurrencies().Match(expected) {
|
if !GetDefaultFiatCurrencies().Match(expected) {
|
||||||
t.Errorf("Test failed - GetDefaultFiatCurrencies() expected %s but received %s",
|
t.Errorf("GetDefaultFiatCurrencies() expected %s but received %s",
|
||||||
expected, GetDefaultFiatCurrencies())
|
expected, GetDefaultFiatCurrencies())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -77,14 +77,14 @@ func TestUpdateCurrencies(t *testing.T) {
|
|||||||
UpdateCurrencies(fiat, false)
|
UpdateCurrencies(fiat, false)
|
||||||
rFiat := GetFiatCurrencies()
|
rFiat := GetFiatCurrencies()
|
||||||
if !rFiat.Contains(HKN) || !rFiat.Contains(JPY) {
|
if !rFiat.Contains(HKN) || !rFiat.Contains(JPY) {
|
||||||
t.Error("Test failed - UpdateCurrencies() currencies did not update")
|
t.Error("UpdateCurrencies() currencies did not update")
|
||||||
}
|
}
|
||||||
|
|
||||||
crypto := Currencies{ZAR, ZCAD, B2}
|
crypto := Currencies{ZAR, ZCAD, B2}
|
||||||
UpdateCurrencies(crypto, true)
|
UpdateCurrencies(crypto, true)
|
||||||
rCrypto := GetCryptocurrencies()
|
rCrypto := GetCryptocurrencies()
|
||||||
if !rCrypto.Contains(ZAR) || !rCrypto.Contains(ZCAD) || !rCrypto.Contains(B2) {
|
if !rCrypto.Contains(ZAR) || !rCrypto.Contains(ZCAD) || !rCrypto.Contains(B2) {
|
||||||
t.Error("Test failed - UpdateCurrencies() currencies did not update")
|
t.Error("UpdateCurrencies() currencies did not update")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@ func TestConvertCurrency(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if r != 100 {
|
if r != 100 {
|
||||||
t.Errorf("Test Failed - ConvertCurrency error, incorrect rate return %2.f but received %2.f",
|
t.Errorf("ConvertCurrency error, incorrect rate return %2.f but received %2.f",
|
||||||
100.00, r)
|
100.00, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,21 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// GetName returns name of provider
|
||||||
|
func (b *Base) GetName() string {
|
||||||
|
return b.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsEnabled returns true if enabled
|
||||||
|
func (b *Base) IsEnabled() bool {
|
||||||
|
return b.Enabled
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsPrimaryProvider returns true if primary provider
|
||||||
|
func (b *Base) IsPrimaryProvider() bool {
|
||||||
|
return b.PrimaryProvider
|
||||||
|
}
|
||||||
|
|
||||||
// DefaultTimeOut is the default timeout for foreign exchange providers
|
// DefaultTimeOut is the default timeout for foreign exchange providers
|
||||||
const DefaultTimeOut = time.Second * 15
|
const DefaultTimeOut = time.Second * 15
|
||||||
|
|
||||||
@@ -22,18 +37,3 @@ type Settings struct {
|
|||||||
type Base struct {
|
type Base struct {
|
||||||
Settings `json:"settings"`
|
Settings `json:"settings"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetName returns name of provider
|
|
||||||
func (b *Base) GetName() string {
|
|
||||||
return b.Name
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsEnabled returns true if enabled
|
|
||||||
func (b *Base) IsEnabled() bool {
|
|
||||||
return b.Enabled
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsPrimaryProvider returns true if primary provider
|
|
||||||
func (b *Base) IsPrimaryProvider() bool {
|
|
||||||
return b.PrimaryProvider
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -14,29 +14,6 @@ import (
|
|||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
// const declarations consist of endpoints
|
|
||||||
const (
|
|
||||||
APIEndpointURL = "https://currencyconverterapi.com/api/"
|
|
||||||
APIEndpointFreeURL = "https://free.currencyconverterapi.com/api/"
|
|
||||||
APIEndpointVersion = "v5"
|
|
||||||
|
|
||||||
APIEndpointConvert = "convert"
|
|
||||||
APIEndpointCurrencies = "currencies"
|
|
||||||
APIEndpointCountries = "countries"
|
|
||||||
APIEndpointUsage = "usage"
|
|
||||||
|
|
||||||
defaultAPIKey = "Key"
|
|
||||||
|
|
||||||
authRate = 0
|
|
||||||
unAuthRate = 0
|
|
||||||
)
|
|
||||||
|
|
||||||
// CurrencyConverter stores the struct for the CurrencyConverter API
|
|
||||||
type CurrencyConverter struct {
|
|
||||||
base.Base
|
|
||||||
Requester *request.Requester
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup sets appropriate values for CurrencyLayer
|
// Setup sets appropriate values for CurrencyLayer
|
||||||
func (c *CurrencyConverter) Setup(config base.Settings) error {
|
func (c *CurrencyConverter) Setup(config base.Settings) error {
|
||||||
c.Name = config.Name
|
c.Name = config.Name
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ func TestConvertMany(t *testing.T) {
|
|||||||
currencies = []string{"USD_AUD", "USD_EUR", "USD_GBP"}
|
currencies = []string{"USD_AUD", "USD_EUR", "USD_GBP"}
|
||||||
_, err = c.ConvertMany(currencies)
|
_, err = c.ConvertMany(currencies)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("non error on supplying 3 or more currencies using the free API")
|
t.Fatal("Expected error from on supplying 3 or more currencies using the free API")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,33 @@
|
|||||||
package currencyconverter
|
package currencyconverter
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider/base"
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// const declarations consist of endpoints
|
||||||
|
const (
|
||||||
|
APIEndpointURL = "https://currencyconverterapi.com/api/"
|
||||||
|
APIEndpointFreeURL = "https://free.currencyconverterapi.com/api/"
|
||||||
|
APIEndpointVersion = "v5"
|
||||||
|
|
||||||
|
APIEndpointConvert = "convert"
|
||||||
|
APIEndpointCurrencies = "currencies"
|
||||||
|
APIEndpointCountries = "countries"
|
||||||
|
APIEndpointUsage = "usage"
|
||||||
|
|
||||||
|
defaultAPIKey = "Key"
|
||||||
|
|
||||||
|
authRate = 0
|
||||||
|
unAuthRate = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
// CurrencyConverter stores the struct for the CurrencyConverter API
|
||||||
|
type CurrencyConverter struct {
|
||||||
|
base.Base
|
||||||
|
Requester *request.Requester
|
||||||
|
}
|
||||||
|
|
||||||
// Error stores the error message
|
// Error stores the error message
|
||||||
type Error struct {
|
type Error struct {
|
||||||
Status int `json:"status"`
|
Status int `json:"status"`
|
||||||
|
|||||||
@@ -26,34 +26,6 @@ import (
|
|||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
// const declarations consist of endpoints and APIKey privileges
|
|
||||||
const (
|
|
||||||
AccountFree = iota
|
|
||||||
AccountBasic
|
|
||||||
AccountPro
|
|
||||||
AccountEnterprise
|
|
||||||
|
|
||||||
APIEndpointURL = "http://apilayer.net/api/"
|
|
||||||
APIEndpointURLSSL = "https://apilayer.net/api/"
|
|
||||||
APIEndpointList = "list"
|
|
||||||
APIEndpointLive = "live"
|
|
||||||
APIEndpointHistorical = "historical"
|
|
||||||
APIEndpointConversion = "convert"
|
|
||||||
APIEndpointTimeframe = "timeframe"
|
|
||||||
APIEndpointChange = "change"
|
|
||||||
|
|
||||||
authRate = 0
|
|
||||||
unAuthRate = 0
|
|
||||||
)
|
|
||||||
|
|
||||||
// CurrencyLayer is a foreign exchange rate provider at
|
|
||||||
// https://currencylayer.com NOTE default base currency is USD when using a free
|
|
||||||
// account. Has automatic upgrade to a SSL connection.
|
|
||||||
type CurrencyLayer struct {
|
|
||||||
base.Base
|
|
||||||
Requester *request.Requester
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup sets appropriate values for CurrencyLayer
|
// Setup sets appropriate values for CurrencyLayer
|
||||||
func (c *CurrencyLayer) Setup(config base.Settings) error {
|
func (c *CurrencyLayer) Setup(config base.Settings) error {
|
||||||
if config.APIKeyLvl < 0 || config.APIKeyLvl > 3 {
|
if config.APIKeyLvl < 0 || config.APIKeyLvl > 3 {
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ func areAPIKeysSet() bool {
|
|||||||
func TestGetRates(t *testing.T) {
|
func TestGetRates(t *testing.T) {
|
||||||
err := setup()
|
err := setup()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Skip("Test Failed - CurrencyLayer GetRates error", err)
|
t.Skip("CurrencyLayer GetRates error", err)
|
||||||
}
|
}
|
||||||
_, err = c.GetRates("USD", "AUD")
|
_, err = c.GetRates("USD", "AUD")
|
||||||
if areAPIKeysSet() && err != nil {
|
if areAPIKeysSet() && err != nil {
|
||||||
@@ -61,7 +61,7 @@ func TestGetRates(t *testing.T) {
|
|||||||
func TestGetSupportedCurrencies(t *testing.T) {
|
func TestGetSupportedCurrencies(t *testing.T) {
|
||||||
err := setup()
|
err := setup()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - CurrencyLayer GetSupportedCurrencies error", err)
|
t.Fatal("CurrencyLayer GetSupportedCurrencies error", err)
|
||||||
}
|
}
|
||||||
_, err = c.GetSupportedCurrencies()
|
_, err = c.GetSupportedCurrencies()
|
||||||
if areAPIKeysSet() && err != nil {
|
if areAPIKeysSet() && err != nil {
|
||||||
@@ -74,7 +74,7 @@ func TestGetSupportedCurrencies(t *testing.T) {
|
|||||||
func TestGetliveData(t *testing.T) {
|
func TestGetliveData(t *testing.T) {
|
||||||
err := setup()
|
err := setup()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - CurrencyLayer GetliveData error", err)
|
t.Fatal("CurrencyLayer GetliveData error", err)
|
||||||
}
|
}
|
||||||
_, err = c.GetliveData("AUD", "USD")
|
_, err = c.GetliveData("AUD", "USD")
|
||||||
if areAPIKeysSet() && err != nil {
|
if areAPIKeysSet() && err != nil {
|
||||||
@@ -87,7 +87,7 @@ func TestGetliveData(t *testing.T) {
|
|||||||
func TestGetHistoricalData(t *testing.T) {
|
func TestGetHistoricalData(t *testing.T) {
|
||||||
err := setup()
|
err := setup()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - CurrencyLayer GetHistoricalData error", err)
|
t.Fatal("CurrencyLayer GetHistoricalData error", err)
|
||||||
}
|
}
|
||||||
_, err = c.GetHistoricalData("2016-12-15", []string{"AUD"}, "USD")
|
_, err = c.GetHistoricalData("2016-12-15", []string{"AUD"}, "USD")
|
||||||
if areAPIKeysSet() && err != nil {
|
if areAPIKeysSet() && err != nil {
|
||||||
@@ -100,7 +100,7 @@ func TestGetHistoricalData(t *testing.T) {
|
|||||||
func TestConvert(t *testing.T) {
|
func TestConvert(t *testing.T) {
|
||||||
err := setup()
|
err := setup()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - CurrencyLayer Convert error", err)
|
t.Fatal("CurrencyLayer Convert error", err)
|
||||||
}
|
}
|
||||||
_, err = c.Convert("USD", "AUD", "", 1)
|
_, err = c.Convert("USD", "AUD", "", 1)
|
||||||
if areAPIKeysSet() && err != nil && c.APIKeyLvl >= AccountBasic {
|
if areAPIKeysSet() && err != nil && c.APIKeyLvl >= AccountBasic {
|
||||||
@@ -113,7 +113,7 @@ func TestConvert(t *testing.T) {
|
|||||||
func TestQueryTimeFrame(t *testing.T) {
|
func TestQueryTimeFrame(t *testing.T) {
|
||||||
err := setup()
|
err := setup()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - CurrencyLayer QueryTimeFrame error", err)
|
t.Fatal("CurrencyLayer QueryTimeFrame error", err)
|
||||||
}
|
}
|
||||||
_, err = c.QueryTimeFrame("2010-12-0", "2010-12-5", "USD", []string{"AUD"})
|
_, err = c.QueryTimeFrame("2010-12-0", "2010-12-5", "USD", []string{"AUD"})
|
||||||
if areAPIKeysSet() && err != nil && c.APIKeyLvl >= AccountPro {
|
if areAPIKeysSet() && err != nil && c.APIKeyLvl >= AccountPro {
|
||||||
@@ -126,7 +126,7 @@ func TestQueryTimeFrame(t *testing.T) {
|
|||||||
func TestQueryCurrencyChange(t *testing.T) {
|
func TestQueryCurrencyChange(t *testing.T) {
|
||||||
err := setup()
|
err := setup()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - CurrencyLayer QueryCurrencyChange() error", err)
|
t.Fatal("CurrencyLayer QueryCurrencyChange() error", err)
|
||||||
}
|
}
|
||||||
_, err = c.QueryCurrencyChange("2010-12-0", "2010-12-5", "USD", []string{"AUD"})
|
_, err = c.QueryCurrencyChange("2010-12-0", "2010-12-5", "USD", []string{"AUD"})
|
||||||
if areAPIKeysSet() && err != nil && c.APIKeyLvl == AccountEnterprise {
|
if areAPIKeysSet() && err != nil && c.APIKeyLvl == AccountEnterprise {
|
||||||
|
|||||||
@@ -1,5 +1,38 @@
|
|||||||
package currencylayer
|
package currencylayer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider/base"
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// const declarations consist of endpoints and APIKey privileges
|
||||||
|
const (
|
||||||
|
AccountFree = iota
|
||||||
|
AccountBasic
|
||||||
|
AccountPro
|
||||||
|
AccountEnterprise
|
||||||
|
|
||||||
|
APIEndpointURL = "http://apilayer.net/api/"
|
||||||
|
APIEndpointURLSSL = "https://apilayer.net/api/"
|
||||||
|
APIEndpointList = "list"
|
||||||
|
APIEndpointLive = "live"
|
||||||
|
APIEndpointHistorical = "historical"
|
||||||
|
APIEndpointConversion = "convert"
|
||||||
|
APIEndpointTimeframe = "timeframe"
|
||||||
|
APIEndpointChange = "change"
|
||||||
|
|
||||||
|
authRate = 0
|
||||||
|
unAuthRate = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
// CurrencyLayer is a foreign exchange rate provider at
|
||||||
|
// https://currencylayer.com NOTE default base currency is USD when using a free
|
||||||
|
// account. Has automatic upgrade to a SSL connection.
|
||||||
|
type CurrencyLayer struct {
|
||||||
|
base.Base
|
||||||
|
Requester *request.Requester
|
||||||
|
}
|
||||||
|
|
||||||
// Error Defines the response error if an error occurred
|
// Error Defines the response error if an error occurred
|
||||||
type Error struct {
|
type Error struct {
|
||||||
Code int `json:"code"`
|
Code int `json:"code"`
|
||||||
|
|||||||
@@ -14,24 +14,6 @@ import (
|
|||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
exchangeRatesAPI = "https://api.exchangeratesapi.io"
|
|
||||||
exchangeRatesLatest = "latest"
|
|
||||||
exchangeRatesHistory = "history"
|
|
||||||
exchangeRatesSupportedCurrencies = "EUR,CHF,USD,BRL,ISK,PHP,KRW,BGN,MXN," +
|
|
||||||
"RON,CAD,SGD,NZD,THB,HKD,JPY,NOK,HRK,ILS,GBP,DKK,HUF,MYR,RUB,TRY,IDR," +
|
|
||||||
"ZAR,INR,AUD,CZK,SEK,CNY,PLN"
|
|
||||||
|
|
||||||
authRate = 0
|
|
||||||
unAuthRate = 0
|
|
||||||
)
|
|
||||||
|
|
||||||
// ExchangeRates stores the struct for the ExchangeRatesAPI API
|
|
||||||
type ExchangeRates struct {
|
|
||||||
base.Base
|
|
||||||
Requester *request.Requester
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup sets appropriate values for CurrencyLayer
|
// Setup sets appropriate values for CurrencyLayer
|
||||||
func (e *ExchangeRates) Setup(config base.Settings) error {
|
func (e *ExchangeRates) Setup(config base.Settings) error {
|
||||||
e.Name = config.Name
|
e.Name = config.Name
|
||||||
|
|||||||
@@ -1,5 +1,28 @@
|
|||||||
package exchangerates
|
package exchangerates
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider/base"
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
exchangeRatesAPI = "https://api.exchangeratesapi.io"
|
||||||
|
exchangeRatesLatest = "latest"
|
||||||
|
exchangeRatesHistory = "history"
|
||||||
|
exchangeRatesSupportedCurrencies = "EUR,CHF,USD,BRL,ISK,PHP,KRW,BGN,MXN," +
|
||||||
|
"RON,CAD,SGD,NZD,THB,HKD,JPY,NOK,HRK,ILS,GBP,DKK,HUF,MYR,RUB,TRY,IDR," +
|
||||||
|
"ZAR,INR,AUD,CZK,SEK,CNY,PLN"
|
||||||
|
|
||||||
|
authRate = 0
|
||||||
|
unAuthRate = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
// ExchangeRates stores the struct for the ExchangeRatesAPI API
|
||||||
|
type ExchangeRates struct {
|
||||||
|
base.Base
|
||||||
|
Requester *request.Requester
|
||||||
|
}
|
||||||
|
|
||||||
// Rates holds the latest forex rates info
|
// Rates holds the latest forex rates info
|
||||||
type Rates struct {
|
type Rates struct {
|
||||||
Base string `json:"base"`
|
Base string `json:"base"`
|
||||||
|
|||||||
@@ -22,32 +22,6 @@ import (
|
|||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
fixerAPIFree = iota
|
|
||||||
fixerAPIBasic
|
|
||||||
fixerAPIProfessional
|
|
||||||
fixerAPIProfessionalPlus
|
|
||||||
fixerAPIEnterprise
|
|
||||||
|
|
||||||
fixerAPI = "http://data.fixer.io/api/"
|
|
||||||
fixerAPISSL = "https://data.fixer.io/api/"
|
|
||||||
fixerAPILatest = "latest"
|
|
||||||
fixerAPIConvert = "convert"
|
|
||||||
fixerAPITimeSeries = "timeseries"
|
|
||||||
fixerAPIFluctuation = "fluctuation"
|
|
||||||
fixerSupportedCurrencies = "symbols"
|
|
||||||
|
|
||||||
authRate = 0
|
|
||||||
unAuthRate = 0
|
|
||||||
)
|
|
||||||
|
|
||||||
// Fixer is a foreign exchange rate provider at https://fixer.io/
|
|
||||||
// NOTE DEFAULT BASE CURRENCY IS EUR upgrade to basic to change
|
|
||||||
type Fixer struct {
|
|
||||||
base.Base
|
|
||||||
Requester *request.Requester
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup sets appropriate values for fixer object
|
// Setup sets appropriate values for fixer object
|
||||||
func (f *Fixer) Setup(config base.Settings) error {
|
func (f *Fixer) Setup(config base.Settings) error {
|
||||||
if config.APIKeyLvl < 0 || config.APIKeyLvl > 4 {
|
if config.APIKeyLvl < 0 || config.APIKeyLvl > 4 {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ func setup(t *testing.T) {
|
|||||||
if !isSetup {
|
if !isSetup {
|
||||||
err := f.Setup(base.Settings{})
|
err := f.Setup(base.Settings{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Setup error", err)
|
t.Fatal("Setup error", err)
|
||||||
}
|
}
|
||||||
isSetup = true
|
isSetup = true
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,7 @@ func TestGetRates(t *testing.T) {
|
|||||||
setup(t)
|
setup(t)
|
||||||
_, err := f.GetRates("EUR", "AUD")
|
_, err := f.GetRates("EUR", "AUD")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - fixer GetRates() error", err)
|
t.Error("fixer GetRates() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ func TestGetLatestRates(t *testing.T) {
|
|||||||
setup(t)
|
setup(t)
|
||||||
_, err := f.GetLatestRates("EUR", "AUD")
|
_, err := f.GetLatestRates("EUR", "AUD")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - fixer GetLatestRates() error", err)
|
t.Error("fixer GetLatestRates() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ func TestGetHistoricalRates(t *testing.T) {
|
|||||||
setup(t)
|
setup(t)
|
||||||
_, err := f.GetHistoricalRates("2013-12-24", "EUR", []string{"AUD,KRW"})
|
_, err := f.GetHistoricalRates("2013-12-24", "EUR", []string{"AUD,KRW"})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - fixer GetHistoricalRates() error", err)
|
t.Error("fixer GetHistoricalRates() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ func TestConvertCurrency(t *testing.T) {
|
|||||||
setup(t)
|
setup(t)
|
||||||
_, err := f.ConvertCurrency("AUD", "EUR", "", 1337)
|
_, err := f.ConvertCurrency("AUD", "EUR", "", 1337)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - fixer ConvertCurrency() error", err)
|
t.Error("fixer ConvertCurrency() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ func TestGetTimeSeriesData(t *testing.T) {
|
|||||||
setup(t)
|
setup(t)
|
||||||
_, err := f.GetTimeSeriesData("2013-12-24", "2013-12-25", "EUR", []string{"AUD,KRW"})
|
_, err := f.GetTimeSeriesData("2013-12-24", "2013-12-25", "EUR", []string{"AUD,KRW"})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - fixer GetTimeSeriesData() error", err)
|
t.Error("fixer GetTimeSeriesData() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,6 +72,6 @@ func TestGetFluctuationData(t *testing.T) {
|
|||||||
setup(t)
|
setup(t)
|
||||||
_, err := f.GetFluctuationData("2013-12-24", "2013-12-25", "EUR", []string{"AUD,KRW"})
|
_, err := f.GetFluctuationData("2013-12-24", "2013-12-25", "EUR", []string{"AUD,KRW"})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - fixer GetFluctuationData() error", err)
|
t.Error("fixer GetFluctuationData() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,36 @@
|
|||||||
package fixer
|
package fixer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider/base"
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
fixerAPIFree = iota
|
||||||
|
fixerAPIBasic
|
||||||
|
fixerAPIProfessional
|
||||||
|
fixerAPIProfessionalPlus
|
||||||
|
fixerAPIEnterprise
|
||||||
|
|
||||||
|
fixerAPI = "http://data.fixer.io/api/"
|
||||||
|
fixerAPISSL = "https://data.fixer.io/api/"
|
||||||
|
fixerAPILatest = "latest"
|
||||||
|
fixerAPIConvert = "convert"
|
||||||
|
fixerAPITimeSeries = "timeseries"
|
||||||
|
fixerAPIFluctuation = "fluctuation"
|
||||||
|
fixerSupportedCurrencies = "symbols"
|
||||||
|
|
||||||
|
authRate = 0
|
||||||
|
unAuthRate = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
// Fixer is a foreign exchange rate provider at https://fixer.io/
|
||||||
|
// NOTE DEFAULT BASE CURRENCY IS EUR upgrade to basic to change
|
||||||
|
type Fixer struct {
|
||||||
|
base.Base
|
||||||
|
Requester *request.Requester
|
||||||
|
}
|
||||||
|
|
||||||
// Rates contains the data fields for the currencies you have requested.
|
// Rates contains the data fields for the currencies you have requested.
|
||||||
type Rates struct {
|
type Rates struct {
|
||||||
Success bool `json:"success"`
|
Success bool `json:"success"`
|
||||||
|
|||||||
@@ -13,13 +13,8 @@ import (
|
|||||||
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider/openexchangerates"
|
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider/openexchangerates"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ForexProviders is a foreign exchange handler type
|
// GetSupportedForexProviders returns a list of supported forex providers
|
||||||
type ForexProviders struct {
|
func GetSupportedForexProviders() []string {
|
||||||
base.FXHandler
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetAvailableForexProviders returns a list of supported forex providers
|
|
||||||
func GetAvailableForexProviders() []string {
|
|
||||||
return []string{"CurrencyConverter",
|
return []string{"CurrencyConverter",
|
||||||
"CurrencyLayer",
|
"CurrencyLayer",
|
||||||
"ExchangeRates",
|
"ExchangeRates",
|
||||||
@@ -135,3 +130,8 @@ func StartFXService(fxProviders []base.Settings) (*ForexProviders, error) {
|
|||||||
|
|
||||||
return handler, nil
|
return handler, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ForexProviders is a foreign exchange handler type
|
||||||
|
type ForexProviders struct {
|
||||||
|
base.FXHandler
|
||||||
|
}
|
||||||
|
|||||||
@@ -23,45 +23,6 @@ import (
|
|||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
// These consts contain endpoint information
|
|
||||||
const (
|
|
||||||
APIDeveloperAccess = iota
|
|
||||||
APIEnterpriseAccess
|
|
||||||
APIUnlimitedAccess
|
|
||||||
|
|
||||||
APIURL = "https://openexchangerates.org/api/"
|
|
||||||
APIEndpointLatest = "latest.json"
|
|
||||||
APIEndpointHistorical = "historical/%s.json"
|
|
||||||
APIEndpointCurrencies = "currencies.json"
|
|
||||||
APIEndpointTimeSeries = "time-series.json"
|
|
||||||
APIEndpointConvert = "convert/%s/%s/%s"
|
|
||||||
APIEndpointOHLC = "ohlc.json"
|
|
||||||
APIEndpointUsage = "usage.json"
|
|
||||||
|
|
||||||
oxrSupportedCurrencies = "AED,AFN,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD," +
|
|
||||||
"BDT,BGN,BHD,BIF,BMD,BND,BOB,BRL,BSD,BTC,BTN,BWP,BYN,BYR,BZD,CAD,CDF," +
|
|
||||||
"CHF,CLF,CLP,CNH,CNY,COP,CRC,CUC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EEK,EGP," +
|
|
||||||
"ERN,ETB,EUR,FJD,FKP,GBP,GEL,GGP,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HRK," +
|
|
||||||
"HTG,HUF,IDR,ILS,IMP,INR,IQD,IRR,ISK,JEP,JMD,JOD,JPY,KES,KGS,KHR,KMF," +
|
|
||||||
"KPW,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LRD,LSL,LYD,MAD,MDL,MGA,MKD,MMK,MNT," +
|
|
||||||
"MOP,MRO,MRU,MTL,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR," +
|
|
||||||
"PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SDG,SEK," +
|
|
||||||
"SGD,SHP,SLL,SOS,SRD,SSP,STD,STN,SVC,SYP,SZL,THB,TJS,TMT,TND,TOP,TRY," +
|
|
||||||
"TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VEF,VND,VUV,WST,XAF,XAG,XAU,XCD,XDR," +
|
|
||||||
"XOF,XPD,XPF,XPT,YER,ZAR,ZMK,ZMW"
|
|
||||||
|
|
||||||
authRate = 0
|
|
||||||
unAuthRate = 0
|
|
||||||
)
|
|
||||||
|
|
||||||
// OXR is a foreign exchange rate provider at https://openexchangerates.org/
|
|
||||||
// this is the overarching type across this package
|
|
||||||
// DOCs : https://docs.openexchangerates.org/docs
|
|
||||||
type OXR struct {
|
|
||||||
base.Base
|
|
||||||
Requester *request.Requester
|
|
||||||
}
|
|
||||||
|
|
||||||
// Setup sets values for the OXR object
|
// Setup sets values for the OXR object
|
||||||
func (o *OXR) Setup(config base.Settings) error {
|
func (o *OXR) Setup(config base.Settings) error {
|
||||||
if config.APIKeyLvl < 0 || config.APIKeyLvl > 2 {
|
if config.APIKeyLvl < 0 || config.APIKeyLvl > 2 {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ func TestGetRates(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, err := o.GetRates("USD", "AUD")
|
_, err := o.GetRates("USD", "AUD")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetRates() error", err)
|
t.Error("GetRates() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ func TestGetLatest(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, err := o.GetLatest("USD", "AUD", false, false)
|
_, err := o.GetLatest("USD", "AUD", false, false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetLatest() error", err)
|
t.Error("GetLatest() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ func TestGetHistoricalRates(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, err := o.GetHistoricalRates("2017-12-01", "USD", []string{"CNH", "AUD", "ANG"}, false, false)
|
_, err := o.GetHistoricalRates("2017-12-01", "USD", []string{"CNH", "AUD", "ANG"}, false, false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetRates() error", err)
|
t.Error("GetRates() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ func TestGetCurrencies(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, err := o.GetCurrencies(true, true, true)
|
_, err := o.GetCurrencies(true, true, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetCurrencies() error", err)
|
t.Error("GetCurrencies() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,7 +71,7 @@ func TestGetTimeSeries(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, err := o.GetTimeSeries("USD", "2017-12-01", "2017-12-02", []string{"CNH", "AUD", "ANG"}, false, false)
|
_, err := o.GetTimeSeries("USD", "2017-12-01", "2017-12-02", []string{"CNH", "AUD", "ANG"}, false, false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetTimeSeries() error", err)
|
t.Error("GetTimeSeries() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ func TestConvertCurrency(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, err := o.ConvertCurrency(1337, "USD", "AUD")
|
_, err := o.ConvertCurrency(1337, "USD", "AUD")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - ConvertCurrency() error", err)
|
t.Error("ConvertCurrency() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ func TestGetOHLC(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, err := o.GetOHLC("2017-07-17T08:30:00Z", "1m", "USD", []string{"AUD"}, false)
|
_, err := o.GetOHLC("2017-07-17T08:30:00Z", "1m", "USD", []string{"AUD"}, false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetOHLC() error", err)
|
t.Error("GetOHLC() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,6 +101,6 @@ func TestGetUsageStats(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, err := o.GetUsageStats(false)
|
_, err := o.GetUsageStats(false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetUsageStats() error", err)
|
t.Error("GetUsageStats() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,49 @@
|
|||||||
package openexchangerates
|
package openexchangerates
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider/base"
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/exchanges/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// These consts contain endpoint information
|
||||||
|
const (
|
||||||
|
APIDeveloperAccess = iota
|
||||||
|
APIEnterpriseAccess
|
||||||
|
APIUnlimitedAccess
|
||||||
|
|
||||||
|
APIURL = "https://openexchangerates.org/api/"
|
||||||
|
APIEndpointLatest = "latest.json"
|
||||||
|
APIEndpointHistorical = "historical/%s.json"
|
||||||
|
APIEndpointCurrencies = "currencies.json"
|
||||||
|
APIEndpointTimeSeries = "time-series.json"
|
||||||
|
APIEndpointConvert = "convert/%s/%s/%s"
|
||||||
|
APIEndpointOHLC = "ohlc.json"
|
||||||
|
APIEndpointUsage = "usage.json"
|
||||||
|
|
||||||
|
oxrSupportedCurrencies = "AED,AFN,ALL,AMD,ANG,AOA,ARS,AUD,AWG,AZN,BAM,BBD," +
|
||||||
|
"BDT,BGN,BHD,BIF,BMD,BND,BOB,BRL,BSD,BTC,BTN,BWP,BYN,BYR,BZD,CAD,CDF," +
|
||||||
|
"CHF,CLF,CLP,CNH,CNY,COP,CRC,CUC,CUP,CVE,CZK,DJF,DKK,DOP,DZD,EEK,EGP," +
|
||||||
|
"ERN,ETB,EUR,FJD,FKP,GBP,GEL,GGP,GHS,GIP,GMD,GNF,GTQ,GYD,HKD,HNL,HRK," +
|
||||||
|
"HTG,HUF,IDR,ILS,IMP,INR,IQD,IRR,ISK,JEP,JMD,JOD,JPY,KES,KGS,KHR,KMF," +
|
||||||
|
"KPW,KRW,KWD,KYD,KZT,LAK,LBP,LKR,LRD,LSL,LYD,MAD,MDL,MGA,MKD,MMK,MNT," +
|
||||||
|
"MOP,MRO,MRU,MTL,MUR,MVR,MWK,MXN,MYR,MZN,NAD,NGN,NIO,NOK,NPR,NZD,OMR," +
|
||||||
|
"PAB,PEN,PGK,PHP,PKR,PLN,PYG,QAR,RON,RSD,RUB,RWF,SAR,SBD,SCR,SDG,SEK," +
|
||||||
|
"SGD,SHP,SLL,SOS,SRD,SSP,STD,STN,SVC,SYP,SZL,THB,TJS,TMT,TND,TOP,TRY," +
|
||||||
|
"TTD,TWD,TZS,UAH,UGX,USD,UYU,UZS,VEF,VND,VUV,WST,XAF,XAG,XAU,XCD,XDR," +
|
||||||
|
"XOF,XPD,XPF,XPT,YER,ZAR,ZMK,ZMW"
|
||||||
|
|
||||||
|
authRate = 0
|
||||||
|
unAuthRate = 0
|
||||||
|
)
|
||||||
|
|
||||||
|
// OXR is a foreign exchange rate provider at https://openexchangerates.org/
|
||||||
|
// this is the overarching type across this package
|
||||||
|
// DOCs : https://docs.openexchangerates.org/docs
|
||||||
|
type OXR struct {
|
||||||
|
base.Base
|
||||||
|
Requester *request.Requester
|
||||||
|
}
|
||||||
|
|
||||||
// Latest holds latest rate data
|
// Latest holds latest rate data
|
||||||
type Latest struct {
|
type Latest struct {
|
||||||
Disclaimer string `json:"disclaimer"`
|
Disclaimer string `json:"disclaimer"`
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ func TestGetAssetTypes(t *testing.T) {
|
|||||||
|
|
||||||
a := p.GetAssetTypes()
|
a := p.GetAssetTypes()
|
||||||
if len(a) == 0 {
|
if len(a) == 0 {
|
||||||
t.Errorf("Test failed. GetAssetTypes shouldn't be nil")
|
t.Errorf("GetAssetTypes shouldn't be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !a.Contains(asset.Spot) {
|
if !a.Contains(asset.Spot) {
|
||||||
t.Errorf("Test failed. AssetTypeSpot should be in the assets list")
|
t.Errorf("AssetTypeSpot should be in the assets list")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,11 +41,11 @@ func TestGet(t *testing.T) {
|
|||||||
initTest()
|
initTest()
|
||||||
|
|
||||||
if p.Get(asset.Spot) == nil {
|
if p.Get(asset.Spot) == nil {
|
||||||
t.Error("Test failed. Spot assets shouldn't be nil")
|
t.Error("Spot assets shouldn't be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.Get(asset.Futures) != nil {
|
if p.Get(asset.Futures) != nil {
|
||||||
t.Error("Test Failed. Futures should be nil")
|
t.Error("Futures should be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,7 +65,7 @@ func TestStore(t *testing.T) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
if p.Get(asset.Futures) == nil {
|
if p.Get(asset.Futures) == nil {
|
||||||
t.Error("Test failed. Futures assets shouldn't be nil")
|
t.Error("Futures assets shouldn't be nil")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,12 +80,12 @@ func TestDelete(t *testing.T) {
|
|||||||
)
|
)
|
||||||
p.Delete(asset.UpsideProfitContract)
|
p.Delete(asset.UpsideProfitContract)
|
||||||
if p.Get(asset.Spot) == nil {
|
if p.Get(asset.Spot) == nil {
|
||||||
t.Error("Test failed. AssetTypeSpot should exist")
|
t.Error("AssetTypeSpot should exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
p.Delete(asset.Spot)
|
p.Delete(asset.Spot)
|
||||||
if p.Get(asset.Spot) != nil {
|
if p.Get(asset.Spot) != nil {
|
||||||
t.Error("Test failed. Delete should have deleted AssetTypeSpot")
|
t.Error("Delete should have deleted AssetTypeSpot")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,13 +87,6 @@ func NewPairFromFormattedPairs(currencyPair string, pairs Pairs, pairFmt PairFor
|
|||||||
return NewPairFromString(currencyPair)
|
return NewPairFromString(currencyPair)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pair holds currency pair information
|
|
||||||
type Pair struct {
|
|
||||||
Delimiter string `json:"delimiter"`
|
|
||||||
Base Code `json:"base"`
|
|
||||||
Quote Code `json:"quote"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// String returns a currency pair string
|
// String returns a currency pair string
|
||||||
func (p Pair) String() string {
|
func (p Pair) String() string {
|
||||||
return p.Base.String() + p.Delimiter + p.Quote.String()
|
return p.Base.String() + p.Delimiter + p.Quote.String()
|
||||||
@@ -203,3 +196,10 @@ func (p Pair) IsEmpty() bool {
|
|||||||
func (p Pair) ContainsCurrency(c Code) bool {
|
func (p Pair) ContainsCurrency(c Code) bool {
|
||||||
return p.Base.Item == c.Item || p.Quote.Item == c.Item
|
return p.Base.Item == c.Item || p.Quote.Item == c.Item
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pair holds currency pair information
|
||||||
|
type Pair struct {
|
||||||
|
Delimiter string `json:"delimiter"`
|
||||||
|
Base Code `json:"base"`
|
||||||
|
Quote Code `json:"quote"`
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ func TestLower(t *testing.T) {
|
|||||||
actual := pair.Lower()
|
actual := pair.Lower()
|
||||||
expected := NewPairFromString(defaultPair).Lower()
|
expected := NewPairFromString(defaultPair).Lower()
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf("Test failed. Lower(): %s was not equal to expected value: %s",
|
t.Errorf("Lower(): %s was not equal to expected value: %s",
|
||||||
actual, expected)
|
actual, expected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,7 +28,7 @@ func TestUpper(t *testing.T) {
|
|||||||
actual := pair.Upper()
|
actual := pair.Upper()
|
||||||
expected := NewPairFromString(defaultPair)
|
expected := NewPairFromString(defaultPair)
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf("Test failed. Upper(): %s was not equal to expected value: %s",
|
t.Errorf("Upper(): %s was not equal to expected value: %s",
|
||||||
actual, expected)
|
actual, expected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -39,21 +39,21 @@ func TestPairUnmarshalJSON(t *testing.T) {
|
|||||||
|
|
||||||
encoded, err := common.JSONEncode(configPair)
|
encoded, err := common.JSONEncode(configPair)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Pair UnmarshalJSON() error", err)
|
t.Fatal("Pair UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = common.JSONDecode(encoded, &unmarshalHere)
|
err = common.JSONDecode(encoded, &unmarshalHere)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Pair UnmarshalJSON() error", err)
|
t.Fatal("Pair UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = common.JSONDecode(encoded, &unmarshalHere)
|
err = common.JSONDecode(encoded, &unmarshalHere)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Pair UnmarshalJSON() error", err)
|
t.Fatal("Pair UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !unmarshalHere.Equal(configPair) {
|
if !unmarshalHere.Equal(configPair) {
|
||||||
t.Errorf("Test Failed - Pairs UnmarshalJSON() error expected %s but received %s",
|
t.Errorf("Pairs UnmarshalJSON() error expected %s but received %s",
|
||||||
configPair, unmarshalHere)
|
configPair, unmarshalHere)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -67,43 +67,43 @@ func TestPairMarshalJSON(t *testing.T) {
|
|||||||
|
|
||||||
encoded, err := common.JSONEncode(quickstruct)
|
encoded, err := common.JSONEncode(quickstruct)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Pair MarshalJSON() error", err)
|
t.Fatal("Pair MarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := `{"superPair":"BTC-USD"}`
|
expected := `{"superPair":"BTC-USD"}`
|
||||||
if string(encoded) != expected {
|
if string(encoded) != expected {
|
||||||
t.Errorf("Test Failed - Pair MarshalJSON() error expected %s but received %s",
|
t.Errorf("Pair MarshalJSON() error expected %s but received %s",
|
||||||
expected, string(encoded))
|
expected, string(encoded))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsCryptoPair(t *testing.T) {
|
func TestIsCryptoPair(t *testing.T) {
|
||||||
if !NewPair(BTC, LTC).IsCryptoPair() {
|
if !NewPair(BTC, LTC).IsCryptoPair() {
|
||||||
t.Error("Test Failed. TestIsCryptoPair. Expected true result")
|
t.Error("TestIsCryptoPair. Expected true result")
|
||||||
}
|
}
|
||||||
|
|
||||||
if NewPair(BTC, USD).IsCryptoPair() {
|
if NewPair(BTC, USD).IsCryptoPair() {
|
||||||
t.Error("Test Failed. TestIsCryptoPair. Expected false result")
|
t.Error("TestIsCryptoPair. Expected false result")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsCryptoFiatPair(t *testing.T) {
|
func TestIsCryptoFiatPair(t *testing.T) {
|
||||||
if !NewPair(BTC, USD).IsCryptoFiatPair() {
|
if !NewPair(BTC, USD).IsCryptoFiatPair() {
|
||||||
t.Error("Test Failed. TestIsCryptoPair. Expected true result")
|
t.Error("TestIsCryptoPair. Expected true result")
|
||||||
}
|
}
|
||||||
|
|
||||||
if NewPair(BTC, LTC).IsCryptoFiatPair() {
|
if NewPair(BTC, LTC).IsCryptoFiatPair() {
|
||||||
t.Error("Test Failed. TestIsCryptoPair. Expected false result")
|
t.Error("TestIsCryptoPair. Expected false result")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsFiatPair(t *testing.T) {
|
func TestIsFiatPair(t *testing.T) {
|
||||||
if !NewPair(AUD, USD).IsFiatPair() {
|
if !NewPair(AUD, USD).IsFiatPair() {
|
||||||
t.Error("Test Failed. TestIsFiatPair. Expected true result")
|
t.Error("TestIsFiatPair. Expected true result")
|
||||||
}
|
}
|
||||||
|
|
||||||
if NewPair(BTC, AUD).IsFiatPair() {
|
if NewPair(BTC, AUD).IsFiatPair() {
|
||||||
t.Error("Test Failed. TestIsFiatPair. Expected false result")
|
t.Error("TestIsFiatPair. Expected false result")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ func TestString(t *testing.T) {
|
|||||||
actual := defaultPair
|
actual := defaultPair
|
||||||
expected := pair.String()
|
expected := pair.String()
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf("Test failed. String(): %s was not equal to expected value: %s",
|
t.Errorf("String(): %s was not equal to expected value: %s",
|
||||||
actual, expected)
|
actual, expected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -125,7 +125,7 @@ func TestFirstCurrency(t *testing.T) {
|
|||||||
expected := BTC
|
expected := BTC
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. GetFirstCurrency(): %s was not equal to expected value: %s",
|
"GetFirstCurrency(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -138,7 +138,7 @@ func TestSecondCurrency(t *testing.T) {
|
|||||||
expected := USD
|
expected := USD
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. GetSecondCurrency(): %s was not equal to expected value: %s",
|
"GetSecondCurrency(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -151,7 +151,7 @@ func TestPair(t *testing.T) {
|
|||||||
expected := defaultPair
|
expected := defaultPair
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -164,7 +164,7 @@ func TestDisplay(t *testing.T) {
|
|||||||
expected := defaultPairWDelimiter
|
expected := defaultPairWDelimiter
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -173,7 +173,7 @@ func TestDisplay(t *testing.T) {
|
|||||||
expected = "btcusd"
|
expected = "btcusd"
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -182,7 +182,7 @@ func TestDisplay(t *testing.T) {
|
|||||||
expected = "BTC~USD"
|
expected = "BTC~USD"
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -196,7 +196,7 @@ func TestEquall(t *testing.T) {
|
|||||||
expected := true
|
expected := true
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Equal(): %v was not equal to expected value: %v",
|
"Equal(): %v was not equal to expected value: %v",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -206,7 +206,7 @@ func TestEquall(t *testing.T) {
|
|||||||
expected = false
|
expected = false
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Equal(): %v was not equal to expected value: %v",
|
"Equal(): %v was not equal to expected value: %v",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -216,7 +216,7 @@ func TestEquall(t *testing.T) {
|
|||||||
expected = false
|
expected = false
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Equal(): %v was not equal to expected value: %v",
|
"Equal(): %v was not equal to expected value: %v",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -230,7 +230,7 @@ func TestEqualIncludeReciprocal(t *testing.T) {
|
|||||||
expected := true
|
expected := true
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Equal(): %v was not equal to expected value: %v",
|
"Equal(): %v was not equal to expected value: %v",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -240,7 +240,7 @@ func TestEqualIncludeReciprocal(t *testing.T) {
|
|||||||
expected = false
|
expected = false
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Equal(): %v was not equal to expected value: %v",
|
"Equal(): %v was not equal to expected value: %v",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -250,7 +250,7 @@ func TestEqualIncludeReciprocal(t *testing.T) {
|
|||||||
expected = true
|
expected = true
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Equal(): %v was not equal to expected value: %v",
|
"Equal(): %v was not equal to expected value: %v",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -263,7 +263,7 @@ func TestSwap(t *testing.T) {
|
|||||||
expected := "USDBTC"
|
expected := "USDBTC"
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. TestSwap: %s was not equal to expected value: %s",
|
"TestSwap: %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -273,12 +273,12 @@ func TestEmpty(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
pair := NewPair(BTC, USD)
|
pair := NewPair(BTC, USD)
|
||||||
if pair.IsEmpty() {
|
if pair.IsEmpty() {
|
||||||
t.Error("Test failed. Empty() returned true when the pair was initialised")
|
t.Error("Empty() returned true when the pair was initialised")
|
||||||
}
|
}
|
||||||
|
|
||||||
p := NewPair(NewCode(""), NewCode(""))
|
p := NewPair(NewCode(""), NewCode(""))
|
||||||
if !p.IsEmpty() {
|
if !p.IsEmpty() {
|
||||||
t.Error("Test failed. Empty() returned true when the pair wasn't initialised")
|
t.Error("Empty() returned true when the pair wasn't initialised")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -289,7 +289,7 @@ func TestNewPair(t *testing.T) {
|
|||||||
expected := defaultPair
|
expected := defaultPair
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -302,7 +302,7 @@ func TestNewPairWithDelimiter(t *testing.T) {
|
|||||||
expected := "BTC-test-USD"
|
expected := "BTC-test-USD"
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -312,7 +312,7 @@ func TestNewPairWithDelimiter(t *testing.T) {
|
|||||||
expected = defaultPair
|
expected = defaultPair
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -325,7 +325,7 @@ func TestNewPairDelimiter(t *testing.T) {
|
|||||||
expected := defaultPairWDelimiter
|
expected := defaultPairWDelimiter
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -334,7 +334,7 @@ func TestNewPairDelimiter(t *testing.T) {
|
|||||||
expected = "-"
|
expected = "-"
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Delmiter: %s was not equal to expected value: %s",
|
"Delmiter: %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -349,7 +349,7 @@ func TestNewPairFromIndex(t *testing.T) {
|
|||||||
|
|
||||||
pair, err := NewPairFromIndex(currency, index)
|
pair, err := NewPairFromIndex(currency, index)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - NewPairFromIndex() error", err)
|
t.Error("NewPairFromIndex() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
pair.Delimiter = "-"
|
pair.Delimiter = "-"
|
||||||
@@ -358,7 +358,7 @@ func TestNewPairFromIndex(t *testing.T) {
|
|||||||
expected := defaultPairWDelimiter
|
expected := defaultPairWDelimiter
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -367,7 +367,7 @@ func TestNewPairFromIndex(t *testing.T) {
|
|||||||
|
|
||||||
pair, err = NewPairFromIndex(currency, index)
|
pair, err = NewPairFromIndex(currency, index)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - NewPairFromIndex() error", err)
|
t.Error("NewPairFromIndex() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
pair.Delimiter = "-"
|
pair.Delimiter = "-"
|
||||||
@@ -376,7 +376,7 @@ func TestNewPairFromIndex(t *testing.T) {
|
|||||||
expected = "DOGE-BTC"
|
expected = "DOGE-BTC"
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -390,7 +390,7 @@ func TestNewPairFromString(t *testing.T) {
|
|||||||
expected := defaultPairWDelimiter
|
expected := defaultPairWDelimiter
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -401,7 +401,7 @@ func TestNewPairFromString(t *testing.T) {
|
|||||||
expected = defaultPair
|
expected = defaultPair
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf(
|
t.Errorf(
|
||||||
"Test failed. Pair(): %s was not equal to expected value: %s",
|
"Pair(): %s was not equal to expected value: %s",
|
||||||
actual, expected,
|
actual, expected,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -416,18 +416,18 @@ func TestNewPairFromFormattedPairs(t *testing.T) {
|
|||||||
|
|
||||||
p := NewPairFromFormattedPairs("BTCUSDT", pairs, PairFormat{Uppercase: true})
|
p := NewPairFromFormattedPairs("BTCUSDT", pairs, PairFormat{Uppercase: true})
|
||||||
if p.String() != "BTC-USDT" {
|
if p.String() != "BTC-USDT" {
|
||||||
t.Error("Test failed. TestNewPairFromFormattedPairs: Expected currency was not found")
|
t.Error("TestNewPairFromFormattedPairs: Expected currency was not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
p = NewPairFromFormattedPairs("btcusdt", pairs, PairFormat{Uppercase: false})
|
p = NewPairFromFormattedPairs("btcusdt", pairs, PairFormat{Uppercase: false})
|
||||||
if p.String() != "BTC-USDT" {
|
if p.String() != "BTC-USDT" {
|
||||||
t.Error("Test failed. TestNewPairFromFormattedPairs: Expected currency was not found")
|
t.Error("TestNewPairFromFormattedPairs: Expected currency was not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now a wrong one, will default to NewPairFromString
|
// Now a wrong one, will default to NewPairFromString
|
||||||
p = NewPairFromFormattedPairs("ethusdt", pairs, PairFormat{})
|
p = NewPairFromFormattedPairs("ethusdt", pairs, PairFormat{})
|
||||||
if p.String() != "ethusdt" && p.Base.String() != "eth" {
|
if p.String() != "ethusdt" && p.Base.String() != "eth" {
|
||||||
t.Error("Test failed. TestNewPairFromFormattedPairs: Expected currency was not found")
|
t.Error("TestNewPairFromFormattedPairs: Expected currency was not found")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -435,48 +435,48 @@ func TestContainsCurrency(t *testing.T) {
|
|||||||
p := NewPair(BTC, USD)
|
p := NewPair(BTC, USD)
|
||||||
|
|
||||||
if !p.ContainsCurrency(BTC) {
|
if !p.ContainsCurrency(BTC) {
|
||||||
t.Error("Test failed. TestContainsCurrency: Expected currency was not found")
|
t.Error("TestContainsCurrency: Expected currency was not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.ContainsCurrency(ETH) {
|
if p.ContainsCurrency(ETH) {
|
||||||
t.Error("Test failed. TestContainsCurrency: Non-existent currency was found")
|
t.Error("TestContainsCurrency: Non-existent currency was found")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestFormatPairs(t *testing.T) {
|
func TestFormatPairs(t *testing.T) {
|
||||||
newP, err := FormatPairs([]string{""}, "-", "")
|
newP, err := FormatPairs([]string{""}, "-", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - FormatPairs() error", err)
|
t.Error("FormatPairs() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(newP) > 0 {
|
if len(newP) > 0 {
|
||||||
t.Error("Test failed. TestFormatPairs: Empty string returned a valid pair")
|
t.Error("TestFormatPairs: Empty string returned a valid pair")
|
||||||
}
|
}
|
||||||
|
|
||||||
newP, err = FormatPairs([]string{defaultPairWDelimiter}, "-", "")
|
newP, err = FormatPairs([]string{defaultPairWDelimiter}, "-", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - FormatPairs() error", err)
|
t.Error("FormatPairs() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if newP[0].String() != defaultPairWDelimiter {
|
if newP[0].String() != defaultPairWDelimiter {
|
||||||
t.Error("Test failed. TestFormatPairs: Expected pair was not found")
|
t.Error("TestFormatPairs: Expected pair was not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
newP, err = FormatPairs([]string{defaultPair}, "", "BTC")
|
newP, err = FormatPairs([]string{defaultPair}, "", "BTC")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - FormatPairs() error", err)
|
t.Error("FormatPairs() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if newP[0].String() != defaultPair {
|
if newP[0].String() != defaultPair {
|
||||||
t.Error("Test failed. TestFormatPairs: Expected pair was not found")
|
t.Error("TestFormatPairs: Expected pair was not found")
|
||||||
}
|
}
|
||||||
newP, err = FormatPairs([]string{"ETHUSD"}, "", "")
|
newP, err = FormatPairs([]string{"ETHUSD"}, "", "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - FormatPairs() error", err)
|
t.Error("FormatPairs() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if newP[0].String() != "ETHUSD" {
|
if newP[0].String() != "ETHUSD" {
|
||||||
t.Error("Test failed. TestFormatPairs: Expected pair was not found")
|
t.Error("TestFormatPairs: Expected pair was not found")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -492,12 +492,12 @@ func TestCopyPairFormat(t *testing.T) {
|
|||||||
|
|
||||||
result := CopyPairFormat(testPair, pairs, false)
|
result := CopyPairFormat(testPair, pairs, false)
|
||||||
if result.String() != defaultPairWDelimiter {
|
if result.String() != defaultPairWDelimiter {
|
||||||
t.Error("Test failed. TestCopyPairFormat: Expected pair was not found")
|
t.Error("TestCopyPairFormat: Expected pair was not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
result = CopyPairFormat(NewPair(ETH, USD), pairs, true)
|
result = CopyPairFormat(NewPair(ETH, USD), pairs, true)
|
||||||
if result.String() != "" {
|
if result.String() != "" {
|
||||||
t.Error("Test failed. TestCopyPairFormat: Unexpected non empty pair returned")
|
t.Error("TestCopyPairFormat: Unexpected non empty pair returned")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -507,26 +507,26 @@ func TestFindPairDifferences(t *testing.T) {
|
|||||||
// Test new pair update
|
// Test new pair update
|
||||||
newPairs, removedPairs := pairList.FindDifferences(NewPairsFromStrings([]string{"DASH-USD"}))
|
newPairs, removedPairs := pairList.FindDifferences(NewPairsFromStrings([]string{"DASH-USD"}))
|
||||||
if len(newPairs) != 1 && len(removedPairs) != 3 {
|
if len(newPairs) != 1 && len(removedPairs) != 3 {
|
||||||
t.Error("Test failed. TestFindPairDifferences: Unexpected values")
|
t.Error("TestFindPairDifferences: Unexpected values")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test that we don't allow empty strings for new pairs
|
// Test that we don't allow empty strings for new pairs
|
||||||
newPairs, removedPairs = pairList.FindDifferences(NewPairsFromStrings([]string{""}))
|
newPairs, removedPairs = pairList.FindDifferences(NewPairsFromStrings([]string{""}))
|
||||||
if len(newPairs) != 0 && len(removedPairs) != 3 {
|
if len(newPairs) != 0 && len(removedPairs) != 3 {
|
||||||
t.Error("Test failed. TestFindPairDifferences: Unexpected values")
|
t.Error("TestFindPairDifferences: Unexpected values")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test that we don't allow empty strings for new pairs
|
// Test that we don't allow empty strings for new pairs
|
||||||
newPairs, removedPairs = NewPairsFromStrings([]string{""}).FindDifferences(pairList)
|
newPairs, removedPairs = NewPairsFromStrings([]string{""}).FindDifferences(pairList)
|
||||||
if len(newPairs) != 3 && len(removedPairs) != 0 {
|
if len(newPairs) != 3 && len(removedPairs) != 0 {
|
||||||
t.Error("Test failed. TestFindPairDifferences: Unexpected values")
|
t.Error("TestFindPairDifferences: Unexpected values")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test that the supplied pair lists are the same, so
|
// Test that the supplied pair lists are the same, so
|
||||||
// no newPairs or removedPairs
|
// no newPairs or removedPairs
|
||||||
newPairs, removedPairs = pairList.FindDifferences(pairList)
|
newPairs, removedPairs = pairList.FindDifferences(pairList)
|
||||||
if len(newPairs) != 0 && len(removedPairs) != 0 {
|
if len(newPairs) != 0 && len(removedPairs) != 0 {
|
||||||
t.Error("Test failed. TestFindPairDifferences: Unexpected values")
|
t.Error("TestFindPairDifferences: Unexpected values")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -538,7 +538,7 @@ func TestPairsToStringArray(t *testing.T) {
|
|||||||
actual := pairs.Strings()
|
actual := pairs.Strings()
|
||||||
|
|
||||||
if actual[0] != expected[0] {
|
if actual[0] != expected[0] {
|
||||||
t.Error("Test failed. TestPairsToStringArray: Unexpected values")
|
t.Error("TestPairsToStringArray: Unexpected values")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -547,7 +547,7 @@ func TestRandomPairFromPairs(t *testing.T) {
|
|||||||
var emptyPairs Pairs
|
var emptyPairs Pairs
|
||||||
result := emptyPairs.GetRandomPair()
|
result := emptyPairs.GetRandomPair()
|
||||||
if !result.IsEmpty() {
|
if !result.IsEmpty() {
|
||||||
t.Error("Test failed. TestRandomPairFromPairs: Unexpected values")
|
t.Error("TestRandomPairFromPairs: Unexpected values")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test that a populated pairs array returns a non-empty currency pair
|
// Test that a populated pairs array returns a non-empty currency pair
|
||||||
@@ -556,7 +556,7 @@ func TestRandomPairFromPairs(t *testing.T) {
|
|||||||
result = pairs.GetRandomPair()
|
result = pairs.GetRandomPair()
|
||||||
|
|
||||||
if result.IsEmpty() {
|
if result.IsEmpty() {
|
||||||
t.Error("Test failed. TestRandomPairFromPairs: Unexpected values")
|
t.Error("TestRandomPairFromPairs: Unexpected values")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test that a populated pairs array over a number of attempts returns ALL
|
// Test that a populated pairs array over a number of attempts returns ALL
|
||||||
@@ -574,7 +574,7 @@ func TestRandomPairFromPairs(t *testing.T) {
|
|||||||
for x := range pairs {
|
for x := range pairs {
|
||||||
_, ok := expectedResults[pairs[x].String()]
|
_, ok := expectedResults[pairs[x].String()]
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Error("Test failed. TestRandomPairFromPairs: Unexpected values")
|
t.Error("TestRandomPairFromPairs: Unexpected values")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -582,6 +582,6 @@ func TestRandomPairFromPairs(t *testing.T) {
|
|||||||
func TestIsInvalid(t *testing.T) {
|
func TestIsInvalid(t *testing.T) {
|
||||||
p := NewPair(LTC, LTC)
|
p := NewPair(LTC, LTC)
|
||||||
if !p.IsInvalid() {
|
if !p.IsInvalid() {
|
||||||
t.Error("Test Failed - IsInvalid() error expect true but received false")
|
t.Error("IsInvalid() error expect true but received false")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,9 +22,6 @@ func NewPairsFromStrings(pairs []string) Pairs {
|
|||||||
return ps
|
return ps
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pairs defines a list of pairs
|
|
||||||
type Pairs []Pair
|
|
||||||
|
|
||||||
// Strings returns a slice of strings referring to each currency pair
|
// Strings returns a slice of strings referring to each currency pair
|
||||||
func (p Pairs) Strings() []string {
|
func (p Pairs) Strings() []string {
|
||||||
var list []string
|
var list []string
|
||||||
@@ -186,3 +183,6 @@ func (p Pairs) GetRandomPair() Pair {
|
|||||||
|
|
||||||
return p[rand.Intn(pairsLen)]
|
return p[rand.Intn(pairsLen)]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pairs defines a list of pairs
|
||||||
|
type Pairs []Pair
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ func TestPairsUpper(t *testing.T) {
|
|||||||
expected := "BTC_USD,BTC_AUD,BTC_LTC"
|
expected := "BTC_USD,BTC_AUD,BTC_LTC"
|
||||||
|
|
||||||
if pairs.Upper().Join() != expected {
|
if pairs.Upper().Join() != expected {
|
||||||
t.Errorf("Test Failed - Pairs Join() error expected %s but received %s",
|
t.Errorf("Pairs Join() error expected %s but received %s",
|
||||||
expected, pairs.Join())
|
expected, pairs.Join())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,7 @@ func TestPairsString(t *testing.T) {
|
|||||||
|
|
||||||
for i, p := range pairs {
|
for i, p := range pairs {
|
||||||
if p.String() != expected[i] {
|
if p.String() != expected[i] {
|
||||||
t.Errorf("Test Failed - Pairs String() error expected %s but received %s",
|
t.Errorf("Pairs String() error expected %s but received %s",
|
||||||
expected, p.String())
|
expected, p.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ func TestPairsJoin(t *testing.T) {
|
|||||||
expected := "btc_usd,btc_aud,btc_ltc"
|
expected := "btc_usd,btc_aud,btc_ltc"
|
||||||
|
|
||||||
if pairs.Join() != expected {
|
if pairs.Join() != expected {
|
||||||
t.Errorf("Test Failed - Pairs Join() error expected %s but received %s",
|
t.Errorf("Pairs Join() error expected %s but received %s",
|
||||||
expected, pairs.Join())
|
expected, pairs.Join())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -43,25 +43,25 @@ func TestPairsFormat(t *testing.T) {
|
|||||||
|
|
||||||
expected := "BTC-USD,BTC-AUD,BTC-LTC"
|
expected := "BTC-USD,BTC-AUD,BTC-LTC"
|
||||||
if pairs.Format("-", "", true).Join() != expected {
|
if pairs.Format("-", "", true).Join() != expected {
|
||||||
t.Errorf("Test Failed - Pairs Join() error expected %s but received %s",
|
t.Errorf("Pairs Join() error expected %s but received %s",
|
||||||
expected, pairs.Format("-", "", true).Join())
|
expected, pairs.Format("-", "", true).Join())
|
||||||
}
|
}
|
||||||
|
|
||||||
expected = "btc:usd,btc:aud,btc:ltc"
|
expected = "btc:usd,btc:aud,btc:ltc"
|
||||||
if pairs.Format(":", "", false).Join() != expected {
|
if pairs.Format(":", "", false).Join() != expected {
|
||||||
t.Errorf("Test Failed - Pairs Join() error expected %s but received %s",
|
t.Errorf("Pairs Join() error expected %s but received %s",
|
||||||
expected, pairs.Format(":", "", false).Join())
|
expected, pairs.Format(":", "", false).Join())
|
||||||
}
|
}
|
||||||
|
|
||||||
if pairs.Format(":", "KRW", false).Join() != "" {
|
if pairs.Format(":", "KRW", false).Join() != "" {
|
||||||
t.Errorf("Test Failed - Pairs Join() error expected %s but received %s",
|
t.Errorf("Pairs Join() error expected %s but received %s",
|
||||||
expected, pairs.Format(":", "KRW", true).Join())
|
expected, pairs.Format(":", "KRW", true).Join())
|
||||||
}
|
}
|
||||||
|
|
||||||
pairs = NewPairsFromStrings([]string{"DASHKRW", "BTCKRW"})
|
pairs = NewPairsFromStrings([]string{"DASHKRW", "BTCKRW"})
|
||||||
expected = "dash-krw,btc-krw"
|
expected = "dash-krw,btc-krw"
|
||||||
if pairs.Format("-", "KRW", false).Join() != expected {
|
if pairs.Format("-", "KRW", false).Join() != expected {
|
||||||
t.Errorf("Test Failed - Pairs Join() error expected %s but received %s",
|
t.Errorf("Pairs Join() error expected %s but received %s",
|
||||||
expected, pairs.Format("-", "KRW", false).Join())
|
expected, pairs.Format("-", "KRW", false).Join())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -72,21 +72,21 @@ func TestPairsUnmarshalJSON(t *testing.T) {
|
|||||||
|
|
||||||
encoded, err := common.JSONEncode(configPairs)
|
encoded, err := common.JSONEncode(configPairs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Pairs UnmarshalJSON() error", err)
|
t.Fatal("Pairs UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = common.JSONDecode(encoded, &unmarshalHere)
|
err = common.JSONDecode(encoded, &unmarshalHere)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Pairs UnmarshalJSON() error", err)
|
t.Fatal("Pairs UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = common.JSONDecode(encoded, &unmarshalHere)
|
err = common.JSONDecode(encoded, &unmarshalHere)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Pairs UnmarshalJSON() error", err)
|
t.Fatal("Pairs UnmarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if unmarshalHere.Join() != configPairs {
|
if unmarshalHere.Join() != configPairs {
|
||||||
t.Errorf("Test Failed - Pairs UnmarshalJSON() error expected %s but received %s",
|
t.Errorf("Pairs UnmarshalJSON() error expected %s but received %s",
|
||||||
configPairs, unmarshalHere.Join())
|
configPairs, unmarshalHere.Join())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -100,12 +100,12 @@ func TestPairsMarshalJSON(t *testing.T) {
|
|||||||
|
|
||||||
encoded, err := common.JSONEncode(quickstruct)
|
encoded, err := common.JSONEncode(quickstruct)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Pairs MarshalJSON() error", err)
|
t.Fatal("Pairs MarshalJSON() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
expected := `{"soManyPairs":"btc_usd,btc_aud,btc_ltc"}`
|
expected := `{"soManyPairs":"btc_usd,btc_aud,btc_ltc"}`
|
||||||
if string(encoded) != expected {
|
if string(encoded) != expected {
|
||||||
t.Errorf("Test Failed - Pairs MarshalJSON() error expected %s but received %s",
|
t.Errorf("Pairs MarshalJSON() error expected %s but received %s",
|
||||||
expected, string(encoded))
|
expected, string(encoded))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,7 +119,7 @@ func TestRemovePairsByFilter(t *testing.T) {
|
|||||||
|
|
||||||
pairs = pairs.RemovePairsByFilter(USDT)
|
pairs = pairs.RemovePairsByFilter(USDT)
|
||||||
if pairs.Contains(NewPair(LTC, USDT), true) {
|
if pairs.Contains(NewPair(LTC, USDT), true) {
|
||||||
t.Error("Test failed. TestRemovePairsByFilter unexpected result")
|
t.Error("TestRemovePairsByFilter unexpected result")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ func TestRemove(t *testing.T) {
|
|||||||
p := NewPair(BTC, USD)
|
p := NewPair(BTC, USD)
|
||||||
pairs = pairs.Remove(p)
|
pairs = pairs.Remove(p)
|
||||||
if pairs.Contains(p, true) || len(pairs) != 2 {
|
if pairs.Contains(p, true) || len(pairs) != 2 {
|
||||||
t.Error("Test failed. TestRemove unexpected result")
|
t.Error("TestRemove unexpected result")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -148,13 +148,13 @@ func TestAdd(t *testing.T) {
|
|||||||
p := NewPair(BTC, USDT)
|
p := NewPair(BTC, USDT)
|
||||||
pairs = pairs.Add(p)
|
pairs = pairs.Add(p)
|
||||||
if !pairs.Contains(p, true) || len(pairs) != 4 {
|
if !pairs.Contains(p, true) || len(pairs) != 4 {
|
||||||
t.Error("Test failed. TestAdd unexpected result")
|
t.Error("TestAdd unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now test adding a pair which already exists
|
// Now test adding a pair which already exists
|
||||||
pairs = pairs.Add(p)
|
pairs = pairs.Add(p)
|
||||||
if len(pairs) != 4 {
|
if len(pairs) != 4 {
|
||||||
t.Error("Test failed. TestAdd unexpected result")
|
t.Error("TestAdd unexpected result")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,10 +165,10 @@ func TestContains(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !pairs.Contains(NewPair(BTC, USD), true) {
|
if !pairs.Contains(NewPair(BTC, USD), true) {
|
||||||
t.Errorf("Test failed. TestContains: Expected pair was not found")
|
t.Errorf("TestContains: Expected pair was not found")
|
||||||
}
|
}
|
||||||
|
|
||||||
if pairs.Contains(NewPair(ETH, USD), false) {
|
if pairs.Contains(NewPair(ETH, USD), false) {
|
||||||
t.Errorf("Test failed. TestContains: Non-existent pair was found")
|
t.Errorf("TestContains: Non-existent pair was found")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/thrasher-corp/gocryptotrader/common"
|
"github.com/thrasher-corp/gocryptotrader/common"
|
||||||
@@ -16,75 +15,10 @@ import (
|
|||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CurrencyFileUpdateDelay defines the rate at which the currency.json file is
|
|
||||||
// updated
|
|
||||||
const (
|
|
||||||
DefaultCurrencyFileDelay = 168 * time.Hour
|
|
||||||
DefaultForeignExchangeDelay = 1 * time.Minute
|
|
||||||
DefaultStorageFile = "currency.json"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
storage.SetDefaults()
|
storage.SetDefaults()
|
||||||
}
|
}
|
||||||
|
|
||||||
// storage is an overarching type that keeps track of and updates currency,
|
|
||||||
// currency exchange rates and pairs
|
|
||||||
var storage Storage
|
|
||||||
|
|
||||||
// Storage contains the loaded storage currencies supported on available crypto
|
|
||||||
// or fiat marketplaces
|
|
||||||
// NOTE: All internal currencies are upper case
|
|
||||||
type Storage struct {
|
|
||||||
// FiatCurrencies defines the running fiat currencies in the currency
|
|
||||||
// storage
|
|
||||||
fiatCurrencies Currencies
|
|
||||||
|
|
||||||
// Cryptocurrencies defines the running cryptocurrencies in the currency
|
|
||||||
// storage
|
|
||||||
cryptocurrencies Currencies
|
|
||||||
|
|
||||||
// CurrencyCodes is a full basket of currencies either crypto, fiat, ico or
|
|
||||||
// contract being tracked by the currency storage system
|
|
||||||
currencyCodes BaseCodes
|
|
||||||
|
|
||||||
// Main converting currency
|
|
||||||
baseCurrency Code
|
|
||||||
|
|
||||||
// FXRates defines a protected conversion rate map
|
|
||||||
fxRates ConversionRates
|
|
||||||
|
|
||||||
// DefaultBaseCurrency is the base currency used for conversion
|
|
||||||
defaultBaseCurrency Code
|
|
||||||
|
|
||||||
// DefaultFiatCurrencies has the default minimum of FIAT values
|
|
||||||
defaultFiatCurrencies Currencies
|
|
||||||
|
|
||||||
// DefaultCryptoCurrencies has the default minimum of crytpocurrency values
|
|
||||||
defaultCryptoCurrencies Currencies
|
|
||||||
|
|
||||||
// FiatExchangeMarkets defines an interface to access FX data for fiat
|
|
||||||
// currency rates
|
|
||||||
fiatExchangeMarkets *forexprovider.ForexProviders
|
|
||||||
|
|
||||||
// CurrencyAnalysis defines a full market analysis suite to receieve and
|
|
||||||
// define different fiat currencies, cryptocurrencies and markets
|
|
||||||
currencyAnalysis *coinmarketcap.Coinmarketcap
|
|
||||||
|
|
||||||
// Path defines the main folder to dump and find currency JSON
|
|
||||||
path string
|
|
||||||
|
|
||||||
// Update delay variables
|
|
||||||
currencyFileUpdateDelay time.Duration
|
|
||||||
foreignExchangeUpdateDelay time.Duration
|
|
||||||
|
|
||||||
mtx sync.Mutex
|
|
||||||
wg sync.WaitGroup
|
|
||||||
shutdownC chan struct{}
|
|
||||||
updaterRunning bool
|
|
||||||
Verbose bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetDefaults sets storage defaults for basic package functionality
|
// SetDefaults sets storage defaults for basic package functionality
|
||||||
func (s *Storage) SetDefaults() {
|
func (s *Storage) SetDefaults() {
|
||||||
s.defaultBaseCurrency = USD
|
s.defaultBaseCurrency = USD
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ func TestRunUpdater(t *testing.T) {
|
|||||||
emptyMainConfig := MainConfiguration{}
|
emptyMainConfig := MainConfiguration{}
|
||||||
err := newStorage.RunUpdater(BotOverrides{}, &emptyMainConfig, "", false)
|
err := newStorage.RunUpdater(BotOverrides{}, &emptyMainConfig, "", false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test Failed storage RunUpdater() error cannot be nil")
|
t.Fatal("storage RunUpdater() error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
mainConfig := MainConfiguration{
|
mainConfig := MainConfiguration{
|
||||||
@@ -18,11 +18,11 @@ func TestRunUpdater(t *testing.T) {
|
|||||||
|
|
||||||
err = newStorage.RunUpdater(BotOverrides{}, &mainConfig, "", false)
|
err = newStorage.RunUpdater(BotOverrides{}, &mainConfig, "", false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test Failed storage RunUpdater() error cannot be nil")
|
t.Fatal("storage RunUpdater() error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = newStorage.RunUpdater(BotOverrides{}, &mainConfig, "/bla", false)
|
err = newStorage.RunUpdater(BotOverrides{}, &mainConfig, "/bla", false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed storage RunUpdater() error", err)
|
t.Fatal("storage RunUpdater() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
62
currency/storage_types.go
Normal file
62
currency/storage_types.go
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
package currency
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/currency/coinmarketcap"
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/currency/forexprovider"
|
||||||
|
)
|
||||||
|
|
||||||
|
// CurrencyFileUpdateDelay defines the rate at which the currency.json file is
|
||||||
|
// updated
|
||||||
|
const (
|
||||||
|
DefaultCurrencyFileDelay = 168 * time.Hour
|
||||||
|
DefaultForeignExchangeDelay = 1 * time.Minute
|
||||||
|
DefaultStorageFile = "currency.json"
|
||||||
|
)
|
||||||
|
|
||||||
|
// storage is an overarching type that keeps track of and updates currency,
|
||||||
|
// currency exchange rates and pairs
|
||||||
|
var storage Storage
|
||||||
|
|
||||||
|
// Storage contains the loaded storage currencies supported on available crypto
|
||||||
|
// or fiat marketplaces
|
||||||
|
// NOTE: All internal currencies are upper case
|
||||||
|
type Storage struct {
|
||||||
|
// FiatCurrencies defines the running fiat currencies in the currency
|
||||||
|
// storage
|
||||||
|
fiatCurrencies Currencies
|
||||||
|
// Cryptocurrencies defines the running cryptocurrencies in the currency
|
||||||
|
// storage
|
||||||
|
cryptocurrencies Currencies
|
||||||
|
// CurrencyCodes is a full basket of currencies either crypto, fiat, ico or
|
||||||
|
// contract being tracked by the currency storage system
|
||||||
|
currencyCodes BaseCodes
|
||||||
|
// Main converting currency
|
||||||
|
baseCurrency Code
|
||||||
|
// FXRates defines a protected conversion rate map
|
||||||
|
fxRates ConversionRates
|
||||||
|
// DefaultBaseCurrency is the base currency used for conversion
|
||||||
|
defaultBaseCurrency Code
|
||||||
|
// DefaultFiatCurrencies has the default minimum of FIAT values
|
||||||
|
defaultFiatCurrencies Currencies
|
||||||
|
// DefaultCryptoCurrencies has the default minimum of crytpocurrency values
|
||||||
|
defaultCryptoCurrencies Currencies
|
||||||
|
// FiatExchangeMarkets defines an interface to access FX data for fiat
|
||||||
|
// currency rates
|
||||||
|
fiatExchangeMarkets *forexprovider.ForexProviders
|
||||||
|
// CurrencyAnalysis defines a full market analysis suite to receieve and
|
||||||
|
// define different fiat currencies, cryptocurrencies and markets
|
||||||
|
currencyAnalysis *coinmarketcap.Coinmarketcap
|
||||||
|
// Path defines the main folder to dump and find currency JSON
|
||||||
|
path string
|
||||||
|
// Update delay variables
|
||||||
|
currencyFileUpdateDelay time.Duration
|
||||||
|
foreignExchangeUpdateDelay time.Duration
|
||||||
|
mtx sync.Mutex
|
||||||
|
wg sync.WaitGroup
|
||||||
|
shutdownC chan struct{}
|
||||||
|
updaterRunning bool
|
||||||
|
Verbose bool
|
||||||
|
}
|
||||||
@@ -2,6 +2,15 @@ package currency
|
|||||||
|
|
||||||
import "errors"
|
import "errors"
|
||||||
|
|
||||||
|
// GetSymbolByCurrencyName returns a currency symbol
|
||||||
|
func GetSymbolByCurrencyName(currency Code) (string, error) {
|
||||||
|
result, ok := symbols[currency.Item]
|
||||||
|
if !ok {
|
||||||
|
return "", errors.New("currency symbol not found")
|
||||||
|
}
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
|
|
||||||
// symbols map holds the currency name and symbol mappings
|
// symbols map holds the currency name and symbol mappings
|
||||||
var symbols = map[*Item]string{
|
var symbols = map[*Item]string{
|
||||||
ALL.Item: "Lek",
|
ALL.Item: "Lek",
|
||||||
@@ -116,12 +125,3 @@ var symbols = map[*Item]string{
|
|||||||
YER.Item: "﷼",
|
YER.Item: "﷼",
|
||||||
ZWD.Item: "Z$",
|
ZWD.Item: "Z$",
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSymbolByCurrencyName returns a currency symbol
|
|
||||||
func GetSymbolByCurrencyName(currency Code) (string, error) {
|
|
||||||
result, ok := symbols[currency.Item]
|
|
||||||
if !ok {
|
|
||||||
return "", errors.New("currency symbol not found")
|
|
||||||
}
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -6,16 +6,16 @@ func TestGetSymbolByCurrencyName(t *testing.T) {
|
|||||||
expected := "₩"
|
expected := "₩"
|
||||||
actual, err := GetSymbolByCurrencyName(KPW)
|
actual, err := GetSymbolByCurrencyName(KPW)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed. TestGetSymbolByCurrencyName error: %s", err)
|
t.Errorf("TestGetSymbolByCurrencyName error: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf("Test failed. TestGetSymbolByCurrencyName differing values")
|
t.Errorf("TestGetSymbolByCurrencyName differing values")
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = GetSymbolByCurrencyName(Code{})
|
_, err = GetSymbolByCurrencyName(Code{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Test failed. TestGetSymbolByCurrencyNam returned nil on non-existent currency")
|
t.Errorf("TestGetSymbolByCurrencyNam returned nil on non-existent currency")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,15 @@
|
|||||||
package currency
|
package currency
|
||||||
|
|
||||||
|
// GetTranslation returns similar strings for a particular currency if not found
|
||||||
|
// returns the code back
|
||||||
|
func GetTranslation(currency Code) (Code, bool) {
|
||||||
|
val, ok := translations[currency]
|
||||||
|
if !ok {
|
||||||
|
return currency, ok
|
||||||
|
}
|
||||||
|
return val, ok
|
||||||
|
}
|
||||||
|
|
||||||
var translations = map[Code]Code{
|
var translations = map[Code]Code{
|
||||||
BTC: XBT,
|
BTC: XBT,
|
||||||
ETH: XETH,
|
ETH: XETH,
|
||||||
@@ -10,13 +20,3 @@ var translations = map[Code]Code{
|
|||||||
XDG: DOGE,
|
XDG: DOGE,
|
||||||
USDT: USD,
|
USDT: USD,
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetTranslation returns similar strings for a particular currency if not found
|
|
||||||
// returns the code back
|
|
||||||
func GetTranslation(currency Code) (Code, bool) {
|
|
||||||
val, ok := translations[currency]
|
|
||||||
if !ok {
|
|
||||||
return currency, ok
|
|
||||||
}
|
|
||||||
return val, ok
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -116,9 +116,9 @@ func TestDispatcher(t *testing.T) {
|
|||||||
t.Error("error cannot be nil")
|
t.Error("error cannot be nil")
|
||||||
}
|
}
|
||||||
|
|
||||||
id, errrrrrrrr := dispatcher.getNewID()
|
id, err := dispatcher.getNewID()
|
||||||
if errrrrrrrr != nil {
|
if err != nil {
|
||||||
t.Error(errrrrrrrr)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = dispatcher.publish(id, &payload)
|
err = dispatcher.publish(id, &payload)
|
||||||
@@ -159,18 +159,18 @@ func TestDispatcher(t *testing.T) {
|
|||||||
randomChan := make(chan interface{})
|
randomChan := make(chan interface{})
|
||||||
err = dispatcher.unsubscribe(someID, randomChan)
|
err = dispatcher.unsubscribe(someID, randomChan)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error(err)
|
t.Error("Expected error")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = dispatcher.unsubscribe(id, randomChan)
|
err = dispatcher.unsubscribe(id, randomChan)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error(err)
|
t.Error("Expected error")
|
||||||
}
|
}
|
||||||
|
|
||||||
close(randomChan)
|
close(randomChan)
|
||||||
err = dispatcher.unsubscribe(id, randomChan)
|
err = dispatcher.unsubscribe(id, randomChan)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error(err)
|
t.Error("Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ func SetupTest(t *testing.T) {
|
|||||||
Bot.Config = &config.Cfg
|
Bot.Config = &config.Cfg
|
||||||
err := Bot.Config.LoadConfig("", true)
|
err := Bot.Config.LoadConfig("", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Test failed. SetupTest: Failed to load config: %s", err)
|
t.Fatalf("SetupTest: Failed to load config: %s", err)
|
||||||
}
|
}
|
||||||
testSetup = true
|
testSetup = true
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ func SetupTest(t *testing.T) {
|
|||||||
}
|
}
|
||||||
err := LoadExchange("Bitfinex", false, nil)
|
err := LoadExchange("Bitfinex", false, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed. SetupTest: Failed to load exchange: %s", err)
|
t.Errorf("SetupTest: Failed to load exchange: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ func CleanupTest(t *testing.T) {
|
|||||||
|
|
||||||
err := UnloadExchange("Bitfinex")
|
err := UnloadExchange("Bitfinex")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Test failed. CleanupTest: Failed to unload exchange: %s",
|
t.Fatalf("CleanupTest: Failed to unload exchange: %s",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -46,11 +46,11 @@ func TestCheckExchangeExists(t *testing.T) {
|
|||||||
SetupTest(t)
|
SetupTest(t)
|
||||||
|
|
||||||
if !CheckExchangeExists("Bitfinex") {
|
if !CheckExchangeExists("Bitfinex") {
|
||||||
t.Errorf("Test failed. TestGetExchangeExists: Unable to find exchange")
|
t.Errorf("TestGetExchangeExists: Unable to find exchange")
|
||||||
}
|
}
|
||||||
|
|
||||||
if CheckExchangeExists("Asdsad") {
|
if CheckExchangeExists("Asdsad") {
|
||||||
t.Errorf("Test failed. TestGetExchangeExists: Non-existent exchange found")
|
t.Errorf("TestGetExchangeExists: Non-existent exchange found")
|
||||||
}
|
}
|
||||||
|
|
||||||
CleanupTest(t)
|
CleanupTest(t)
|
||||||
@@ -61,26 +61,26 @@ func TestGetExchangeByName(t *testing.T) {
|
|||||||
|
|
||||||
exch := GetExchangeByName("Bitfinex")
|
exch := GetExchangeByName("Bitfinex")
|
||||||
if exch == nil {
|
if exch == nil {
|
||||||
t.Errorf("Test failed. TestGetExchangeByName: Failed to get exchange")
|
t.Errorf("TestGetExchangeByName: Failed to get exchange")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !exch.IsEnabled() {
|
if !exch.IsEnabled() {
|
||||||
t.Errorf("Test failed. TestGetExchangeByName: Unexpected result")
|
t.Errorf("TestGetExchangeByName: Unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
exch.SetEnabled(false)
|
exch.SetEnabled(false)
|
||||||
bfx := GetExchangeByName("Bitfinex")
|
bfx := GetExchangeByName("Bitfinex")
|
||||||
if bfx.IsEnabled() {
|
if bfx.IsEnabled() {
|
||||||
t.Errorf("Test failed. TestGetExchangeByName: Unexpected result")
|
t.Errorf("TestGetExchangeByName: Unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
if exch.GetName() != "Bitfinex" {
|
if exch.GetName() != "Bitfinex" {
|
||||||
t.Errorf("Test failed. TestGetExchangeByName: Unexpected result")
|
t.Errorf("TestGetExchangeByName: Unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
exch = GetExchangeByName("Asdasd")
|
exch = GetExchangeByName("Asdasd")
|
||||||
if exch != nil {
|
if exch != nil {
|
||||||
t.Errorf("Test failed. TestGetExchangeByName: Non-existent exchange found")
|
t.Errorf("TestGetExchangeByName: Non-existent exchange found")
|
||||||
}
|
}
|
||||||
|
|
||||||
CleanupTest(t)
|
CleanupTest(t)
|
||||||
@@ -91,13 +91,13 @@ func TestReloadExchange(t *testing.T) {
|
|||||||
|
|
||||||
err := ReloadExchange("asdf")
|
err := ReloadExchange("asdf")
|
||||||
if err != ErrExchangeNotFound {
|
if err != ErrExchangeNotFound {
|
||||||
t.Errorf("Test failed. TestReloadExchange: Incorrect result: %s",
|
t.Errorf("TestReloadExchange: Incorrect result: %s",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = ReloadExchange("Bitfinex")
|
err = ReloadExchange("Bitfinex")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed. TestReloadExchange: Incorrect result: %s",
|
t.Errorf("TestReloadExchange: Incorrect result: %s",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ func TestReloadExchange(t *testing.T) {
|
|||||||
|
|
||||||
err = ReloadExchange("asdf")
|
err = ReloadExchange("asdf")
|
||||||
if err != ErrNoExchangesLoaded {
|
if err != ErrNoExchangesLoaded {
|
||||||
t.Errorf("Test failed. TestReloadExchange: Incorrect result: %s",
|
t.Errorf("TestReloadExchange: Incorrect result: %s",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -115,19 +115,19 @@ func TestUnloadExchange(t *testing.T) {
|
|||||||
|
|
||||||
err := UnloadExchange("asdf")
|
err := UnloadExchange("asdf")
|
||||||
if err != ErrExchangeNotFound {
|
if err != ErrExchangeNotFound {
|
||||||
t.Errorf("Test failed. TestUnloadExchange: Incorrect result: %s",
|
t.Errorf("TestUnloadExchange: Incorrect result: %s",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = UnloadExchange("Bitfinex")
|
err = UnloadExchange("Bitfinex")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed. TestUnloadExchange: Failed to get exchange. %s",
|
t.Errorf("TestUnloadExchange: Failed to get exchange. %s",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = UnloadExchange("asdf")
|
err = UnloadExchange("asdf")
|
||||||
if err != ErrNoExchangesLoaded {
|
if err != ErrNoExchangesLoaded {
|
||||||
t.Errorf("Test failed. TestUnloadExchange: Incorrect result: %s",
|
t.Errorf("TestUnloadExchange: Incorrect result: %s",
|
||||||
err)
|
err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ func SetupTestHelpers(t *testing.T) {
|
|||||||
Bot.Config = &config.Cfg
|
Bot.Config = &config.Cfg
|
||||||
err := Bot.Config.LoadConfig("../testdata/configtest.json", true)
|
err := Bot.Config.LoadConfig("../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Test failed. SetupTest: Failed to load config: %s", err)
|
t.Fatalf("SetupTest: Failed to load config: %s", err)
|
||||||
}
|
}
|
||||||
testSetup = true
|
testSetup = true
|
||||||
}
|
}
|
||||||
@@ -428,7 +428,7 @@ func TestGetSpecificTicker(t *testing.T) {
|
|||||||
&ticker.Price{Pair: p, Last: 1000},
|
&ticker.Price{Pair: p, Last: 1000},
|
||||||
asset.Spot)
|
asset.Spot)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test failed. ProcessTicker error", err)
|
t.Fatal("ProcessTicker error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
tick, err := GetSpecificTicker(currency.NewPairFromStrings("BTC", "USD"), "Bitstamp",
|
tick, err := GetSpecificTicker(currency.NewPairFromStrings("BTC", "USD"), "Bitstamp",
|
||||||
@@ -587,6 +587,6 @@ func TestGetCryptocurrenciesByExchange(t *testing.T) {
|
|||||||
|
|
||||||
_, err := GetCryptocurrenciesByExchange("Bitfinex", false, false, asset.Spot)
|
_, err := GetCryptocurrenciesByExchange("Bitfinex", false, false, asset.Spot)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Test failed. Err %s", err)
|
t.Fatalf("Err %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ func loadConfig(t *testing.T) *config.Config {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("", true)
|
err := cfg.LoadConfig("", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed. GetCurrencyConfig LoadConfig error", err)
|
t.Error("GetCurrencyConfig LoadConfig error", err)
|
||||||
}
|
}
|
||||||
return cfg
|
return cfg
|
||||||
}
|
}
|
||||||
@@ -25,7 +25,7 @@ func makeHTTPGetRequest(t *testing.T, response interface{}) *http.Response {
|
|||||||
|
|
||||||
err := RESTfulJSONResponse(w, response)
|
err := RESTfulJSONResponse(w, response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed. Failed to make response.", err)
|
t.Error("Failed to make response.", err)
|
||||||
}
|
}
|
||||||
return w.Result()
|
return w.Result()
|
||||||
}
|
}
|
||||||
@@ -37,17 +37,17 @@ func TestConfigAllJsonResponse(t *testing.T) {
|
|||||||
body, err := ioutil.ReadAll(resp.Body)
|
body, err := ioutil.ReadAll(resp.Body)
|
||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed. Body not readable", err)
|
t.Error("Body not readable", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var responseConfig config.Config
|
var responseConfig config.Config
|
||||||
jsonErr := json.Unmarshal(body, &responseConfig)
|
jsonErr := json.Unmarshal(body, &responseConfig)
|
||||||
if jsonErr != nil {
|
if jsonErr != nil {
|
||||||
t.Error("Test failed. Response not parseable as json", err)
|
t.Error("Response not parseable as json", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if reflect.DeepEqual(responseConfig, cfg) {
|
if reflect.DeepEqual(responseConfig, cfg) {
|
||||||
t.Error("Test failed. Json not equal to config")
|
t.Error("Json not equal to config")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ func TestInvalidHostRequest(t *testing.T) {
|
|||||||
newRouter(true).ServeHTTP(resp, req)
|
newRouter(true).ServeHTTP(resp, req)
|
||||||
|
|
||||||
if status := resp.Code; status != http.StatusNotFound {
|
if status := resp.Code; status != http.StatusNotFound {
|
||||||
t.Errorf("Test failed. Response returned wrong status code expected %v got %v", http.StatusNotFound, status)
|
t.Errorf("Response returned wrong status code expected %v got %v", http.StatusNotFound, status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,6 +77,6 @@ func TestValidHostRequest(t *testing.T) {
|
|||||||
newRouter(true).ServeHTTP(resp, req)
|
newRouter(true).ServeHTTP(resp, req)
|
||||||
|
|
||||||
if status := resp.Code; status != http.StatusOK {
|
if status := resp.Code; status != http.StatusOK {
|
||||||
t.Errorf("Test failed. Response returned wrong status code expected %v got %v", http.StatusOK, status)
|
t.Errorf("Response returned wrong status code expected %v got %v", http.StatusOK, status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ func TestNewCurrencyPairSyncer(t *testing.T) {
|
|||||||
Bot.Config = &config.Cfg
|
Bot.Config = &config.Cfg
|
||||||
err := Bot.Config.LoadConfig("", true)
|
err := Bot.Config.LoadConfig("", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Test failed. TestNewExchangeSyncer: Failed to load config: %s", err)
|
t.Fatalf("TestNewExchangeSyncer: Failed to load config: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
Bot.Settings.DisableExchangeAutoPairUpdates = true
|
Bot.Settings.DisableExchangeAutoPairUpdates = true
|
||||||
|
|||||||
@@ -21,10 +21,10 @@ func TestSetDefaults(t *testing.T) {
|
|||||||
|
|
||||||
SetDefaults.SetDefaults()
|
SetDefaults.SetDefaults()
|
||||||
if SetDefaults.API.Endpoints.URL != "https://sim3.alphapoint.com:8400" {
|
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/" {
|
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 {
|
if onlineTest {
|
||||||
ticker, err = alpha.GetTicker("BTCUSD")
|
ticker, err = alpha.GetTicker("BTCUSD")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Alphapoint GetTicker init error: ", err)
|
t.Fatal("Alphapoint GetTicker init error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = alpha.GetTicker("wigwham")
|
_, err = alpha.GetTicker("wigwham")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - Alphapoint GetTicker error")
|
t.Error("Alphapoint GetTicker Expected error")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mockResp := []byte(
|
mockResp := []byte(
|
||||||
@@ -64,16 +64,16 @@ func TestGetTicker(t *testing.T) {
|
|||||||
|
|
||||||
err = common.JSONDecode(mockResp, &ticker)
|
err = common.JSONDecode(mockResp, &ticker)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Alphapoint GetTicker unmarshalling error: ", err)
|
t.Fatal("Alphapoint GetTicker unmarshalling error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ticker.Last != 249.76 {
|
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 {
|
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 {
|
if onlineTest {
|
||||||
trades, err = alpha.GetTrades("BTCUSD", 0, 10)
|
trades, err = alpha.GetTrades("BTCUSD", 0, 10)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Test Failed - Init error: %s", err)
|
t.Fatalf("Init error: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = alpha.GetTrades("wigwham", 0, 10)
|
_, err = alpha.GetTrades("wigwham", 0, 10)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatal("Test Failed - GetTrades error")
|
t.Fatal("GetTrades Expected error")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mockResp := []byte(
|
mockResp := []byte(
|
||||||
@@ -101,20 +101,20 @@ func TestGetTrades(t *testing.T) {
|
|||||||
|
|
||||||
err = common.JSONDecode(mockResp, &trades)
|
err = common.JSONDecode(mockResp, &trades)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - GetTrades unmarshalling error: ", err)
|
t.Fatal("GetTrades unmarshalling error: ", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !trades.IsAccepted {
|
if !trades.IsAccepted {
|
||||||
t.Error("Test Failed - GetTrades IsAccepted failed")
|
t.Error("GetTrades IsAccepted failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
if trades.Count <= 0 {
|
if trades.Count <= 0 {
|
||||||
t.Error("Test failed - GetTrades trades count is <= 0")
|
t.Error("GetTrades trades count is <= 0")
|
||||||
}
|
}
|
||||||
|
|
||||||
if trades.Instrument != "BTCUSD" {
|
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 {
|
if onlineTest {
|
||||||
trades, err = alpha.GetTradesByDate("BTCUSD", 1414799400, 1414800000)
|
trades, err = alpha.GetTradesByDate("BTCUSD", 1414799400, 1414800000)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test Failed - Init error: %s", err)
|
t.Errorf("Init error: %s", err)
|
||||||
}
|
}
|
||||||
_, err = alpha.GetTradesByDate("wigwham", 1414799400, 1414800000)
|
_, err = alpha.GetTradesByDate("wigwham", 1414799400, 1414800000)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetTradesByDate error")
|
t.Error("GetTradesByDate Expected error")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mockResp := []byte(
|
mockResp := []byte(
|
||||||
@@ -141,27 +141,27 @@ func TestGetTradesByDate(t *testing.T) {
|
|||||||
|
|
||||||
err = common.JSONDecode(mockResp, &trades)
|
err = common.JSONDecode(mockResp, &trades)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - GetTradesByDate unmarshalling error: ", err)
|
t.Fatal("GetTradesByDate unmarshalling error: ", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if trades.DateTimeUTC < 0 {
|
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 {
|
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" {
|
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 {
|
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 {
|
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 {
|
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 {
|
if onlineTest {
|
||||||
orderBook, err = alpha.GetOrderbook("BTCUSD")
|
orderBook, err = alpha.GetOrderbook("BTCUSD")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test Failed - Init error: %s", err)
|
t.Errorf("Init error: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = alpha.GetOrderbook("wigwham")
|
_, err = alpha.GetOrderbook("wigwham")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - GetOrderbook() error")
|
t.Error("GetOrderbook() Expected error")
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mockResp := []byte(
|
mockResp := []byte(
|
||||||
@@ -189,24 +189,24 @@ func TestGetOrderbook(t *testing.T) {
|
|||||||
|
|
||||||
err = common.JSONDecode(mockResp, &orderBook)
|
err = common.JSONDecode(mockResp, &orderBook)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - TestGetOrderbook unmarshalling error: ", err)
|
t.Fatal("TestGetOrderbook unmarshalling error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if orderBook.Bids[0].Quantity != 725 {
|
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 {
|
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 {
|
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 {
|
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 {
|
if onlineTest {
|
||||||
products, err = alpha.GetProductPairs()
|
products, err = alpha.GetProductPairs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test Failed - Init error: %s", err)
|
t.Errorf("Init error: %s", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mockResp := []byte(
|
mockResp := []byte(
|
||||||
@@ -229,24 +229,24 @@ func TestGetProductPairs(t *testing.T) {
|
|||||||
|
|
||||||
err = common.JSONDecode(mockResp, &products)
|
err = common.JSONDecode(mockResp, &products)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - TestGetProductPairs unmarshalling error: ", err)
|
t.Fatal("TestGetProductPairs unmarshalling error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if products.ProductPairs[0].Name != "LTCUSD" {
|
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" {
|
if products.ProductPairs[1].Product1Label != "BTC" {
|
||||||
t.Error("Test Failed - Alphapoint ProductPairs 1 != BTC")
|
t.Error("Alphapoint ProductPairs 1 != BTC")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if !products.IsAccepted {
|
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 {
|
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 {
|
if onlineTest {
|
||||||
products, err = alpha.GetProducts()
|
products, err = alpha.GetProducts()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test Failed - Init error: %s", err)
|
t.Errorf("Init error: %s", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mockResp := []byte(
|
mockResp := []byte(
|
||||||
@@ -269,24 +269,24 @@ func TestGetProducts(t *testing.T) {
|
|||||||
|
|
||||||
err = common.JSONDecode(mockResp, &products)
|
err = common.JSONDecode(mockResp, &products)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - TestGetProducts unmarshalling error: ", err)
|
t.Fatal("TestGetProducts unmarshalling error: ", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if products.Products[0].Name != "USD" {
|
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 {
|
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 {
|
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 {
|
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")
|
err := a.CreateAccount("test", "account", "something@something.com", "0292383745", "lolcat123")
|
||||||
if err != nil {
|
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")
|
err = a.CreateAccount("test", "account", "something@something.com", "0292383745", "bla")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Test Failed - CreateAccount() error")
|
t.Errorf("CreateAccount() Expected error")
|
||||||
}
|
}
|
||||||
err = a.CreateAccount("", "", "", "", "lolcat123")
|
err = a.CreateAccount("", "", "", "", "lolcat123")
|
||||||
if err == nil {
|
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()
|
_, err := a.GetUserInfo()
|
||||||
if err == nil {
|
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)
|
_, err := a.SetUserInfo("bla", "bla", "1", "meh", true, true)
|
||||||
if err == nil {
|
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()
|
_, err := a.GetAccountInfo()
|
||||||
if err == nil {
|
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)
|
_, err := a.GetAccountTrades("", 1, 2)
|
||||||
if err == nil {
|
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()
|
_, err := a.GetDepositAddresses()
|
||||||
if err == nil {
|
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)
|
err := a.WithdrawCoins("", "", "", 0.01)
|
||||||
if err == nil {
|
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)
|
_, err := a.CreateOrder("", "", exchange.LimitOrderType.ToString(), 0.01, 0)
|
||||||
if err == nil {
|
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)
|
_, err := a.ModifyExistingOrder("", 1, 1)
|
||||||
if err == nil {
|
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("")
|
err := a.CancelAllExistingOrders("")
|
||||||
if err == nil {
|
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()
|
_, err := a.GetOrders()
|
||||||
if err == nil {
|
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)
|
_, err := a.GetOrderFee("", "", 1, 1)
|
||||||
if err == nil {
|
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{})
|
_, err := a.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -40,12 +41,24 @@ func (a *Alphapoint) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: true,
|
Websocket: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AccountInfo: true,
|
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{
|
WebsocketCapabilities: protocol.Features{
|
||||||
TickerFetching: true,
|
AccountInfo: true,
|
||||||
},
|
},
|
||||||
|
|
||||||
WithdrawPermissions: exchange.WithdrawCryptoWith2FA |
|
WithdrawPermissions: exchange.WithdrawCryptoWith2FA |
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ func TestMain(m *testing.M) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
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")
|
anxConfig, err := cfg.GetExchangeConfig("ANX")
|
||||||
if err != nil {
|
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.AuthenticatedSupport = true
|
||||||
anxConfig.API.Credentials.Key = apiKey
|
anxConfig.API.Credentials.Key = apiKey
|
||||||
@@ -31,7 +31,7 @@ func TestMain(m *testing.M) {
|
|||||||
a.SetDefaults()
|
a.SetDefaults()
|
||||||
err = a.Setup(anxConfig)
|
err = a.Setup(anxConfig)
|
||||||
if err != nil {
|
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)
|
log.Printf(sharedtestvalues.LiveTesting, a.GetName(), a.API.Endpoints.URL)
|
||||||
os.Exit(m.Run())
|
os.Exit(m.Run())
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ func TestMain(m *testing.M) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - ANX load config error", err)
|
log.Fatal("ANX load config error", err)
|
||||||
}
|
}
|
||||||
anxConfig, err := cfg.GetExchangeConfig("ANX")
|
anxConfig, err := cfg.GetExchangeConfig("ANX")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - Mock server error", err)
|
log.Fatal("Mock server error", err)
|
||||||
}
|
}
|
||||||
a.SkipAuthCheck = true
|
a.SkipAuthCheck = true
|
||||||
anxConfig.API.AuthenticatedSupport = true
|
anxConfig.API.AuthenticatedSupport = true
|
||||||
@@ -35,12 +35,12 @@ func TestMain(m *testing.M) {
|
|||||||
a.SetDefaults()
|
a.SetDefaults()
|
||||||
err = a.Setup(anxConfig)
|
err = a.Setup(anxConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - ANX setup error", err)
|
log.Fatal("ANX setup error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
serverDetails, newClient, err := mock.NewVCRServer(mockFile)
|
serverDetails, newClient, err := mock.NewVCRServer(mockFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
log.Fatalf("Mock server error %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
a.HTTPClient = newClient
|
a.HTTPClient = newClient
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ func TestGetCurrencies(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
_, err := a.GetCurrencies()
|
_, err := a.GetCurrencies()
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := a.FetchTradablePairs(asset.Spot)
|
_, err := a.FetchTradablePairs(asset.Spot)
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
ticker, err := a.GetTicker("BTCUSD")
|
ticker, err := a.GetTicker("BTCUSD")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test Failed - ANX GetTicker() error: %s", err)
|
t.Errorf("ANX GetTicker() error: %s", err)
|
||||||
}
|
}
|
||||||
if ticker.Result != "success" {
|
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()
|
t.Parallel()
|
||||||
depth, err := a.GetDepth("BTCUSD")
|
depth, err := a.GetDepth("BTCUSD")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test Failed - ANX GetDepth() error: %s", err)
|
t.Errorf("ANX GetDepth() error: %s", err)
|
||||||
}
|
}
|
||||||
if depth.Result != "success" {
|
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()
|
t.Parallel()
|
||||||
apiKey, apiSecret, err := a.GetAPIKey("userName", "passWord", "", "1337")
|
apiKey, apiSecret, err := a.GetAPIKey("userName", "passWord", "", "1337")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - ANX GetAPIKey() Incorrect")
|
t.Error("ANX GetAPIKey() Expected error")
|
||||||
}
|
}
|
||||||
if apiKey != "" {
|
if apiKey != "" {
|
||||||
t.Error("Test Failed - ANX GetAPIKey() Incorrect")
|
t.Error("ANX GetAPIKey() Expected error")
|
||||||
}
|
}
|
||||||
if apiSecret != "" {
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0.02) || err != nil {
|
if resp, err := a.GetFee(feeBuilder); resp != float64(0.02) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -111,7 +111,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := a.GetFee(feeBuilder); resp != float64(20000) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,7 +119,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0.01) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,7 +127,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,7 +143,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,7 +152,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := a.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,7 +161,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := a.GetFee(feeBuilder); resp != float64(250.01) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -208,7 +208,7 @@ func TestGetOrderHistory(t *testing.T) {
|
|||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||||
t.Error("Expecting an error when no keys are set")
|
t.Error("Expecting an error when no keys are set")
|
||||||
case mockTests && err != nil:
|
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()
|
_, err := a.GetAccountInfo()
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||||
t.Error("test failed - GetAccountInfo() error:", err)
|
t.Error("GetAccountInfo() error:", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||||
t.Error("test failed - GetAccountInfo() error")
|
t.Error("GetAccountInfo() error")
|
||||||
case mockTests && err != nil:
|
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()
|
t.Parallel()
|
||||||
_, err := a.ModifyOrder(&exchange.ModifyOrder{})
|
_, err := a.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := a.GetDepositAddress(currency.BTC, "")
|
_, err := a.GetDepositAddress(currency.BTC, "")
|
||||||
if areTestAPIKeysSet() && err != nil && !mockTests {
|
if areTestAPIKeysSet() && err != nil && !mockTests {
|
||||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
t.Error("GetDepositAddress() error", err)
|
||||||
} else if !areTestAPIKeysSet() && err == nil {
|
} 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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -80,9 +81,24 @@ func (a *ANX) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: false,
|
Websocket: false,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerFetching: true,
|
||||||
TickerBatching: false,
|
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 |
|
WithdrawPermissions: exchange.WithdrawCryptoWithEmail |
|
||||||
exchange.AutoWithdrawCryptoWithSetup |
|
exchange.AutoWithdrawCryptoWithSetup |
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
func TestString(t *testing.T) {
|
func TestString(t *testing.T) {
|
||||||
a := Spot
|
a := Spot
|
||||||
if a.String() != "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()
|
result := a.Strings()
|
||||||
for x := range a {
|
for x := range a {
|
||||||
if !common.StringDataCompare(result, a[x].String()) {
|
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) {
|
func TestContains(t *testing.T) {
|
||||||
a := Items{Spot, Futures}
|
a := Items{Spot, Futures}
|
||||||
if a.Contains("meow") {
|
if a.Contains("meow") {
|
||||||
t.Fatal("Test failed - TestContains returned an unexpected result")
|
t.Fatal("TestContains returned an unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !a.Contains(Spot) {
|
if !a.Contains(Spot) {
|
||||||
t.Fatal("Test failed - TestContains returned an unexpected result")
|
t.Fatal("TestContains returned an unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
if a.Contains(Binary) {
|
if a.Contains(Binary) {
|
||||||
t.Fatal("Test failed - TestContains returned an unexpected result")
|
t.Fatal("TestContains returned an unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !a.Contains("SpOt") {
|
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) {
|
func TestJoinToString(t *testing.T) {
|
||||||
a := Items{Spot, Futures}
|
a := Items{Spot, Futures}
|
||||||
if a.JoinToString(",") != "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) {
|
func TestIsValid(t *testing.T) {
|
||||||
if IsValid("rawr") {
|
if IsValid("rawr") {
|
||||||
t.Fatal("Test failed - TestIsValid returned an unexpected result")
|
t.Fatal("TestIsValid returned an unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
if !IsValid(Spot) {
|
if !IsValid(Spot) {
|
||||||
t.Fatal("Test failed - TestIsValid returned an unexpected result")
|
t.Fatal("TestIsValid returned an unexpected result")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestNew(t *testing.T) {
|
func TestNew(t *testing.T) {
|
||||||
a := New("Spota")
|
a := New("Spota")
|
||||||
if a != nil {
|
if a != nil {
|
||||||
t.Fatal("Test failed - TestNew returned an unexpected result")
|
t.Fatal("TestNew returned an unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
a = New("SpOt")
|
a = New("SpOt")
|
||||||
if a == nil {
|
if a == nil {
|
||||||
t.Fatal("Test failed - TestNew returned an unexpected result")
|
t.Fatal("TestNew returned an unexpected result")
|
||||||
}
|
}
|
||||||
|
|
||||||
a = New("spot,futures")
|
a = New("spot,futures")
|
||||||
if a.JoinToString(",") != "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 {
|
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 {
|
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()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - Binance load config error", err)
|
log.Fatal("Binance load config error", err)
|
||||||
}
|
}
|
||||||
binanceConfig, err := cfg.GetExchangeConfig("Binance")
|
binanceConfig, err := cfg.GetExchangeConfig("Binance")
|
||||||
if err != nil {
|
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.AuthenticatedSupport = true
|
||||||
binanceConfig.API.Credentials.Key = apiKey
|
binanceConfig.API.Credentials.Key = apiKey
|
||||||
@@ -31,7 +31,7 @@ func TestMain(m *testing.M) {
|
|||||||
b.SetDefaults()
|
b.SetDefaults()
|
||||||
err = b.Setup(binanceConfig)
|
err = b.Setup(binanceConfig)
|
||||||
if err != nil {
|
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)
|
log.Printf(sharedtestvalues.LiveTesting, b.GetName(), b.API.Endpoints.URL)
|
||||||
os.Exit(m.Run())
|
os.Exit(m.Run())
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ func TestMain(m *testing.M) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - Binance load config error", err)
|
log.Fatal("Binance load config error", err)
|
||||||
}
|
}
|
||||||
binanceConfig, err := cfg.GetExchangeConfig("Binance")
|
binanceConfig, err := cfg.GetExchangeConfig("Binance")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - Binance Setup() init error", err)
|
log.Fatal("Binance Setup() init error", err)
|
||||||
}
|
}
|
||||||
b.SkipAuthCheck = true
|
b.SkipAuthCheck = true
|
||||||
binanceConfig.API.AuthenticatedSupport = true
|
binanceConfig.API.AuthenticatedSupport = true
|
||||||
@@ -35,12 +35,12 @@ func TestMain(m *testing.M) {
|
|||||||
b.SetDefaults()
|
b.SetDefaults()
|
||||||
err = b.Setup(binanceConfig)
|
err = b.Setup(binanceConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - Binance setup error", err)
|
log.Fatal("Binance setup error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
log.Fatalf("Mock server error %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
b.HTTPClient = newClient
|
b.HTTPClient = newClient
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ func TestFetchTradablePairs(t *testing.T) {
|
|||||||
|
|
||||||
_, err := b.FetchTradablePairs(asset.Spot)
|
_, err := b.FetchTradablePairs(asset.Spot)
|
||||||
if err != nil {
|
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 {
|
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 {
|
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)
|
_, err := b.GetHistoricalTrades("BTCUSDT", 5, 0)
|
||||||
if !mockTests && err == nil {
|
if !mockTests && err == nil {
|
||||||
t.Error("Test Failed - Binance GetHistoricalTrades() expecting error")
|
t.Error("Binance GetHistoricalTrades() expecting error")
|
||||||
}
|
}
|
||||||
if mockTests && err == nil {
|
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)
|
_, err := b.GetAggregatedTrades("BTCUSDT", 5)
|
||||||
if err != nil {
|
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,
|
Limit: 24,
|
||||||
})
|
})
|
||||||
if err != nil {
|
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")
|
_, err := b.GetAveragePrice("BTCUSDT")
|
||||||
if err != nil {
|
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")
|
_, err := b.GetPriceChangeStats("BTCUSDT")
|
||||||
if err != nil {
|
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()
|
_, err := b.GetTickers()
|
||||||
if err != nil {
|
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")
|
_, err := b.GetLatestSpotPrice("BTCUSDT")
|
||||||
if err != nil {
|
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")
|
_, err := b.GetBestPrice("BTCUSDT")
|
||||||
if err != nil {
|
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)
|
_, err := b.QueryOrder("BTCUSDT", "", 1337)
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - QueryOrder() error", err)
|
t.Error("QueryOrder() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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")
|
_, err := b.OpenOrders("BTCUSDT")
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - OpenOrders() error", err)
|
t.Error("OpenOrders() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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", "", "")
|
_, err := b.AllOrders("BTCUSDT", "", "")
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - AllOrders() error", err)
|
t.Error("AllOrders() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.1) || err != nil {
|
if resp, err := b.GetFee(feeBuilder); resp != float64(0.1) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -221,7 +221,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(100000) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,7 +229,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.1) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,7 +237,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,7 +247,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,7 +264,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -273,7 +273,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -307,11 +307,11 @@ func TestGetActiveOrders(t *testing.T) {
|
|||||||
_, err = b.GetActiveOrders(&getOrdersRequest)
|
_, err = b.GetActiveOrders(&getOrdersRequest)
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - GetActiveOrders() error", err)
|
t.Error("GetActiveOrders() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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)
|
_, err = b.GetOrderHistory(&getOrdersRequest)
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - GetOrderHistory() error", err)
|
t.Error("GetOrderHistory() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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)
|
_, err := b.SubmitOrder(orderSubmission)
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - SubmitOrder() error", err)
|
t.Error("SubmitOrder() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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)
|
err := b.CancelOrder(orderCancellation)
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - CancelExchangeOrder() error", err)
|
t.Error("CancelExchangeOrder() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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)
|
_, err := b.CancelAllOrders(orderCancellation)
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - CancelAllExchangeOrders() error", err)
|
t.Error("CancelAllExchangeOrders() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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()
|
_, err := b.GetAccountInfo()
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
t.Error("GetAccountInfo() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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{})
|
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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)
|
_, err := b.WithdrawCryptocurrencyFunds(&withdrawCryptoRequest)
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - Withdraw() error", err)
|
t.Error("Withdraw() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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, "")
|
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil:
|
case areTestAPIKeysSet() && err != nil:
|
||||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
t.Error("GetDepositAddress() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -71,9 +72,32 @@ func (b *Binance) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: true,
|
Websocket: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerBatching: true,
|
||||||
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 |
|
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||||
exchange.NoFiatWithdrawals,
|
exchange.NoFiatWithdrawals,
|
||||||
@@ -92,10 +116,6 @@ func (b *Binance) SetDefaults() {
|
|||||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||||
b.Websocket = wshandler.New()
|
b.Websocket = wshandler.New()
|
||||||
b.API.Endpoints.WebsocketURL = binanceDefaultWebsocketURL
|
b.API.Endpoints.WebsocketURL = binanceDefaultWebsocketURL
|
||||||
b.Websocket.Functionality = wshandler.WebsocketTradeDataSupported |
|
|
||||||
wshandler.WebsocketTickerSupported |
|
|
||||||
wshandler.WebsocketKlineSupported |
|
|
||||||
wshandler.WebsocketOrderbookSupported
|
|
||||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||||
@@ -123,6 +143,7 @@ func (b *Binance) Setup(exch *config.ExchangeConfig) error {
|
|||||||
ExchangeName: exch.Name,
|
ExchangeName: exch.Name,
|
||||||
RunningURL: exch.API.Endpoints.WebsocketURL,
|
RunningURL: exch.API.Endpoints.WebsocketURL,
|
||||||
Connector: b.WsConnect,
|
Connector: b.WsConnect,
|
||||||
|
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -30,21 +30,21 @@ func TestSetup(t *testing.T) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Bitfinex load config error", err)
|
t.Fatal("Bitfinex load config error", err)
|
||||||
}
|
}
|
||||||
bfxConfig, err := cfg.GetExchangeConfig("Bitfinex")
|
bfxConfig, err := cfg.GetExchangeConfig("Bitfinex")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - Bitfinex Setup() init error")
|
t.Error("Bitfinex Setup() init error")
|
||||||
}
|
}
|
||||||
err = b.Setup(bfxConfig)
|
err = b.Setup(bfxConfig)
|
||||||
if err != nil {
|
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.Key = apiKey
|
||||||
b.API.Credentials.Secret = apiSecret
|
b.API.Credentials.Secret = apiSecret
|
||||||
if !b.Enabled || b.API.AuthenticatedSupport ||
|
if !b.Enabled || b.API.AuthenticatedSupport ||
|
||||||
b.Verbose || b.Websocket.IsEnabled() || len(b.BaseCurrencies) < 1 {
|
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
|
b.API.AuthenticatedSupport = true
|
||||||
@@ -98,7 +98,7 @@ func TestGetTicker(t *testing.T) {
|
|||||||
|
|
||||||
_, err = b.GetTicker("wigwham")
|
_, err = b.GetTicker("wigwham")
|
||||||
if err == nil {
|
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")
|
_, err = b.GetStats("wigwham")
|
||||||
if err == nil {
|
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")
|
_, err = b.GetFundingBook("wigwham")
|
||||||
if err == nil {
|
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()
|
_, err := b.GetAccountInfo()
|
||||||
if err != nil {
|
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()
|
_, err := b.GetAccountFees()
|
||||||
if err == nil {
|
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()
|
_, err := b.GetAccountSummary()
|
||||||
if err == nil {
|
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)
|
_, err := b.NewDeposit("blabla", "testwallet", 1)
|
||||||
if err == nil {
|
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()
|
_, err := b.GetKeyPermissions()
|
||||||
if err == nil {
|
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()
|
_, err := b.GetMarginInfo()
|
||||||
if err == nil {
|
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()
|
_, err := b.GetAccountBalance()
|
||||||
if err == nil {
|
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")
|
_, err := b.WalletTransfer(0.01, "bla", "bla", "bla")
|
||||||
if err == nil {
|
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,
|
_, err := b.NewOrder("BTCUSD", 1, 2, true,
|
||||||
exchange.LimitOrderType.ToLower().ToString(), false)
|
exchange.LimitOrderType.ToLower().ToString(), false)
|
||||||
if err == nil {
|
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)
|
_, err := b.NewOrderMulti(newOrder)
|
||||||
if err == nil {
|
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)
|
_, err := b.CancelExistingOrder(1337)
|
||||||
if err == nil {
|
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})
|
_, err := b.CancelMultipleOrders([]int64{1337, 1336})
|
||||||
if err == nil {
|
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()
|
_, err := b.CancelAllExistingOrders()
|
||||||
if err == nil {
|
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",
|
_, err := b.ReplaceOrder(1337, "BTCUSD",
|
||||||
1, 1, true, exchange.LimitOrderType.ToLower().ToString(), false)
|
1, 1, true, exchange.LimitOrderType.ToLower().ToString(), false)
|
||||||
if err == nil {
|
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)
|
_, err := b.GetOrderStatus(1337)
|
||||||
if err == nil {
|
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()
|
_, err := b.GetOpenOrders()
|
||||||
if err == nil {
|
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()
|
_, err := b.GetActivePositions()
|
||||||
if err == nil {
|
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)
|
_, err := b.ClaimPosition(1337)
|
||||||
if err == nil {
|
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")
|
_, err := b.GetBalanceHistory("USD", time.Time{}, time.Time{}, 1, "deposit")
|
||||||
if err == nil {
|
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)
|
_, err := b.GetMovementHistory("USD", "bitcoin", time.Time{}, time.Time{}, 1)
|
||||||
if err == nil {
|
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)
|
_, err := b.GetTradeHistory("BTCUSD", time.Time{}, time.Time{}, 1, 0)
|
||||||
if err == nil {
|
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")
|
_, err := b.NewOffer("BTC", 1, 1, 1, "loan")
|
||||||
if err == nil {
|
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)
|
_, err := b.CancelOffer(1337)
|
||||||
if err == nil {
|
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)
|
_, err := b.GetOfferStatus(1337)
|
||||||
if err == nil {
|
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()
|
_, err := b.GetActiveCredits()
|
||||||
if err == nil {
|
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()
|
_, err := b.GetActiveOffers()
|
||||||
if err == nil {
|
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()
|
_, err := b.GetActiveMarginFunding()
|
||||||
if err == nil {
|
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()
|
_, err := b.GetUnusedMarginFunds()
|
||||||
if err == nil {
|
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()
|
_, err := b.GetMarginTotalTakenFunds()
|
||||||
if err == nil {
|
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)
|
_, err := b.CloseMarginFunding(1337)
|
||||||
if err == nil {
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
if resp, err := b.GetFee(feeBuilder); resp != float64(0.002) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -677,7 +677,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(2000) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -685,7 +685,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -693,7 +693,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -701,7 +701,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0004) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -710,7 +710,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -719,7 +719,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -728,7 +728,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -869,7 +869,7 @@ func TestCancelAllExchangeOrdera(t *testing.T) {
|
|||||||
func TestModifyOrder(t *testing.T) {
|
func TestModifyOrder(t *testing.T) {
|
||||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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() {
|
if areTestAPIKeysSet() {
|
||||||
_, err := b.GetDepositAddress(currency.BTC, "deposit")
|
_, err := b.GetDepositAddress(currency.BTC, "deposit")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
t.Error("GetDepositAddress() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := b.GetDepositAddress(currency.BTC, "deposit")
|
_, err := b.GetDepositAddress(currency.BTC, "deposit")
|
||||||
if err == nil {
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -70,9 +71,39 @@ func (b *Bitfinex) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: true,
|
Websocket: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerBatching: true,
|
||||||
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 |
|
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||||
exchange.AutoWithdrawFiatWithAPIPermission,
|
exchange.AutoWithdrawFiatWithAPIPermission,
|
||||||
@@ -91,12 +122,6 @@ func (b *Bitfinex) SetDefaults() {
|
|||||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||||
b.API.Endpoints.WebsocketURL = bitfinexWebsocket
|
b.API.Endpoints.WebsocketURL = bitfinexWebsocket
|
||||||
b.Websocket = wshandler.New()
|
b.Websocket = wshandler.New()
|
||||||
b.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
|
||||||
wshandler.WebsocketTradeDataSupported |
|
|
||||||
wshandler.WebsocketOrderbookSupported |
|
|
||||||
wshandler.WebsocketSubscribeSupported |
|
|
||||||
wshandler.WebsocketUnsubscribeSupported |
|
|
||||||
wshandler.WebsocketAuthenticatedEndpointsSupported
|
|
||||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||||
@@ -126,6 +151,7 @@ func (b *Bitfinex) Setup(exch *config.ExchangeConfig) error {
|
|||||||
Connector: b.WsConnect,
|
Connector: b.WsConnect,
|
||||||
Subscriber: b.Subscribe,
|
Subscriber: b.Subscribe,
|
||||||
UnSubscriber: b.Unsubscribe,
|
UnSubscriber: b.Unsubscribe,
|
||||||
|
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ func TestSetup(t *testing.T) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Bitflyer load config error", err)
|
t.Fatal("Bitflyer load config error", err)
|
||||||
}
|
}
|
||||||
bitflyerConfig, err := cfg.GetExchangeConfig("Bitflyer")
|
bitflyerConfig, err := cfg.GetExchangeConfig("Bitflyer")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - bitflyer Setup() init error")
|
t.Error("bitflyer Setup() init error")
|
||||||
}
|
}
|
||||||
|
|
||||||
bitflyerConfig.API.AuthenticatedSupport = true
|
bitflyerConfig.API.AuthenticatedSupport = true
|
||||||
@@ -41,7 +41,7 @@ func TestSetup(t *testing.T) {
|
|||||||
|
|
||||||
err = b.Setup(bitflyerConfig)
|
err = b.Setup(bitflyerConfig)
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetLatestBlockCA()
|
_, err := b.GetLatestBlockCA()
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetBlockCA("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f")
|
_, err := b.GetBlockCA("000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f")
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetBlockbyHeightCA(0)
|
_, err := b.GetBlockbyHeightCA(0)
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetTransactionByHashCA("0562d1f063cd4127053d838b165630445af5e480ceb24e1fd9ecea52903cb772")
|
_, err := b.GetTransactionByHashCA("0562d1f063cd4127053d838b165630445af5e480ceb24e1fd9ecea52903cb772")
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
v, err := b.GetAddressInfoCA("1F5zVDgNjorJ51oGebSvNCrSAHpwGkUdDB")
|
v, err := b.GetAddressInfoCA("1F5zVDgNjorJ51oGebSvNCrSAHpwGkUdDB")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - Bitflyer - GetAddressInfoCA() error:", err)
|
t.Error("Bitflyer - GetAddressInfoCA() error:", err)
|
||||||
}
|
}
|
||||||
if v.UnconfirmedBalance == 0 || v.ConfirmedBalance == 0 {
|
if v.UnconfirmedBalance == 0 || v.ConfirmedBalance == 0 {
|
||||||
log.Warn(log.ExchangeSys, "Donation wallet is empty :( - please consider donating")
|
log.Warn(log.ExchangeSys, "Donation wallet is empty :( - please consider donating")
|
||||||
@@ -92,7 +92,7 @@ func TestGetMarkets(t *testing.T) {
|
|||||||
t.Parallel()
|
t.Parallel()
|
||||||
_, err := b.GetMarkets()
|
_, err := b.GetMarkets()
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetOrderBook("BTC_JPY")
|
_, err := b.GetOrderBook("BTC_JPY")
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetTicker("BTC_JPY")
|
_, err := b.GetTicker("BTC_JPY")
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetExecutionHistory("BTC_JPY")
|
_, err := b.GetExecutionHistory("BTC_JPY")
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetExchangeStatus()
|
_, err := b.GetExchangeStatus()
|
||||||
if err != nil {
|
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 := currency.NewPairDelimiter("FXBTC_JPY", "_")
|
||||||
p = b.CheckFXString(p)
|
p = b.CheckFXString(p)
|
||||||
if p.Base.String() != "FX_BTC" {
|
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)
|
_, err := b.FetchTicker(p, asset.Spot)
|
||||||
if err != nil {
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -198,7 +198,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.1) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,7 +231,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,7 +240,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.JPY
|
feeBuilder.FiatCurrency = currency.JPY
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(324) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -249,7 +249,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.JPY
|
feeBuilder.FiatCurrency = currency.JPY
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(540) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -397,7 +397,7 @@ func TestWithdraw(t *testing.T) {
|
|||||||
func TestModifyOrder(t *testing.T) {
|
func TestModifyOrder(t *testing.T) {
|
||||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -68,9 +69,13 @@ func (b *Bitflyer) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: false,
|
Websocket: false,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerFetching: true,
|
||||||
TickerBatching: false,
|
OrderbookFetching: true,
|
||||||
|
AutoPairUpdates: true,
|
||||||
|
TradeFee: true,
|
||||||
|
FiatDepositFee: true,
|
||||||
|
FiatWithdrawalFee: true,
|
||||||
},
|
},
|
||||||
WithdrawPermissions: exchange.WithdrawCryptoViaWebsiteOnly |
|
WithdrawPermissions: exchange.WithdrawCryptoViaWebsiteOnly |
|
||||||
exchange.AutoWithdrawFiat,
|
exchange.AutoWithdrawFiat,
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ func TestSetup(t *testing.T) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Bithumb load config error", err)
|
t.Fatal("Bithumb load config error", err)
|
||||||
}
|
}
|
||||||
bitConfig, err := cfg.GetExchangeConfig("Bithumb")
|
bitConfig, err := cfg.GetExchangeConfig("Bithumb")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - Bithumb Setup() init error")
|
t.Error("Bithumb Setup() init error")
|
||||||
}
|
}
|
||||||
|
|
||||||
bitConfig.API.AuthenticatedSupport = true
|
bitConfig.API.AuthenticatedSupport = true
|
||||||
@@ -39,7 +39,7 @@ func TestSetup(t *testing.T) {
|
|||||||
|
|
||||||
err = b.Setup(bitConfig)
|
err = b.Setup(bitConfig)
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetTradablePairs()
|
_, err := b.GetTradablePairs()
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetTicker("btc")
|
_, err := b.GetTicker("btc")
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetAllTickers()
|
_, err := b.GetAllTickers()
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetOrderBook("btc")
|
_, err := b.GetOrderBook("btc")
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetTransactionHistory("btc")
|
_, err := b.GetTransactionHistory("btc")
|
||||||
if err != nil {
|
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")
|
_, err := b.GetAccountBalance("BTC")
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetWalletAddress("")
|
_, err := b.GetWalletAddress("")
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetLastTransaction()
|
_, err := b.GetLastTransaction()
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetOrders("1337", "bid", "100", "", "BTC")
|
_, err := b.GetOrders("1337", "bid", "100", "", "BTC")
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetUserTransactions()
|
_, err := b.GetUserTransactions()
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.PlaceTrade("btc", "bid", 0, 0)
|
_, err := b.PlaceTrade("btc", "bid", 0, 0)
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetOrderDetails("1337", "bid", "btc")
|
_, err := b.GetOrderDetails("1337", "bid", "btc")
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.CancelTrade("", "", "")
|
_, err := b.CancelTrade("", "", "")
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.WithdrawCrypto("LQxiDhKU7idKiWQhx4ALKYkBx8xKEQVxJR", "", "ltc", 0)
|
_, err := b.WithdrawCrypto("LQxiDhKU7idKiWQhx4ALKYkBx8xKEQVxJR", "", "ltc", 0)
|
||||||
if err == nil {
|
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()
|
_, err := b.RequestKRWDepositDetails()
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.RequestKRWWithdraw("102_bank", "1337", 1000)
|
_, err := b.RequestKRWWithdraw("102_bank", "1337", 1000)
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.MarketBuyOrder("btc", 0)
|
_, err := b.MarketBuyOrder("btc", 0)
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.MarketSellOrder("btc", 0)
|
_, err := b.MarketSellOrder("btc", 0)
|
||||||
if err == nil {
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -238,7 +238,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(2500) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -246,7 +246,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -254,7 +254,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,7 +262,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,7 +279,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -288,7 +288,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -432,12 +432,12 @@ func TestGetAccountInfo(t *testing.T) {
|
|||||||
if apiKey != "" || apiSecret != "" {
|
if apiKey != "" || apiSecret != "" {
|
||||||
_, err := b.GetAccountInfo()
|
_, err := b.GetAccountInfo()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - Bithumb GetAccountInfo() error", err)
|
t.Error("Bithumb GetAccountInfo() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := b.GetAccountInfo()
|
_, err := b.GetAccountInfo()
|
||||||
if err == nil {
|
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,
|
OrderSide: exchange.SellOrderSide,
|
||||||
CurrencyPair: curr})
|
CurrencyPair: curr})
|
||||||
if err == nil {
|
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 != "" {
|
if apiKey != "" && apiSecret != "" {
|
||||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
t.Error("GetDepositAddress() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||||
if err == nil {
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -70,9 +71,27 @@ func (b *Bithumb) SetDefaults() {
|
|||||||
b.Features = exchange.Features{
|
b.Features = exchange.Features{
|
||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerBatching: true,
|
||||||
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 |
|
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||||
exchange.AutoWithdrawFiat,
|
exchange.AutoWithdrawFiat,
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ func TestSetup(t *testing.T) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Bitmex load config error", err)
|
t.Fatal("Bitmex load config error", err)
|
||||||
}
|
}
|
||||||
bitmexConfig, err := cfg.GetExchangeConfig("Bitmex")
|
bitmexConfig, err := cfg.GetExchangeConfig("Bitmex")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - Bitmex Setup() init error")
|
t.Error("Bitmex Setup() init error")
|
||||||
}
|
}
|
||||||
|
|
||||||
bitmexConfig.API.AuthenticatedSupport = true
|
bitmexConfig.API.AuthenticatedSupport = true
|
||||||
@@ -46,7 +46,7 @@ func TestSetup(t *testing.T) {
|
|||||||
|
|
||||||
err = b.Setup(bitmexConfig)
|
err = b.Setup(bitmexConfig)
|
||||||
if err != nil {
|
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) {
|
func TestGetUrgentAnnouncement(t *testing.T) {
|
||||||
_, err := b.GetUrgentAnnouncement()
|
_, err := b.GetUrgentAnnouncement()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetUrgentAnnouncement() error", err)
|
t.Error("GetUrgentAnnouncement() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAPIKeys(t *testing.T) {
|
func TestGetAPIKeys(t *testing.T) {
|
||||||
_, err := b.GetAPIKeys()
|
_, err := b.GetAPIKeys()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetAPIKeys() error", err)
|
t.Error("GetAPIKeys() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRemoveAPIKey(t *testing.T) {
|
func TestRemoveAPIKey(t *testing.T) {
|
||||||
_, err := b.RemoveAPIKey(APIKeyParams{APIKeyID: "1337"})
|
_, err := b.RemoveAPIKey(APIKeyParams{APIKeyID: "1337"})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - RemoveAPIKey() error", err)
|
t.Error("RemoveAPIKey() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDisableAPIKey(t *testing.T) {
|
func TestDisableAPIKey(t *testing.T) {
|
||||||
_, err := b.DisableAPIKey(APIKeyParams{APIKeyID: "1337"})
|
_, err := b.DisableAPIKey(APIKeyParams{APIKeyID: "1337"})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - DisableAPIKey() error", err)
|
t.Error("DisableAPIKey() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEnableAPIKey(t *testing.T) {
|
func TestEnableAPIKey(t *testing.T) {
|
||||||
_, err := b.EnableAPIKey(APIKeyParams{APIKeyID: "1337"})
|
_, err := b.EnableAPIKey(APIKeyParams{APIKeyID: "1337"})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - EnableAPIKey() error", err)
|
t.Error("EnableAPIKey() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTrollboxMessages(t *testing.T) {
|
func TestGetTrollboxMessages(t *testing.T) {
|
||||||
_, err := b.GetTrollboxMessages(ChatGetParams{Count: 5})
|
_, err := b.GetTrollboxMessages(ChatGetParams{Count: 5})
|
||||||
if err != nil {
|
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,
|
ChannelID: 1337,
|
||||||
Message: "Hello,World!"})
|
Message: "Hello,World!"})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - SendTrollboxMessage() error", err)
|
t.Error("SendTrollboxMessage() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTrollboxChannels(t *testing.T) {
|
func TestGetTrollboxChannels(t *testing.T) {
|
||||||
_, err := b.GetTrollboxChannels()
|
_, err := b.GetTrollboxChannels()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetTrollboxChannels() error", err)
|
t.Error("GetTrollboxChannels() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTrollboxConnectedUsers(t *testing.T) {
|
func TestGetTrollboxConnectedUsers(t *testing.T) {
|
||||||
_, err := b.GetTrollboxConnectedUsers()
|
_, err := b.GetTrollboxConnectedUsers()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetTrollboxConnectedUsers() error", err)
|
t.Error("GetTrollboxConnectedUsers() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAccountExecutions(t *testing.T) {
|
func TestGetAccountExecutions(t *testing.T) {
|
||||||
_, err := b.GetAccountExecutions(&GenericRequestParams{})
|
_, err := b.GetAccountExecutions(&GenericRequestParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetAccountExecutions() error", err)
|
t.Error("GetAccountExecutions() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAccountExecutionTradeHistory(t *testing.T) {
|
func TestGetAccountExecutionTradeHistory(t *testing.T) {
|
||||||
_, err := b.GetAccountExecutionTradeHistory(&GenericRequestParams{})
|
_, err := b.GetAccountExecutionTradeHistory(&GenericRequestParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetAccountExecutionTradeHistory() error", err)
|
t.Error("GetAccountExecutionTradeHistory() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetFundingHistory(t *testing.T) {
|
func TestGetFundingHistory(t *testing.T) {
|
||||||
_, err := b.GetFundingHistory()
|
_, err := b.GetFundingHistory()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetFundingHistory() error", err)
|
t.Error("GetFundingHistory() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetInstruments(t *testing.T) {
|
func TestGetInstruments(t *testing.T) {
|
||||||
_, err := b.GetInstruments(&GenericRequestParams{})
|
_, err := b.GetInstruments(&GenericRequestParams{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetInstruments() error", err)
|
t.Error("GetInstruments() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetActiveInstruments(t *testing.T) {
|
func TestGetActiveInstruments(t *testing.T) {
|
||||||
_, err := b.GetActiveInstruments(&GenericRequestParams{})
|
_, err := b.GetActiveInstruments(&GenericRequestParams{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetActiveInstruments() error", err)
|
t.Error("GetActiveInstruments() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetActiveAndIndexInstruments(t *testing.T) {
|
func TestGetActiveAndIndexInstruments(t *testing.T) {
|
||||||
_, err := b.GetActiveAndIndexInstruments()
|
_, err := b.GetActiveAndIndexInstruments()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetActiveAndIndexInstruments() error", err)
|
t.Error("GetActiveAndIndexInstruments() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetActiveIntervals(t *testing.T) {
|
func TestGetActiveIntervals(t *testing.T) {
|
||||||
_, err := b.GetActiveIntervals()
|
_, err := b.GetActiveIntervals()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetActiveIntervals() error", err)
|
t.Error("GetActiveIntervals() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetCompositeIndex(t *testing.T) {
|
func TestGetCompositeIndex(t *testing.T) {
|
||||||
_, err := b.GetCompositeIndex(&GenericRequestParams{})
|
_, err := b.GetCompositeIndex(&GenericRequestParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetCompositeIndex() error", err)
|
t.Error("GetCompositeIndex() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetIndices(t *testing.T) {
|
func TestGetIndices(t *testing.T) {
|
||||||
_, err := b.GetIndices()
|
_, err := b.GetIndices()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetIndices() error", err)
|
t.Error("GetIndices() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetInsuranceFundHistory(t *testing.T) {
|
func TestGetInsuranceFundHistory(t *testing.T) {
|
||||||
_, err := b.GetInsuranceFundHistory(&GenericRequestParams{})
|
_, err := b.GetInsuranceFundHistory(&GenericRequestParams{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetInsuranceFundHistory() error", err)
|
t.Error("GetInsuranceFundHistory() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetLeaderboard(t *testing.T) {
|
func TestGetLeaderboard(t *testing.T) {
|
||||||
_, err := b.GetLeaderboard(LeaderboardGetParams{})
|
_, err := b.GetLeaderboard(LeaderboardGetParams{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetLeaderboard() error", err)
|
t.Error("GetLeaderboard() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAliasOnLeaderboard(t *testing.T) {
|
func TestGetAliasOnLeaderboard(t *testing.T) {
|
||||||
_, err := b.GetAliasOnLeaderboard()
|
_, err := b.GetAliasOnLeaderboard()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetAliasOnLeaderboard() error", err)
|
t.Error("GetAliasOnLeaderboard() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetLiquidationOrders(t *testing.T) {
|
func TestGetLiquidationOrders(t *testing.T) {
|
||||||
_, err := b.GetLiquidationOrders(&GenericRequestParams{})
|
_, err := b.GetLiquidationOrders(&GenericRequestParams{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetLiquidationOrders() error", err)
|
t.Error("GetLiquidationOrders() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetCurrentNotifications(t *testing.T) {
|
func TestGetCurrentNotifications(t *testing.T) {
|
||||||
_, err := b.GetCurrentNotifications()
|
_, err := b.GetCurrentNotifications()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetCurrentNotifications() error", err)
|
t.Error("GetCurrentNotifications() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAmendOrder(t *testing.T) {
|
func TestAmendOrder(t *testing.T) {
|
||||||
_, err := b.AmendOrder(&OrderAmendParams{})
|
_, err := b.AmendOrder(&OrderAmendParams{})
|
||||||
if err == nil {
|
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",
|
ClOrdID: "mm_bitmex_1a/oemUeQ4CAJZgP3fjHsA",
|
||||||
OrderQty: 98})
|
OrderQty: 98})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - CreateOrder() error", err)
|
t.Error("CreateOrder() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCancelOrders(t *testing.T) {
|
func TestCancelOrders(t *testing.T) {
|
||||||
_, err := b.CancelOrders(&OrderCancelParams{})
|
_, err := b.CancelOrders(&OrderCancelParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - CancelOrders() error", err)
|
t.Error("CancelOrders() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCancelAllOrders(t *testing.T) {
|
func TestCancelAllOrders(t *testing.T) {
|
||||||
_, err := b.CancelAllExistingOrders(OrderCancelAllParams{})
|
_, err := b.CancelAllExistingOrders(OrderCancelAllParams{})
|
||||||
if err == nil {
|
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) {
|
func TestAmendBulkOrders(t *testing.T) {
|
||||||
_, err := b.AmendBulkOrders(OrderAmendBulkParams{})
|
_, err := b.AmendBulkOrders(OrderAmendBulkParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - AmendBulkOrders() error", err)
|
t.Error("AmendBulkOrders() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCreateBulkOrders(t *testing.T) {
|
func TestCreateBulkOrders(t *testing.T) {
|
||||||
_, err := b.CreateBulkOrders(OrderNewBulkParams{})
|
_, err := b.CreateBulkOrders(OrderNewBulkParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - CreateBulkOrders() error", err)
|
t.Error("CreateBulkOrders() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCancelAllOrdersAfterTime(t *testing.T) {
|
func TestCancelAllOrdersAfterTime(t *testing.T) {
|
||||||
_, err := b.CancelAllOrdersAfterTime(OrderCancelAllAfterParams{})
|
_, err := b.CancelAllOrdersAfterTime(OrderCancelAllAfterParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - CancelAllOrdersAfterTime() error", err)
|
t.Error("CancelAllOrdersAfterTime() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestClosePosition(t *testing.T) {
|
func TestClosePosition(t *testing.T) {
|
||||||
_, err := b.ClosePosition(OrderClosePositionParams{})
|
_, err := b.ClosePosition(OrderClosePositionParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - ClosePosition() error", err)
|
t.Error("ClosePosition() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetOrderbook(t *testing.T) {
|
func TestGetOrderbook(t *testing.T) {
|
||||||
_, err := b.GetOrderbook(OrderBookGetL2Params{Symbol: "XBT"})
|
_, err := b.GetOrderbook(OrderBookGetL2Params{Symbol: "XBT"})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetOrderbook() error", err)
|
t.Error("GetOrderbook() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetPositions(t *testing.T) {
|
func TestGetPositions(t *testing.T) {
|
||||||
_, err := b.GetPositions(PositionGetParams{})
|
_, err := b.GetPositions(PositionGetParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetPositions() error", err)
|
t.Error("GetPositions() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIsolatePosition(t *testing.T) {
|
func TestIsolatePosition(t *testing.T) {
|
||||||
_, err := b.IsolatePosition(PositionIsolateMarginParams{Symbol: "XBT"})
|
_, err := b.IsolatePosition(PositionIsolateMarginParams{Symbol: "XBT"})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - IsolatePosition() error", err)
|
t.Error("IsolatePosition() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestLeveragePosition(t *testing.T) {
|
func TestLeveragePosition(t *testing.T) {
|
||||||
_, err := b.LeveragePosition(PositionUpdateLeverageParams{})
|
_, err := b.LeveragePosition(PositionUpdateLeverageParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - LeveragePosition() error", err)
|
t.Error("LeveragePosition() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateRiskLimit(t *testing.T) {
|
func TestUpdateRiskLimit(t *testing.T) {
|
||||||
_, err := b.UpdateRiskLimit(PositionUpdateRiskLimitParams{})
|
_, err := b.UpdateRiskLimit(PositionUpdateRiskLimitParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - UpdateRiskLimit() error", err)
|
t.Error("UpdateRiskLimit() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTransferMargin(t *testing.T) {
|
func TestTransferMargin(t *testing.T) {
|
||||||
_, err := b.TransferMargin(PositionTransferIsolatedMarginParams{})
|
_, err := b.TransferMargin(PositionTransferIsolatedMarginParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - TransferMargin() error", err)
|
t.Error("TransferMargin() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetQuotesByBuckets(t *testing.T) {
|
func TestGetQuotesByBuckets(t *testing.T) {
|
||||||
_, err := b.GetQuotesByBuckets(&QuoteGetBucketedParams{})
|
_, err := b.GetQuotesByBuckets(&QuoteGetBucketedParams{})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - GetQuotesByBuckets() error", err)
|
t.Error("GetQuotesByBuckets() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetSettlementHistory(t *testing.T) {
|
func TestGetSettlementHistory(t *testing.T) {
|
||||||
_, err := b.GetSettlementHistory(&GenericRequestParams{})
|
_, err := b.GetSettlementHistory(&GenericRequestParams{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetSettlementHistory() error", err)
|
t.Error("GetSettlementHistory() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetStats(t *testing.T) {
|
func TestGetStats(t *testing.T) {
|
||||||
_, err := b.GetStats()
|
_, err := b.GetStats()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetStats() error", err)
|
t.Error("GetStats() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetStatsHistorical(t *testing.T) {
|
func TestGetStatsHistorical(t *testing.T) {
|
||||||
_, err := b.GetStatsHistorical()
|
_, err := b.GetStatsHistorical()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetStatsHistorical() error", err)
|
t.Error("GetStatsHistorical() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetStatSummary(t *testing.T) {
|
func TestGetStatSummary(t *testing.T) {
|
||||||
_, err := b.GetStatSummary()
|
_, err := b.GetStatSummary()
|
||||||
if err != nil {
|
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),
|
StartTime: time.Now().Format(time.RFC3339),
|
||||||
Reverse: true})
|
Reverse: true})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed - GetTrade() error", err)
|
t.Error("GetTrade() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetPreviousTrades(t *testing.T) {
|
func TestGetPreviousTrades(t *testing.T) {
|
||||||
_, err := b.GetPreviousTrades(&TradeGetBucketedParams{})
|
_, err := b.GetPreviousTrades(&TradeGetBucketedParams{})
|
||||||
if err == nil {
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.00075) || err != nil {
|
if resp, err := b.GetFee(feeBuilder); resp != float64(0.00075) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -412,7 +412,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(750) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -420,7 +420,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -428,7 +428,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -436,7 +436,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -444,7 +444,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -453,7 +453,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,7 +462,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -607,12 +607,12 @@ func TestGetAccountInfo(t *testing.T) {
|
|||||||
if apiKey != "" || apiSecret != "" {
|
if apiKey != "" || apiSecret != "" {
|
||||||
_, err := b.GetAccountInfo()
|
_, err := b.GetAccountInfo()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
t.Error("GetAccountInfo() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := b.GetAccountInfo()
|
_, err := b.GetAccountInfo()
|
||||||
if err == nil {
|
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) {
|
func TestModifyOrder(t *testing.T) {
|
||||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{OrderID: "1337"})
|
_, err := b.ModifyOrder(&exchange.ModifyOrder{OrderID: "1337"})
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - ModifyOrder() error")
|
t.Error("ModifyOrder() error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -685,12 +685,12 @@ func TestGetDepositAddress(t *testing.T) {
|
|||||||
if areTestAPIKeysSet() {
|
if areTestAPIKeysSet() {
|
||||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
t.Error("GetDepositAddress() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||||
if err == nil {
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -90,9 +91,36 @@ func (b *Bitmex) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: true,
|
Websocket: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerBatching: true,
|
||||||
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 |
|
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||||
exchange.WithdrawCryptoWithEmail |
|
exchange.WithdrawCryptoWithEmail |
|
||||||
@@ -113,13 +141,6 @@ func (b *Bitmex) SetDefaults() {
|
|||||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||||
b.API.Endpoints.WebsocketURL = bitmexWSURL
|
b.API.Endpoints.WebsocketURL = bitmexWSURL
|
||||||
b.Websocket = wshandler.New()
|
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.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||||
@@ -149,6 +170,7 @@ func (b *Bitmex) Setup(exch *config.ExchangeConfig) error {
|
|||||||
Connector: b.WsConnect,
|
Connector: b.WsConnect,
|
||||||
Subscriber: b.Subscribe,
|
Subscriber: b.Subscribe,
|
||||||
UnSubscriber: b.Unsubscribe,
|
UnSubscriber: b.Unsubscribe,
|
||||||
|
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -19,11 +19,11 @@ func TestMain(m *testing.M) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - Bitstamp load config error", err)
|
log.Fatal("Bitstamp load config error", err)
|
||||||
}
|
}
|
||||||
bitstampConfig, err := cfg.GetExchangeConfig("Bitstamp")
|
bitstampConfig, err := cfg.GetExchangeConfig("Bitstamp")
|
||||||
if err != nil {
|
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.AuthenticatedSupport = true
|
||||||
bitstampConfig.API.Credentials.Key = apiKey
|
bitstampConfig.API.Credentials.Key = apiKey
|
||||||
@@ -32,7 +32,7 @@ func TestMain(m *testing.M) {
|
|||||||
b.SetDefaults()
|
b.SetDefaults()
|
||||||
err = b.Setup(bitstampConfig)
|
err = b.Setup(bitstampConfig)
|
||||||
if err != nil {
|
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)
|
log.Printf(sharedtestvalues.LiveTesting, b.GetName(), b.API.Endpoints.URL)
|
||||||
os.Exit(m.Run())
|
os.Exit(m.Run())
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ func TestMain(m *testing.M) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - Bitstamp load config error", err)
|
log.Fatal("Bitstamp load config error", err)
|
||||||
}
|
}
|
||||||
bitstampConfig, err := cfg.GetExchangeConfig("Bitstamp")
|
bitstampConfig, err := cfg.GetExchangeConfig("Bitstamp")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - Bitstamp Setup() init error", err)
|
log.Fatal("Bitstamp Setup() init error", err)
|
||||||
}
|
}
|
||||||
b.SkipAuthCheck = true
|
b.SkipAuthCheck = true
|
||||||
bitstampConfig.API.AuthenticatedSupport = true
|
bitstampConfig.API.AuthenticatedSupport = true
|
||||||
@@ -36,12 +36,12 @@ func TestMain(m *testing.M) {
|
|||||||
b.SetDefaults()
|
b.SetDefaults()
|
||||||
err = b.Setup(bitstampConfig)
|
err = b.Setup(bitstampConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - Bitstamp setup error", err)
|
log.Fatal("Bitstamp setup error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Test Failed - Mock server error %s", err)
|
log.Fatalf("Mock server error %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
b.HTTPClient = newClient
|
b.HTTPClient = newClient
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
// CryptocurrencyTradeFee Basic
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || (areTestAPIKeysSet() && err != nil) {
|
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || (areTestAPIKeysSet() && err != nil) {
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
t.Errorf("Test Failed - GetFee() error. Expected: %f, Received: %f",
|
t.Errorf("GetFee() error. Expected: %f, Received: %f",
|
||||||
float64(0),
|
float64(0),
|
||||||
resp)
|
resp)
|
||||||
}
|
}
|
||||||
@@ -70,7 +70,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || (areTestAPIKeysSet() && err != nil) {
|
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),
|
float64(0),
|
||||||
resp)
|
resp)
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
@@ -80,7 +80,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || (areTestAPIKeysSet() && err != nil) {
|
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),
|
float64(0),
|
||||||
resp)
|
resp)
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
@@ -90,7 +90,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || (areTestAPIKeysSet() && err != nil) {
|
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),
|
float64(0),
|
||||||
resp)
|
resp)
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
@@ -100,7 +100,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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),
|
float64(0),
|
||||||
resp)
|
resp)
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
@@ -110,7 +110,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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),
|
float64(0),
|
||||||
resp)
|
resp)
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
@@ -121,7 +121,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(7.5) || err != nil {
|
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),
|
float64(7.5),
|
||||||
resp)
|
resp)
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
@@ -132,7 +132,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(15) || err != nil {
|
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),
|
float64(15),
|
||||||
resp)
|
resp)
|
||||||
t.Error(err)
|
t.Error(err)
|
||||||
@@ -147,18 +147,18 @@ func TestCalculateTradingFee(t *testing.T) {
|
|||||||
newBalance.BTCEURFee = 0
|
newBalance.BTCEURFee = 0
|
||||||
|
|
||||||
if resp := b.CalculateTradingFee(currency.BTC, currency.USD, 0, 0, newBalance); resp != 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) {
|
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) {
|
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("")
|
dummy1, dummy2 := currency.NewCode(""), currency.NewCode("")
|
||||||
if resp := b.CalculateTradingFee(dummy1, dummy2, 0, 0, newBalance); resp != 0 {
|
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)
|
_, err := b.GetTicker(currency.BTC.String()+currency.USD.String(), false)
|
||||||
if err != nil {
|
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())
|
_, err := b.GetOrderbook(currency.BTC.String() + currency.USD.String())
|
||||||
if err != nil {
|
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()
|
_, err := b.GetTradingPairs()
|
||||||
if err != nil {
|
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)
|
_, err := b.GetTransactions(currency.BTC.String()+currency.USD.String(), value)
|
||||||
if err != nil {
|
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()
|
_, err := b.GetEURUSDConversionRate()
|
||||||
if err != nil {
|
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()
|
_, err := b.GetBalance()
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||||
t.Error("Test Failed - GetBalance() error", err)
|
t.Error("GetBalance() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||||
t.Error("Expecting an error when no keys are set")
|
t.Error("Expecting an error when no keys are set")
|
||||||
case mockTests && err != nil:
|
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")
|
_, err := b.GetUserTransactions("btcusd")
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||||
t.Error("Test Failed - GetUserTransactions() error", err)
|
t.Error("GetUserTransactions() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||||
t.Error("Expecting an error when no keys are set")
|
t.Error("Expecting an error when no keys are set")
|
||||||
case mockTests && err != nil:
|
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")
|
_, err := b.GetOpenOrders("btcusd")
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||||
t.Error("Test Failed - GetOpenOrders() error", err)
|
t.Error("GetOpenOrders() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||||
t.Error("Expecting an error when no keys are set")
|
t.Error("Expecting an error when no keys are set")
|
||||||
case mockTests && err != nil:
|
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)
|
_, err := b.GetOrderStatus(1337)
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||||
t.Error("Test Failed - GetOrderStatus() error", err)
|
t.Error("GetOrderStatus() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||||
t.Error("Expecting an error when no keys are set")
|
t.Error("Expecting an error when no keys are set")
|
||||||
case mockTests && err == nil:
|
case mockTests && err == nil:
|
||||||
@@ -272,11 +272,11 @@ func TestGetWithdrawalRequests(t *testing.T) {
|
|||||||
_, err := b.GetWithdrawalRequests(0)
|
_, err := b.GetWithdrawalRequests(0)
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||||
t.Error("Test Failed - GetWithdrawalRequests() error", err)
|
t.Error("GetWithdrawalRequests() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||||
t.Error("Expecting an error when no keys are set")
|
t.Error("Expecting an error when no keys are set")
|
||||||
case mockTests && err != nil:
|
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()
|
_, err := b.GetUnconfirmedBitcoinDeposits()
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && err != nil && !mockTests:
|
case areTestAPIKeysSet() && err != nil && !mockTests:
|
||||||
t.Error("Test Failed - GetUnconfirmedBitcoinDeposits() error", err)
|
t.Error("GetUnconfirmedBitcoinDeposits() error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
||||||
t.Error("Expecting an error when no keys are set")
|
t.Error("Expecting an error when no keys are set")
|
||||||
case mockTests && err != nil:
|
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)
|
err := b.TransferAccountBalance(0.01, "btc", "testAccount", true)
|
||||||
if !mockTests && err != nil {
|
if !mockTests && err != nil {
|
||||||
t.Error("Test Failed - TransferAccountBalance() error", err)
|
t.Error("TransferAccountBalance() error", err)
|
||||||
}
|
}
|
||||||
if mockTests && err == nil {
|
if mockTests && err == nil {
|
||||||
t.Error("Expecting an error until a QA pass can be completed")
|
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{})
|
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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, "")
|
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||||
switch {
|
switch {
|
||||||
case areTestAPIKeysSet() && customerID != "" && err != nil && !mockTests:
|
case areTestAPIKeysSet() && customerID != "" && err != nil && !mockTests:
|
||||||
t.Error("Test Failed - GetDepositAddress error", err)
|
t.Error("GetDepositAddress error", err)
|
||||||
case !areTestAPIKeysSet() && err == nil && !mockTests:
|
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:
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -69,8 +70,33 @@ func (b *Bitstamp) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: true,
|
Websocket: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
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 |
|
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||||
exchange.AutoWithdrawFiat,
|
exchange.AutoWithdrawFiat,
|
||||||
@@ -89,10 +115,6 @@ func (b *Bitstamp) SetDefaults() {
|
|||||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||||
b.API.Endpoints.WebsocketURL = bitstampWSURL
|
b.API.Endpoints.WebsocketURL = bitstampWSURL
|
||||||
b.Websocket = wshandler.New()
|
b.Websocket = wshandler.New()
|
||||||
b.Websocket.Functionality = wshandler.WebsocketOrderbookSupported |
|
|
||||||
wshandler.WebsocketTradeDataSupported |
|
|
||||||
wshandler.WebsocketSubscribeSupported |
|
|
||||||
wshandler.WebsocketUnsubscribeSupported
|
|
||||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||||
@@ -122,6 +144,7 @@ func (b *Bitstamp) Setup(exch *config.ExchangeConfig) error {
|
|||||||
Connector: b.WsConnect,
|
Connector: b.WsConnect,
|
||||||
Subscriber: b.Subscribe,
|
Subscriber: b.Subscribe,
|
||||||
UnSubscriber: b.Unsubscribe,
|
UnSubscriber: b.Unsubscribe,
|
||||||
|
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ var b Bittrex
|
|||||||
func TestSetDefaults(t *testing.T) {
|
func TestSetDefaults(t *testing.T) {
|
||||||
b.SetDefaults()
|
b.SetDefaults()
|
||||||
if b.GetName() != "Bittrex" {
|
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()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Bittrex load config error", err)
|
t.Fatal("Bittrex load config error", err)
|
||||||
}
|
}
|
||||||
bConfig, err := cfg.GetExchangeConfig("Bittrex")
|
bConfig, err := cfg.GetExchangeConfig("Bittrex")
|
||||||
if err != nil {
|
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.Key = apiKey
|
||||||
bConfig.API.Credentials.Secret = apiSecret
|
bConfig.API.Credentials.Secret = apiSecret
|
||||||
@@ -41,12 +41,12 @@ func TestSetup(t *testing.T) {
|
|||||||
|
|
||||||
err = b.Setup(bConfig)
|
err = b.Setup(bConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Bittrex setup error", err)
|
t.Fatal("Bittrex setup error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !b.IsEnabled() || !b.API.AuthenticatedSupport ||
|
if !b.IsEnabled() || !b.API.AuthenticatedSupport ||
|
||||||
b.Verbose || len(b.BaseCurrencies) < 1 {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetMarkets()
|
_, err := b.GetMarkets()
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetCurrencies()
|
_, err := b.GetCurrencies()
|
||||||
if err != nil {
|
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)
|
_, err := b.GetTicker(btc)
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetMarketSummaries()
|
_, err := b.GetMarketSummaries()
|
||||||
if err != nil {
|
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)
|
_, err := b.GetMarketSummary(pairOne)
|
||||||
if err != nil {
|
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")
|
_, err := b.GetOrderbook("btc-ltc")
|
||||||
if err != nil {
|
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")
|
_, err := b.GetMarketHistory("btc-ltc")
|
||||||
if err != nil {
|
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)
|
_, err := b.PlaceBuyLimit("btc-ltc", 1, 1)
|
||||||
if err == nil {
|
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)
|
_, err := b.PlaceSellLimit("btc-ltc", 1, 1)
|
||||||
if err == nil {
|
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("")
|
_, err := b.GetOpenOrders("")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - Bittrex - GetOrder() error")
|
t.Error("Bittrex - GetOrder() Expected error")
|
||||||
}
|
}
|
||||||
_, err = b.GetOpenOrders("btc-ltc")
|
_, err = b.GetOpenOrders("btc-ltc")
|
||||||
if err == nil {
|
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")
|
_, err := b.CancelExistingOrder("blaaaaaaa")
|
||||||
if err == nil {
|
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()
|
_, err := b.GetAccountBalances()
|
||||||
if err == nil {
|
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")
|
_, err := b.GetAccountBalanceByCurrency("btc")
|
||||||
if err == nil {
|
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")
|
_, err := b.GetOrder("0cb4c4e4-bdc7-4e13-8c13-430e587d2cc1")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - Bittrex - GetOrder() error")
|
t.Error("Bittrex - GetOrder() Expected error")
|
||||||
}
|
}
|
||||||
_, err = b.GetOrder("")
|
_, err = b.GetOrder("")
|
||||||
if err == nil {
|
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("")
|
_, err := b.GetOrderHistoryForCurrency("")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - Bittrex - GetOrderHistory() error")
|
t.Error("Bittrex - GetOrderHistory() Expected error")
|
||||||
}
|
}
|
||||||
_, err = b.GetOrderHistoryForCurrency("btc-ltc")
|
_, err = b.GetOrderHistoryForCurrency("btc-ltc")
|
||||||
if err == nil {
|
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("")
|
_, err := b.GetWithdrawalHistory("")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - Bittrex - GetWithdrawalHistory() error")
|
t.Error("Bittrex - GetWithdrawalHistory() Expected error")
|
||||||
}
|
}
|
||||||
_, err = b.GetWithdrawalHistory("btc-ltc")
|
_, err = b.GetWithdrawalHistory("btc-ltc")
|
||||||
if err == nil {
|
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("")
|
_, err := b.GetDepositHistory("")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test Failed - Bittrex - GetDepositHistory() error")
|
t.Error("Bittrex - GetDepositHistory() Expected error")
|
||||||
}
|
}
|
||||||
_, err = b.GetDepositHistory("btc-ltc")
|
_, err = b.GetDepositHistory("btc-ltc")
|
||||||
if err == nil {
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -263,7 +263,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(2500) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,7 +271,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0025) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -279,7 +279,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,7 +287,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0005) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -295,7 +295,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,7 +304,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -313,7 +313,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.HKD
|
feeBuilder.FiatCurrency = currency.HKD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -459,7 +459,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
|||||||
func TestModifyOrder(t *testing.T) {
|
func TestModifyOrder(t *testing.T) {
|
||||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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() {
|
if areTestAPIKeysSet() {
|
||||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetDepositAddress() error", err)
|
t.Error("GetDepositAddress() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||||
if err == nil {
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -69,9 +70,23 @@ func (b *Bittrex) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: false,
|
Websocket: false,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerBatching: true,
|
||||||
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 |
|
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||||
exchange.NoFiatWithdrawals,
|
exchange.NoFiatWithdrawals,
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/thrasher-corp/gocryptotrader/common/crypto"
|
"github.com/thrasher-corp/gocryptotrader/common/crypto"
|
||||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||||
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -46,6 +47,7 @@ const (
|
|||||||
// BTCMarkets is the overarching type across the BTCMarkets package
|
// BTCMarkets is the overarching type across the BTCMarkets package
|
||||||
type BTCMarkets struct {
|
type BTCMarkets struct {
|
||||||
exchange.Base
|
exchange.Base
|
||||||
|
WebsocketConn *wshandler.WebsocketConnection
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMarkets returns the BTCMarkets instruments
|
// GetMarkets returns the BTCMarkets instruments
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ func TestSetup(t *testing.T) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
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")
|
bConfig, err := cfg.GetExchangeConfig("BTC Markets")
|
||||||
if err != nil {
|
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.Key = apiKey
|
||||||
bConfig.API.Credentials.Secret = apiSecret
|
bConfig.API.Credentials.Secret = apiSecret
|
||||||
@@ -39,7 +39,7 @@ func TestSetup(t *testing.T) {
|
|||||||
|
|
||||||
err = b.Setup(bConfig)
|
err = b.Setup(bConfig)
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetMarkets()
|
_, err := b.GetMarkets()
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetTicker("BTC", "AUD")
|
_, err := b.GetTicker("BTC", "AUD")
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetOrderbook("BTC", "AUD")
|
_, err := b.GetOrderbook("BTC", "AUD")
|
||||||
if err != nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetTrades("BTC", "AUD", nil)
|
_, err := b.GetTrades("BTC", "AUD", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetTrades() error", err)
|
t.Error("GetTrades() error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
val := url.Values{}
|
val := url.Values{}
|
||||||
val.Set("since", "0")
|
val.Set("since", "0")
|
||||||
_, err = b.GetTrades("BTC", "AUD", val)
|
_, err = b.GetTrades("BTC", "AUD", val)
|
||||||
if err != nil {
|
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",
|
_, err := b.NewOrder("AUD", "BTC", 0, 0, "Bid",
|
||||||
exchange.LimitOrderType.ToLower().ToString(), "testTest")
|
exchange.LimitOrderType.ToLower().ToString(), "testTest")
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.CancelExistingOrder([]int64{1337})
|
_, err := b.CancelExistingOrder([]int64{1337})
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetOrders("AUD", "BTC", 10, 0, false)
|
_, err := b.GetOrders("AUD", "BTC", 10, 0, false)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed - GetOrders() error", err)
|
t.Error("GetOrders() Expected error")
|
||||||
}
|
}
|
||||||
_, err = b.GetOrders("AUD", "BTC", 10, 0, true)
|
_, err = b.GetOrders("AUD", "BTC", 10, 0, true)
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetOrderDetail([]int64{1337})
|
_, err := b.GetOrderDetail([]int64{1337})
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.GetAccountBalance()
|
_, err := b.GetAccountBalance()
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.WithdrawCrypto(0, "BTC", "LOLOLOL")
|
_, err := b.WithdrawCrypto(0, "BTC", "LOLOLOL")
|
||||||
if err == nil {
|
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()
|
t.Parallel()
|
||||||
_, err := b.WithdrawAUD("BLA", "1337", "blawest", "1336", 10000000)
|
_, err := b.WithdrawAUD("BLA", "1337", "blawest", "1336", 10000000)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed - WithdrawAUD() error", err)
|
t.Error("WithdrawAUD() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAccountInfo(t *testing.T) {
|
func TestGetAccountInfo(t *testing.T) {
|
||||||
_, err := b.GetAccountInfo()
|
_, err := b.GetAccountInfo()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed - GetAccountInfo() error", err)
|
t.Error("GetAccountInfo() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetFundingHistory(t *testing.T) {
|
func TestGetFundingHistory(t *testing.T) {
|
||||||
_, err := b.GetFundingHistory()
|
_, err := b.GetFundingHistory()
|
||||||
if err == nil {
|
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})
|
_, err := b.CancelExistingOrder([]int64{1337})
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed - CancelgOrder() error", err)
|
t.Error("CancelgOrder() Expected error")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetOrderInfo(t *testing.T) {
|
func TestGetOrderInfo(t *testing.T) {
|
||||||
_, err := b.GetOrderInfo("1337")
|
_, err := b.GetOrderInfo("1337")
|
||||||
if err == nil {
|
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
|
feeBuilder.Pair.Quote = currency.USD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.00849999) || err != nil {
|
if resp, err := b.GetFee(feeBuilder); resp != float64(0.00849999) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0022) || err != nil {
|
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0022) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -223,7 +223,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(2200) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,7 +231,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.0022) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,7 +239,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -248,7 +248,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,7 +256,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -265,7 +265,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.AUD
|
feeBuilder.FiatCurrency = currency.AUD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -274,7 +274,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.AUD
|
feeBuilder.FiatCurrency = currency.AUD
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -418,7 +418,7 @@ func TestCancelAllExchangeOrders(t *testing.T) {
|
|||||||
func TestModifyOrder(t *testing.T) {
|
func TestModifyOrder(t *testing.T) {
|
||||||
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
_, err := b.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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) {
|
func TestGetDepositAddress(t *testing.T) {
|
||||||
_, err := b.GetDepositAddress(currency.BTC, "")
|
_, err := b.GetDepositAddress(currency.BTC, "")
|
||||||
if err == nil {
|
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
|
package btcmarkets
|
||||||
|
|
||||||
import "github.com/thrasher-corp/gocryptotrader/currency"
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||||
|
)
|
||||||
|
|
||||||
// Response is the genralized response type
|
// Response is the genralized response type
|
||||||
type Response struct {
|
type Response struct {
|
||||||
@@ -143,3 +147,54 @@ var WithdrawalFees = map[currency.Code]float64{
|
|||||||
currency.OMG: 0.15,
|
currency.OMG: 0.15,
|
||||||
currency.POWR: 5,
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -71,10 +72,31 @@ func (b *BTCMarkets) SetDefaults() {
|
|||||||
b.Features = exchange.Features{
|
b.Features = exchange.Features{
|
||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: false,
|
Websocket: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerFetching: true,
|
||||||
TickerBatching: false,
|
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 |
|
WithdrawPermissions: exchange.AutoWithdrawCrypto |
|
||||||
exchange.AutoWithdrawFiat,
|
exchange.AutoWithdrawFiat,
|
||||||
@@ -88,6 +110,12 @@ func (b *BTCMarkets) SetDefaults() {
|
|||||||
request.NewRateLimit(time.Second*10, btcmarketsAuthLimit),
|
request.NewRateLimit(time.Second*10, btcmarketsAuthLimit),
|
||||||
request.NewRateLimit(time.Second*10, btcmarketsUnauthLimit),
|
request.NewRateLimit(time.Second*10, btcmarketsUnauthLimit),
|
||||||
common.NewHTTPClientWithTimeout(exchange.DefaultHTTPTimeout))
|
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
|
// 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 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
|
// 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
|
// GetWebsocket returns a pointer to the exchange websocket
|
||||||
func (b *BTCMarkets) GetWebsocket() (*wshandler.Websocket, error) {
|
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
|
// GetFeeByType returns an estimate of fee based on type of transaction
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ func TestSetup(t *testing.T) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Test Failed - BTSE load config error", err)
|
log.Fatal("BTSE load config error", err)
|
||||||
}
|
}
|
||||||
btseConfig, err := cfg.GetExchangeConfig("BTSE")
|
btseConfig, err := cfg.GetExchangeConfig("BTSE")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - BTSE Setup() init error")
|
t.Error("BTSE Setup() init error")
|
||||||
}
|
}
|
||||||
|
|
||||||
btseConfig.API.AuthenticatedSupport = true
|
btseConfig.API.AuthenticatedSupport = true
|
||||||
@@ -40,7 +40,7 @@ func TestSetup(t *testing.T) {
|
|||||||
|
|
||||||
err = b.Setup(btseConfig)
|
err = b.Setup(btseConfig)
|
||||||
if err != nil {
|
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()
|
b.SetDefaults()
|
||||||
_, err := b.GetMarkets()
|
_, err := b.GetMarkets()
|
||||||
if err != nil {
|
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()
|
b.SetDefaults()
|
||||||
_, err := b.GetTrades("BTC-USD")
|
_, err := b.GetTrades("BTC-USD")
|
||||||
if err != nil {
|
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()
|
b.SetDefaults()
|
||||||
_, err := b.GetTicker("BTC-USD")
|
_, err := b.GetTicker("BTC-USD")
|
||||||
if err != nil {
|
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()
|
b.SetDefaults()
|
||||||
_, err := b.GetOrderbook("BTC-USD", 0, 0, 0)
|
_, err := b.GetOrderbook("BTC-USD", 0, 0, 0)
|
||||||
if err != nil {
|
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()
|
b.SetDefaults()
|
||||||
_, err := b.GetMarketStatistics("BTC-USD")
|
_, err := b.GetMarketStatistics("BTC-USD")
|
||||||
if err != nil {
|
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()
|
b.SetDefaults()
|
||||||
_, err := b.GetServerTime()
|
_, err := b.GetServerTime()
|
||||||
if err != nil {
|
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)
|
_, err := b.GetOrderHistory(&getOrdersRequest)
|
||||||
if err != common.ErrFunctionNotSupported {
|
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 {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
feeBuilder.IsMaker = false
|
feeBuilder.IsMaker = false
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != 0.0015 || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != 0.0005 || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
feeBuilder.Pair.Base = currency.USDT
|
feeBuilder.Pair.Base = currency.USDT
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(5) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(3) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
feeBuilder.Amount = 1000000
|
feeBuilder.Amount = 1000000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(1000) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
if resp, err := b.GetFee(feeBuilder); resp != float64(25) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -239,7 +239,7 @@ func TestParseOrderTime(t *testing.T) {
|
|||||||
expected := int64(1534794360)
|
expected := int64(1534794360)
|
||||||
actual := parseOrderTime("2018-08-20 19:20:46").Unix()
|
actual := parseOrderTime("2018-08-20 19:20:46").Unix()
|
||||||
if expected != actual {
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -69,8 +70,28 @@ func (b *BTSE) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: true,
|
Websocket: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
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,
|
WithdrawPermissions: exchange.NoAPIWithdrawalMethods,
|
||||||
},
|
},
|
||||||
@@ -87,10 +108,6 @@ func (b *BTSE) SetDefaults() {
|
|||||||
b.API.Endpoints.URLDefault = btseAPIURL
|
b.API.Endpoints.URLDefault = btseAPIURL
|
||||||
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
b.API.Endpoints.URL = b.API.Endpoints.URLDefault
|
||||||
b.Websocket = wshandler.New()
|
b.Websocket = wshandler.New()
|
||||||
b.Websocket.Functionality = wshandler.WebsocketOrderbookSupported |
|
|
||||||
wshandler.WebsocketTickerSupported |
|
|
||||||
wshandler.WebsocketSubscribeSupported |
|
|
||||||
wshandler.WebsocketUnsubscribeSupported
|
|
||||||
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
b.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||||
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
b.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||||
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
b.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||||
@@ -121,6 +138,7 @@ func (b *BTSE) Setup(exch *config.ExchangeConfig) error {
|
|||||||
Connector: b.WsConnect,
|
Connector: b.WsConnect,
|
||||||
Subscriber: b.Subscribe,
|
Subscriber: b.Subscribe,
|
||||||
UnSubscriber: b.Unsubscribe,
|
UnSubscriber: b.Unsubscribe,
|
||||||
|
Features: &b.Features.Supports.WebsocketCapabilities,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -32,11 +32,11 @@ func TestSetup(t *testing.T) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - coinbasepro load config error", err)
|
t.Fatal("coinbasepro load config error", err)
|
||||||
}
|
}
|
||||||
gdxConfig, err := cfg.GetExchangeConfig("CoinbasePro")
|
gdxConfig, err := cfg.GetExchangeConfig("CoinbasePro")
|
||||||
if err != nil {
|
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.Key = apiKey
|
||||||
gdxConfig.API.Credentials.Secret = apiSecret
|
gdxConfig.API.Credentials.Secret = apiSecret
|
||||||
@@ -45,56 +45,56 @@ func TestSetup(t *testing.T) {
|
|||||||
gdxConfig.API.AuthenticatedWebsocketSupport = true
|
gdxConfig.API.AuthenticatedWebsocketSupport = true
|
||||||
err = c.Setup(gdxConfig)
|
err = c.Setup(gdxConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - CoinbasePro setup error", err)
|
t.Fatal("CoinbasePro setup error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetProducts(t *testing.T) {
|
func TestGetProducts(t *testing.T) {
|
||||||
_, err := c.GetProducts()
|
_, err := c.GetProducts()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed - Coinbase, GetProducts() Error: %s", err)
|
t.Errorf("Coinbase, GetProducts() Error: %s", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTicker(t *testing.T) {
|
func TestGetTicker(t *testing.T) {
|
||||||
_, err := c.GetTicker("BTC-USD")
|
_, err := c.GetTicker("BTC-USD")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetTicker() error", err)
|
t.Error("GetTicker() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTrades(t *testing.T) {
|
func TestGetTrades(t *testing.T) {
|
||||||
_, err := c.GetTrades("BTC-USD")
|
_, err := c.GetTrades("BTC-USD")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetTrades() error", err)
|
t.Error("GetTrades() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetHistoricRates(t *testing.T) {
|
func TestGetHistoricRates(t *testing.T) {
|
||||||
_, err := c.GetHistoricRates("BTC-USD", 0, 0, 0)
|
_, err := c.GetHistoricRates("BTC-USD", 0, 0, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetHistoricRates() error", err)
|
t.Error("GetHistoricRates() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetStats(t *testing.T) {
|
func TestGetStats(t *testing.T) {
|
||||||
_, err := c.GetStats("BTC-USD")
|
_, err := c.GetStats("BTC-USD")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetStats() error", err)
|
t.Error("GetStats() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetCurrencies(t *testing.T) {
|
func TestGetCurrencies(t *testing.T) {
|
||||||
_, err := c.GetCurrencies()
|
_, err := c.GetCurrencies()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetCurrencies() error", err)
|
t.Error("GetCurrencies() error", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetServerTime(t *testing.T) {
|
func TestGetServerTime(t *testing.T) {
|
||||||
_, err := c.GetServerTime()
|
_, err := c.GetServerTime()
|
||||||
if err != nil {
|
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()
|
_, err := c.GetAccounts()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetAccounts() error", err)
|
t.Error("GetAccounts() error", err)
|
||||||
}
|
}
|
||||||
accountResponse, err := c.GetAccount("13371337-1337-1337-1337-133713371337")
|
accountResponse, err := c.GetAccount("13371337-1337-1337-1337-133713371337")
|
||||||
if accountResponse.ID != "" {
|
if accountResponse.ID != "" {
|
||||||
@@ -173,11 +173,11 @@ func TestAuthRequests(t *testing.T) {
|
|||||||
}
|
}
|
||||||
_, err = c.GetPayMethods()
|
_, err = c.GetPayMethods()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test failed - GetPayMethods() error", err)
|
t.Error("GetPayMethods() error", err)
|
||||||
}
|
}
|
||||||
_, err = c.GetCoinbaseAccounts()
|
_, err = c.GetCoinbaseAccounts()
|
||||||
if err != nil {
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0.003) || err != nil {
|
if resp, err := c.GetFee(feeBuilder); resp != float64(0.003) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -223,7 +223,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(3000) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,7 +231,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,7 +239,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -248,7 +248,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -256,7 +256,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -265,7 +265,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.EUR
|
feeBuilder.FiatCurrency = currency.EUR
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0.15) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -274,7 +274,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.USD
|
feeBuilder.FiatCurrency = currency.USD
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(25) || err != nil {
|
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)
|
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) {
|
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
|
// 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) {
|
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
|
// 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) {
|
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
|
// 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) {
|
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
|
// 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) {
|
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
|
// 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) {
|
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
|
// 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) {
|
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) {
|
func TestModifyOrder(t *testing.T) {
|
||||||
_, err := c.ModifyOrder(&exchange.ModifyOrder{})
|
_, err := c.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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) {
|
func TestGetDepositAddress(t *testing.T) {
|
||||||
_, err := c.GetDepositAddress(currency.BTC, "")
|
_, err := c.GetDepositAddress(currency.BTC, "")
|
||||||
if err == nil {
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -71,9 +72,36 @@ func (c *CoinbasePro) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: true,
|
Websocket: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerFetching: true,
|
||||||
TickerBatching: false,
|
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 |
|
WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission |
|
||||||
exchange.AutoWithdrawFiatWithAPIPermission,
|
exchange.AutoWithdrawFiatWithAPIPermission,
|
||||||
@@ -92,12 +120,6 @@ func (c *CoinbasePro) SetDefaults() {
|
|||||||
c.API.Endpoints.URL = c.API.Endpoints.URLDefault
|
c.API.Endpoints.URL = c.API.Endpoints.URLDefault
|
||||||
c.API.Endpoints.WebsocketURL = coinbaseproWebsocketURL
|
c.API.Endpoints.WebsocketURL = coinbaseproWebsocketURL
|
||||||
c.Websocket = wshandler.New()
|
c.Websocket = wshandler.New()
|
||||||
c.Websocket.Functionality = wshandler.WebsocketTickerSupported |
|
|
||||||
wshandler.WebsocketOrderbookSupported |
|
|
||||||
wshandler.WebsocketSubscribeSupported |
|
|
||||||
wshandler.WebsocketUnsubscribeSupported |
|
|
||||||
wshandler.WebsocketAuthenticatedEndpointsSupported |
|
|
||||||
wshandler.WebsocketSequenceNumberSupported
|
|
||||||
c.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
c.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||||
c.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
c.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||||
c.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
c.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||||
@@ -127,6 +149,7 @@ func (c *CoinbasePro) Setup(exch *config.ExchangeConfig) error {
|
|||||||
Connector: c.WsConnect,
|
Connector: c.WsConnect,
|
||||||
Subscriber: c.Subscribe,
|
Subscriber: c.Subscribe,
|
||||||
UnSubscriber: c.Unsubscribe,
|
UnSubscriber: c.Unsubscribe,
|
||||||
|
Features: &c.Features.Supports.WebsocketCapabilities,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ func TestSetup(t *testing.T) {
|
|||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
err := cfg.LoadConfig("../../testdata/configtest.json", true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Coinut load config error", err)
|
t.Fatal("Coinut load config error", err)
|
||||||
}
|
}
|
||||||
bConfig, err := cfg.GetExchangeConfig("COINUT")
|
bConfig, err := cfg.GetExchangeConfig("COINUT")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - Coinut Setup() init error")
|
t.Error("Coinut Setup() init error")
|
||||||
}
|
}
|
||||||
bConfig.API.AuthenticatedSupport = true
|
bConfig.API.AuthenticatedSupport = true
|
||||||
bConfig.API.AuthenticatedWebsocketSupport = true
|
bConfig.API.AuthenticatedWebsocketSupport = true
|
||||||
@@ -44,12 +44,12 @@ func TestSetup(t *testing.T) {
|
|||||||
bConfig.Verbose = true
|
bConfig.Verbose = true
|
||||||
err = c.Setup(bConfig)
|
err = c.Setup(bConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test Failed - Coinut setup error", err)
|
t.Fatal("Coinut setup error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !c.IsEnabled() || !c.Verbose ||
|
if !c.IsEnabled() || !c.Verbose ||
|
||||||
c.Websocket.IsEnabled() || len(c.BaseCurrencies) < 1 {
|
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) {
|
func TestGetInstruments(t *testing.T) {
|
||||||
_, err := c.GetInstruments()
|
_, err := c.GetInstruments()
|
||||||
if err != nil {
|
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
|
// CryptocurrencyTradeFee Basic
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
if resp, err := c.GetFee(feeBuilder); resp != float64(0.001) || err != nil {
|
||||||
t.Error(err)
|
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
|
// CryptocurrencyTradeFee High quantity
|
||||||
@@ -146,7 +146,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.Amount = 1000
|
feeBuilder.Amount = 1000
|
||||||
feeBuilder.PurchasePrice = 1000
|
feeBuilder.PurchasePrice = 1000
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(1000) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.IsMaker = true
|
feeBuilder.IsMaker = true
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.PurchasePrice = -1000
|
feeBuilder.PurchasePrice = -1000
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -170,7 +170,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
feeBuilder.FeeType = exchange.CryptocurrencyWithdrawalFee
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder = setFeeBuilder()
|
feeBuilder = setFeeBuilder()
|
||||||
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
feeBuilder.FeeType = exchange.CyptocurrencyDepositFee
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,7 +187,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.EUR
|
feeBuilder.FiatCurrency = currency.EUR
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,7 +196,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.USD
|
feeBuilder.FiatCurrency = currency.USD
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(10) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,7 +205,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
feeBuilder.FeeType = exchange.InternationalBankDepositFee
|
||||||
feeBuilder.FiatCurrency = currency.SGD
|
feeBuilder.FiatCurrency = currency.SGD
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(0) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.USD
|
feeBuilder.FiatCurrency = currency.USD
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(10) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,7 +223,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.CAD
|
feeBuilder.FiatCurrency = currency.CAD
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(2) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,7 +232,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.SGD
|
feeBuilder.FiatCurrency = currency.SGD
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(10) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,7 +241,7 @@ func TestGetFee(t *testing.T) {
|
|||||||
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
feeBuilder.FeeType = exchange.InternationalBankWithdrawalFee
|
||||||
feeBuilder.FiatCurrency = currency.CAD
|
feeBuilder.FiatCurrency = currency.CAD
|
||||||
if resp, err := c.GetFee(feeBuilder); resp != float64(2) || err != nil {
|
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)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -384,12 +384,12 @@ func TestGetAccountInfo(t *testing.T) {
|
|||||||
if apiKey != "" || clientID != "" {
|
if apiKey != "" || clientID != "" {
|
||||||
_, err := c.GetAccountInfo()
|
_, err := c.GetAccountInfo()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("Test Failed - GetAccountInfo() error", err)
|
t.Error("GetAccountInfo() error", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := c.GetAccountInfo()
|
_, err := c.GetAccountInfo()
|
||||||
if err == nil {
|
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) {
|
func TestModifyOrder(t *testing.T) {
|
||||||
_, err := c.ModifyOrder(&exchange.ModifyOrder{})
|
_, err := c.ModifyOrder(&exchange.ModifyOrder{})
|
||||||
if err == nil {
|
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) {
|
func TestGetDepositAddress(t *testing.T) {
|
||||||
_, err := c.GetDepositAddress(currency.BTC, "")
|
_, err := c.GetDepositAddress(currency.BTC, "")
|
||||||
if err == nil {
|
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"
|
exchange "github.com/thrasher-corp/gocryptotrader/exchanges"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/orderbook"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/ticker"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
@@ -69,9 +70,33 @@ func (c *COINUT) SetDefaults() {
|
|||||||
Supports: exchange.FeaturesSupported{
|
Supports: exchange.FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
Websocket: true,
|
Websocket: true,
|
||||||
RESTCapabilities: exchange.ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: true,
|
TickerFetching: true,
|
||||||
TickerBatching: false,
|
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 |
|
WithdrawPermissions: exchange.WithdrawCryptoViaWebsiteOnly |
|
||||||
exchange.WithdrawFiatViaWebsiteOnly,
|
exchange.WithdrawFiatViaWebsiteOnly,
|
||||||
@@ -90,15 +115,6 @@ func (c *COINUT) SetDefaults() {
|
|||||||
c.API.Endpoints.URL = c.API.Endpoints.URLDefault
|
c.API.Endpoints.URL = c.API.Endpoints.URLDefault
|
||||||
c.API.Endpoints.WebsocketURL = coinutWebsocketURL
|
c.API.Endpoints.WebsocketURL = coinutWebsocketURL
|
||||||
c.Websocket = wshandler.New()
|
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.WebsocketResponseMaxLimit = exchange.DefaultWebsocketResponseMaxLimit
|
||||||
c.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
c.WebsocketResponseCheckTimeout = exchange.DefaultWebsocketResponseCheckTimeout
|
||||||
c.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
c.WebsocketOrderbookBufferLimit = exchange.DefaultWebsocketOrderbookBufferLimit
|
||||||
@@ -128,6 +144,7 @@ func (c *COINUT) Setup(exch *config.ExchangeConfig) error {
|
|||||||
Connector: c.WsConnect,
|
Connector: c.WsConnect,
|
||||||
Subscriber: c.Subscribe,
|
Subscriber: c.Subscribe,
|
||||||
UnSubscriber: c.Unsubscribe,
|
UnSubscriber: c.Unsubscribe,
|
||||||
|
Features: &c.Features.Supports.WebsocketCapabilities,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/thrasher-corp/gocryptotrader/config"
|
"github.com/thrasher-corp/gocryptotrader/config"
|
||||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"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/request"
|
||||||
log "github.com/thrasher-corp/gocryptotrader/logger"
|
log "github.com/thrasher-corp/gocryptotrader/logger"
|
||||||
)
|
)
|
||||||
@@ -101,7 +102,7 @@ func (e *Base) SetFeatureDefaults() {
|
|||||||
Supports: config.FeaturesSupportedConfig{
|
Supports: config.FeaturesSupportedConfig{
|
||||||
Websocket: e.Features.Supports.Websocket,
|
Websocket: e.Features.Supports.Websocket,
|
||||||
REST: e.Features.Supports.REST,
|
REST: e.Features.Supports.REST,
|
||||||
RESTCapabilities: config.ProtocolFeaturesConfig{
|
RESTCapabilities: protocol.Features{
|
||||||
AutoPairUpdates: e.Features.Supports.RESTCapabilities.AutoPairUpdates,
|
AutoPairUpdates: e.Features.Supports.RESTCapabilities.AutoPairUpdates,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
"github.com/thrasher-corp/gocryptotrader/config"
|
"github.com/thrasher-corp/gocryptotrader/config"
|
||||||
"github.com/thrasher-corp/gocryptotrader/currency"
|
"github.com/thrasher-corp/gocryptotrader/currency"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/asset"
|
"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/request"
|
||||||
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
"github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler"
|
||||||
)
|
)
|
||||||
@@ -27,7 +28,7 @@ func TestSupportsRESTTickerBatchUpdates(t *testing.T) {
|
|||||||
Features: Features{
|
Features: Features{
|
||||||
Supports: FeaturesSupported{
|
Supports: FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
RESTCapabilities: ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
TickerBatching: true,
|
TickerBatching: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -35,7 +36,7 @@ func TestSupportsRESTTickerBatchUpdates(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if !b.SupportsRESTTickerBatchUpdates() {
|
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)
|
r.SetHTTPClientTimeout(time.Second * 5)
|
||||||
|
|
||||||
if r.GetHTTPClient().Timeout != 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
|
r.Requester = nil
|
||||||
@@ -55,12 +56,12 @@ func TestHTTPClient(t *testing.T) {
|
|||||||
|
|
||||||
r.SetHTTPClient(newClient)
|
r.SetHTTPClient(newClient)
|
||||||
if r.GetHTTPClient().Timeout != time.Second*10 {
|
if r.GetHTTPClient().Timeout != time.Second*10 {
|
||||||
t.Fatalf("Test failed. TestHTTPClient unexpected value")
|
t.Fatalf("TestHTTPClient unexpected value")
|
||||||
}
|
}
|
||||||
|
|
||||||
r.Requester = nil
|
r.Requester = nil
|
||||||
if r.GetHTTPClient() == nil {
|
if r.GetHTTPClient() == nil {
|
||||||
t.Fatalf("Test failed. TestHTTPClient unexpected value")
|
t.Fatalf("TestHTTPClient unexpected value")
|
||||||
}
|
}
|
||||||
|
|
||||||
b := Base{Name: "RAWR"}
|
b := Base{Name: "RAWR"}
|
||||||
@@ -71,7 +72,7 @@ func TestHTTPClient(t *testing.T) {
|
|||||||
|
|
||||||
b.SetHTTPClientTimeout(time.Second * 5)
|
b.SetHTTPClientTimeout(time.Second * 5)
|
||||||
if b.GetHTTPClient().Timeout != 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)
|
newClient = new(http.Client)
|
||||||
@@ -79,7 +80,7 @@ func TestHTTPClient(t *testing.T) {
|
|||||||
|
|
||||||
b.SetHTTPClient(newClient)
|
b.SetHTTPClient(newClient)
|
||||||
if b.GetHTTPClient().Timeout != time.Second*10 {
|
if b.GetHTTPClient().Timeout != time.Second*10 {
|
||||||
t.Fatalf("Test failed. TestHTTPClient unexpected value")
|
t.Fatalf("TestHTTPClient unexpected value")
|
||||||
}
|
}
|
||||||
|
|
||||||
b.SetHTTPClientUserAgent("epicUserAgent")
|
b.SetHTTPClientUserAgent("epicUserAgent")
|
||||||
@@ -103,16 +104,16 @@ func TestSetClientProxyAddress(t *testing.T) {
|
|||||||
newBase.Websocket = wshandler.New()
|
newBase.Websocket = wshandler.New()
|
||||||
err := newBase.SetClientProxyAddress(":invalid")
|
err := newBase.SetClientProxyAddress(":invalid")
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("Test failed. SetClientProxyAddress parsed invalid URL")
|
t.Error("SetClientProxyAddress parsed invalid URL")
|
||||||
}
|
}
|
||||||
|
|
||||||
if newBase.Websocket.GetProxyAddress() != "" {
|
if newBase.Websocket.GetProxyAddress() != "" {
|
||||||
t.Error("Test failed. SetClientProxyAddress error", err)
|
t.Error("SetClientProxyAddress error", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = newBase.SetClientProxyAddress("www.valid.com")
|
err = newBase.SetClientProxyAddress("www.valid.com")
|
||||||
if err != nil {
|
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
|
// 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" {
|
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{
|
Features: Features{
|
||||||
Supports: FeaturesSupported{
|
Supports: FeaturesSupported{
|
||||||
REST: true,
|
REST: true,
|
||||||
RESTCapabilities: ProtocolFeatures{
|
RESTCapabilities: protocol.Features{
|
||||||
TickerBatching: true,
|
TickerBatching: true,
|
||||||
},
|
},
|
||||||
Websocket: true,
|
Websocket: true,
|
||||||
@@ -233,22 +234,22 @@ func TestSetHTTPRateLimiter(t *testing.T) {
|
|||||||
|
|
||||||
func TestSetAutoPairDefaults(t *testing.T) {
|
func TestSetAutoPairDefaults(t *testing.T) {
|
||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig(config.ConfigTestFile, true)
|
err := cfg.LoadConfig(config.TestFile, true)
|
||||||
if err != nil {
|
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")
|
exch, err := cfg.GetExchangeConfig("Bitstamp")
|
||||||
if err != nil {
|
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 {
|
if !exch.Features.Supports.RESTCapabilities.AutoPairUpdates {
|
||||||
t.Fatalf("Test failed. TestSetAutoPairDefaults Incorrect value")
|
t.Fatalf("TestSetAutoPairDefaults Incorrect value")
|
||||||
}
|
}
|
||||||
|
|
||||||
if exch.CurrencyPairs.LastUpdated != 0 {
|
if exch.CurrencyPairs.LastUpdated != 0 {
|
||||||
t.Fatalf("Test failed. TestSetAutoPairDefaults Incorrect value")
|
t.Fatalf("TestSetAutoPairDefaults Incorrect value")
|
||||||
}
|
}
|
||||||
|
|
||||||
exch.Features.Supports.RESTCapabilities.AutoPairUpdates = false
|
exch.Features.Supports.RESTCapabilities.AutoPairUpdates = false
|
||||||
@@ -256,11 +257,11 @@ func TestSetAutoPairDefaults(t *testing.T) {
|
|||||||
|
|
||||||
exch, err = cfg.GetExchangeConfig("Bitstamp")
|
exch, err = cfg.GetExchangeConfig("Bitstamp")
|
||||||
if err != nil {
|
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 {
|
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
|
b.CurrencyPairs.LastUpdated = testTime
|
||||||
|
|
||||||
if b.GetLastPairsUpdateTime() != 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()
|
aT := testExchange.GetAssetTypes()
|
||||||
if len(aT) != 3 {
|
if len(aT) != 3 {
|
||||||
t.Error("Test failed. TestGetAssetTypes failed")
|
t.Error("TestGetAssetTypes failed")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetClientBankAccounts(t *testing.T) {
|
func TestGetClientBankAccounts(t *testing.T) {
|
||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig(config.ConfigTestFile, true)
|
err := cfg.LoadConfig(config.TestFile, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -363,13 +364,13 @@ func TestGetClientBankAccounts(t *testing.T) {
|
|||||||
|
|
||||||
r, err = b.GetClientBankAccounts("MEOW", "USD")
|
r, err = b.GetClientBankAccounts("MEOW", "USD")
|
||||||
if err == nil {
|
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) {
|
func TestGetExchangeBankAccounts(t *testing.T) {
|
||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig(config.ConfigTestFile, true)
|
err := cfg.LoadConfig(config.TestFile, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@@ -387,7 +388,7 @@ func TestGetExchangeBankAccounts(t *testing.T) {
|
|||||||
|
|
||||||
_, err = b.GetExchangeBankAccounts("MEOW", "USD")
|
_, err = b.GetExchangeBankAccounts("MEOW", "USD")
|
||||||
if err == nil {
|
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) {
|
if !base.GetAuthenticatedAPISupport(RestAuthentication) {
|
||||||
t.Fatal("Test failed. Expected RestAuthentication to return true")
|
t.Fatal("Expected RestAuthentication to return true")
|
||||||
}
|
}
|
||||||
if base.GetAuthenticatedAPISupport(WebsocketAuthentication) {
|
if base.GetAuthenticatedAPISupport(WebsocketAuthentication) {
|
||||||
t.Fatal("Test failed. Expected WebsocketAuthentication to return false")
|
t.Fatal("Expected WebsocketAuthentication to return false")
|
||||||
}
|
}
|
||||||
base.API.AuthenticatedWebsocketSupport = true
|
base.API.AuthenticatedWebsocketSupport = true
|
||||||
if !base.GetAuthenticatedAPISupport(WebsocketAuthentication) {
|
if !base.GetAuthenticatedAPISupport(WebsocketAuthentication) {
|
||||||
t.Fatal("Test failed. Expected WebsocketAuthentication to return true")
|
t.Fatal("Expected WebsocketAuthentication to return true")
|
||||||
}
|
}
|
||||||
if base.GetAuthenticatedAPISupport(2) {
|
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()
|
name := b.GetName()
|
||||||
if name != "TESTNAME" {
|
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)
|
c := b.GetEnabledPairs(assetType)
|
||||||
if c[0].String() != defaultTestCurrencyPair {
|
if c[0].String() != defaultTestCurrencyPair {
|
||||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||||
}
|
}
|
||||||
|
|
||||||
format.Delimiter = "~"
|
format.Delimiter = "~"
|
||||||
b.CurrencyPairs.RequestFormat = &format
|
b.CurrencyPairs.RequestFormat = &format
|
||||||
c = b.GetEnabledPairs(assetType)
|
c = b.GetEnabledPairs(assetType)
|
||||||
if c[0].String() != "BTC~USD" {
|
if c[0].String() != "BTC~USD" {
|
||||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||||
}
|
}
|
||||||
|
|
||||||
format.Delimiter = ""
|
format.Delimiter = ""
|
||||||
b.CurrencyPairs.ConfigFormat = &format
|
b.CurrencyPairs.ConfigFormat = &format
|
||||||
c = b.GetEnabledPairs(assetType)
|
c = b.GetEnabledPairs(assetType)
|
||||||
if c[0].String() != "BTCUSD" {
|
if c[0].String() != "BTCUSD" {
|
||||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||||
}
|
}
|
||||||
|
|
||||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||||
@@ -586,7 +587,7 @@ func TestGetEnabledPairs(t *testing.T) {
|
|||||||
b.CurrencyPairs.ConfigFormat = &format
|
b.CurrencyPairs.ConfigFormat = &format
|
||||||
c = b.GetEnabledPairs(assetType)
|
c = b.GetEnabledPairs(assetType)
|
||||||
if c[0].Base != currency.BTC && c[0].Quote != currency.DOGE {
|
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,
|
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||||
@@ -595,7 +596,7 @@ func TestGetEnabledPairs(t *testing.T) {
|
|||||||
b.CurrencyPairs.ConfigFormat.Delimiter = "_"
|
b.CurrencyPairs.ConfigFormat.Delimiter = "_"
|
||||||
c = b.GetEnabledPairs(assetType)
|
c = b.GetEnabledPairs(assetType)
|
||||||
if c[0].Base != currency.BTC && c[0].Quote != currency.USD {
|
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,
|
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||||
@@ -605,7 +606,7 @@ func TestGetEnabledPairs(t *testing.T) {
|
|||||||
b.CurrencyPairs.ConfigFormat.Index = currency.BTC.String()
|
b.CurrencyPairs.ConfigFormat.Index = currency.BTC.String()
|
||||||
c = b.GetEnabledPairs(assetType)
|
c = b.GetEnabledPairs(assetType)
|
||||||
if c[0].Base != currency.BTC && c[0].Quote != currency.DOGE {
|
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,
|
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||||
@@ -613,7 +614,7 @@ func TestGetEnabledPairs(t *testing.T) {
|
|||||||
b.CurrencyPairs.ConfigFormat.Index = ""
|
b.CurrencyPairs.ConfigFormat.Index = ""
|
||||||
c = b.GetEnabledPairs(assetType)
|
c = b.GetEnabledPairs(assetType)
|
||||||
if c[0].Base != currency.BTC && c[0].Quote != currency.USD {
|
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)
|
c := b.GetAvailablePairs(assetType)
|
||||||
if c[0].String() != defaultTestCurrencyPair {
|
if c[0].String() != defaultTestCurrencyPair {
|
||||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||||
}
|
}
|
||||||
|
|
||||||
format.Delimiter = "~"
|
format.Delimiter = "~"
|
||||||
b.CurrencyPairs.RequestFormat = &format
|
b.CurrencyPairs.RequestFormat = &format
|
||||||
c = b.GetAvailablePairs(assetType)
|
c = b.GetAvailablePairs(assetType)
|
||||||
if c[0].String() != "BTC~USD" {
|
if c[0].String() != "BTC~USD" {
|
||||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||||
}
|
}
|
||||||
|
|
||||||
format.Delimiter = ""
|
format.Delimiter = ""
|
||||||
b.CurrencyPairs.ConfigFormat = &format
|
b.CurrencyPairs.ConfigFormat = &format
|
||||||
c = b.GetAvailablePairs(assetType)
|
c = b.GetAvailablePairs(assetType)
|
||||||
if c[0].String() != "BTCUSD" {
|
if c[0].String() != "BTCUSD" {
|
||||||
t.Error("Test Failed - Exchange GetAvailablePairs() incorrect string")
|
t.Error("Exchange GetAvailablePairs() incorrect string")
|
||||||
}
|
}
|
||||||
|
|
||||||
b.CurrencyPairs.StorePairs(asset.Spot,
|
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||||
@@ -662,7 +663,7 @@ func TestGetAvailablePairs(t *testing.T) {
|
|||||||
b.CurrencyPairs.ConfigFormat = &format
|
b.CurrencyPairs.ConfigFormat = &format
|
||||||
c = b.GetAvailablePairs(assetType)
|
c = b.GetAvailablePairs(assetType)
|
||||||
if c[0].Base != currency.BTC && c[0].Quote != currency.DOGE {
|
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,
|
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||||
@@ -671,7 +672,7 @@ func TestGetAvailablePairs(t *testing.T) {
|
|||||||
b.CurrencyPairs.ConfigFormat.Delimiter = "_"
|
b.CurrencyPairs.ConfigFormat.Delimiter = "_"
|
||||||
c = b.GetAvailablePairs(assetType)
|
c = b.GetAvailablePairs(assetType)
|
||||||
if c[0].Base != currency.BTC && c[0].Quote != currency.USD {
|
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,
|
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||||
@@ -681,7 +682,7 @@ func TestGetAvailablePairs(t *testing.T) {
|
|||||||
b.CurrencyPairs.ConfigFormat.Index = currency.BTC.String()
|
b.CurrencyPairs.ConfigFormat.Index = currency.BTC.String()
|
||||||
c = b.GetAvailablePairs(assetType)
|
c = b.GetAvailablePairs(assetType)
|
||||||
if c[0].Base != currency.BTC && c[0].Quote != currency.DOGE {
|
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,
|
b.CurrencyPairs.StorePairs(asset.Spot,
|
||||||
@@ -689,7 +690,7 @@ func TestGetAvailablePairs(t *testing.T) {
|
|||||||
b.CurrencyPairs.ConfigFormat.Index = ""
|
b.CurrencyPairs.ConfigFormat.Index = ""
|
||||||
c = b.GetAvailablePairs(assetType)
|
c = b.GetAvailablePairs(assetType)
|
||||||
if c[0].Base != currency.BTC && c[0].Quote != currency.USD {
|
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
|
assetType := asset.Spot
|
||||||
|
|
||||||
if !b.SupportsPair(currency.NewPair(currency.BTC, currency.USD), true, assetType) {
|
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) {
|
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) {
|
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)
|
actual, err := e.FormatExchangeCurrencies(pairs, asset.Spot)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test failed - Exchange TestFormatExchangeCurrencies error %s", err)
|
t.Errorf("Exchange TestFormatExchangeCurrencies error %s", err)
|
||||||
}
|
}
|
||||||
expected := "btc~usd^ltc~btc"
|
expected := "btc~usd^ltc~btc"
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf("Test failed - Exchange TestFormatExchangeCurrencies %s != %s",
|
t.Errorf("Exchange TestFormatExchangeCurrencies %s != %s",
|
||||||
actual, expected)
|
actual, expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -785,7 +786,7 @@ func TestFormatExchangeCurrency(t *testing.T) {
|
|||||||
actual := b.FormatExchangeCurrency(p, asset.Spot)
|
actual := b.FormatExchangeCurrency(p, asset.Spot)
|
||||||
|
|
||||||
if actual.String() != expected {
|
if actual.String() != expected {
|
||||||
t.Errorf("Test failed - Exchange TestFormatExchangeCurrency %s != %s",
|
t.Errorf("Exchange TestFormatExchangeCurrency %s != %s",
|
||||||
actual, expected)
|
actual, expected)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -800,7 +801,7 @@ func TestSetEnabled(t *testing.T) {
|
|||||||
|
|
||||||
SetEnabled.SetEnabled(true)
|
SetEnabled.SetEnabled(true)
|
||||||
if !SetEnabled.Enabled {
|
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() {
|
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) {
|
func TestUpdatePairs(t *testing.T) {
|
||||||
cfg := config.GetConfig()
|
cfg := config.GetConfig()
|
||||||
err := cfg.LoadConfig(config.ConfigTestFile, true)
|
err := cfg.LoadConfig(config.TestFile, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test failed. TestUpdatePairs failed to load config")
|
t.Fatal("TestUpdatePairs failed to load config")
|
||||||
}
|
}
|
||||||
|
|
||||||
anxCfg, err := cfg.GetExchangeConfig(defaultTestExchange)
|
anxCfg, err := cfg.GetExchangeConfig(defaultTestExchange)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("Test failed. TestUpdatePairs failed to load config")
|
t.Fatal("TestUpdatePairs failed to load config")
|
||||||
}
|
}
|
||||||
|
|
||||||
UAC := Base{Name: defaultTestExchange}
|
UAC := Base{Name: defaultTestExchange}
|
||||||
@@ -1063,20 +1064,20 @@ func TestUpdatePairs(t *testing.T) {
|
|||||||
exchangeProducts := currency.NewPairsFromStrings([]string{"ltc", "btc", "usd", "aud", ""})
|
exchangeProducts := currency.NewPairsFromStrings([]string{"ltc", "btc", "usd", "aud", ""})
|
||||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, true, false)
|
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, true, false)
|
||||||
if err != nil {
|
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
|
// Test updating the same new products, diff should be 0
|
||||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, true, false)
|
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, true, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test Failed - TestUpdatePairs error: %s", err)
|
t.Errorf("TestUpdatePairs error: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test force updating to only one product
|
// Test force updating to only one product
|
||||||
exchangeProducts = currency.NewPairsFromStrings([]string{"btc"})
|
exchangeProducts = currency.NewPairsFromStrings([]string{"btc"})
|
||||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, true, true)
|
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, true, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Test Failed - TestUpdatePairs error: %s", err)
|
t.Errorf("TestUpdatePairs error: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test updating exchange products
|
// Test updating exchange products
|
||||||
@@ -1084,34 +1085,34 @@ func TestUpdatePairs(t *testing.T) {
|
|||||||
UAC.Name = defaultTestExchange
|
UAC.Name = defaultTestExchange
|
||||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
||||||
if err != nil {
|
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
|
// Test updating the same new products, diff should be 0
|
||||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
||||||
if err != nil {
|
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
|
// Test force updating to only one product
|
||||||
exchangeProducts = currency.NewPairsFromStrings([]string{"btc"})
|
exchangeProducts = currency.NewPairsFromStrings([]string{"btc"})
|
||||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, true)
|
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, true)
|
||||||
if err != nil {
|
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
|
// Test update currency pairs with btc excluded
|
||||||
exchangeProducts = currency.NewPairsFromStrings([]string{"ltc", "eth"})
|
exchangeProducts = currency.NewPairsFromStrings([]string{"ltc", "eth"})
|
||||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
||||||
if err != nil {
|
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
|
// Test that empty exchange products should return an error
|
||||||
exchangeProducts = nil
|
exchangeProducts = nil
|
||||||
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
err = UAC.UpdatePairs(exchangeProducts, asset.Spot, false, false)
|
||||||
if err == nil {
|
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
|
// Test empty pair
|
||||||
@@ -1122,7 +1123,7 @@ func TestUpdatePairs(t *testing.T) {
|
|||||||
}
|
}
|
||||||
err = UAC.UpdatePairs(pairs, asset.Spot, true, true)
|
err = UAC.UpdatePairs(pairs, asset.Spot, true, true)
|
||||||
if err != nil {
|
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.UseGlobalFormat = true
|
||||||
UAC.CurrencyPairs.ConfigFormat = ¤cy.PairFormat{
|
UAC.CurrencyPairs.ConfigFormat = ¤cy.PairFormat{
|
||||||
@@ -1146,7 +1147,7 @@ func TestSetAPIURL(t *testing.T) {
|
|||||||
|
|
||||||
err := tester.SetAPIURL()
|
err := tester.SetAPIURL()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Error("test failed - setting zero value config")
|
t.Error("setting zero value config")
|
||||||
}
|
}
|
||||||
|
|
||||||
tester.Config.API.Endpoints.URL = testURL
|
tester.Config.API.Endpoints.URL = testURL
|
||||||
@@ -1157,23 +1158,23 @@ func TestSetAPIURL(t *testing.T) {
|
|||||||
|
|
||||||
err = tester.SetAPIURL()
|
err = tester.SetAPIURL()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Error("test failed", err)
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if tester.GetAPIURL() != testURL {
|
if tester.GetAPIURL() != testURL {
|
||||||
t.Error("test failed - incorrect return URL")
|
t.Error("incorrect return URL")
|
||||||
}
|
}
|
||||||
|
|
||||||
if tester.GetSecondaryAPIURL() != testURLSecondary {
|
if tester.GetSecondaryAPIURL() != testURLSecondary {
|
||||||
t.Error("test failed - incorrect return URL")
|
t.Error("incorrect return URL")
|
||||||
}
|
}
|
||||||
|
|
||||||
if tester.GetAPIURLDefault() != testURLDefault {
|
if tester.GetAPIURLDefault() != testURLDefault {
|
||||||
t.Error("test failed - incorrect return URL")
|
t.Error("incorrect return URL")
|
||||||
}
|
}
|
||||||
|
|
||||||
if tester.GetAPIURLSecondaryDefault() != testURLSecondaryDefault {
|
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
|
var os = BuyOrderSide
|
||||||
if os.ToString() != "BUY" {
|
if os.ToString() != "BUY" {
|
||||||
t.Errorf("test failed - unexpected string %s", os.ToString())
|
t.Errorf("unexpected string %s", os.ToString())
|
||||||
}
|
}
|
||||||
|
|
||||||
if os.ToLower() != "buy" {
|
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"
|
var ot OrderType = "Mo'Money"
|
||||||
|
|
||||||
if ot.ToString() != "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" {
|
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)
|
SortOrdersByPrice(&orders, false)
|
||||||
if orders[0].Price != 0 {
|
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)
|
SortOrdersByPrice(&orders, true)
|
||||||
if orders[0].Price != 100 {
|
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)
|
SortOrdersByDate(&orders, false)
|
||||||
if orders[0].OrderDate.Unix() != time.Unix(0, 0).Unix() {
|
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(),
|
time.Unix(0, 0).Unix(),
|
||||||
orders[0].OrderDate.Unix())
|
orders[0].OrderDate.Unix())
|
||||||
}
|
}
|
||||||
|
|
||||||
SortOrdersByDate(&orders, true)
|
SortOrdersByDate(&orders, true)
|
||||||
if orders[0].OrderDate.Unix() != time.Unix(2, 0).Unix() {
|
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(),
|
time.Unix(2, 0).Unix(),
|
||||||
orders[0].OrderDate.Unix())
|
orders[0].OrderDate.Unix())
|
||||||
}
|
}
|
||||||
@@ -1557,14 +1558,14 @@ func TestSortOrdersByCurrency(t *testing.T) {
|
|||||||
|
|
||||||
SortOrdersByCurrency(&orders, false)
|
SortOrdersByCurrency(&orders, false)
|
||||||
if orders[0].CurrencyPair.String() != currency.BTC.String()+"-"+currency.RUB.String() {
|
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(),
|
currency.BTC.String()+"-"+currency.RUB.String(),
|
||||||
orders[0].CurrencyPair.String())
|
orders[0].CurrencyPair.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
SortOrdersByCurrency(&orders, true)
|
SortOrdersByCurrency(&orders, true)
|
||||||
if orders[0].CurrencyPair.String() != currency.LTC.String()+"-"+currency.EUR.String() {
|
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(),
|
currency.LTC.String()+"-"+currency.EUR.String(),
|
||||||
orders[0].CurrencyPair.String())
|
orders[0].CurrencyPair.String())
|
||||||
}
|
}
|
||||||
@@ -1587,14 +1588,14 @@ func TestSortOrdersByOrderSide(t *testing.T) {
|
|||||||
|
|
||||||
SortOrdersBySide(&orders, false)
|
SortOrdersBySide(&orders, false)
|
||||||
if !strings.EqualFold(orders[0].OrderSide.ToString(), BuyOrderSide.ToString()) {
|
if !strings.EqualFold(orders[0].OrderSide.ToString(), BuyOrderSide.ToString()) {
|
||||||
t.Errorf("Test failed. Expected: '%v', received: '%v'",
|
t.Errorf("Expected: '%v', received: '%v'",
|
||||||
BuyOrderSide,
|
BuyOrderSide,
|
||||||
orders[0].OrderSide)
|
orders[0].OrderSide)
|
||||||
}
|
}
|
||||||
|
|
||||||
SortOrdersBySide(&orders, true)
|
SortOrdersBySide(&orders, true)
|
||||||
if !strings.EqualFold(orders[0].OrderSide.ToString(), SellOrderSide.ToString()) {
|
if !strings.EqualFold(orders[0].OrderSide.ToString(), SellOrderSide.ToString()) {
|
||||||
t.Errorf("Test failed. Expected: '%v', received: '%v'",
|
t.Errorf("Expected: '%v', received: '%v'",
|
||||||
SellOrderSide,
|
SellOrderSide,
|
||||||
orders[0].OrderSide)
|
orders[0].OrderSide)
|
||||||
}
|
}
|
||||||
@@ -1617,12 +1618,12 @@ func TestSortOrdersByOrderType(t *testing.T) {
|
|||||||
|
|
||||||
SortOrdersByType(&orders, false)
|
SortOrdersByType(&orders, false)
|
||||||
if !strings.EqualFold(orders[0].OrderType.ToString(), ImmediateOrCancelOrderType.ToString()) {
|
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)
|
SortOrdersByType(&orders, true)
|
||||||
if !strings.EqualFold(orders[0].OrderType.ToString(), TrailingStopOrderType.ToString()) {
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user