mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 05:03:09 +00:00
apiserver: move patch tests to their own file
This commit is contained in:
parent
214ce6572d
commit
8341c48b1b
@ -12,6 +12,7 @@ go_test(
|
|||||||
"apiserver_test.go",
|
"apiserver_test.go",
|
||||||
"audit_test.go",
|
"audit_test.go",
|
||||||
"installer_test.go",
|
"installer_test.go",
|
||||||
|
"patchhandler_test.go",
|
||||||
"watch_test.go",
|
"watch_test.go",
|
||||||
],
|
],
|
||||||
embed = [":go_default_library"],
|
embed = [":go_default_library"],
|
||||||
|
@ -2887,76 +2887,6 @@ func TestDeleteMissing(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPatch(t *testing.T) {
|
|
||||||
storage := map[string]rest.Storage{}
|
|
||||||
ID := "id"
|
|
||||||
item := &genericapitesting.Simple{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: ID,
|
|
||||||
Namespace: "", // update should allow the client to send an empty namespace
|
|
||||||
UID: "uid",
|
|
||||||
},
|
|
||||||
Other: "bar",
|
|
||||||
}
|
|
||||||
simpleStorage := SimpleRESTStorage{item: *item}
|
|
||||||
storage["simple"] = &simpleStorage
|
|
||||||
selfLinker := &setTestSelfLinker{
|
|
||||||
t: t,
|
|
||||||
expectedSet: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/namespaces/default/simple/" + ID,
|
|
||||||
name: ID,
|
|
||||||
namespace: metav1.NamespaceDefault,
|
|
||||||
}
|
|
||||||
handler := handleLinker(storage, selfLinker)
|
|
||||||
server := httptest.NewServer(handler)
|
|
||||||
defer server.Close()
|
|
||||||
|
|
||||||
client := http.Client{}
|
|
||||||
request, err := http.NewRequest("PATCH", server.URL+"/"+prefix+"/"+testGroupVersion.Group+"/"+testGroupVersion.Version+"/namespaces/default/simple/"+ID, bytes.NewReader([]byte(`{"labels":{"foo":"bar"}}`)))
|
|
||||||
request.Header.Set("Content-Type", "application/merge-patch+json; charset=UTF-8")
|
|
||||||
response, err := client.Do(request)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
dump, _ := httputil.DumpResponse(response, true)
|
|
||||||
t.Log(string(dump))
|
|
||||||
|
|
||||||
if simpleStorage.updated == nil || simpleStorage.updated.Labels["foo"] != "bar" {
|
|
||||||
t.Errorf("Unexpected update value %#v, expected %#v.", simpleStorage.updated, item)
|
|
||||||
}
|
|
||||||
if !selfLinker.called {
|
|
||||||
t.Errorf("Never set self link")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestPatchRequiresMatchingName(t *testing.T) {
|
|
||||||
storage := map[string]rest.Storage{}
|
|
||||||
ID := "id"
|
|
||||||
item := &genericapitesting.Simple{
|
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
|
||||||
Name: ID,
|
|
||||||
Namespace: "", // update should allow the client to send an empty namespace
|
|
||||||
UID: "uid",
|
|
||||||
},
|
|
||||||
Other: "bar",
|
|
||||||
}
|
|
||||||
simpleStorage := SimpleRESTStorage{item: *item}
|
|
||||||
storage["simple"] = &simpleStorage
|
|
||||||
handler := handle(storage)
|
|
||||||
server := httptest.NewServer(handler)
|
|
||||||
defer server.Close()
|
|
||||||
|
|
||||||
client := http.Client{}
|
|
||||||
request, err := http.NewRequest("PATCH", server.URL+"/"+prefix+"/"+testGroupVersion.Group+"/"+testGroupVersion.Version+"/namespaces/default/simple/"+ID, bytes.NewReader([]byte(`{"metadata":{"name":"idbar"}}`)))
|
|
||||||
request.Header.Set("Content-Type", "application/merge-patch+json")
|
|
||||||
response, err := client.Do(request)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
if response.StatusCode != http.StatusBadRequest {
|
|
||||||
t.Errorf("Unexpected response %#v", response)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUpdate(t *testing.T) {
|
func TestUpdate(t *testing.T) {
|
||||||
storage := map[string]rest.Storage{}
|
storage := map[string]rest.Storage{}
|
||||||
simpleStorage := SimpleRESTStorage{}
|
simpleStorage := SimpleRESTStorage{}
|
||||||
|
@ -0,0 +1,99 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
|
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 endpoints
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
|
"net/http/httputil"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
genericapitesting "k8s.io/apiserver/pkg/endpoints/testing"
|
||||||
|
"k8s.io/apiserver/pkg/registry/rest"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPatch(t *testing.T) {
|
||||||
|
storage := map[string]rest.Storage{}
|
||||||
|
ID := "id"
|
||||||
|
item := &genericapitesting.Simple{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: ID,
|
||||||
|
Namespace: "", // update should allow the client to send an empty namespace
|
||||||
|
UID: "uid",
|
||||||
|
},
|
||||||
|
Other: "bar",
|
||||||
|
}
|
||||||
|
simpleStorage := SimpleRESTStorage{item: *item}
|
||||||
|
storage["simple"] = &simpleStorage
|
||||||
|
selfLinker := &setTestSelfLinker{
|
||||||
|
t: t,
|
||||||
|
expectedSet: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/namespaces/default/simple/" + ID,
|
||||||
|
name: ID,
|
||||||
|
namespace: metav1.NamespaceDefault,
|
||||||
|
}
|
||||||
|
handler := handleLinker(storage, selfLinker)
|
||||||
|
server := httptest.NewServer(handler)
|
||||||
|
defer server.Close()
|
||||||
|
|
||||||
|
client := http.Client{}
|
||||||
|
request, err := http.NewRequest("PATCH", server.URL+"/"+prefix+"/"+testGroupVersion.Group+"/"+testGroupVersion.Version+"/namespaces/default/simple/"+ID, bytes.NewReader([]byte(`{"labels":{"foo":"bar"}}`)))
|
||||||
|
request.Header.Set("Content-Type", "application/merge-patch+json; charset=UTF-8")
|
||||||
|
response, err := client.Do(request)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
dump, _ := httputil.DumpResponse(response, true)
|
||||||
|
t.Log(string(dump))
|
||||||
|
|
||||||
|
if simpleStorage.updated == nil || simpleStorage.updated.Labels["foo"] != "bar" {
|
||||||
|
t.Errorf("Unexpected update value %#v, expected %#v.", simpleStorage.updated, item)
|
||||||
|
}
|
||||||
|
if !selfLinker.called {
|
||||||
|
t.Errorf("Never set self link")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestPatchRequiresMatchingName(t *testing.T) {
|
||||||
|
storage := map[string]rest.Storage{}
|
||||||
|
ID := "id"
|
||||||
|
item := &genericapitesting.Simple{
|
||||||
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
Name: ID,
|
||||||
|
Namespace: "", // update should allow the client to send an empty namespace
|
||||||
|
UID: "uid",
|
||||||
|
},
|
||||||
|
Other: "bar",
|
||||||
|
}
|
||||||
|
simpleStorage := SimpleRESTStorage{item: *item}
|
||||||
|
storage["simple"] = &simpleStorage
|
||||||
|
handler := handle(storage)
|
||||||
|
server := httptest.NewServer(handler)
|
||||||
|
defer server.Close()
|
||||||
|
|
||||||
|
client := http.Client{}
|
||||||
|
request, err := http.NewRequest("PATCH", server.URL+"/"+prefix+"/"+testGroupVersion.Group+"/"+testGroupVersion.Version+"/namespaces/default/simple/"+ID, bytes.NewReader([]byte(`{"metadata":{"name":"idbar"}}`)))
|
||||||
|
request.Header.Set("Content-Type", "application/merge-patch+json")
|
||||||
|
response, err := client.Do(request)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
if response.StatusCode != http.StatusBadRequest {
|
||||||
|
t.Errorf("Unexpected response %#v", response)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user