@@ -601,6 +601,69 @@ func TestClientWithHTTPClient(t *testing.T) {
601
601
}
602
602
}
603
603
604
+ func TestClientWithMaxAPI (t * testing.T ) {
605
+ t .Parallel ()
606
+ tests := []struct {
607
+ name string
608
+ apiVersions string
609
+ expected int
610
+ }{
611
+ {
612
+ name : "Test 1: API versions contains invalid version" ,
613
+ apiVersions : `[4, 5, 6, 7, 8, 9, 25]` ,
614
+ expected : APIVersion ,
615
+ },
616
+ {
617
+ name : "Test 2: No API versions, default API Version is used" ,
618
+ apiVersions : `` ,
619
+ expected : APIVersion ,
620
+ },
621
+ {
622
+ name : "Test 3: API version lower than default" ,
623
+ apiVersions : `[4, 5, 6, 7]` ,
624
+ expected : 7 ,
625
+ },
626
+ {
627
+ name : "Test 4: No API versions, default API version is used" ,
628
+ apiVersions : `[""]` ,
629
+ expected : APIVersion ,
630
+ },
631
+ }
632
+
633
+ for _ , tt := range tests {
634
+ t .Run (tt .name , func (t * testing.T ) {
635
+ t .Parallel ()
636
+ // Test creating a new client with max API version
637
+ ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
638
+ switch {
639
+ case r .RequestURI == "/" :
640
+ _ , err := w .Write ([]byte (tt .apiVersions ))
641
+ if err != nil {
642
+ t .Fatalf ("unexpected error: %v" , err )
643
+ }
644
+ default :
645
+ _ , err := w .Write ([]byte (`{}` ))
646
+ if err != nil {
647
+ t .Fatalf ("unexpected error: %v" , err )
648
+ }
649
+ }
650
+ }))
651
+ defer ts .Close ()
652
+
653
+ client , err := NewNginxClient (ts .URL , WithMaxAPIVersion ())
654
+ if err != nil {
655
+ t .Fatalf ("unexpected error: %v" , err )
656
+ }
657
+ if client == nil {
658
+ t .Fatalf ("client is nil" )
659
+ }
660
+ if client .apiVersion != tt .expected {
661
+ t .Fatalf ("expected client.apiVersion to be %v, but got %v" , tt .expected , client .apiVersion )
662
+ }
663
+ })
664
+ }
665
+ }
666
+
604
667
func TestGetStats_NoStreamEndpoint (t * testing.T ) {
605
668
var writeLock sync.Mutex
606
669
0 commit comments