Files
gocryptotrader/exchanges/mock/recording_test.go
David Ackroyd c0d2ac5e51 Binance: replace deprecated /v1 API calls (#482)
Several /v1 API calls have been deprecated, and will be removed shortly.
 Moving these across to their /v3 equivalents

Capturing of the klines request via the recorder was failing, as it did
 not handle the structure where the klines response in an array of
 mixed primitive arrays. Excluding primitive values from the exclusion
 checks addresses this
2020-04-17 08:59:06 +10:00

210 lines
4.5 KiB
Go

package mock
import (
"encoding/json"
"net/http"
"net/url"
"strings"
"testing"
)
func TestGetFilteredHeader(t *testing.T) {
resp := http.Response{}
resp.Request = &http.Request{}
resp.Request.Header = http.Header{}
resp.Request.Header.Set("Key", "RiskyVals")
fMap, err := GetFilteredHeader(&resp)
if err != nil {
t.Error(err)
}
if fMap.Get("Key") != "" {
t.Error("risky vals where not replaced correctly")
}
}
func TestGetFilteredURLVals(t *testing.T) {
superSecretData := "Dr Seuss"
shadyVals := url.Values{}
shadyVals.Set("real_name", superSecretData)
cleanVals, err := GetFilteredURLVals(shadyVals)
if err != nil {
t.Error("GetFilteredURLVals error", err)
}
if strings.Contains(cleanVals, superSecretData) {
t.Error("Super secret data found")
}
}
func TestCheckResponsePayload(t *testing.T) {
testbody := struct {
SomeJSON string `json:"stuff"`
}{
SomeJSON: "REAAAAHHHHH",
}
payload, err := json.Marshal(testbody)
if err != nil {
t.Fatal("json marshal error", err)
}
data, err := CheckResponsePayload(payload)
if err != nil {
t.Error("CheckBody error", err)
}
expected := `{
"stuff": "REAAAAHHHHH"
}`
if string(data) != expected {
t.Error("unexpected returned data")
}
}
type TestStructLevel0 struct {
StringVal string `json:"stringVal"`
FloatVal float64 `json:"floatVal"`
IntVal int64 `json:"intVal"`
StructVal TestStructLevel1 `json:"structVal"`
MixedSlice []interface{} `json:"mixedSlice"`
}
type TestStructLevel1 struct {
OkayVal string `json:"okayVal"`
OkayVal2 float64 `json:"okayVal2"`
BadVal string `json:"user"`
BadVal2 int `json:"bsb"`
OtherData TestStructLevel2 `json:"otherVals"`
}
type TestStructLevel2 struct {
OkayVal string `json:"okayVal"`
OkayVal2 float64 `json:"okayVal2"`
BadVal float32 `json:"name"`
BadVal2 int32 `json:"real_name"`
OtherData TestStructLevel3 `json:"moreOtherVals"`
}
type TestStructLevel3 struct {
OkayVal string `json:"okayVal"`
OkayVal2 float64 `json:"okayVal2"`
BadVal int64 `json:"receiver_name"`
BadVal2 string `json:"account_number"`
}
func TestCheckJSON(t *testing.T) {
level3 := TestStructLevel3{
OkayVal: "stuff",
OkayVal2: 129219,
BadVal: 1337,
BadVal2: "Super Secret Password",
}
level2 := TestStructLevel2{
OkayVal: "stuff",
OkayVal2: 129219,
BadVal: 0.222,
BadVal2: 1337888888,
OtherData: level3,
}
level1 := TestStructLevel1{
OkayVal: "stuff",
OkayVal2: 120938,
BadVal: "CritcalBankingStuff",
BadVal2: 1337,
OtherData: level2,
}
sliceOfPrimitives := []interface{}{
[]interface{}{float64(1586994000000), "6615.23000000"},
[]interface{}{float64(1586994300000), "6624.74000000"},
}
testVal := TestStructLevel0{
StringVal: "somestringstuff",
FloatVal: 3.14,
IntVal: 1337,
StructVal: level1,
MixedSlice: sliceOfPrimitives,
}
exclusionList, err := GetExcludedItems()
if err != nil {
t.Error("GetExcludedItems error", err)
}
vals, err := CheckJSON(testVal, &exclusionList)
if err != nil {
t.Error("Check JSON error", err)
}
payload, err := json.Marshal(vals)
if err != nil {
t.Fatal("json marshal error", err)
}
newStruct := TestStructLevel0{}
err = json.Unmarshal(payload, &newStruct)
if err != nil {
t.Fatal("Umarshal error", err)
}
if newStruct.StructVal.BadVal != "" {
t.Error("Value not wiped correctly")
}
if newStruct.StructVal.BadVal2 != 0 {
t.Error("Value not wiped correctly")
}
if newStruct.StructVal.OtherData.BadVal != 0 {
t.Error("Value not wiped correctly")
}
if newStruct.StructVal.OtherData.BadVal2 != 0 {
t.Error("Value not wiped correctly")
}
if newStruct.StructVal.OtherData.OtherData.BadVal != 0 {
t.Error("Value not wiped correctly")
}
if newStruct.StructVal.OtherData.OtherData.BadVal2 != "" {
t.Error("Value not wiped correctly")
}
vals, err = CheckJSON(sliceOfPrimitives, &exclusionList)
if err != nil {
t.Error("Check JSON error", err)
}
payload, err = json.Marshal(vals)
if err != nil {
t.Fatal("json marshal error", err)
}
var newSlice []interface{}
err = json.Unmarshal(payload, &newSlice)
if err != nil {
t.Fatal("Unmarshal error", err)
}
}
func TestGetExcludedItems(t *testing.T) {
exclusionList, err := GetExcludedItems()
if err != nil {
t.Error("GetExcludedItems error", err)
}
if len(exclusionList.Headers) == 0 {
t.Error("Header exclusion list not popoulated")
}
if len(exclusionList.Variables) == 0 {
t.Error("Variable exclusion list not popoulated")
}
}