mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 05:40:42 +00:00 
			
		
		
		
	Pass down into the server initialization the necessary interface for handling client/server content type negotiation. Add integration tests for the negotiation.
		
			
				
	
	
		
			128 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // +build integration,!no-etcd
 | |
| 
 | |
| /*
 | |
| Copyright 2015 The Kubernetes Authors All rights reserved.
 | |
| 
 | |
| Licensed under the Apache License, Version 2.0 (the "License");
 | |
| you may not use this file except in compliance with the License.
 | |
| You may obtain a copy of the License at
 | |
| 
 | |
|     http://www.apache.org/licenses/LICENSE-2.0
 | |
| 
 | |
| Unless required by applicable law or agreed to in writing, software
 | |
| distributed under the License is distributed on an "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| See the License for the specific language governing permissions and
 | |
| limitations under the License.
 | |
| */
 | |
| 
 | |
| package integration
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 	"io/ioutil"
 | |
| 	"net/http"
 | |
| 	"testing"
 | |
| 
 | |
| 	"github.com/ghodss/yaml"
 | |
| 
 | |
| 	"k8s.io/kubernetes/test/integration/framework"
 | |
| )
 | |
| 
 | |
| func TestExperimentalPrefix(t *testing.T) {
 | |
| 	_, s := framework.RunAMaster(t)
 | |
| 	defer s.Close()
 | |
| 
 | |
| 	resp, err := http.Get(s.URL + "/apis/extensions/")
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("unexpected error getting experimental prefix: %v", err)
 | |
| 	}
 | |
| 	if resp.StatusCode != http.StatusOK {
 | |
| 		t.Fatalf("got status %v instead of 200 OK", resp.StatusCode)
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func TestWatchSucceedsWithoutArgs(t *testing.T) {
 | |
| 	_, s := framework.RunAMaster(t)
 | |
| 	defer s.Close()
 | |
| 
 | |
| 	resp, err := http.Get(s.URL + "/api/v1/namespaces?watch=1")
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("unexpected error getting experimental prefix: %v", err)
 | |
| 	}
 | |
| 	if resp.StatusCode != http.StatusOK {
 | |
| 		t.Fatalf("got status %v instead of 200 OK", resp.StatusCode)
 | |
| 	}
 | |
| 	resp.Body.Close()
 | |
| }
 | |
| 
 | |
| func TestAccept(t *testing.T) {
 | |
| 	_, s := framework.RunAMaster(t)
 | |
| 	defer s.Close()
 | |
| 
 | |
| 	resp, err := http.Get(s.URL + "/api/")
 | |
| 	if err != nil {
 | |
| 		t.Fatalf("unexpected error getting api: %v", err)
 | |
| 	}
 | |
| 	if resp.StatusCode != http.StatusOK {
 | |
| 		t.Fatalf("got status %v instead of 200 OK", resp.StatusCode)
 | |
| 	}
 | |
| 
 | |
| 	body, _ := ioutil.ReadAll(resp.Body)
 | |
| 	if resp.Header.Get("Content-Type") != "application/json" {
 | |
| 		t.Errorf("unexpected content: %s", body)
 | |
| 	}
 | |
| 	if err := json.Unmarshal(body, &map[string]interface{}{}); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	req, err := http.NewRequest("GET", s.URL+"/api/", nil)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	req.Header.Set("Accept", "application/yaml")
 | |
| 	resp, err = http.DefaultClient.Do(req)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	body, _ = ioutil.ReadAll(resp.Body)
 | |
| 	if resp.Header.Get("Content-Type") != "application/yaml" {
 | |
| 		t.Errorf("unexpected content: %s", body)
 | |
| 	}
 | |
| 	t.Logf("body: %s", body)
 | |
| 	if err := yaml.Unmarshal(body, &map[string]interface{}{}); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	req, err = http.NewRequest("GET", s.URL+"/api/", nil)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	req.Header.Set("Accept", "application/json, application/yaml")
 | |
| 	resp, err = http.DefaultClient.Do(req)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	body, _ = ioutil.ReadAll(resp.Body)
 | |
| 	if resp.Header.Get("Content-Type") != "application/json" {
 | |
| 		t.Errorf("unexpected content: %s", body)
 | |
| 	}
 | |
| 	t.Logf("body: %s", body)
 | |
| 	if err := yaml.Unmarshal(body, &map[string]interface{}{}); err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 
 | |
| 	req, err = http.NewRequest("GET", s.URL+"/api/", nil)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	req.Header.Set("Accept", "application") // not a valid media type
 | |
| 	resp, err = http.DefaultClient.Do(req)
 | |
| 	if err != nil {
 | |
| 		t.Fatal(err)
 | |
| 	}
 | |
| 	if resp.StatusCode != http.StatusNotAcceptable {
 | |
| 		t.Errorf("unexpected error from the server")
 | |
| 	}
 | |
| }
 |