Skip to content
Snippets Groups Projects
storage_test.go 1.94 KiB
Newer Older
  • Learn to ignore specific revisions
  • Eric Chiang's avatar
    Eric Chiang committed
    package kubernetes
    
    import (
    	"os"
    	"testing"
    
    
    	"github.com/coreos/dex/storage"
    
    	"github.com/coreos/dex/storage/conformance"
    
    Eric Chiang's avatar
    Eric Chiang committed
    )
    
    func TestLoadClient(t *testing.T) {
    	loadClient(t)
    }
    
    
    func loadClient(t *testing.T) *client {
    
    Eric Chiang's avatar
    Eric Chiang committed
    	if os.Getenv("KUBECONFIG") == "" {
    		t.Skip()
    	}
    	var config Config
    
    	s, err := config.open()
    
    Eric Chiang's avatar
    Eric Chiang committed
    	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}
    
    Eric Chiang's avatar
    Eric Chiang committed
    		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.RunTests(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)
    			}
    		}
    
    Eric Chiang's avatar
    Eric Chiang committed
    }