func TestGetServerGroupsWithV1Server(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { var obj interface{} switch req.URL.Path { case "/api": obj = &unversioned.APIVersions{ Versions: []string{ "v1", }, } default: w.WriteHeader(http.StatusNotFound) return } output, err := json.Marshal(obj) if err != nil { t.Fatalf("unexpected encoding error: %v", err) return } w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) w.Write(output) })) defer server.Close() client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) // ServerGroups should not return an error even if server returns error at /api and /apis apiGroupList, err := client.ServerGroups() if err != nil { t.Fatalf("unexpected error: %v", err) } groupVersions := unversioned.ExtractGroupVersions(apiGroupList) if !reflect.DeepEqual(groupVersions, []string{"v1"}) { t.Errorf("expected: %q, got: %q", []string{"v1"}, groupVersions) } }
func TestGetServerGroupsWithBrokenServer(t *testing.T) { for _, statusCode := range []int{http.StatusNotFound, http.StatusForbidden} { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { w.WriteHeader(statusCode) })) defer server.Close() client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) // ServerGroups should not return an error even if server returns Not Found or Forbidden error at all end points apiGroupList, err := client.ServerGroups() if err != nil { t.Fatalf("unexpected error: %v", err) } groupVersions := unversioned.ExtractGroupVersions(apiGroupList) if len(groupVersions) != 0 { t.Errorf("expected empty list, got: %q", groupVersions) } } }