@@ -12,6 +12,7 @@ import (
12
12
"io"
13
13
"net/http"
14
14
"net/http/httptest"
15
+ neturl "net/url"
15
16
"strconv"
16
17
"testing"
17
18
"time"
@@ -68,10 +69,16 @@ func TestPackageNuGet(t *testing.T) {
68
69
Content string `xml:",innerxml"`
69
70
}
70
71
72
+ type FeedEntryLink struct {
73
+ Rel string `xml:"rel,attr"`
74
+ Href string `xml:"href,attr"`
75
+ }
76
+
71
77
type FeedResponse struct {
72
- XMLName xml.Name `xml:"feed"`
73
- Entries []* FeedEntry `xml:"entry"`
74
- Count int64 `xml:"count"`
78
+ XMLName xml.Name `xml:"feed"`
79
+ Links []FeedEntryLink `xml:"link"`
80
+ Entries []* FeedEntry `xml:"entry"`
81
+ Count int64 `xml:"count"`
75
82
}
76
83
77
84
user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 })
@@ -373,6 +380,25 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
373
380
})
374
381
})
375
382
383
+ containsOneNextLink := func (t * testing.T , links []FeedEntryLink ) func () bool {
384
+ return func () bool {
385
+ found := 0
386
+ for _ , l := range links {
387
+ if l .Rel == "next" {
388
+ found ++
389
+ u , err := neturl .Parse (l .Href )
390
+ assert .NoError (t , err )
391
+ q := u .Query ()
392
+ assert .Contains (t , q , "$skip" )
393
+ assert .Contains (t , q , "$top" )
394
+ assert .Equal (t , "1" , q .Get ("$skip" ))
395
+ assert .Equal (t , "1" , q .Get ("$top" ))
396
+ }
397
+ }
398
+ return found == 1
399
+ }
400
+ }
401
+
376
402
t .Run ("SearchService" , func (t * testing.T ) {
377
403
cases := []struct {
378
404
Query string
@@ -393,7 +419,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
393
419
defer tests .PrintCurrentTest (t )()
394
420
395
421
for i , c := range cases {
396
- req := NewRequest (t , "GET" , fmt .Sprintf ("%s/Search()?searchTerm='%s'&skip=%d&take =%d" , url , c .Query , c .Skip , c .Take ))
422
+ req := NewRequest (t , "GET" , fmt .Sprintf ("%s/Search()?searchTerm='%s'&$ skip=%d&$top =%d" , url , c .Query , c .Skip , c .Take ))
397
423
req = AddBasicAuthHeader (req , user .Name )
398
424
resp := MakeRequest (t , req , http .StatusOK )
399
425
@@ -403,7 +429,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
403
429
assert .Equal (t , c .ExpectedTotal , result .Count , "case %d: unexpected total hits" , i )
404
430
assert .Len (t , result .Entries , c .ExpectedResults , "case %d: unexpected result count" , i )
405
431
406
- req = NewRequest (t , "GET" , fmt .Sprintf ("%s/Search()/$count?searchTerm='%s'&skip=%d&take =%d" , url , c .Query , c .Skip , c .Take ))
432
+ req = NewRequest (t , "GET" , fmt .Sprintf ("%s/Search()/$count?searchTerm='%s'&$ skip=%d&$top =%d" , url , c .Query , c .Skip , c .Take ))
407
433
req = AddBasicAuthHeader (req , user .Name )
408
434
resp = MakeRequest (t , req , http .StatusOK )
409
435
@@ -432,6 +458,17 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
432
458
assert .Equal (t , strconv .FormatInt (c .ExpectedTotal , 10 ), resp .Body .String (), "case %d: unexpected total hits" , i )
433
459
}
434
460
})
461
+
462
+ t .Run ("Next" , func (t * testing.T ) {
463
+ req := NewRequest (t , "GET" , fmt .Sprintf ("%s/Search()?searchTerm='test'&$skip=0&$top=1" , url ))
464
+ req = AddBasicAuthHeader (req , user .Name )
465
+ resp := MakeRequest (t , req , http .StatusOK )
466
+
467
+ var result FeedResponse
468
+ decodeXML (t , resp , & result )
469
+
470
+ assert .Condition (t , containsOneNextLink (t , result .Links ))
471
+ })
435
472
})
436
473
437
474
t .Run ("v3" , func (t * testing.T ) {
@@ -558,7 +595,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
558
595
t .Run ("v2" , func (t * testing.T ) {
559
596
defer tests .PrintCurrentTest (t )()
560
597
561
- req := NewRequest (t , "GET" , fmt .Sprintf ("%s/FindPackagesById()?id='%s'" , url , packageName ))
598
+ req := NewRequest (t , "GET" , fmt .Sprintf ("%s/FindPackagesById()?id='%s'&$top=1 " , url , packageName ))
562
599
req = AddBasicAuthHeader (req , user .Name )
563
600
resp := MakeRequest (t , req , http .StatusOK )
564
601
@@ -567,6 +604,7 @@ AAAjQmxvYgAAAGm7ENm9SGxMtAFVvPUsPJTF6PbtAAAAAFcVogEJAAAAAQAAAA==`)
567
604
568
605
assert .Len (t , result .Entries , 1 )
569
606
assert .Equal (t , packageVersion , result .Entries [0 ].Properties .Version )
607
+ assert .Condition (t , containsOneNextLink (t , result .Links ))
570
608
571
609
req = NewRequest (t , "GET" , fmt .Sprintf ("%s/FindPackagesById()/$count?id='%s'" , url , packageName ))
572
610
req = AddBasicAuthHeader (req , user .Name )
0 commit comments