From 38514eb8ab88dd375340b3f2c57cc041b8a253f2 Mon Sep 17 00:00:00 2001 From: Ryan O'Hara-Reid Date: Sat, 1 Apr 2017 20:42:19 +1100 Subject: [PATCH] Added test support for config.go --- config/config_tests/config_example.dat | 287 +++++++++++++++++++++++++ config/config_tests/config_test.go | 148 +++++++++++++ 2 files changed, 435 insertions(+) create mode 100644 config/config_tests/config_example.dat create mode 100644 config/config_tests/config_test.go diff --git a/config/config_tests/config_example.dat b/config/config_tests/config_example.dat new file mode 100644 index 00000000..973ffa04 --- /dev/null +++ b/config/config_tests/config_example.dat @@ -0,0 +1,287 @@ +{ + "Name": "Skynet", + "EncryptConfig": 0, + "Cryptocurrencies": "BTC,LTC,ETH,XRP,NMC,NVC,PPC,XBT,DOGE,DASH", + "PortfolioAddresses": { + "Addresses": [ + { + "Address": "1JCe8z4jJVNXSjohjM4i9Hh813dLCNx2Sy", + "CoinType": "BTC", + "Balance": 124178.0002442 + }, + { + "Address": "3Nxwenay9Z8Lc9JBiywExpnEFiLp6Afp8v", + "CoinType": "BTC", + "Balance": 103439.83659727 + }, + { + "Address": "LgY8ahfHRhvjVQC1zJnBhFMG5pCTMuKRqh", + "CoinType": "LTC", + "Balance": 3.00000005e+06 + }, + { + "Address": "0xb794f5ea0ba39494ce839613fffba74279579268", + "CoinType": "ETH", + "Balance": 5.774999820458524e+06 + } + ] + }, + "SMSGlobal": { + "Enabled": false, + "Username": "Username", + "Password": "Password", + "Contacts": [ + { + "Name": "Bob", + "Number": "12345", + "Enabled": false + } + ] + }, + "Webserver": { + "Enabled": false, + "AdminUsername": "admin", + "AdminPassword": "Password", + "ListenAddress": ":9050" + }, + "Exchanges": [ + { + "Name": "ANX", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCUSD,BTCHKD,BTCEUR,BTCCAD,BTCAUD,BTCSGD,BTCJPY,BTCGBP,BTCNZD,LTCBTC,DOGEBTC,STRBTC,XRPBTC", + "EnabledPairs": "BTCUSD,BTCHKD,BTCEUR,BTCCAD,BTCAUD,BTCSGD,BTCJPY,BTCGBP,BTCNZD,LTCBTC,DOGEBTC,STRBTC,XRPBTC", + "BaseCurrencies": "USD,HKD,EUR,CAD,AUD,SGD,JPY,GBP,NZD" + }, + { + "Name": "Bitfinex", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCUSD,LTCUSD,LTCBTC,ETHUSD,ETHBTC,ETCBTC,ETCUSD,BFXUSD,BFXBTC,RRTUSD,RRTBTC,ZECUSD,ZECBTC,XMRUSD,XMRBTC,DSHUSD,DSHBTC", + "EnabledPairs": "BTCUSD,LTCUSD,LTCBTC,ETHUSD,ETHBTC", + "BaseCurrencies": "USD" + }, + { + "Name": "Bitstamp", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "ClientID", + "AvailablePairs": "BTCUSD,BTCEUR,EURUSD,XRPUSD,XRPEUR", + "EnabledPairs": "BTCUSD,BTCEUR,EURUSD,XRPUSD,XRPEUR", + "BaseCurrencies": "USD,EUR" + }, + { + "Name": "BTCC", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCCNY,LTCCNY,LTCBTC", + "EnabledPairs": "BTCCNY,LTCCNY,LTCBTC", + "BaseCurrencies": "CNY" + }, + { + "Name": "BTCE", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCUSD,BTCRUR,BTCEUR,LTCBTC,LTCUSD,LTCRUR,LTCEUR,NMCBTC,NMCUSD,NVCBTC,NVCUSD,USDRUR,EURUSD,EURRUR,PPCBTC,PPCUSD", + "EnabledPairs": "BTCUSD,BTCRUR,BTCEUR,LTCBTC,LTCUSD,LTCRUR,LTCEUR,NMCBTC,NMCUSD,NVCBTC,NVCUSD,USDRUR,EURUSD,EURRUR,PPCBTC,PPCUSD", + "BaseCurrencies": "USD,RUR,EUR" + }, + { + "Name": "BTC Markets", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "LTC,BTC", + "EnabledPairs": "LTC,BTC", + "BaseCurrencies": "AUD" + }, + { + "Name": "GDAX", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "ClientID", + "AvailablePairs": "BTCGBP,BTCEUR,ETHUSD,ETHBTC,LTCUSD,LTCBTC,BTCUSD", + "EnabledPairs": "BTCUSD,BTCGBP,BTCEUR", + "BaseCurrencies": "USD,GBP,EUR" + }, + { + "Name": "Gemini", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCUSD,ETHBTC,ETHUSD", + "EnabledPairs": "BTCUSD", + "BaseCurrencies": "USD" + }, + { + "Name": "Huobi", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCCNY,LTCCNY", + "EnabledPairs": "BTCCNY,LTCCNY", + "BaseCurrencies": "CNY" + }, + { + "Name": "ITBIT", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "ClientID", + "AvailablePairs": "XBTUSD,XBTSGD,XBTEUR", + "EnabledPairs": "XBTUSD,XBTSGD,XBTEUR", + "BaseCurrencies": "USD,SGD,EUR" + }, + { + "Name": "Kraken", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "ETCUSD,ICNETH,REPXBT,ZECXBT,ETHXBT,ETHXBT.d,ETHGBP,LTCXBT,XBTGBP.d,XDGXBT,XMRUSD,ZECUSD,ETCETH,ETHJPY,XBTCAD.d,XBTJPY.d,XBTUSD.d,XLMXBT,XLMEUR,XLMUSD,XMREUR,ETCXBT,ETHCAD.d,ETHEUR.d,ETHJPY.d,XBTEUR.d,ETHEUR,ETHGBP.d,ICNXBT,LTCEUR,REPEUR,XBTGBP,XBTJPY,ETHUSD,ETHUSD.d,LTCUSD,REPETH,XBTUSD,XMRXBT,ETCEUR,ETHCAD,REPUSD,XBTCAD,XBTEUR,XRPXBT,ZECEUR", + "EnabledPairs": "ETCUSD,XBTUSD,ETHUSD", + "BaseCurrencies": "EUR,USD,CAD,GBP,JPY" + }, + { + "Name": "LakeBTC", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCUSD,BTCEUR,USDHKD,AUDUSD,BTCGBP,BTCNZD,USDJPY,BTCSGD,BTCNGN,EURUSD,USDSGD,NZDUSD,USDNGN,USDCHF,BTCJPY,BTCAUD,BTCCAD,BTCCHF,GBPUSD,USDCAD", + "EnabledPairs": "BTCUSD,BTCAUD", + "BaseCurrencies": "USD,EUR,HKD,AUD,GBP,NZD,JPY,SGD,NGN,CHF,CAD" + }, + { + "Name": "Liqui", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "TIME_BTC,ETH_BTC,GNT_BTC,WAVES_BTC,ICN_BTC,1ST_BTC,WINGS_BTC,MLN_BTC,ROUND_BTC,VSL_BTC,LTC_BTC,DCT_BTC,INCNT_BTC,PLU_BTC,DASH_BTC", + "EnabledPairs": "ETH_BTC,LTC_BTC,DASH_BTC", + "BaseCurrencies": "USD" + }, + { + "Name": "LocalBitcoins", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCARS,BTCAUD,BTCBRL,BTCCAD,BTCCHF,BTCCZK,BTCDKK,BTCEUR,BTCGBP,BTCHKD,BTCILS,BTCINR,BTCMXN,BTCNOK,BTCNZD,BTCPLN,BTCRUB,BTCSEK,BTCSGD,BTCTHB,BTCUSD,BTCZAR", + "EnabledPairs": "BTCARS,BTCAUD,BTCBRL,BTCCAD,BTCCHF,BTCCZK,BTCDKK,BTCEUR,BTCGBP,BTCHKD,BTCILS,BTCINR,BTCMXN,BTCNOK,BTCNZD,BTCPLN,BTCRUB,BTCSEK,BTCSGD,BTCTHB,BTCUSD,BTCZAR", + "BaseCurrencies": "ARS,AUD,BRL,CAD,CHF,CZK,DKK,EUR,GBP,HKD,ILS,INR,MXN,NOK,NZD,PLN,RUB,SEK,SGD,THB,USD,ZAR" + }, + { + "Name": "OKCOIN China", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCCNY,LTCCNY", + "EnabledPairs": "BTCCNY,LTCCNY", + "BaseCurrencies": "CNY" + }, + { + "Name": "OKCOIN International", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTCUSD,LTCUSD", + "EnabledPairs": "BTCUSD,LTCUSD", + "BaseCurrencies": "USD" + }, + { + "Name": "Poloniex", + "Enabled": true, + "Verbose": false, + "Websocket": false, + "RESTPollingDelay": 10, + "AuthenticatedAPISupport": false, + "APIKey": "Key", + "APISecret": "Secret", + "ClientID": "", + "AvailablePairs": "BTC_XUSD,BTC_FCT,BTC_MMNXT,BTC_NMC,BTC_BITUSD,BTC_RDD,BTC_XMR,BTC_XST,BTC_DSH,BTC_MAID,BTC_DGB,BTC_NEOS,BTC_BLK,BTC_NAUT,BTC_NBT,BTC_XCP,BTC_STR,BTC_BTCD,BTC_GRC,BTC_HUC,BTC_BBR,BTC_XDN,BTC_INDEX,BTC_IOC,BTC_SWARM,BTC_EMC2,BTC_MCN,BTC_NOXT,BTC_MINT,BTC_PTS,BTC_SC,BTC_GEO,BTC_XRP,BTC_FLO,BTC_BITS,BTC_HYP,BTC_XCR,BTC_LTBC,BTC_SYS,BTC_GMC,BTC_ETH,BTC_SYNC,BTC_GAP,BTC_BCN,BTC_C2,BTC_PINK,BTC_FIBRE,BTC_POT,BTC_QTL,BTC_SDC,BTC_XC,BTC_DASH,BTC_SILK,BTC_CLAM,BTC_NAV,BTC_PIGGY,BTC_BCY,BTC_MIL,BTC_XCN,BTC_YACC,BTC_BTS,BTC_QBK,BTC_SJCX,BTC_LQD,BTC_BURST,BTC_RIC,BTC_VRC,BTC_LTC,BTC_XPB,BTC_GRS,BTC_XCH,BTC_ARCH,BTC_QORA,BTC_HZ,BTC_NSR,BTC_XPM,BTC_BITCNY,BTC_EXE,BTC_XMG,BTC_BTC,BTC_BTM,BTC_NOBL,BTC_NXT,BTC_DOGE,BTC_CURE,BTC_MNTA,BTC_ADN,BTC_EXP,BTC_VTC,BTC_FLDC,BTC_MRS,BTC_MYR,BTC_OMNI,BTC_VNL,BTC_USDT,BTC_NOTE,BTC_WDC,BTC_BELA,BTC_VIA,BTC_CGA,BTC_DIEM,BTC_IFC,BTC_XDP,BTC_BLOCK,BTC_MMC,BTC_1CR,BTC_UNITY,BTC_XBC,BTC_GEMZ,BTC_FLT,BTC_PPC,BTC_XEM,BTC_RBY,BTC_CNMT,BTC_ABY,XMR_XDN,XMR_IFC,XMR_DIEM,XMR_BBR,XMR_DSH,XMR_BCN,XMR_LTC,XMR_MAID,XMR_DASH,XMR_BTCD,XMR_HYP,XMR_BLK,XMR_QORA,XMR_MNTA,XMR_NXT,USDT_BTC,USDT_ETH,USDT_XRP,USDT_DASH,USDT_LTC,USDT_NXT,USDT_XMR,USDT_STR", + "EnabledPairs": "BTC_LTC,BTC_ETH,BTC_DOGE,BTC_DASH,BTC_XRP", + "BaseCurrencies": "USD" + } + ] +} \ No newline at end of file diff --git a/config/config_tests/config_test.go b/config/config_tests/config_test.go new file mode 100644 index 00000000..23829c77 --- /dev/null +++ b/config/config_tests/config_test.go @@ -0,0 +1,148 @@ +package test + +import ( + "testing" + + "github.com/thrasher-/gocryptotrader/config" +) + +func TestGetConfigEnabledExchanges(t *testing.T) { + t.Parallel() + + defaultEnabledExchanges := 17 + GetConfigEnabledExchanges := config.GetConfig() + err := GetConfigEnabledExchanges.LoadConfig() + if err != nil { + t.Error("Test failed. GetConfigEnabledExchanges load config error: " + err.Error()) + } + enabledExch := GetConfigEnabledExchanges.GetConfigEnabledExchanges() + if enabledExch != defaultEnabledExchanges { + t.Error("Test failed. GetConfigEnabledExchanges is wrong") + } +} + +func TestGetExchangeConfig(t *testing.T) { + t.Parallel() + + GetExchangeConfig := config.GetConfig() + err := GetExchangeConfig.LoadConfig() + if err != nil { + t.Errorf("Test failed. GetExchangeConfig.LoadConfig Error: %s", err.Error()) + } + r, err := GetExchangeConfig.GetExchangeConfig("ANX") + if err != nil && (config.ExchangeConfig{}) == r { + t.Errorf("Test failed. GetExchangeConfig.GetExchangeConfig Error: %s", err.Error()) + } +} + +func TestUpdateExchangeConfig(t *testing.T) { + t.Parallel() + + UpdateExchangeConfig := config.GetConfig() + err := UpdateExchangeConfig.LoadConfig() + if err != nil { + t.Errorf("Test failed. UpdateExchangeConfig.LoadConfig Error: %s", err.Error()) + } + e, err2 := UpdateExchangeConfig.GetExchangeConfig("ANX") + if err2 != nil { + t.Errorf("Test failed. UpdateExchangeConfig.GetExchangeConfig: %s", err.Error()) + } + e.APIKey = "test1234" + err3 := UpdateExchangeConfig.UpdateExchangeConfig(e) + if err3 != nil { + t.Errorf("Test failed. UpdateExchangeConfig.UpdateExchangeConfig: %s", err.Error()) + } +} + +func TestCheckSMSGlobalConfigValues(t *testing.T) { + t.Parallel() + + checkSMSGlobalConfigValues := config.GetConfig() + err := checkSMSGlobalConfigValues.LoadConfig() + if err != nil { + t.Errorf("Test failed. checkSMSGlobalConfigValues.LoadConfig: %s", err) + } + err2 := checkSMSGlobalConfigValues.CheckSMSGlobalConfigValues() + if err2 == nil { + t.Error("Test failed. checkSMSGlobalConfigValues.CheckSMSGlobalConfigValues: Incorrect Return Value") + } +} + +func TestCheckExchangeConfigValues(t *testing.T) { + t.Parallel() + + checkExchangeConfigValues := config.Config{} + err := checkExchangeConfigValues.LoadConfig() + if err != nil { + t.Errorf("Test failed. checkExchangeConfigValues.LoadConfig: %s", err.Error()) + } + + checkExchangeConfigValues.Exchanges[0].AuthenticatedAPISupport = true + + err3 := checkExchangeConfigValues.CheckExchangeConfigValues() + if err3 != nil { + t.Errorf("Test failed. checkExchangeConfigValues.CheckExchangeConfigValues: %s", err.Error()) + } +} + +func TestCheckWebserverConfigValues(t *testing.T) { + t.Parallel() + + checkWebserverConfigValues := config.GetConfig() + err := checkWebserverConfigValues.LoadConfig() + if err != nil { + t.Errorf("Test failed. checkWebserverConfigValues.LoadConfig: %s", err.Error()) + } + err2 := checkWebserverConfigValues.CheckWebserverConfigValues() + if err2 != nil { + t.Errorf("Test failed. checkWebserverConfigValues.CheckWebserverConfigValues: %s", err2.Error()) + } +} + +func TestRetrieveConfigCurrencyPairs(t *testing.T) { + t.Parallel() + + retrieveConfigCurrencyPairs := config.GetConfig() + err := retrieveConfigCurrencyPairs.LoadConfig() + if err != nil { + t.Errorf("Test failed. checkWebserverConfigValues.LoadConfig: %s", err.Error()) + } + err2 := retrieveConfigCurrencyPairs.RetrieveConfigCurrencyPairs() + if err2 != nil { + t.Errorf("Test failed. checkWebserverConfigValues.RetrieveConfigCurrencyPairs: %s", err2.Error()) + } +} + +func TestReadConfig(t *testing.T) { + t.Parallel() + + readConfig := config.GetConfig() + err := readConfig.ReadConfig() + if err != nil { + t.Error("Test failed. TestReadConfig" + err.Error()) + } +} + +func TestLoadConfig(t *testing.T) { + t.Parallel() + + loadConfig := config.GetConfig() + err := loadConfig.LoadConfig() + if err != nil { + t.Error("Test failed. TestLoadConfig" + err.Error()) + } +} + +func TestSaveConfig(t *testing.T) { + t.Parallel() + + saveConfig := config.GetConfig() + err := saveConfig.LoadConfig() + if err != nil { + t.Errorf("Test failed. TestSaveConfig.LoadConfig: %s", err.Error()) + } + err2 := saveConfig.SaveConfig() + if err2 != nil { + t.Error("Test failed. TestSaveConfig.SaveConfig, %s", err2.Error()) + } +}