func TestServiceProxyGet(t *testing.T) { body := "OK" ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{ Method: "GET", Path: testapi.Default.ResourcePath("services", ns, "service-1") + "/proxy/foo", Query: simple.BuildQueryValues(url.Values{"param-name": []string{"param-value"}}), }, Response: simple.Response{StatusCode: 200, RawBody: &body}, } response, err := c.Setup(t).Services(ns).ProxyGet("", "service-1", "", "foo", map[string]string{"param-name": "param-value"}).DoRaw() defer c.Close() c.ValidateRaw(t, response, err) // With scheme and port specified c = &simple.Client{ Request: simple.Request{ Method: "GET", Path: testapi.Default.ResourcePath("services", ns, "https:service-1:my-port") + "/proxy/foo", Query: simple.BuildQueryValues(url.Values{"param-name": []string{"param-value"}}), }, Response: simple.Response{StatusCode: 200, RawBody: &body}, } response, err = c.Setup(t).Services(ns).ProxyGet("https", "service-1", "my-port", "foo", map[string]string{"param-name": "param-value"}).DoRaw() defer c.Close() c.ValidateRaw(t, response, err) }
func testGetJob(t *testing.T, group testapi.TestGroup, resourceGroup string) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{ Method: "GET", Path: group.ResourcePath(getJobsResourceName(), ns, "foo"), Query: simple.BuildQueryValues(nil), }, Response: simple.Response{ StatusCode: 200, Body: &batch.Job{ ObjectMeta: api.ObjectMeta{ Name: "foo", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Spec: batch.JobSpec{ Template: api.PodTemplateSpec{}, }, }, }, ResourceGroup: resourceGroup, } receivedJob, err := getJobClient(t, c, ns, resourceGroup).Get("foo") defer c.Close() c.Validate(t, receivedJob, err) }
func TestHorizontalPodAutoscalerList(t *testing.T) { ns := api.NamespaceDefault horizontalPodAutoscalerList := &autoscaling.HorizontalPodAutoscalerList{ Items: []autoscaling.HorizontalPodAutoscaler{ { ObjectMeta: api.ObjectMeta{ Name: "foo", Namespace: ns, }, }, }, } c := &simple.Client{ Request: simple.Request{ Method: "GET", Path: testapi.Autoscaling.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, ""), Query: simple.BuildQueryValues(nil), Body: nil, }, Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscalerList}, ResourceGroup: autoscaling.GroupName, } response, err := c.Setup(t).Autoscaling().HorizontalPodAutoscalers(ns).List(api.ListOptions{}) defer c.Close() c.Validate(t, response, err) }
func TestListPodsLabels(t *testing.T) { ns := api.NamespaceDefault labelSelectorQueryParamName := unversioned.LabelSelectorQueryParam(testapi.Default.GroupVersion().String()) c := &simple.Client{ Request: simple.Request{ Method: "GET", Path: testapi.Default.ResourcePath("pods", ns, ""), Query: simple.BuildQueryValues(url.Values{labelSelectorQueryParamName: []string{"foo=bar,name=baz"}})}, Response: simple.Response{ StatusCode: http.StatusOK, Body: &api.PodList{ Items: []api.Pod{ { Status: api.PodStatus{ Phase: api.PodRunning, }, ObjectMeta: api.ObjectMeta{ Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, }, }, }, }, } c.Setup(t) defer c.Close() c.QueryValidator[labelSelectorQueryParamName] = simple.ValidateLabels selector := labels.Set{"foo": "bar", "name": "baz"}.AsSelector() options := api.ListOptions{LabelSelector: selector} receivedPodList, err := c.Pods(ns).List(options) c.Validate(t, receivedPodList, err) }
func TestHorizontalPodAutoscalerCreate(t *testing.T) { ns := api.NamespaceDefault horizontalPodAutoscaler := autoscaling.HorizontalPodAutoscaler{ ObjectMeta: api.ObjectMeta{ Name: "abc", Namespace: ns, }, } c := &simple.Client{ Request: simple.Request{ Method: "POST", Path: testapi.Autoscaling.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, ""), Query: simple.BuildQueryValues(nil), Body: &horizontalPodAutoscaler, }, Response: simple.Response{StatusCode: 200, Body: &horizontalPodAutoscaler}, ResourceGroup: autoscaling.GroupName, } response, err := c.Setup(t).Autoscaling().HorizontalPodAutoscalers(ns).Create(&horizontalPodAutoscaler) defer c.Close() if err != nil { t.Fatalf("unexpected error: %v", err) } c.Validate(t, response, err) }
func TestListServices(t *testing.T) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{ Method: "GET", Path: testapi.Default.ResourcePath("services", ns, ""), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: 200, Body: &api.ServiceList{ Items: []api.Service{ { ObjectMeta: api.ObjectMeta{ Name: "name", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Spec: api.ServiceSpec{ Selector: map[string]string{ "one": "two", }, }, }, }, }, }, } receivedServiceList, err := c.Setup(t).Services(ns).List(api.ListOptions{}) defer c.Close() t.Logf("received services: %v %#v", err, receivedServiceList) c.Validate(t, receivedServiceList, err) }
func TestGetService(t *testing.T) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{ Method: "GET", Path: testapi.Default.ResourcePath("services", ns, "1"), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: 200, Body: &api.Service{ObjectMeta: api.ObjectMeta{Name: "service-1"}}}, } response, err := c.Setup(t).Services(ns).Get("1") defer c.Close() c.Validate(t, response, err) }
func testDeleteJob(t *testing.T, group testapi.TestGroup, resourceGroup string) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{ Method: "DELETE", Path: group.ResourcePath(getJobsResourceName(), ns, "foo"), Query: simple.BuildQueryValues(nil), }, Response: simple.Response{StatusCode: 200}, ResourceGroup: resourceGroup, } err := getJobClient(t, c, ns, resourceGroup).Delete("foo", nil) defer c.Close() c.Validate(t, nil, err) }
func TestUpdateServiceStatus(t *testing.T) { ns := api.NamespaceDefault lbStatus := api.LoadBalancerStatus{ Ingress: []api.LoadBalancerIngress{ {IP: "127.0.0.1"}, }, } requestService := &api.Service{ ObjectMeta: api.ObjectMeta{ Name: "foo", Namespace: ns, ResourceVersion: "1", }, Status: api.ServiceStatus{ LoadBalancer: lbStatus, }, } c := &simple.Client{ Request: simple.Request{ Method: "PUT", Path: testapi.Default.ResourcePath("services", ns, "foo") + "/status", Query: simple.BuildQueryValues(nil), }, Response: simple.Response{ StatusCode: 200, Body: &api.Service{ ObjectMeta: api.ObjectMeta{ Name: "foo", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Spec: api.ServiceSpec{}, Status: api.ServiceStatus{ LoadBalancer: lbStatus, }, }, }, } receivedService, err := c.Setup(t).Services(ns).UpdateStatus(requestService) defer c.Close() c.Validate(t, receivedService, err) }
func testCreateJob(t *testing.T, group testapi.TestGroup, resourceGroup string) { ns := api.NamespaceDefault requestJob := &batch.Job{ ObjectMeta: api.ObjectMeta{ Name: "foo", Namespace: ns, }, } c := &simple.Client{ Request: simple.Request{ Method: "POST", Path: group.ResourcePath(getJobsResourceName(), ns, ""), Body: requestJob, Query: simple.BuildQueryValues(nil), }, Response: simple.Response{ StatusCode: 200, Body: &batch.Job{ ObjectMeta: api.ObjectMeta{ Name: "foo", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Spec: batch.JobSpec{ Template: api.PodTemplateSpec{}, }, }, }, ResourceGroup: resourceGroup, } receivedJob, err := getJobClient(t, c, ns, resourceGroup).Create(requestJob) defer c.Close() if err != nil { t.Fatalf("unexpected error: %v", err) } c.Validate(t, receivedJob, err) }
func TestListServicesLabels(t *testing.T) { ns := api.NamespaceDefault labelSelectorQueryParamName := unversioned.LabelSelectorQueryParam(testapi.Default.GroupVersion().String()) c := &simple.Client{ Request: simple.Request{ Method: "GET", Path: testapi.Default.ResourcePath("services", ns, ""), Query: simple.BuildQueryValues(url.Values{labelSelectorQueryParamName: []string{"foo=bar,name=baz"}})}, Response: simple.Response{StatusCode: 200, Body: &api.ServiceList{ Items: []api.Service{ { ObjectMeta: api.ObjectMeta{ Name: "name", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Spec: api.ServiceSpec{ Selector: map[string]string{ "one": "two", }, }, }, }, }, }, } c.Setup(t) defer c.Close() c.QueryValidator[labelSelectorQueryParamName] = simple.ValidateLabels selector := labels.Set{"foo": "bar", "name": "baz"}.AsSelector() options := api.ListOptions{LabelSelector: selector} receivedServiceList, err := c.Services(ns).List(options) c.Validate(t, receivedServiceList, err) }
func TestUpdateReplicaSet(t *testing.T) { ns := api.NamespaceDefault requestRS := &extensions.ReplicaSet{ ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}, } c := &simple.Client{ Request: simple.Request{Method: "PUT", Path: testapi.Extensions.ResourcePath(getReplicaSetResourceName(), ns, "foo"), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{ StatusCode: 200, Body: &extensions.ReplicaSet{ ObjectMeta: api.ObjectMeta{ Name: "foo", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Spec: extensions.ReplicaSetSpec{ Replicas: 2, Template: api.PodTemplateSpec{}, }, }, }, } receivedRS, err := c.Setup(t).Extensions().ReplicaSets(ns).Update(requestRS) c.Validate(t, receivedRS, err) }
func TestHorizontalPodAutoscalerDelete(t *testing.T) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{Method: "DELETE", Path: testapi.Autoscaling.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "foo"), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: 200}, ResourceGroup: autoscaling.GroupName, } err := c.Setup(t).Autoscaling().HorizontalPodAutoscalers(ns).Delete("foo", nil) defer c.Close() c.Validate(t, nil, err) }
func TestHorizontalPodAutoscalerUpdateStatus(t *testing.T) { ns := api.NamespaceDefault horizontalPodAutoscaler := &autoscaling.HorizontalPodAutoscaler{ ObjectMeta: api.ObjectMeta{ Name: "abc", Namespace: ns, ResourceVersion: "1", }, } c := &simple.Client{ Request: simple.Request{Method: "PUT", Path: testapi.Autoscaling.ResourcePath(getHorizontalPodAutoscalersResoureName(), ns, "abc") + "/status", Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: 200, Body: horizontalPodAutoscaler}, ResourceGroup: autoscaling.GroupName, } response, err := c.Setup(t).Autoscaling().HorizontalPodAutoscalers(ns).UpdateStatus(horizontalPodAutoscaler) defer c.Close() c.Validate(t, response, err) }
func TestDeleteThirdPartyResource(t *testing.T) { c := &simple.Client{ Request: simple.Request{Method: "DELETE", Path: testapi.Extensions.ResourcePath(getThirdPartyResourceName(), "", "foo"), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: 200}, } err := c.Setup(t).Extensions().ThirdPartyResources().Delete("foo") defer c.Close() c.Validate(t, nil, err) }
func TestListPods(t *testing.T) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{Method: "GET", Path: testapi.Default.ResourcePath("pods", ns, ""), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: http.StatusOK, Body: &api.PodList{ Items: []api.Pod{ { Status: api.PodStatus{ Phase: api.PodRunning, }, ObjectMeta: api.ObjectMeta{ Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, }, }, }, }, } receivedPodList, err := c.Setup(t).Pods(ns).List(api.ListOptions{}) defer c.Close() c.Validate(t, receivedPodList, err) }
func TestListEmptyPods(t *testing.T) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{Method: "GET", Path: testapi.Default.ResourcePath("pods", ns, ""), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: http.StatusOK, Body: &api.PodList{}}, } podList, err := c.Setup(t).Pods(ns).List(api.ListOptions{}) defer c.Close() c.Validate(t, podList, err) }
func TestUpdatePod(t *testing.T) { ns := api.NamespaceDefault requestPod := &api.Pod{ ObjectMeta: api.ObjectMeta{ Name: "foo", ResourceVersion: "1", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Status: api.PodStatus{ Phase: api.PodRunning, }, } c := &simple.Client{ Request: simple.Request{Method: "PUT", Path: testapi.Default.ResourcePath("pods", ns, "foo"), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: http.StatusOK, Body: requestPod}, } receivedPod, err := c.Setup(t).Pods(ns).Update(requestPod) defer c.Close() c.Validate(t, receivedPod, err) }
func TestDeletePod(t *testing.T) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{Method: "DELETE", Path: testapi.Default.ResourcePath("pods", ns, "foo"), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: http.StatusOK}, } err := c.Setup(t).Pods(ns).Delete("foo", nil) defer c.Close() c.Validate(t, nil, err) }
func TestDeleteService(t *testing.T) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{Method: "DELETE", Path: testapi.Default.ResourcePath("services", ns, "1"), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: 200}, } err := c.Setup(t).Services(ns).Delete("1") defer c.Close() c.Validate(t, nil, err) }
func TestDeleteReplicaSet(t *testing.T) { ns := api.NamespaceDefault c := &simple.Client{ Request: simple.Request{Method: "DELETE", Path: testapi.Extensions.ResourcePath(getReplicaSetResourceName(), ns, "foo"), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: 200}, } err := c.Setup(t).Extensions().ReplicaSets(ns).Delete("foo", nil) c.Validate(t, nil, err) }
func TestUpdateService(t *testing.T) { ns := api.NamespaceDefault svc := &api.Service{ObjectMeta: api.ObjectMeta{Name: "service-1", ResourceVersion: "1"}} c := &simple.Client{ Request: simple.Request{Method: "PUT", Path: testapi.Default.ResourcePath("services", ns, "service-1"), Body: svc, Query: simple.BuildQueryValues(nil)}, Response: simple.Response{StatusCode: 200, Body: svc}, } response, err := c.Setup(t).Services(ns).Update(svc) defer c.Close() c.Validate(t, response, err) }
func TestUpdateThirdPartyResource(t *testing.T) { requestThirdPartyResource := &extensions.ThirdPartyResource{ ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}, } c := &simple.Client{ Request: simple.Request{Method: "PUT", Path: testapi.Extensions.ResourcePath(getThirdPartyResourceName(), "", "foo"), Query: simple.BuildQueryValues(nil)}, Response: simple.Response{ StatusCode: 200, Body: &extensions.ThirdPartyResource{ ObjectMeta: api.ObjectMeta{ Name: "foo", Labels: map[string]string{ "foo": "bar", "name": "baz", }, }, Description: "test third party resource", }, }, } receivedThirdPartyResource, err := c.Setup(t).Extensions().ThirdPartyResources().Update(requestThirdPartyResource) defer c.Close() c.Validate(t, receivedThirdPartyResource, err) }