goyave.dev/goyave/v4@v4.4.11/util/httputil/httputil_test.go (about) 1 package httputil 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "goyave.dev/goyave/v4/util/sliceutil" 8 ) 9 10 func TestParseMultiValuesHeader(t *testing.T) { 11 expected := []HeaderValue{ 12 {Value: "text/html", Priority: 0.8}, 13 {Value: "text/*", Priority: 0.8}, 14 {Value: "*/*", Priority: 0.8}, 15 } 16 result := ParseMultiValuesHeader("text/html;q=0.8,text/*;q=0.8,*/*;q=0.8") 17 assert.True(t, sliceutil.Equal(expected, result)) 18 19 result = ParseMultiValuesHeader("*/*;q=0.8,text/*;q=0.8,text/html;q=0.8") 20 assert.True(t, sliceutil.Equal(expected, result)) 21 22 expected = []HeaderValue{ 23 {Value: "text/html", Priority: 1}, 24 {Value: "*/*", Priority: 0.7}, 25 {Value: "text/*", Priority: 0.5}, 26 } 27 result = ParseMultiValuesHeader("text/html,text/*;q=0.5,*/*;q=0.7") 28 assert.True(t, sliceutil.Equal(expected, result)) 29 30 expected = []HeaderValue{ 31 {Value: "fr", Priority: 1}, 32 {Value: "fr-FR", Priority: 0.8}, 33 {Value: "en-US", Priority: 0.5}, 34 {Value: "en-*", Priority: 0.3}, 35 {Value: "en", Priority: 0.3}, 36 {Value: "*", Priority: 0.3}, 37 } 38 result = ParseMultiValuesHeader("fr , fr-FR;q=0.8, en-US ;q=0.5, *;q=0.3, en-*;q=0.3, en;q=0.3") 39 assert.True(t, sliceutil.Equal(expected, result)) 40 41 expected = []HeaderValue{{Value: "fr", Priority: 1}} 42 result = ParseMultiValuesHeader("fr") 43 assert.True(t, sliceutil.Equal(expected, result)) 44 45 expected = []HeaderValue{{Value: "fr", Priority: 0.3}} 46 result = ParseMultiValuesHeader("fr;q=0.3") 47 assert.True(t, sliceutil.Equal(expected, result)) 48 }