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  }