@@ -28,8 +28,10 @@ import (
28
28
"text/template"
29
29
"time"
30
30
31
+ "github.com/andybalholm/brotli"
31
32
"github.com/gofiber/fiber/v3/internal/storage/memory"
32
33
"github.com/gofiber/utils/v2"
34
+ "github.com/klauspost/compress/zstd"
33
35
"github.com/stretchr/testify/require"
34
36
"github.com/valyala/bytebufferpool"
35
37
"github.com/valyala/fasthttp"
@@ -3060,7 +3062,7 @@ func Test_Static_Compress(t *testing.T) {
3060
3062
}
3061
3063
}
3062
3064
3063
- func Test_Ctx_SendFile_CompressGzipBody (t * testing.T ) {
3065
+ func Test_Ctx_SendFile_Compress_CheckCompressed (t * testing.T ) {
3064
3066
t .Parallel ()
3065
3067
app := New ()
3066
3068
@@ -3071,34 +3073,48 @@ func Test_Ctx_SendFile_CompressGzipBody(t *testing.T) {
3071
3073
defer func () {
3072
3074
require .NoError (t , f .Close ())
3073
3075
}()
3074
- expectFileContent , err := io .ReadAll (f )
3075
- require .NoError (t , err )
3076
3076
3077
- // fetch file info for the not modified test case
3078
- _ , err = os .Stat ("./ctx.go" )
3077
+ expectedFileContent , err := io .ReadAll (f )
3079
3078
require .NoError (t , err )
3080
3079
3081
- // simple test case
3082
- reqCtx := & fasthttp.RequestCtx {}
3083
- reqCtx .Request .Header .Add (HeaderAcceptEncoding , "gzip" )
3080
+ sendFileBodyReader := func (compression string ) * bytes.Reader {
3081
+ reqCtx := & fasthttp.RequestCtx {}
3082
+ reqCtx .Request .Header .Add (HeaderAcceptEncoding , compression )
3083
+
3084
+ c := app .AcquireCtx (reqCtx )
3085
+ err = c .SendFile ("./ctx.go" , SendFile {
3086
+ Compress : true ,
3087
+ })
3088
+ require .NoError (t , err )
3089
+
3090
+ return bytes .NewReader (c .Response ().Body ())
3091
+ }
3092
+
3093
+ t .Run ("gzip" , func (t * testing.T ) {
3094
+ gz , err := gzip .NewReader (sendFileBodyReader ("gzip" ))
3095
+ require .NoError (t , err )
3084
3096
3085
- c := app . AcquireCtx ( reqCtx )
3086
- err = c . SendFile ( "./ctx.go" , SendFile {
3087
- Compress : true ,
3097
+ body , err := io . ReadAll ( gz )
3098
+ require . NoError ( t , err )
3099
+ require . Equal ( t , expectedFileContent , body )
3088
3100
})
3089
- require .NoError (t , err )
3090
3101
3091
- gz , err := gzip .NewReader (bytes .NewReader (c .Response ().Body ()))
3092
- require .NoError (t , err )
3102
+ t .Run ("zstd" , func (t * testing.T ) {
3103
+ zstdReader , err := zstd .NewReader (sendFileBodyReader ("zstd" ))
3104
+ require .NoError (t , err )
3093
3105
3094
- body , err := io .ReadAll (gz )
3095
- require .NoError (t , err )
3106
+ body , err := io .ReadAll (zstdReader )
3107
+ require .NoError (t , err )
3108
+ require .Equal (t , expectedFileContent , body )
3109
+ })
3096
3110
3097
- require .Equal (t , expectFileContent , body )
3098
- require .Equal (t , "gzip" , string (c .Response ().Header .Peek (HeaderContentEncoding )))
3099
- require .Equal (t , StatusOK , c .Response ().StatusCode ())
3111
+ t .Run ("br" , func (t * testing.T ) {
3112
+ brReader := brotli .NewReader (sendFileBodyReader ("br" ))
3100
3113
3101
- app .ReleaseCtx (c )
3114
+ body , err := io .ReadAll (brReader )
3115
+ require .NoError (t , err )
3116
+ require .Equal (t , expectedFileContent , body )
3117
+ })
3102
3118
}
3103
3119
3104
3120
//go:embed ctx.go
0 commit comments