diff options
author | AutumnSun <qsy1314@mail.ustc.edu.cn> | 2023-07-02 18:40:26 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-02 12:40:26 +0200 |
commit | 0d0bbfee5a8dd12a82e442d3cbb11e56726dd06e (patch) | |
tree | 9cf86b8ad5e5709c3907eda99d5919acafc242e1 /header_test.go | |
parent | Remove unnecessary indent blocks (#1586) (diff) | |
download | fasthttp-0d0bbfee5a8dd12a82e442d3cbb11e56726dd06e.tar.gz fasthttp-0d0bbfee5a8dd12a82e442d3cbb11e56726dd06e.tar.bz2 fasthttp-0d0bbfee5a8dd12a82e442d3cbb11e56726dd06e.zip |
Auto add 'Vary' header after compression (#1585)
* Auto add 'Vary' header after compression
Add config `SetAddVaryHeaderForCompression` to enable
'Vary: Accept-Encoding' header when compression is used.
* feat: always set the Vary header
* create and use `ResponseHeader.AddVaryBytes`
* not export 'AddVaryBytes'
Diffstat (limited to 'header_test.go')
-rw-r--r-- | header_test.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/header_test.go b/header_test.go index 9f9fd35..c2b8b18 100644 --- a/header_test.go +++ b/header_test.go @@ -3007,3 +3007,65 @@ func TestResponseHeader_Keys(t *testing.T) { t.Fatalf("Unexpected value %q. Expected %q", actualTrailerKeys, expectedTrailerKeys) } } + +func TestAddVaryHeader(t *testing.T) { + t.Parallel() + + var h ResponseHeader + + h.addVaryBytes([]byte("Accept-Encoding")) + got := string(h.Peek("Vary")) + expected := "Accept-Encoding" + if got != expected { + t.Errorf("expected %q got %q", expected, got) + } + + var buf bytes.Buffer + h.WriteTo(&buf) //nolint:errcheck + + if n := strings.Count(buf.String(), "Vary: "); n != 1 { + t.Errorf("Vary occurred %d times", n) + } +} + +func TestAddVaryHeaderExisting(t *testing.T) { + t.Parallel() + + var h ResponseHeader + + h.Set("Vary", "Accept") + h.addVaryBytes([]byte("Accept-Encoding")) + got := string(h.Peek("Vary")) + expected := "Accept,Accept-Encoding" + if got != expected { + t.Errorf("expected %q got %q", expected, got) + } + + var buf bytes.Buffer + h.WriteTo(&buf) //nolint:errcheck + + if n := strings.Count(buf.String(), "Vary: "); n != 1 { + t.Errorf("Vary occurred %d times", n) + } +} + +func TestAddVaryHeaderExistingAcceptEncoding(t *testing.T) { + t.Parallel() + + var h ResponseHeader + + h.Set("Vary", "Accept-Encoding") + h.addVaryBytes([]byte("Accept-Encoding")) + got := string(h.Peek("Vary")) + expected := "Accept-Encoding" + if got != expected { + t.Errorf("expected %q got %q", expected, got) + } + + var buf bytes.Buffer + h.WriteTo(&buf) //nolint:errcheck + + if n := strings.Count(buf.String(), "Vary: "); n != 1 { + t.Errorf("Vary occurred %d times", n) + } +} |