fix(http): preserve header case when copying headers (#12697)

This commit is contained in:
Alex Rickabaugh 2016-11-04 13:26:38 -07:00 committed by vikerman
parent fe1d0e29c5
commit 121e5080aa
3 changed files with 15 additions and 7 deletions

View File

@ -49,7 +49,7 @@ export class Headers {
}
if (headers instanceof Headers) {
headers._headers.forEach((values: string[], name: string) => {
headers.forEach((values: string[], name: string) => {
values.forEach(value => this.append(name, value));
});
return;

View File

@ -233,9 +233,9 @@ export function main() {
var connection = new XHRConnection(
new Request(base.merge(new RequestOptions({headers: headers}))), new MockBrowserXHR());
connection.response.subscribe();
expect(setRequestHeaderSpy).toHaveBeenCalledWith('content-type', 'text/xml');
expect(setRequestHeaderSpy).toHaveBeenCalledWith('breaking-bad', '<3');
expect(setRequestHeaderSpy).toHaveBeenCalledWith('x-multi', 'a,b');
expect(setRequestHeaderSpy).toHaveBeenCalledWith('Content-Type', 'text/xml');
expect(setRequestHeaderSpy).toHaveBeenCalledWith('Breaking-Bad', '<3');
expect(setRequestHeaderSpy).toHaveBeenCalledWith('X-Multi', 'a,b');
});
it('should skip content type detection if custom content type header is set', () => {
@ -246,7 +246,8 @@ export function main() {
new Request(base.merge(new RequestOptions({body: body, headers: headers}))),
new MockBrowserXHR());
connection.response.subscribe();
expect(setRequestHeaderSpy).toHaveBeenCalledWith('content-type', 'text/plain');
expect(setRequestHeaderSpy).toHaveBeenCalledWith('Content-Type', 'text/plain');
expect(setRequestHeaderSpy).not.toHaveBeenCalledWith('Content-Type', 'application/json');
expect(setRequestHeaderSpy).not.toHaveBeenCalledWith('content-type', 'application/json');
});
@ -355,7 +356,7 @@ export function main() {
new MockBrowserXHR());
connection.response.subscribe();
expect(sendSpy).toHaveBeenCalledWith(body);
expect(setRequestHeaderSpy).toHaveBeenCalledWith('content-type', 'text/css');
expect(setRequestHeaderSpy).toHaveBeenCalledWith('Content-Type', 'text/css');
});
it('should use array buffer body to the request', () => {
@ -386,7 +387,7 @@ export function main() {
new MockBrowserXHR());
connection.response.subscribe();
expect(sendSpy).toHaveBeenCalledWith(body);
expect(setRequestHeaderSpy).toHaveBeenCalledWith('content-type', 'text/css');
expect(setRequestHeaderSpy).toHaveBeenCalledWith('Content-Type', 'text/css');
});
}

View File

@ -76,6 +76,13 @@ export function main() {
expect(JSON.stringify(headers)).toEqual('{"fOo":["bat"]}');
});
it('should preserve cases after cloning', () => {
const headers = new Headers();
headers.set('fOo', 'baz');
headers.set('foo', 'bat');
expect(JSON.stringify(new Headers(headers))).toEqual('{"fOo":["bat"]}');
});
it('should convert input array to string', () => {
const headers = new Headers();
headers.set('foo', ['bar', 'baz']);