@@ -12,10 +12,12 @@ import (
1212 "testing"
1313
1414 brotli2 "github.com/andybalholm/brotli"
15+ zstd2 "github.com/klauspost/compress/zstd"
1516 "github.com/stretchr/testify/assert"
1617 "github.com/stretchr/testify/require"
1718 "github.com/vearutop/statigz"
1819 "github.com/vearutop/statigz/brotli"
20+ "github.com/vearutop/statigz/zstd"
1921)
2022
2123//go:embed testdata/*
@@ -285,6 +287,62 @@ func TestServer_ServeHTTP_get_br(t *testing.T) {
285287 assert .Equal (t , raw , decoded )
286288}
287289
290+ func TestServer_ServeHTTP_get_zst_init (t * testing.T ) {
291+ s := statigz .FileServer (v , statigz .EncodeOnInit , brotli .AddEncoding , zstd .AddEncoding )
292+
293+ req , err := http .NewRequest (http .MethodGet , "/testdata/swagger.json" , nil )
294+ require .NoError (t , err )
295+
296+ req .Header .Set ("Accept-Encoding" , "zstd" )
297+
298+ rw := httptest .NewRecorder ()
299+ s .ServeHTTP (rw , req )
300+
301+ assert .Equal (t , http .StatusOK , rw .Code )
302+ assert .Equal (t , "zstd" , rw .Header ().Get ("Content-Encoding" ))
303+ assert .Equal (t , "1bp69hxb9nd93.zst" , rw .Header ().Get ("Etag" ))
304+ assert .NotEmpty (t , rw .Body .String ())
305+
306+ r , err := zstd2 .NewReader (rw .Body )
307+ require .NoError (t , err )
308+
309+ decoded , err := io .ReadAll (r )
310+ assert .NoError (t , err )
311+
312+ raw , err := os .ReadFile ("testdata/swagger.json" )
313+ assert .NoError (t , err )
314+
315+ assert .Equal (t , raw , decoded )
316+ }
317+
318+ func TestServer_ServeHTTP_get_zst (t * testing.T ) {
319+ s := statigz .FileServer (v , statigz .EncodeOnInit , brotli .AddEncoding , zstd .AddEncoding )
320+
321+ req , err := http .NewRequest (http .MethodGet , "/testdata/deeper/swagger.json" , nil )
322+ require .NoError (t , err )
323+
324+ req .Header .Set ("Accept-Encoding" , "zstd" )
325+
326+ rw := httptest .NewRecorder ()
327+ s .ServeHTTP (rw , req )
328+
329+ assert .Equal (t , http .StatusOK , rw .Code )
330+ assert .Equal (t , "zstd" , rw .Header ().Get ("Content-Encoding" ))
331+ assert .Equal (t , "1061t8bc8jx4s" , rw .Header ().Get ("Etag" ))
332+ assert .NotEmpty (t , rw .Body .String ())
333+
334+ r , err := zstd2 .NewReader (rw .Body )
335+ require .NoError (t , err )
336+
337+ decoded , err := io .ReadAll (r )
338+ assert .NoError (t , err )
339+
340+ raw , err := os .ReadFile ("testdata/swagger.json" )
341+ assert .NoError (t , err )
342+
343+ assert .Equal (t , raw , decoded )
344+ }
345+
288346func TestServer_ServeHTTP_indexCompressed (t * testing.T ) {
289347 s := statigz .FileServer (v )
290348
0 commit comments