@@ -5,16 +5,16 @@ const assert = require('node:assert')
55const { createServer } = require ( 'node:http' )
66const { once } = require ( 'node:events' )
77const { fetch } = require ( '../..' )
8- const { createBrotliCompress , createGzip , createDeflate } = require ( 'node:zlib' )
8+ const zlib = require ( 'node:zlib' )
99const { closeServerAsPromise } = require ( '../utils/node-http' )
1010
1111test ( 'content-encoding header is case-iNsENsITIve' , async ( t ) => {
1212 const contentCodings = 'GZiP, bR'
1313 const text = 'Hello, World!'
1414
1515 const server = createServer ( { joinDuplicateHeaders : true } , ( req , res ) => {
16- const gzip = createGzip ( )
17- const brotli = createBrotliCompress ( )
16+ const gzip = zlib . createGzip ( )
17+ const brotli = zlib . createBrotliCompress ( )
1818
1919 res . setHeader ( 'Content-Encoding' , contentCodings )
2020 res . setHeader ( 'Content-Type' , 'text/plain' )
@@ -39,8 +39,8 @@ test('response decompression according to content-encoding should be handled in
3939 const text = 'Hello, World!'
4040
4141 const server = createServer ( { joinDuplicateHeaders : true } , ( req , res ) => {
42- const gzip = createGzip ( )
43- const deflate = createDeflate ( )
42+ const gzip = zlib . createGzip ( )
43+ const deflate = zlib . createDeflate ( )
4444
4545 res . setHeader ( 'Content-Encoding' , contentCodings )
4646 res . setHeader ( 'Content-Type' , 'text/plain' )
@@ -58,3 +58,30 @@ test('response decompression according to content-encoding should be handled in
5858
5959 assert . strictEqual ( await response . text ( ) , text )
6060} )
61+
62+ test ( 'should decompress zstandard response' ,
63+ { skip : typeof zlib . createZstdDecompress !== 'function' } ,
64+ async ( t ) => {
65+ const contentCodings = 'zstd'
66+ const text = 'Hello, World!'
67+ const server = createServer ( { joinDuplicateHeaders : true } , ( req , res ) => {
68+ const zstd = zlib . createZstdCompress ( )
69+
70+ res . setHeader ( 'Content-Encoding' , contentCodings )
71+ res . setHeader ( 'Content-Type' , 'text/plain' )
72+
73+ zstd . pipe ( res )
74+ zstd . write ( text )
75+ zstd . end ( )
76+ }
77+ ) . listen ( 0 )
78+ t . after ( closeServerAsPromise ( server ) )
79+
80+ await once ( server , 'listening' )
81+ const url = `http://localhost:${ server . address ( ) . port } `
82+
83+ const response = await fetch ( url )
84+ assert . strictEqual ( await response . text ( ) , text )
85+ assert . strictEqual ( response . headers . get ( 'content-encoding' ) , contentCodings )
86+ assert . strictEqual ( response . headers . get ( 'content-type' ) , 'text/plain' )
87+ } )
0 commit comments