package server

import "testing"

func TestRelativeURL(t *testing.T) {
	tests := []struct {
		name       string
		serverPath string
		reqPath    string
		assetPath  string
		expected   string
	}{
		{
			name:       "server-root-req-one-level-asset-two-level",
			serverPath: "/",
			reqPath:    "/auth",
			assetPath:  "/theme/main.css",
			expected:   "theme/main.css",
		},
		{
			name:       "server-one-level-req-one-level-asset-two-level",
			serverPath: "/dex",
			reqPath:    "/dex/auth",
			assetPath:  "/theme/main.css",
			expected:   "theme/main.css",
		},
		{
			name:       "server-root-req-two-level-asset-three-level",
			serverPath: "/dex",
			reqPath:    "/dex/auth/connector",
			assetPath:  "assets/css/main.css",
			expected:   "../assets/css/main.css",
		},
		{
			name:       "external-url",
			serverPath: "/dex",
			reqPath:    "/dex/auth/connector",
			assetPath:  "https://kubernetes.io/images/favicon.png",
			expected:   "https://kubernetes.io/images/favicon.png",
		},
	}

	for _, test := range tests {
		t.Run(test.name, func(t *testing.T) {
			actual := relativeURL(test.serverPath, test.reqPath, test.assetPath)
			if actual != test.expected {
				t.Fatalf("Got '%s'. Expected '%s'", actual, test.expected)
			}
		})
	}
}