test-compression.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. 'use strict'
  2. /* globals it */
  3. const bent = require('../')
  4. const assert = require('assert')
  5. const tsame = require('tsame')
  6. const qs = require('querystring')
  7. const zlib = require('zlib')
  8. const test = it
  9. const same = (x, y) => assert.ok(tsame(x, y))
  10. const baseurl = 'https://echo-server.mikeal.now.sh/src'
  11. const u = path => baseurl + path
  12. if (!process.browser) {
  13. test('accept header', async () => {
  14. let request = bent('json')
  15. let json = await request(u('/info.js'))
  16. same(json.headers['accept-encoding'], 'br, gzip, deflate')
  17. request = bent('json', { 'Accept-Encoding': 'test' })
  18. json = await request(u('/info.js'))
  19. same(json.headers['accept-encoding'], 'test')
  20. })
  21. test('brotli', async () => {
  22. const request = bent('string', baseurl)
  23. const base64 = zlib.brotliCompressSync('ok').toString('base64')
  24. const headers = 'content-encoding:br'
  25. const str = await request(`/echo.js?${qs.stringify({ base64, headers })}`)
  26. same(str, 'ok')
  27. })
  28. test('gzip', async () => {
  29. const request = bent('string', baseurl)
  30. const base64 = zlib.gzipSync('ok').toString('base64')
  31. const headers = 'content-encoding:gzip'
  32. const str = await request(`/echo.js?${qs.stringify({ base64, headers })}`)
  33. same(str, 'ok')
  34. })
  35. test('deflate', async () => {
  36. const request = bent('string', baseurl)
  37. const base64 = zlib.deflateSync('ok').toString('base64')
  38. const headers = 'content-encoding:deflate'
  39. const str = await request(`/echo.js?${qs.stringify({ base64, headers })}`)
  40. same(str, 'ok')
  41. })
  42. test('unknown', async () => {
  43. const request = bent('buffer', baseurl)
  44. const base64 = zlib.gzipSync('untouched').toString('base64')
  45. const headers = 'content-encoding:myown'
  46. const buffer = await request(`/echo.js?${qs.stringify({ base64, headers })}`)
  47. const str = zlib.gunzipSync(buffer).toString('utf8')
  48. same(str, 'untouched')
  49. })
  50. }