aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard/app/handler_test.go
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2025-02-04 15:01:41 +0100
committerTaras Madan <tarasmadan@google.com>2025-02-05 14:45:47 +0000
commit577d049b4ea56e459da6e49f4b92fc1981c92440 (patch)
tree7e64eaf42a2032c44aa957a93210da14d594f6a2 /dashboard/app/handler_test.go
parent8d34fd8d3a26fa93992edd4432071dd9c249cd61 (diff)
dashboard/app: pre-gzip all responses
Diffstat (limited to 'dashboard/app/handler_test.go')
-rw-r--r--dashboard/app/handler_test.go66
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}}}
+}