package kubernetes import ( "os" "testing" "github.com/coreos/dex/storage" "github.com/coreos/dex/storage/conformance" ) func TestLoadClient(t *testing.T) { loadClient(t) } func loadClient(t *testing.T) *client { if os.Getenv("KUBECONFIG") == "" { t.Skip() } var config Config s, err := config.open() if err != nil { t.Fatal(err) } return s } func TestURLFor(t *testing.T) { tests := []struct { apiVersion, namespace, resource, name string baseURL string want string }{ { "v1", "default", "pods", "a", "https://k8s.example.com", "https://k8s.example.com/api/v1/namespaces/default/pods/a", }, { "foo/v1", "default", "bar", "a", "https://k8s.example.com", "https://k8s.example.com/apis/foo/v1/namespaces/default/bar/a", }, { "foo/v1", "default", "bar", "a", "https://k8s.example.com/", "https://k8s.example.com/apis/foo/v1/namespaces/default/bar/a", }, { "foo/v1", "default", "bar", "a", "https://k8s.example.com/", "https://k8s.example.com/apis/foo/v1/namespaces/default/bar/a", }, { // no namespace "foo/v1", "", "bar", "a", "https://k8s.example.com", "https://k8s.example.com/apis/foo/v1/bar/a", }, } for _, test := range tests { c := &client{baseURL: test.baseURL, prependResourceNameToAPIGroup: false} got := c.urlFor(test.apiVersion, test.namespace, test.resource, test.name) if got != test.want { t.Errorf("(&client{baseURL:%q}).urlFor(%q, %q, %q, %q): expected %q got %q", test.baseURL, test.apiVersion, test.namespace, test.resource, test.name, test.want, got, ) } } } func TestStorage(t *testing.T) { client := loadClient(t) conformance.RunTestSuite(t, func() storage.Storage { for _, resource := range []string{ resourceAuthCode, resourceAuthRequest, resourceClient, resourceRefreshToken, resourceKeys, resourcePassword, } { if err := client.deleteAll(resource); err != nil { t.Fatalf("delete all %q failed: %v", resource, err) } } return client }) }