@@ -17,6 +17,8 @@ package v4
17
17
18
18
import (
19
19
"net/http"
20
+ "net/url"
21
+ "reflect"
20
22
"sort"
21
23
"strings"
22
24
"testing"
@@ -36,15 +38,24 @@ func TestRegions(t *testing.T) {
36
38
header .Set (rfc .IfModifiedSince , time )
37
39
header .Set (rfc .IfUnmodifiedSince , time )
38
40
SortTestRegions (t )
41
+ SortTestRegionsDesc (t )
39
42
UpdateTestRegions (t )
40
43
UpdateTestRegionsWithHeaders (t , header )
41
44
GetTestRegions (t )
42
45
GetTestRegionsIMSAfterChange (t , header )
43
46
DeleteTestRegionsByName (t )
47
+ VerifyPaginationSupportRegion (t )
44
48
header = make (map [string ][]string )
45
49
etag := rfc .ETag (currentTime )
46
50
header .Set (rfc .IfMatch , etag )
47
51
UpdateTestRegionsWithHeaders (t , header )
52
+ DeleteTestRegionsByInvalidId (t )
53
+ DeleteTestRegionsByInvalidName (t )
54
+ GetTestRegionByInvalidId (t )
55
+ GetTestRegionByInvalidName (t )
56
+ GetTestRegionByDivision (t )
57
+ GetTestRegionByInvalidDivision (t )
58
+ CreateTestRegionsInvalidDivision (t )
48
59
})
49
60
}
50
61
@@ -112,6 +123,15 @@ func GetTestRegionsIMSAfterChange(t *testing.T, header http.Header) {
112
123
}
113
124
}
114
125
126
+ func GetTestRegions (t * testing.T ) {
127
+ for _ , region := range testData .Regions {
128
+ resp , _ , err := TOSession .GetRegionByName (region .Name , nil )
129
+ if err != nil {
130
+ t .Errorf ("cannot GET Region by region: %v - %v" , err , resp )
131
+ }
132
+ }
133
+ }
134
+
115
135
func CreateTestRegions (t * testing.T ) {
116
136
117
137
for _ , region := range testData .Regions {
@@ -124,9 +144,8 @@ func CreateTestRegions(t *testing.T) {
124
144
}
125
145
126
146
func SortTestRegions (t * testing.T ) {
127
- var header http.Header
128
147
var sortedList []string
129
- resp , _ , err := TOSession .GetRegions (header )
148
+ resp , _ , err := TOSession .GetRegions (nil , nil )
130
149
if err != nil {
131
150
t .Fatalf ("Expected no error, but got %v" , err .Error ())
132
151
}
@@ -142,6 +161,38 @@ func SortTestRegions(t *testing.T) {
142
161
}
143
162
}
144
163
164
+ func SortTestRegionsDesc (t * testing.T ) {
165
+
166
+ respAsc , _ , err1 := TOSession .GetRegions (nil , nil )
167
+ params := url.Values {}
168
+ params .Set ("sortOrder" , "desc" )
169
+ respDesc , _ , err2 := TOSession .GetRegions (params , nil )
170
+
171
+ if err1 != nil {
172
+ t .Errorf ("Expected no error, but got error in Regions Ascending %v" , err1 )
173
+ }
174
+ if err2 != nil {
175
+ t .Errorf ("Expected no error, but got error in Regions Descending %v" , err2 )
176
+ }
177
+ if len (respAsc ) == len (respDesc ) {
178
+ if len (respAsc ) > 0 && len (respDesc ) > 0 {
179
+ // reverse the descending-sorted response and compare it to the ascending-sorted one
180
+ for start , end := 0 , len (respDesc )- 1 ; start < end ; start , end = start + 1 , end - 1 {
181
+ respDesc [start ], respDesc [end ] = respDesc [end ], respDesc [start ]
182
+ }
183
+ if respDesc [0 ].Name != "" && respAsc [0 ].Name != "" {
184
+ if ! reflect .DeepEqual (respDesc [0 ].Name , respAsc [0 ].Name ) {
185
+ t .Errorf ("Regions responses are not equal after reversal: Asc: %s - Desc: %s" , respDesc [0 ].Name , respAsc [0 ].Name )
186
+ }
187
+ }
188
+ } else {
189
+ t .Errorf ("No Response returned from GET Regions using SortOrder" )
190
+ }
191
+ } else {
192
+ t .Fatalf ("Region response length are not equal Asc: %d Desc: %d" , len (respAsc ), len (respDesc ))
193
+ }
194
+ }
195
+
145
196
func UpdateTestRegions (t * testing.T ) {
146
197
147
198
firstRegion := testData .Regions [0 ]
@@ -175,15 +226,90 @@ func UpdateTestRegions(t *testing.T) {
175
226
if err != nil {
176
227
t .Errorf ("cannot UPDATE Region by id: %v - %v" , err , alert )
177
228
}
178
-
179
229
}
180
230
181
- func GetTestRegions (t * testing.T ) {
182
- for _ , region := range testData .Regions {
183
- resp , _ , err := TOSession .GetRegionByName (region .Name , nil )
184
- if err != nil {
185
- t .Errorf ("cannot GET Region by region: %v - %v" , err , resp )
231
+ func VerifyPaginationSupportRegion (t * testing.T ) {
232
+
233
+ qparams := url.Values {}
234
+ qparams .Set ("orderby" , "id" )
235
+ regions , _ , err := TOSession .GetRegions (qparams , nil )
236
+ if err != nil {
237
+ t .Fatalf ("cannot GET Regions: %v" , err )
238
+ }
239
+
240
+ if len (regions ) > 0 {
241
+ qparams = url.Values {}
242
+ qparams .Set ("orderby" , "id" )
243
+ qparams .Set ("limit" , "1" )
244
+ regionsWithLimit , _ , err := TOSession .GetRegions (qparams , nil )
245
+ if err == nil {
246
+ if ! reflect .DeepEqual (regions [:1 ], regionsWithLimit ) {
247
+ t .Error ("expected GET Regions with limit = 1 to return first result" )
248
+ }
249
+ } else {
250
+ t .Error ("Error in getting regions by limit" )
186
251
}
252
+
253
+ if len (regions ) > 1 {
254
+ qparams = url.Values {}
255
+ qparams .Set ("orderby" , "id" )
256
+ qparams .Set ("limit" , "1" )
257
+ qparams .Set ("offset" , "1" )
258
+ regionsWithOffset , _ , err := TOSession .GetRegions (qparams , nil )
259
+ if err == nil {
260
+ if ! reflect .DeepEqual (regions [1 :2 ], regionsWithOffset ) {
261
+ t .Error ("expected GET Regions with limit = 1, offset = 1 to return second result" )
262
+ }
263
+ } else {
264
+ t .Error ("Error in getting regions by limit and offset" )
265
+ }
266
+
267
+ qparams = url.Values {}
268
+ qparams .Set ("orderby" , "id" )
269
+ qparams .Set ("limit" , "1" )
270
+ qparams .Set ("page" , "2" )
271
+ regionsWithPage , _ , err := TOSession .GetRegions (qparams , nil )
272
+ if err == nil {
273
+ if ! reflect .DeepEqual (regions [1 :2 ], regionsWithPage ) {
274
+ t .Error ("expected GET Regions with limit = 1, page = 2 to return second result" )
275
+ }
276
+ } else {
277
+ t .Error ("Error in getting regions by limit and page" )
278
+ }
279
+ } else {
280
+ t .Errorf ("only one region found, so offset functionality can't test" )
281
+ }
282
+ } else {
283
+ t .Errorf ("No region found to check pagination" )
284
+ }
285
+
286
+ qparams = url.Values {}
287
+ qparams .Set ("limit" , "-2" )
288
+ _ , _ , err = TOSession .GetRegions (qparams , nil )
289
+ if err == nil {
290
+ t .Error ("expected GET Regions to return an error when limit is not bigger than -1" )
291
+ } else if ! strings .Contains (err .Error (), "must be bigger than -1" ) {
292
+ t .Errorf ("expected GET Regions to return an error for limit is not bigger than -1, actual error: " + err .Error ())
293
+ }
294
+
295
+ qparams = url.Values {}
296
+ qparams .Set ("limit" , "1" )
297
+ qparams .Set ("offset" , "0" )
298
+ _ , _ , err = TOSession .GetRegions (qparams , nil )
299
+ if err == nil {
300
+ t .Error ("expected GET Regions to return an error when offset is not a positive integer" )
301
+ } else if ! strings .Contains (err .Error (), "must be a positive integer" ) {
302
+ t .Errorf ("expected GET Regions to return an error for offset is not a positive integer, actual error: " + err .Error ())
303
+ }
304
+
305
+ qparams = url.Values {}
306
+ qparams .Set ("limit" , "1" )
307
+ qparams .Set ("page" , "0" )
308
+ _ , _ , err = TOSession .GetRegions (qparams , nil )
309
+ if err == nil {
310
+ t .Error ("expected GET Regions to return an error when page is not a positive integer" )
311
+ } else if ! strings .Contains (err .Error (), "must be a positive integer" ) {
312
+ t .Errorf ("expected GET Regions to return an error for page is not a positive integer, actual error: " + err .Error ())
187
313
}
188
314
}
189
315
@@ -214,7 +340,6 @@ func DeleteTestRegionsByName(t *testing.T) {
214
340
t .Errorf ("expected Region : %s to be deleted" , region .Name )
215
341
}
216
342
}
217
-
218
343
CreateTestRegions (t )
219
344
}
220
345
@@ -243,3 +368,79 @@ func DeleteTestRegions(t *testing.T) {
243
368
}
244
369
}
245
370
}
371
+
372
+ func DeleteTestRegionsByInvalidId (t * testing.T ) {
373
+ i := 10000
374
+ delResp , _ , err := TOSession .DeleteRegion (& i , nil )
375
+ if err == nil {
376
+ t .Errorf ("cannot DELETE Regions by Invalid ID: %v - %v" , err , delResp )
377
+ }
378
+ }
379
+
380
+ func DeleteTestRegionsByInvalidName (t * testing.T ) {
381
+ i := "invalid"
382
+ delResp , _ , err := TOSession .DeleteRegion (nil , & i )
383
+ if err == nil {
384
+ t .Errorf ("cannot DELETE Regions by Invalid ID: %v - %v" , err , delResp )
385
+ }
386
+ }
387
+
388
+ func GetTestRegionByInvalidId (t * testing.T ) {
389
+ regionResp , _ , err := TOSession .GetRegionByID (10000 , nil )
390
+ if err != nil {
391
+ t .Errorf ("Error!! Getting Region by Invalid ID %v" , err )
392
+ }
393
+ if len (regionResp ) >= 1 {
394
+ t .Errorf ("Error!! Invalid ID shouldn't have any response %v Error %v" , regionResp , err )
395
+ }
396
+ }
397
+
398
+ func GetTestRegionByInvalidName (t * testing.T ) {
399
+ regionResp , _ , err := TOSession .GetRegionByName ("abcd" , nil )
400
+ if err != nil {
401
+ t .Errorf ("Error!! Getting Region by Invalid Name %v" , err )
402
+ }
403
+ if len (regionResp ) >= 1 {
404
+ t .Errorf ("Error!! Invalid Name shouldn't have any response %v Error %v" , regionResp , err )
405
+ }
406
+ }
407
+
408
+ func GetTestRegionByDivision (t * testing.T ) {
409
+ for _ , region := range testData .Regions {
410
+
411
+ resp , _ , err := TOSession .GetDivisionByName (region .DivisionName , nil )
412
+ if err != nil {
413
+ t .Errorf ("cannot GET Division by name: %v - %v" , region .DivisionName , err )
414
+ }
415
+ respDivision := resp [0 ]
416
+
417
+ _ , reqInf , err := TOSession .GetRegionByDivision (respDivision .ID , nil )
418
+ if err != nil {
419
+ t .Fatalf ("Expected no error, but got %v" , err .Error ())
420
+ }
421
+ if reqInf .StatusCode != http .StatusOK {
422
+ t .Fatalf ("Expected 200 status code, got %v" , reqInf .StatusCode )
423
+ }
424
+ }
425
+ }
426
+
427
+ func GetTestRegionByInvalidDivision (t * testing.T ) {
428
+ regionResp , _ , err := TOSession .GetRegionByDivision (100000 , nil )
429
+ if err != nil {
430
+ t .Errorf ("Getting Region by Invalid Divisions %v" , err )
431
+ }
432
+ if len (regionResp ) >= 1 {
433
+ t .Errorf ("Invalid Division shouldn't have any response %v Error %v" , regionResp , err )
434
+ }
435
+ }
436
+
437
+ func CreateTestRegionsInvalidDivision (t * testing.T ) {
438
+
439
+ firstRegion := testData .Regions [0 ]
440
+ firstRegion .Division = 100
441
+ firstRegion .Name = "abcd"
442
+ _ , _ , err := TOSession .CreateRegion (firstRegion )
443
+ if err == nil {
444
+ t .Errorf ("Expected division not found Error %v" , err )
445
+ }
446
+ }
0 commit comments