mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-05-17 23:16:52 +00:00
* WIP * Variable Name Changes and other PR Changes * Name Changes and Error Checks * WIP * Some new functionality added and nits fixed * WIP on Nits * More trello functionality added and some PR changes * Minor changes and linter fixes * Errors Fixed and some PR Changes * PR Changes * WIP * WIP * Addition of Config * WIP of Readme file * Readme WIP * Addition of ReadMe * Linter Issues fixed * Minor Errors fixed * fixed test timeout issues and added api keys check for tests * Errors fixed * Nits WIP * Nits fixed * More efficient mutex usage * Consts cleaned up * Readme file fixed * linter issues fixed * format issues: * readme updates and nits * remove backup file and address nits * backup file removed for real * OkexOkcoin updates and linter fixes * errors fixed * Nits * errors fixed * formatting issues * race conditions fixed * files fixed * go mod n go sum * WIP adding rate limits * Added rate limits * Remove test vars * go mod tidy * improving readme file and 2digits for trello auto update * Added space * removed space * addressing nits * documentation update * more nits * board id check * linter fixes * test race fixed * test file match * errors fixed * nitz * LOWERCASE flags * more nitz * broken wip * flag addition fixed * error fixed * documentation updated for adding exchange using flags * something * add comment * nitz fixed * pr changes * added gemini exchange * testfile saving changes * nitz * fixing done * pr changes * nits * WIP * minor error fix * wip * wip * WIP * pr changes * pr changes * pr changes * nits * nits fixed * t.Fail removed * nitz * disable lakeBTC * contributors fixed contributors fixed ALL THE NITZ OMG * OMGGG ALL THE NITZ OMG * name change errors fixed * linter issues fixed * linterzz * Added disabling feature for exchanges * bug fix * small feature added * fixed bug fix: no keys * nits * test * test2 * test 3 * linter fixed * testing * testing * remove logs * OMG * bugfix * cyam88888 * nits * error handled * minor nits fixed createnewcheck issue fixed createnewcheck issue * functionality change some functionality changes no api keys 4u :D * trello names thro config * err check
175 lines
6.2 KiB
Markdown
175 lines
6.2 KiB
Markdown
# GoCryptoTrader package Mock
|
|
|
|
<img src="https://github.com/thrasher-corp/gocryptotrader/blob/master/web/src/assets/page-logo.png?raw=true" width="350px" height="350px" hspace="70">
|
|
|
|
|
|
[](https://travis-ci.org/thrasher-corp/gocryptotrader)
|
|
[](https://github.com/thrasher-corp/gocryptotrader/blob/master/LICENSE)
|
|
[](https://godoc.org/github.com/thrasher-corp/gocryptotrader/exchanges/mock)
|
|
[](http://codecov.io/github/thrasher-corp/gocryptotrader?branch=master)
|
|
[](https://goreportcard.com/report/github.com/thrasher-corp/gocryptotrader)
|
|
|
|
|
|
This Mock package is part of the GoCryptoTrader codebase.
|
|
|
|
## This is still in active development
|
|
|
|
You can track ideas, planned features and what's in progress on this Trello board: [https://trello.com/b/ZAhMhpOy/gocryptotrader](https://trello.com/b/ZAhMhpOy/gocryptotrader).
|
|
|
|
Join our slack to discuss all things related to GoCryptoTrader! [GoCryptoTrader Slack](https://join.slack.com/t/gocryptotrader/shared_invite/enQtNTQ5NDAxMjA2Mjc5LTc5ZDE1ZTNiOGM3ZGMyMmY1NTAxYWZhODE0MWM5N2JlZDk1NDU0YTViYzk4NTk3OTRiMDQzNGQ1YTc4YmRlMTk)
|
|
|
|
## Mock Testing Suite
|
|
|
|
### Current Features
|
|
|
|
+ REST recording service
|
|
+ REST mock response server
|
|
|
|
### How to enable
|
|
|
|
+ Mock testing is enabled by default in some exchanges; to disable and run live endpoint testing parse -tags=mock_test_off as a go test param.
|
|
|
|
+ To record a live endpoint create two files for an exchange.
|
|
|
|
### file one - your_current_exchange_name_live_test.go
|
|
|
|
```go
|
|
//+build mock_test_off
|
|
|
|
// This will build if build tag mock_test_off is parsed and will do live testing
|
|
// using all tests in (exchange)_test.go
|
|
package your_current_exchange_name
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
"log"
|
|
|
|
"github.com/thrasher-corp/gocryptotrader/config"
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues"
|
|
)
|
|
|
|
var mockTests = false
|
|
|
|
func TestMain(m *testing.M) {
|
|
cfg := config.GetConfig()
|
|
cfg.LoadConfig("../../testdata/configtest.json")
|
|
your_current_exchange_nameConfig, err := cfg.GetExchangeConfig("your_current_exchange_name")
|
|
if err != nil {
|
|
log.Fatal("your_current_exchange_name Setup() init error", err)
|
|
}
|
|
your_current_exchange_nameConfig.AuthenticatedAPISupport = true
|
|
your_current_exchange_nameConfig.APIKey = apiKey
|
|
your_current_exchange_nameConfig.APISecret = apiSecret
|
|
l.SetDefaults()
|
|
l.Setup(&your_current_exchange_nameConfig)
|
|
log.Printf(sharedtestvalues.LiveTesting, l.Name, l.APIUrl)
|
|
os.Exit(m.Run())
|
|
}
|
|
```
|
|
|
|
### file two - your_current_exchange_name_mock_test.go
|
|
|
|
```go
|
|
//+build !mock_test_off
|
|
|
|
// This will build if build tag mock_test_off is not parsed and will try to mock
|
|
// all tests in _test.go
|
|
package your_current_exchange_name
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
"log"
|
|
|
|
"github.com/thrasher-corp/gocryptotrader/config"
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/mock"
|
|
"github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues"
|
|
)
|
|
|
|
const mockfile = "../../testdata/http_mock/your_current_exchange_name/your_current_exchange_name.json"
|
|
|
|
var mockTests = true
|
|
|
|
func TestMain(m *testing.M) {
|
|
cfg := config.GetConfig()
|
|
cfg.LoadConfig("../../testdata/configtest.json")
|
|
your_current_exchange_nameConfig, err := cfg.GetExchangeConfig("your_current_exchange_name")
|
|
if err != nil {
|
|
log.Fatal("your_current_exchange_name Setup() init error", err)
|
|
}
|
|
your_current_exchange_nameConfig.AuthenticatedAPISupport = true
|
|
your_current_exchange_nameConfig.APIKey = apiKey
|
|
your_current_exchange_nameConfig.APISecret = apiSecret
|
|
l.SetDefaults()
|
|
l.Setup(&your_current_exchange_nameConfig)
|
|
|
|
serverDetails, newClient, err := mock.NewVCRServer(mockfile)
|
|
if err != nil {
|
|
log.Fatalf("Mock server error %s", err)
|
|
}
|
|
|
|
g.HTTPClient = newClient
|
|
g.APIUrl = serverDetails
|
|
|
|
log.Printf(sharedtestvalues.MockTesting, l.Name, l.APIUrl)
|
|
os.Exit(m.Run())
|
|
}
|
|
|
|
```
|
|
|
|
+ Once those files are completed go through each invidual test function and add
|
|
|
|
```go
|
|
var s SomeExchange
|
|
|
|
func TestDummyTest(t *testing.T) {
|
|
s.APIURL = exchangeDefaultURL // This will overwrite the current mock url at localhost
|
|
s.Verbose = true // This will show you some fancy debug output
|
|
s.HTTPRecording = true // This will record the request and response payloads
|
|
|
|
err := s.SomeExchangeEndpointFunction()
|
|
// check error
|
|
}
|
|
```
|
|
|
|
+ After this is completed it should populate a new mocktest.json file for you with the relavent payloads in testdata
|
|
+ To check if the recording was successful, comment out recording and apiurl changes, then re-run test.
|
|
|
|
```go
|
|
var s SomeExchange
|
|
|
|
func TestDummyTest(t *testing.T) {
|
|
// s.APIURL = exchangeDefaultURL // This will overwrite the current mock url at localhost
|
|
s.Verbose = true // This will show you some fancy debug output
|
|
// s.HTTPRecording = true // This will record the request and response payloads
|
|
|
|
err := s.SomeExchangeEndpointFunction()
|
|
// check error
|
|
}
|
|
```
|
|
|
|
+ The payload should be the same.
|
|
|
|
### Please click GoDocs chevron above to view current GoDoc information for this package
|
|
|
|
## Contribution
|
|
|
|
Please feel free to submit any pull requests or suggest any desired features to be added.
|
|
|
|
When submitting a PR, please abide by our coding guidelines:
|
|
|
|
+ Code must adhere to the official Go [formatting](https://golang.org/doc/effective_go.html#formatting) guidelines (i.e. uses [gofmt](https://golang.org/cmd/gofmt/)).
|
|
+ Code must be documented adhering to the official Go [commentary](https://golang.org/doc/effective_go.html#commentary) guidelines.
|
|
+ Code must adhere to our [coding style](https://github.com/thrasher-corp/gocryptotrader/blob/master/doc/coding_style.md).
|
|
+ Pull requests need to be based on and opened against the `master` branch.
|
|
|
|
## Donations
|
|
|
|
<img src="https://github.com/thrasher-corp/gocryptotrader/blob/master/web/src/assets/donate.png?raw=true" hspace="70">
|
|
|
|
If this framework helped you in any way, or you would like to support the developers working on it, please donate Bitcoin to:
|
|
|
|
***bc1qk0jareu4jytc0cfrhr5wgshsq8282awpavfahc***
|
|
|