// +build integration,!no-etcd package integration import ( "testing" "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta1" "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" "github.com/openshift/origin/pkg/client" templateapi "github.com/openshift/origin/pkg/template/api" testutil "github.com/openshift/origin/test/util" ) func init() { testutil.RequireEtcd() } func TestTemplate(t *testing.T) { _, path, err := testutil.StartTestMaster() if err != nil { t.Fatalf("unexpected error: %v", err) } for _, version := range []string{"v1beta1", "v1beta3"} { config, err := testutil.GetClusterAdminClientConfig(path) if err != nil { t.Fatalf("unexpected error: %v", err) } config.Version = version c, err := client.New(config) if err != nil { t.Fatalf("unexpected error: %v", err) } template := &templateapi.Template{ Parameters: []templateapi.Parameter{ { Name: "NAME", Value: "test", }, }, Objects: []runtime.Object{ &v1beta1.Service{ TypeMeta: v1beta1.TypeMeta{ ID: "${NAME}-tester", Namespace: "somevalue", }, PortalIP: "1.2.3.4", SessionAffinity: "some-bad-${VALUE}", }, }, } obj, err := c.TemplateConfigs("default").Create(template) if err != nil { t.Fatalf("unexpected error: %v", err) } if len(obj.Objects) != 1 { t.Fatalf("unexpected object: %#v", obj) } if err := runtime.DecodeList(obj.Objects, runtime.UnstructuredJSONScheme); err != nil { t.Fatalf("unexpected error: %v", err) } // keep existing values if obj.Objects[0].(*runtime.Unstructured).Object["portalIP"] != "1.2.3.4" { t.Fatalf("unexpected object: %#v", obj) } // replace a value if obj.Objects[0].(*runtime.Unstructured).Object["id"] != "test-tester" { t.Fatalf("unexpected object: %#v", obj) } // clear namespace if obj.Objects[0].(*runtime.Unstructured).Object["namespace"] != "" { t.Fatalf("unexpected object: %#v", obj) } // preserve values exactly if obj.Objects[0].(*runtime.Unstructured).Object["sessionAffinity"] != "some-bad-${VALUE}" { t.Fatalf("unexpected object: %#v", obj) } } }