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  }