mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 10:41:03 +01:00
6dcbbc5464
Former-commit-id: 30a86cba134b87db803aa47a277795717c694c3b
137 lines
2.8 KiB
Go
137 lines
2.8 KiB
Go
package router
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestCleanPath(t *testing.T) {
|
|
tests := []struct {
|
|
path string
|
|
expected string
|
|
}{
|
|
{
|
|
"/",
|
|
"/",
|
|
},
|
|
{
|
|
"noslashPrefix",
|
|
"/noslashPrefix",
|
|
},
|
|
{
|
|
"slashSuffix/",
|
|
"/slashSuffix",
|
|
},
|
|
{
|
|
"noSlashPrefixAndslashSuffix/",
|
|
"/noSlashPrefixAndslashSuffix",
|
|
},
|
|
// don't do any clean up inside {},
|
|
// fixes #927.
|
|
{
|
|
"/total/{year:string regexp(\\d{4})}",
|
|
"/total/{year:string regexp(\\d{4})}",
|
|
},
|
|
{
|
|
"/total/{year:string regexp(\\d{4})}/more",
|
|
"/total/{year:string regexp(\\d{4})}/more",
|
|
},
|
|
{
|
|
"/total/{year:string regexp(\\d{4})}/more/{s:string regexp(\\d{7})}",
|
|
"/total/{year:string regexp(\\d{4})}/more/{s:string regexp(\\d{7})}",
|
|
},
|
|
{
|
|
"/single_no_params",
|
|
"/single_no_params",
|
|
},
|
|
{
|
|
"/single/{id:uint64}",
|
|
"/single/{id:uint64}",
|
|
},
|
|
}
|
|
|
|
for i, tt := range tests {
|
|
if expected, got := tt.expected, cleanPath(tt.path); expected != got {
|
|
t.Fatalf("[%d] - expected path '%s' but got '%s'", i, expected, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSplitPath(t *testing.T) {
|
|
tests := []struct {
|
|
path string
|
|
expected []string
|
|
}{
|
|
{
|
|
"/v2/stores/{id:string format(uuid)} /v3",
|
|
[]string{"/v2/stores/{id:string format(uuid)}", "/v3"},
|
|
},
|
|
{
|
|
"/user/{id:uint64} /admin/{id:uint64}",
|
|
[]string{"/user/{id:uint64}", "/admin/{id:uint64}"},
|
|
},
|
|
{
|
|
"/users/{id:int} /admins/{id:int64}",
|
|
[]string{"/users/{id:int}", "/admins/{id:int64}"},
|
|
},
|
|
{
|
|
"/user /admin",
|
|
[]string{"/user", "/admin"},
|
|
},
|
|
{
|
|
"/single_no_params",
|
|
[]string{"/single_no_params"},
|
|
},
|
|
{
|
|
"/single/{id:int}",
|
|
[]string{"/single/{id:int}"},
|
|
},
|
|
}
|
|
|
|
equalSlice := func(s1 []string, s2 []string) bool {
|
|
if len(s1) != len(s2) {
|
|
return false
|
|
}
|
|
|
|
for i := range s1 {
|
|
if s2[i] != s1[i] {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|
|
|
|
for i, tt := range tests {
|
|
paths := splitPath(tt.path)
|
|
if expected, got := tt.expected, paths; !equalSlice(expected, got) {
|
|
t.Fatalf("[%d] - expected paths '%#v' but got '%#v'", i, expected, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestSplitSubdomainAndPath(t *testing.T) {
|
|
tests := []struct {
|
|
original string
|
|
subdomain string
|
|
path string
|
|
}{
|
|
{"admin./users/42", "admin.", "/users/42"},
|
|
{"admin.", "admin", "/"},
|
|
{"admin./" + WildcardFileParam(), "admin.", "/" + WildcardFileParam()},
|
|
{"//api/users\\42", "", "/api/users/42"},
|
|
{"admin./users//42", "admin.", "/users/42"},
|
|
{"*./users/42/", "*.", "/users/42"},
|
|
}
|
|
|
|
for i, tt := range tests {
|
|
subdomain, path := splitSubdomainAndPath(tt.original)
|
|
|
|
if expected, got := tt.subdomain, subdomain; expected != got {
|
|
t.Fatalf("[%d] - expected subdomain '%s' but got '%s'", i, expected, got)
|
|
}
|
|
if expected, got := tt.path, path; expected != got {
|
|
t.Fatalf("[%d] - expected path '%s' but got '%s'", i, expected, got)
|
|
}
|
|
}
|
|
}
|