forked from mystiq/dex
4e569024fd
Unify the interface for reading web statics. Now it could read an OS directory or get the content on live One could use //go:embed static var webFiles embed.FS anywhere and config dex server to take the file system by setting WebConfig{WebFS: webFiles} Signed-off-by: Rui Yang <ruiya@vmware.com> Co-authored-by: Aidan Oldershaw <aoldershaw@pivotal.io>
51 lines
1.2 KiB
Go
51 lines
1.2 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|