Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7474e42

Browse files
committed
Add charset content-type tests
1 parent c4b7334 commit 7474e42

2 files changed

Lines changed: 83 additions & 13 deletions

File tree

test/server.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,22 @@ var routes = {
2828
});
2929
res.end('hi');
3030
},
31+
'/hello/utf8': function(res) {
32+
res.writeHead(200, {
33+
'Content-Type': 'text/plain; charset=utf-8'
34+
});
35+
// "hello"
36+
var buf = new Buffer([104, 101, 108, 108, 111]);
37+
res.end(buf);
38+
},
39+
'/hello/utf16le': function(res) {
40+
res.writeHead(200, {
41+
'Content-Type': 'text/plain; charset=utf-16le'
42+
});
43+
// "hello"
44+
var buf = new Buffer([104, 0, 101, 0, 108, 0, 108, 0, 111, 0]);
45+
res.end(buf);
46+
},
3147
'/binary': function(res) {
3248
res.writeHead(200, {'Content-Type': 'application/octet-stream'});
3349
var buf = new Buffer(256);

test/test.js

Lines changed: 67 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,30 @@
1+
function readBlobAsText(blob) {
2+
return new Promise(function(resolve, reject) {
3+
var reader = new FileReader()
4+
reader.onload = function() {
5+
resolve(reader.result)
6+
}
7+
reader.onerror = function() {
8+
reject(reader.error)
9+
}
10+
reader.readAsText(blob)
11+
})
12+
}
13+
14+
function readBlobAsBytes(blob) {
15+
return new Promise(function(resolve, reject) {
16+
var reader = new FileReader()
17+
reader.onload = function() {
18+
var view = new Uint8Array(reader.result)
19+
resolve(Array.prototype.slice.call(view))
20+
}
21+
reader.onerror = function() {
22+
reject(reader.error)
23+
}
24+
reader.readAsArrayBuffer(blob)
25+
})
26+
}
27+
128
test('resolves promise on 500 error', function() {
229
return fetch('/boom').then(function(response) {
330
assert.equal(response.status, 500)
@@ -44,19 +71,6 @@ suite('Request', function() {
4471

4572
// https://fetch.spec.whatwg.org/#response-class
4673
suite('Response', function() {
47-
function readBlobAsText(blob) {
48-
return new Promise(function(resolve, reject) {
49-
var reader = new FileReader()
50-
reader.onload = function() {
51-
resolve(reader.result)
52-
}
53-
reader.onerror = function() {
54-
reject(reader.error)
55-
}
56-
reader.readAsText(blob)
57-
})
58-
}
59-
6074
// https://fetch.spec.whatwg.org/#concept-bodyinit-extract
6175
suite('BodyInit extract', function() {
6276
;(Response.prototype.blob ? suite : suite.skip)('type Blob', function() {
@@ -134,6 +148,28 @@ suite('Body mixin', function() {
134148
})
135149
})
136150

151+
test('arrayBuffer handles utf-8 data', function() {
152+
return fetch('/hello/utf8').then(function(response) {
153+
return response.arrayBuffer()
154+
}).then(function(buf) {
155+
assert(buf instanceof ArrayBuffer, 'buf is an ArrayBuffer instance')
156+
assert.equal(buf.byteLength, 5, 'buf.byteLength is correct')
157+
var octets = Array.prototype.slice.call(new Uint8Array(buf))
158+
assert.deepEqual(octets, [104, 101, 108, 108, 111])
159+
})
160+
})
161+
162+
test('arrayBuffer handles utf-16le data', function() {
163+
return fetch('/hello/utf16le').then(function(response) {
164+
return response.arrayBuffer()
165+
}).then(function(buf) {
166+
assert(buf instanceof ArrayBuffer, 'buf is an ArrayBuffer instance')
167+
assert.equal(buf.byteLength, 10, 'buf.byteLength is correct')
168+
var octets = Array.prototype.slice.call(new Uint8Array(buf))
169+
assert.deepEqual(octets, [104, 0, 101, 0, 108, 0, 108, 0, 111, 0])
170+
})
171+
})
172+
137173
test('rejects arrayBuffer promise after body is consumed', function() {
138174
return fetch('/hello').then(function(response) {
139175
assert(response.arrayBuffer, 'Body does not implement arrayBuffer')
@@ -164,6 +200,24 @@ suite('Body mixin', function() {
164200
})
165201
})
166202

203+
test('blob handles utf-8 data', function() {
204+
return fetch('/hello/utf8').then(function(response) {
205+
return response.blob()
206+
}).then(readBlobAsBytes).then(function(octets) {
207+
assert.equal(octets.length, 5, 'blob.size is correct')
208+
assert.deepEqual(octets, [104, 101, 108, 108, 111])
209+
})
210+
})
211+
212+
test('blob handles utf-16le data', function() {
213+
return fetch('/hello/utf16le').then(function(response) {
214+
return response.blob()
215+
}).then(readBlobAsBytes).then(function(octets) {
216+
assert.equal(octets.length, 10, 'blob.size is correct')
217+
assert.deepEqual(octets, [104, 0, 101, 0, 108, 0, 108, 0, 111, 0])
218+
})
219+
})
220+
167221
test('rejects blob promise after body is consumed', function() {
168222
return fetch('/hello').then(function(response) {
169223
assert(response.blob, 'Body does not implement blob')

0 commit comments

Comments
 (0)