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 }