gzip.js
2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*eslint-env mocha*/
/*eslint no-invalid-this:0*/
/*jshint -W100*/
var assert = require('power-assert');
var helper = require('./_helper');
var cli = require('../index');
describe('gzip', function () {
before(function () {
// - Windows10 + Node.js6の環境においてUser-AgentをGUIブラウザにすると
// "content-encoding: gzip"ではなく"transfer-encoding: chunked"になる
// (なぜかoperaは対象外)
// (Ubuntu16.04では発生しない)
// - どちらもgzip圧縮はされているので動作としては問題はないが
// どこで書き換わっているのかが不明で気持ち悪いのでUser-Agentを変更してテスト
// - node-staticが送信するresponse headerは"content-encoding: gzip"
// - requestが受信したresponse headerは"transfer-encoding: chunked"
// - 上記の状況を見るにNode.js本体のhttpが何かしているような予感
cli.set('browser', 'googlebot');
});
after(function () {
cli.set('headers', {
'user-agent': null
});
});
it('enable => gzipヘッダを送信して返ってきた圧縮HTMLが解凍されてからUTF-8に変換される', function (done) {
cli.set('gzip', true);
cli.fetch(helper.url('gzip', 'utf-8'), function (err, $, res, body) {
assert(res.headers['content-encoding'] === 'gzip');
//assert(res.headers.vary === 'Accept-Encoding');
//assert(res.headers['transfer-encoding'] === 'chunked');
assert($('title').text() === '夏目漱石「私の個人主義」');
done();
});
});
it('disable => gzipヘッダを送信しないで返ってきた生のHTMLがそのままUTF-8に変換される', function (done) {
cli.set('gzip', false);
cli.fetch(helper.url('gzip', 'utf-8'), function (err, $, res, body) {
assert(! ('content-encoding' in res.headers));
assert(! ('transfer-encoding' in res.headers));
assert(! ('vary' in res.headers));
assert(res.headers['content-length'] > 0);
assert($('title').text() === '夏目漱石「私の個人主義」');
done();
});
});
});