mirror of https://github.com/k3s-io/k3s
Fix the TestRunApplyPrintsValidObjectList test
The fake webclient should return one ConfigMap per request, not the whole ConfigMapList Also added additional tests to the outputpull/58/head
parent
74e63c8f00
commit
37c253aba1
|
@ -103,19 +103,24 @@ const (
|
||||||
filenameWidgetServerside = "../../../../test/fixtures/pkg/kubectl/cmd/apply/widget-serverside.yaml"
|
filenameWidgetServerside = "../../../../test/fixtures/pkg/kubectl/cmd/apply/widget-serverside.yaml"
|
||||||
)
|
)
|
||||||
|
|
||||||
func readConfigMapList(t *testing.T, filename string) []byte {
|
func readConfigMapList(t *testing.T, filename string) [][]byte {
|
||||||
data := readBytesFromFile(t, filename)
|
data := readBytesFromFile(t, filename)
|
||||||
cmList := corev1.ConfigMapList{}
|
cmList := corev1.ConfigMapList{}
|
||||||
if err := runtime.DecodeInto(codec, data, &cmList); err != nil {
|
if err := runtime.DecodeInto(codec, data, &cmList); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
cmListBytes, err := runtime.Encode(codec, &cmList)
|
var listCmBytes [][]byte
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
for _, cm := range cmList.Items {
|
||||||
|
cmBytes, err := runtime.Encode(codec, &cm)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
listCmBytes = append(listCmBytes, cmBytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
return cmListBytes
|
return listCmBytes
|
||||||
}
|
}
|
||||||
|
|
||||||
func readBytesFromFile(t *testing.T, filename string) []byte {
|
func readBytesFromFile(t *testing.T, filename string) []byte {
|
||||||
|
@ -270,7 +275,7 @@ func walkMapPath(t *testing.T, start map[string]interface{}, path []string) map[
|
||||||
|
|
||||||
func TestRunApplyPrintsValidObjectList(t *testing.T) {
|
func TestRunApplyPrintsValidObjectList(t *testing.T) {
|
||||||
cmdtesting.InitTestErrorHandler(t)
|
cmdtesting.InitTestErrorHandler(t)
|
||||||
cmBytes := readConfigMapList(t, filenameCM)
|
configMapList := readConfigMapList(t, filenameCM)
|
||||||
pathCM := "/namespaces/test/configmaps"
|
pathCM := "/namespaces/test/configmaps"
|
||||||
|
|
||||||
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
tf := cmdtesting.NewTestFactory().WithNamespace("test")
|
||||||
|
@ -280,12 +285,21 @@ func TestRunApplyPrintsValidObjectList(t *testing.T) {
|
||||||
NegotiatedSerializer: resource.UnstructuredPlusDefaultContentConfig().NegotiatedSerializer,
|
NegotiatedSerializer: resource.UnstructuredPlusDefaultContentConfig().NegotiatedSerializer,
|
||||||
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
|
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
|
||||||
switch p, m := req.URL.Path, req.Method; {
|
switch p, m := req.URL.Path, req.Method; {
|
||||||
case strings.HasPrefix(p, pathCM) && m != "GET":
|
case strings.HasPrefix(p, pathCM) && m == "GET":
|
||||||
pod := ioutil.NopCloser(bytes.NewReader(cmBytes))
|
fallthrough
|
||||||
return &http.Response{StatusCode: 200, Header: cmdtesting.DefaultHeader(), Body: pod}, nil
|
case strings.HasPrefix(p, pathCM) && m == "PATCH":
|
||||||
case strings.HasPrefix(p, pathCM) && m != "PATCH":
|
var body io.ReadCloser
|
||||||
pod := ioutil.NopCloser(bytes.NewReader(cmBytes))
|
|
||||||
return &http.Response{StatusCode: 200, Header: cmdtesting.DefaultHeader(), Body: pod}, nil
|
switch p {
|
||||||
|
case pathCM + "/test0":
|
||||||
|
body = ioutil.NopCloser(bytes.NewReader(configMapList[0]))
|
||||||
|
case pathCM + "/test1":
|
||||||
|
body = ioutil.NopCloser(bytes.NewReader(configMapList[1]))
|
||||||
|
default:
|
||||||
|
t.Errorf("unexpected request to %s", p)
|
||||||
|
}
|
||||||
|
|
||||||
|
return &http.Response{StatusCode: 200, Header: cmdtesting.DefaultHeader(), Body: body}, nil
|
||||||
default:
|
default:
|
||||||
t.Fatalf("unexpected request: %#v\n%#v", req.URL, req)
|
t.Fatalf("unexpected request: %#v\n%#v", req.URL, req)
|
||||||
return nil, nil
|
return nil, nil
|
||||||
|
@ -306,6 +320,16 @@ func TestRunApplyPrintsValidObjectList(t *testing.T) {
|
||||||
if err := runtime.DecodeInto(codec, buf.Bytes(), &cmList); err != nil {
|
if err := runtime.DecodeInto(codec, buf.Bytes(), &cmList); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(cmList.Items) != 2 {
|
||||||
|
t.Fatalf("Expected 2 items in the result; got %d", len(cmList.Items))
|
||||||
|
}
|
||||||
|
if !strings.Contains(string(cmList.Items[0].Raw), "key1") {
|
||||||
|
t.Fatalf("Did not get first ConfigMap at the first position")
|
||||||
|
}
|
||||||
|
if !strings.Contains(string(cmList.Items[1].Raw), "key2") {
|
||||||
|
t.Fatalf("Did not get second ConfigMap at the second position")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRunApplyViewLastApplied(t *testing.T) {
|
func TestRunApplyViewLastApplied(t *testing.T) {
|
||||||
|
|
|
@ -3,13 +3,13 @@ items:
|
||||||
- kind: ConfigMap
|
- kind: ConfigMap
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
name: test
|
name: test0
|
||||||
data:
|
data:
|
||||||
key1: apple
|
key1: apple
|
||||||
- kind: ConfigMap
|
- kind: ConfigMap
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
name: test2
|
name: test1
|
||||||
data:
|
data:
|
||||||
key2: apple
|
key2: apple
|
||||||
kind: ConfigMapList
|
kind: ConfigMapList
|
||||||
|
|
Loading…
Reference in New Issue