package permmatch import "testing" func TestMethodAllowed(t *testing.T) { if !MethodAllowed("GET|POST", "get") { t.Fatal("expected GET") } if MethodAllowed("GET|POST", "PATCH") { t.Fatal("expected no PATCH") } } func TestPathAllowed(t *testing.T) { if !PathAllowed("/api/v1/jobs/*", "/api/v1/jobs/abc/cancel") { t.Fatal("expected wildcard match") } if PathAllowed("/api/v1/jobs/*", "/api/v1/job/schedules") { t.Fatal("expected no match") } if !PathAllowed("/api/v1/members/me", "/api/v1/members/me") { t.Fatal("expected exact match") } } func TestRequestAllowed(t *testing.T) { perms := map[string]string{ "/api/v1/members/me": "GET|PATCH", "/api/v1/jobs/*": "GET|POST", } if !RequestAllowed(perms, "GET", "/api/v1/members/me") { t.Fatal("expected member me") } if RequestAllowed(perms, "DELETE", "/api/v1/members/me") { t.Fatal("expected deny delete") } if !RequestAllowed(perms, "POST", "/api/v1/jobs/x/cancel") { t.Fatal("expected job cancel") } } func TestPathAllowedListRoot(t *testing.T) { for _, path := range []string{"/api/v1/personas", "/api/v1/jobs", "/api/v1/brands"} { pattern := path + "/*" if !PathAllowed(pattern, path) { t.Fatalf("expected list root match for %s", path) } } if PathAllowed("/api/v1/jobs/*", "/api/v1/job/schedules") { t.Fatal("expected schedules path to stay blocked") } }