github.com/apex/up@v1.7.1/internal/header/header_test.go (about) 1 package header 2 3 import ( 4 "testing" 5 6 "github.com/tj/assert" 7 ) 8 9 func TestMatcher_Lookup(t *testing.T) { 10 rules := Rules{ 11 "*": { 12 "X-Type": "html", 13 }, 14 "*.css": { 15 "X-Type": "css", 16 }, 17 "/docs/alerts": { 18 "X-Type": "docs alerts", 19 }, 20 "/docs/*": { 21 "X-Type": "docs", 22 }, 23 } 24 25 m, err := Compile(rules) 26 assert.NoError(t, err, "compile") 27 28 assert.Equal(t, Fields{"X-Type": "html"}, m.Lookup("/something")) 29 assert.Equal(t, Fields{"X-Type": "html"}, m.Lookup("/docs")) 30 assert.Equal(t, Fields{"X-Type": "docs"}, m.Lookup("/docs/")) 31 assert.Equal(t, Fields{"X-Type": "css"}, m.Lookup("/style.css")) 32 assert.Equal(t, Fields{"X-Type": "css"}, m.Lookup("/public/css/style.css")) 33 assert.Equal(t, Fields{"X-Type": "docs"}, m.Lookup("/docs/checks")) 34 assert.Equal(t, Fields{"X-Type": "docs alerts"}, m.Lookup("/docs/alerts")) 35 } 36 37 func TestMerge(t *testing.T) { 38 rules := Rules{ 39 "*": { 40 "X-Type": "html", 41 "X-Foo": "bar", 42 }, 43 "/login": { 44 "X-Something": "here", 45 }, 46 } 47 48 rules = Merge(rules, Rules{ 49 "*": { 50 "X-Type": "pdf", 51 }, 52 "/admin": { 53 "X-Something": "here", 54 }, 55 }) 56 57 expected := Rules{ 58 "*": { 59 "X-Type": "pdf", 60 "X-Foo": "bar", 61 }, 62 "/login": { 63 "X-Something": "here", 64 }, 65 "/admin": { 66 "X-Something": "here", 67 }, 68 } 69 70 assert.Equal(t, expected, rules) 71 }