@@ -601,6 +601,69 @@ func TestClientWithHTTPClient(t *testing.T) {
601601 }
602602}
603603
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+
604667func TestGetStats_NoStreamEndpoint (t * testing.T ) {
605668 var writeLock sync.Mutex
606669
0 commit comments