github.com/google/syzkaller@v0.0.0-20251211124644-a066d2bc4b02/dashboard/app/handler_test.go (about)

     1  // Copyright 2025 syzkaller project authors. All rights reserved.
     2  // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
     3  
     4  package main
     5  
     6  import (
     7  	"compress/gzip"
     8  	"net/http"
     9  	"net/http/httptest"
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  func TestGzipResponseWriterCloser_no_compression(t *testing.T) {
    16  	res := httptest.NewRecorder()
    17  	gz := newGzipResponseWriterCloser(res)
    18  	gz.Write([]byte("test"))
    19  
    20  	err := gz.writeResult(httpRequestWithAcceptedEncoding(""))
    21  	assert.NoError(t, err)
    22  	assert.Equal(t, "test", res.Body.String())
    23  	assert.Equal(t, "", res.Header().Get("Content-Encoding"))
    24  }
    25  
    26  func TestGzipResponseWriterCloser_with_compression(t *testing.T) {
    27  	res := httptest.NewRecorder()
    28  	gz := newGzipResponseWriterCloser(res)
    29  	gz.Write([]byte("test"))
    30  
    31  	err := gz.writeResult(httpRequestWithAcceptedEncoding("gzip"))
    32  	assert.NoError(t, err)
    33  	assert.Equal(t, "gzip", res.Header().Get("Content-Encoding"))
    34  
    35  	gr, _ := gzip.NewReader(res.Body)
    36  	gotBytes := make([]byte, 28)
    37  	n, _ := gr.Read(gotBytes)
    38  	gotBytes = gotBytes[:n]
    39  	assert.Equal(t, "test", string(gotBytes))
    40  }
    41  
    42  func TestGzipResponseWriterCloser_headers(t *testing.T) {
    43  	res := httptest.NewRecorder()
    44  	gz := newGzipResponseWriterCloser(res)
    45  
    46  	gz.Header().Add("key", "val1")
    47  	gz.Header().Add("key", "val2")
    48  	err := gz.writeResult(httpRequestWithAcceptedEncoding(""))
    49  	assert.NoError(t, err)
    50  	assert.Equal(t, http.Header{
    51  		"Key": []string{"val1", "val2"},
    52  	}, res.Header())
    53  }
    54  
    55  func TestGzipResponseWriterCloser_status(t *testing.T) {
    56  	res := httptest.NewRecorder()
    57  	gz := newGzipResponseWriterCloser(res)
    58  
    59  	gz.WriteHeader(333)
    60  	gz.writeResult(httpRequestWithAcceptedEncoding("gzip"))
    61  	assert.Equal(t, 333, res.Code)
    62  }
    63  
    64  func httpRequestWithAcceptedEncoding(encoding string) *http.Request {
    65  	return &http.Request{Header: http.Header{"Accept-Encoding": []string{encoding}}}
    66  }