@@ -18,10 +18,13 @@ package rapidrows_test
1818
1919import (
2020 "bytes"
21+ "compress/flate"
22+ "compress/gzip"
2123 "encoding/json"
2224 "io"
2325 "net/http"
2426 "net/url"
27+ "strings"
2528 "testing"
2629 "time"
2730
@@ -1091,3 +1094,89 @@ func TestParamsInvalidPost(t *testing.T) {
10911094 r .Equal (400 , resp .StatusCode )
10921095 s .Stop (time .Second * 5 )
10931096}
1097+
1098+ const cfgTestParamsCompr = `{
1099+ "version": "1",
1100+ "listen": "127.0.0.1:60000",
1101+ "endpoints": [
1102+ {
1103+ "uri": "/",
1104+ "implType": "static-text",
1105+ "params": [
1106+ {
1107+ "name": "p",
1108+ "in": "body",
1109+ "type": "string",
1110+ "pattern": "a+",
1111+ "required": true
1112+ }
1113+ ],
1114+ "script": "success"
1115+ }
1116+ ]
1117+ }`
1118+
1119+ func TestParamsComprGzip (t * testing.T ) {
1120+ r := require .New (t )
1121+
1122+ cfg := loadCfg (r , cfgTestParamsCompr )
1123+ s := startServer (r , cfg )
1124+ time .Sleep (500 * time .Millisecond )
1125+
1126+ sbody := "p=" + strings .Repeat ("a" , 1000 )
1127+ zbody := & bytes.Buffer {}
1128+ zw := gzip .NewWriter (zbody )
1129+ _ , err := io .Copy (zw , strings .NewReader (sbody ))
1130+ r .Nil (err )
1131+ r .Nil (zw .Close ())
1132+
1133+ req , err := http .NewRequest ("POST" , "http://127.0.0.1:60000/" ,
1134+ bytes .NewReader (zbody .Bytes ()))
1135+ r .Nil (err )
1136+ r .NotNil (req )
1137+ req .Header .Set ("Content-Type" , "application/x-www-form-urlencoded" )
1138+ req .Header .Set ("Content-Encoding" , "gzip" )
1139+
1140+ resp , err := http .DefaultClient .Do (req )
1141+ r .Nil (err , "error was %v" , err )
1142+ r .NotNil (resp )
1143+ data , err := io .ReadAll (resp .Body )
1144+ r .Nil (err )
1145+ resp .Body .Close ()
1146+ r .Equal (200 , resp .StatusCode )
1147+ r .Equal ([]byte ("success" ), data )
1148+ s .Stop (time .Second * 5 )
1149+ }
1150+
1151+ func TestParamsComprDeflate (t * testing.T ) {
1152+ r := require .New (t )
1153+
1154+ cfg := loadCfg (r , cfgTestParamsCompr )
1155+ s := startServer (r , cfg )
1156+ time .Sleep (500 * time .Millisecond )
1157+
1158+ sbody := "p=" + strings .Repeat ("a" , 1000 )
1159+ zbody := & bytes.Buffer {}
1160+ zw , err := flate .NewWriter (zbody , - 1 )
1161+ r .Nil (err )
1162+ _ , err = io .Copy (zw , strings .NewReader (sbody ))
1163+ r .Nil (err )
1164+ r .Nil (zw .Close ())
1165+
1166+ req , err := http .NewRequest ("POST" , "http://127.0.0.1:60000/" ,
1167+ bytes .NewReader (zbody .Bytes ()))
1168+ r .Nil (err )
1169+ r .NotNil (req )
1170+ req .Header .Set ("Content-Type" , "application/x-www-form-urlencoded" )
1171+ req .Header .Set ("Content-Encoding" , "deflate" )
1172+
1173+ resp , err := http .DefaultClient .Do (req )
1174+ r .Nil (err , "error was %v" , err )
1175+ r .NotNil (resp )
1176+ data , err := io .ReadAll (resp .Body )
1177+ r .Nil (err )
1178+ resp .Body .Close ()
1179+ r .Equal (200 , resp .StatusCode )
1180+ r .Equal ([]byte ("success" ), data )
1181+ s .Stop (time .Second * 5 )
1182+ }
0 commit comments