github.com/grafana/pyroscope@v1.18.0/pkg/util/gziphandler/gzip_go18_test.go (about)

     1  // SPDX-License-Identifier: AGPL-3.0-only
     2  // Provenance-includes-location: https://github.com/nytimes/gziphandler/blob/2f8bb1d30d9d69c8e0c3714da5a9917125a87769/gzip_go18_test.go
     3  // Provenance-includes-license: Apache-2.0
     4  // Provenance-includes-copyright: Copyright 2016-2017 The New York Times Company.
     5  //go:build go1.8
     6  
     7  package gziphandler
     8  
     9  import (
    10  	"net/http"
    11  	"testing"
    12  
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func TestSetAcceptEncodingForPushOptionsWithoutHeaders(t *testing.T) {
    17  	var opts *http.PushOptions
    18  	opts = setAcceptEncodingForPushOptions(opts)
    19  
    20  	assert.NotNil(t, opts)
    21  	assert.NotNil(t, opts.Header)
    22  
    23  	for k, v := range opts.Header {
    24  		assert.Equal(t, "Accept-Encoding", k)
    25  		assert.Len(t, v, 1)
    26  		assert.Equal(t, "gzip", v[0])
    27  	}
    28  
    29  	opts = &http.PushOptions{}
    30  	opts = setAcceptEncodingForPushOptions(opts)
    31  
    32  	assert.NotNil(t, opts)
    33  	assert.NotNil(t, opts.Header)
    34  
    35  	for k, v := range opts.Header {
    36  		assert.Equal(t, "Accept-Encoding", k)
    37  		assert.Len(t, v, 1)
    38  		assert.Equal(t, "gzip", v[0])
    39  	}
    40  }
    41  
    42  func TestSetAcceptEncodingForPushOptionsWithHeaders(t *testing.T) {
    43  	opts := &http.PushOptions{
    44  		Header: http.Header{
    45  			"User-Agent": []string{"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36"},
    46  		},
    47  	}
    48  	opts = setAcceptEncodingForPushOptions(opts)
    49  
    50  	assert.NotNil(t, opts)
    51  	assert.NotNil(t, opts.Header)
    52  
    53  	assert.Equal(t, "gzip", opts.Header.Get("Accept-Encoding"))
    54  	assert.Equal(t, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36", opts.Header.Get("User-Agent"))
    55  
    56  	opts = &http.PushOptions{
    57  		Header: http.Header{
    58  			"User-Agent":   []string{"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36"},
    59  			acceptEncoding: []string{"deflate"},
    60  		},
    61  	}
    62  	opts = setAcceptEncodingForPushOptions(opts)
    63  
    64  	assert.NotNil(t, opts)
    65  	assert.NotNil(t, opts.Header)
    66  
    67  	e, found := opts.Header["Accept-Encoding"]
    68  	if !found {
    69  		assert.Fail(t, "Missing Accept-Encoding header value")
    70  	}
    71  	assert.Len(t, e, 1)
    72  	assert.Equal(t, "deflate", e[0])
    73  	assert.Equal(t, "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36", opts.Header.Get("User-Agent"))
    74  }