diff options
| author | Taras Madan <tarasmadan@google.com> | 2025-02-04 15:01:41 +0100 |
|---|---|---|
| committer | Taras Madan <tarasmadan@google.com> | 2025-02-05 14:45:47 +0000 |
| commit | 577d049b4ea56e459da6e49f4b92fc1981c92440 (patch) | |
| tree | 7e64eaf42a2032c44aa957a93210da14d594f6a2 /dashboard/app/handler_test.go | |
| parent | 8d34fd8d3a26fa93992edd4432071dd9c249cd61 (diff) | |
dashboard/app: pre-gzip all responses
Diffstat (limited to 'dashboard/app/handler_test.go')
| -rw-r--r-- | dashboard/app/handler_test.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/dashboard/app/handler_test.go b/dashboard/app/handler_test.go new file mode 100644 index 000000000..3eef3e8e8 --- /dev/null +++ b/dashboard/app/handler_test.go @@ -0,0 +1,66 @@ +// Copyright 2025 syzkaller project authors. All rights reserved. +// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +package main + +import ( + "compress/gzip" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGzipResponseWriterCloser_no_compression(t *testing.T) { + res := httptest.NewRecorder() + gz := newGzipResponseWriterCloser(res) + gz.Write([]byte("test")) + + err := gz.writeResult(httpRequestWithAcceptedEncoding("")) + assert.NoError(t, err) + assert.Equal(t, "test", res.Body.String()) + assert.Equal(t, "", res.Header().Get("Content-Encoding")) +} + +func TestGzipResponseWriterCloser_with_compression(t *testing.T) { + res := httptest.NewRecorder() + gz := newGzipResponseWriterCloser(res) + gz.Write([]byte("test")) + + err := gz.writeResult(httpRequestWithAcceptedEncoding("gzip")) + assert.NoError(t, err) + assert.Equal(t, "gzip", res.Header().Get("Content-Encoding")) + + gr, _ := gzip.NewReader(res.Body) + gotBytes := make([]byte, 28) + n, _ := gr.Read(gotBytes) + gotBytes = gotBytes[:n] + assert.Equal(t, "test", string(gotBytes)) +} + +func TestGzipResponseWriterCloser_headers(t *testing.T) { + res := httptest.NewRecorder() + gz := newGzipResponseWriterCloser(res) + + gz.Header().Add("key", "val1") + gz.Header().Add("key", "val2") + err := gz.writeResult(httpRequestWithAcceptedEncoding("")) + assert.NoError(t, err) + assert.Equal(t, http.Header{ + "Key": []string{"val1", "val2"}, + }, res.Header()) +} + +func TestGzipResponseWriterCloser_status(t *testing.T) { + res := httptest.NewRecorder() + gz := newGzipResponseWriterCloser(res) + + gz.WriteHeader(333) + gz.writeResult(httpRequestWithAcceptedEncoding("gzip")) + assert.Equal(t, 333, res.Code) +} + +func httpRequestWithAcceptedEncoding(encoding string) *http.Request { + return &http.Request{Header: http.Header{"Accept-Encoding": []string{encoding}}} +} |
