github.com/frankrap/okex-api@v1.0.4/swap_test.go (about) 1 package okex 2 3 /* 4 OKEX Swap Rest Api. Unit test 5 @author Lingting Fu 6 @date 2018-12-27 7 @version 1.0.0 8 */ 9 10 import ( 11 "fmt" 12 "os" 13 "reflect" 14 "testing" 15 "time" 16 17 "github.com/stretchr/testify/assert" 18 ) 19 20 func TestGetSwapInstrumentPosition(t *testing.T) { 21 c := NewTestClient() 22 sp, err := c.GetSwapPositionByInstrument("BTC-USD-SWAP") 23 assert.True(t, err == nil) 24 jstr, _ := Struct2JsonString(sp) 25 println(jstr) 26 } 27 28 func TestGetSwapPositions(t *testing.T) { 29 c := NewTestClient() 30 sp, err := c.GetSwapPositions() 31 simpleAssertTrue(sp, err, t, false) 32 } 33 34 func TestGetSwapAccount(t *testing.T) { 35 c := NewTestClient() 36 sa, err := c.GetSwapAccount("BTC-USD-SWAP") 37 simpleAssertTrue(sa, err, t, false) 38 } 39 40 type JsonTestType struct { 41 Asks [][]interface{} `json:"asks"` 42 } 43 44 func TestJson(t *testing.T) { 45 a := string(`{"asks" : [["411.5","9",4,3]]}`) 46 i := JsonTestType{} 47 JsonString2Struct(a, &i) 48 simpleAssertTrue(i, nil, t, false) 49 50 str, _ := Struct2JsonString(i) 51 println(str) 52 } 53 54 func TestMap(t *testing.T) { 55 m := map[string]string{} 56 m["a"] = "1999" 57 58 r := m["b"] 59 assert.True(t, r == "" && len(r) == 0) 60 61 r2 := m["a"] 62 assert.True(t, r2 == "1999") 63 } 64 65 func TestClient_PublicAPI(t *testing.T) { 66 c := NewTestClient() 67 instrumentId := "BTC-USD-SWAP" 68 histList, err := c.GetSwapHistoricalFundingRateByInstrument(instrumentId, nil) 69 fmt.Printf("%+v", err) 70 assert.True(t, histList != nil && err == nil) 71 fmt.Printf("%+v", histList) 72 73 r, err := c.GetSwapMarkPriceByInstrument(instrumentId) 74 fmt.Printf("Result: %+v, Error: %+v", r, err) 75 assert.True(t, r != nil && err == nil) 76 77 r1, err := c.GetSwapFundingTimeByInstrument(instrumentId) 78 fmt.Printf("Result: %+v, Error: %+v", r1, err) 79 assert.True(t, r1 != nil && err == nil) 80 81 r2, err := c.GetSwapAccountsHoldsByInstrument(instrumentId) 82 fmt.Printf("Result: %+v, Error: %+v", r2, err) 83 assert.True(t, r2 != nil && err == nil) 84 85 r3, err := c.GetSwapLiquidationByInstrument(instrumentId, "1", nil) 86 fmt.Printf("Result: %+v, Error: %+v", r3, err) 87 assert.True(t, r3 != nil && err == nil) 88 89 optionalParams := map[string]string{} 90 optionalParams["from"] = "1" 91 optionalParams["to"] = "5" 92 optionalParams["limit"] = "50" 93 94 r4, err := c.GetSwapLiquidationByInstrument(instrumentId, "0", optionalParams) 95 fmt.Printf("Result: %+v, Error: %+v", r4, err) 96 assert.True(t, r4 != nil && err == nil) 97 98 r5, err := c.GetSwapPriceLimitByInstrument(instrumentId) 99 fmt.Printf("Result: %+v, Error: %+v", r5, err) 100 assert.True(t, r5 != nil && err == nil) 101 102 r6, err := c.GetSwapOpenInterestByInstrument(instrumentId) 103 fmt.Printf("Result: %+v, Error: %+v", r6, err) 104 assert.True(t, r6 != nil && err == nil) 105 106 r7, err := c.GetSwapIndexByInstrument(instrumentId) 107 fmt.Printf("Result: %+v, Error: %+v", r7, err) 108 assert.True(t, r7 != nil && err == nil) 109 110 //lingting.fu. 20190225. No Kline in test enviroment, contact LiWei to solve env problem. 111 //r8, err := c.GetSwapCandlesByInstrument(instrumentId, nil) 112 //fmt.Printf("Result: %+v, Error: %+v", r8, err) 113 //assert.True(t, r8 != nil && err == nil) 114 115 r9, err := c.GetSwapTradesByInstrument(instrumentId, nil) 116 fmt.Printf("Result: %+v, Error: %+v", r9, err) 117 assert.True(t, r9 != nil && err == nil) 118 119 r10, err := c.GetSwapTickerByInstrument(instrumentId) 120 fmt.Printf("Result: %+v, Error: %+v", r10, err) 121 assert.True(t, r10 != nil && err == nil) 122 123 r11, err := c.GetSwapInstruments() 124 fmt.Printf("Result: %+v, Error: %+v", r11, err) 125 assert.True(t, r11 != nil && err == nil) 126 127 r12, err := c.GetSwapRate() 128 fmt.Printf("Result: %+v, Error: %+v", r12, err) 129 assert.True(t, r12 != nil && err == nil) 130 131 r13, err := c.GetSwapInstrumentsTicker() 132 simpleAssertTrue(r13, err, t, false) 133 134 depthParams := map[string]string{} 135 depthParams["size"] = "1" 136 depthParams["depth"] = "0.01" 137 r14, err := c.GetSwapDepthByInstrumentId(instrumentId, depthParams) 138 simpleAssertTrue(r14, err, t, false) 139 140 } 141 142 func simpleAssertTrue(result interface{}, err error, t *testing.T, doprint bool) bool { 143 if doprint { 144 fmt.Fprintf(os.Stderr, "Result: %+v, Error: %+v", result, err) 145 } 146 assert.True(t, result != nil && err == nil) 147 return result != nil && err == nil 148 } 149 150 func TestClient_PrivateAPI(t *testing.T) { 151 152 c := NewTestClient() 153 instrumentId := "BTC-USD-SWAP" 154 155 // Fore. 20190225. CleanUp history test order before new test start. 156 cleanUpOrders(c, instrumentId) 157 158 r1, err := c.GetSwapPositionByInstrument(instrumentId) 159 simpleAssertTrue(r1, err, t, false) 160 161 r2, err := c.GetSwapAccounts() 162 simpleAssertTrue(r2, err, t, false) 163 164 r3, err := c.GetSwapAccountsSettingsByInstrument(instrumentId) 165 simpleAssertTrue(r3, err, t, false) 166 167 _, r4, err := c.PostSwapAccountsLeverage(instrumentId, "20", "3") 168 simpleAssertTrue(r4, err, t, false) 169 170 _, r5, err := c.PostSwapAccountsLeverage(instrumentId, "50", "3") 171 simpleAssertTrue(r5, err, t, false) 172 assert.True(t, int(r5.Code) > 30000) 173 174 r6, err := c.GetSwapAccountLedger(instrumentId, nil) 175 simpleAssertTrue(r6, err, t, false) 176 177 order := BasePlaceOrderInfo{} 178 order.Size = "1" 179 order.Type = "1" 180 order.MatchPrice = "1" 181 order.Price = "100" 182 _, r7, err := c.PostSwapOrder(instrumentId, order) 183 simpleAssertTrue(r7, err, t, false) 184 185 order2 := BasePlaceOrderInfo{} 186 order2.Size = "1" 187 order2.Type = "1" 188 order2.MatchPrice = "1" 189 order2.Price = "200" 190 _, r8, err := c.PostSwapOrders(instrumentId, []*BasePlaceOrderInfo{&order, &order2}) 191 simpleAssertTrue(r8, err, t, false) 192 193 r81, err := c.GetSwapOrderByOrderId(instrumentId, r8.OrderInfo[0].OrderId) 194 simpleAssertTrue(r81, err, t, false) 195 196 orderId := r8.OrderInfo[0].OrderId 197 _, r9, err := c.PostSwapCancelOrder(instrumentId, orderId) 198 simpleAssertTrue(r9, err, t, false) 199 200 ids := []string{r8.OrderInfo[0].OrderId, r8.OrderInfo[1].OrderId} 201 _, r10, err := c.PostSwapBatchCancelOrders(instrumentId, ids) 202 simpleAssertTrue(r10, err, t, false) 203 204 params := map[string]string{} 205 params["status"] = "1" 206 params["from"] = "1" 207 params["to"] = "4" 208 params["limit"] = "100" 209 r11, err := c.GetSwapOrderByInstrumentId(instrumentId, params) 210 simpleAssertTrue(r11, err, t, false) 211 212 r12, err := c.GetSwapFills(instrumentId, orderId, nil) 213 simpleAssertTrue(r12, err, t, false) 214 } 215 216 func cleanUpOrders(c *Client, instrumentId string) { 217 params := NewParams() 218 currentPage := 1 219 params["status"] = "6" 220 params["limit"] = "100" 221 params["from"] = Int2String(currentPage) 222 orders := []string{} 223 224 rNotDealed, _ := c.GetSwapOrderByInstrumentId(instrumentId, params) 225 for rNotDealed != nil && len(rNotDealed.OrderInfo) > 0 { 226 for i := 0; i < len(rNotDealed.OrderInfo); i++ { 227 if rNotDealed.OrderInfo[i].OrderId != "" && len(rNotDealed.OrderInfo[i].OrderId) > 0 { 228 orders = append(orders, rNotDealed.OrderInfo[i].OrderId) 229 } 230 } 231 232 delta := 10 233 for i := 0; i < len(orders); i = i + delta { 234 upper := i + delta 235 if upper > len(orders)-1 { 236 upper = len(orders) - 1 237 } 238 c.PostSwapBatchCancelOrders(instrumentId, orders[i:upper]) 239 time.Sleep(time.Millisecond * 200) 240 println(i, i+delta) 241 } 242 243 currentPage += 1 244 params["from"] = Int2String(currentPage) 245 246 rNotDealed, _ = c.GetSwapOrderByInstrumentId(instrumentId, params) 247 } 248 } 249 250 func TestClient_Err(t *testing.T) { 251 252 c := NewTestClient() 253 c.Config.Endpoint = "http://192.168.80.113:930/" 254 255 r1, err := c.GetSwapRate() 256 assert.True(t, r1 == nil && err != nil) 257 } 258 259 func TestClient_SwapHistoricalFundingRate(t *testing.T) { 260 s := `[ 261 { 262 "instrument_id": "BTC-USD-SWAP", 263 "funding_rate": "0.00250000", 264 "realized_rate": "0.00249999", 265 "interest_rate": "0.00000000", 266 "funding_time": "2018-12-17T12:40:26.000Z" 267 } 268 ]` 269 r := SwapHistoricalFundingRateList{} 270 JsonString2Struct(s, &r) 271 assert.True(t, r != nil) 272 assert.True(t, len(r) >= 1) 273 } 274 275 func TestClient_reflect(t *testing.T) { 276 i := BasePlaceOrderInfo{} 277 tp := reflect.TypeOf(i) 278 fmt.Println(tp) 279 }