mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-04-20 23:00:59 +00:00
fix($httpBackend mock): getResponseHeader should be case insensitive
This commit is contained in:
parent
44b2f44f93
commit
bb2e7488fa
2 changed files with 37 additions and 1 deletions
14
src/angular-mocks.js
vendored
14
src/angular-mocks.js
vendored
|
|
@ -766,7 +766,19 @@ function MockXhr() {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.getResponseHeader = function(name) {
|
this.getResponseHeader = function(name) {
|
||||||
return this.$$headers[name];
|
// the lookup must be case insensitive, that's why we try two quick lookups and full scan at last
|
||||||
|
var header = this.$$headers[name];
|
||||||
|
if (header) return header;
|
||||||
|
|
||||||
|
name = angular.lowercase(name);
|
||||||
|
header = this.$$headers[name];
|
||||||
|
if (header) return header;
|
||||||
|
|
||||||
|
header = undefined;
|
||||||
|
angular.forEach(this.$$headers, function(headerVal, headerName) {
|
||||||
|
if (!header && angular.lowercase(headerName) == name) header = headerVal;
|
||||||
|
});
|
||||||
|
return header;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.getAllResponseHeaders = function() {
|
this.getAllResponseHeaders = function() {
|
||||||
|
|
|
||||||
24
test/angular-mocksSpec.js
vendored
24
test/angular-mocksSpec.js
vendored
|
|
@ -470,6 +470,30 @@ describe('mocks', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('should normalize when header name case when accessed via getResponseHeader', function() {
|
||||||
|
hb.when('GET', '/u1').respond(200, null, {'X-Fake': 'Header',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Location': '/foo'});
|
||||||
|
var xhr = hb('GET', '/u1', null, noop, {});
|
||||||
|
hb.flush();
|
||||||
|
expect(xhr.getResponseHeader('x-fAKE')).toBe('Header');
|
||||||
|
expect(xhr.getResponseHeader('content-type')).toBe('application/json');
|
||||||
|
expect(xhr.getResponseHeader('Location')).toBe('/foo');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('should normalize expect header name case when accessed via getResponseHeader', function() {
|
||||||
|
hb.expect('GET', '/u1').respond(200, null, {'X-Fake': 'Header',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'Location': '/foo'});
|
||||||
|
var xhr = hb('GET', '/u1', null, noop, {});
|
||||||
|
hb.flush();
|
||||||
|
expect(xhr.getResponseHeader('x-fAKE')).toBe('Header');
|
||||||
|
expect(xhr.getResponseHeader('content-type')).toBe('application/json');
|
||||||
|
expect(xhr.getResponseHeader('Location')).toBe('/foo');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
it('should preserve the order of requests', function() {
|
it('should preserve the order of requests', function() {
|
||||||
hb.when('GET', '/url1').respond(200, 'first');
|
hb.when('GET', '/url1').respond(200, 'first');
|
||||||
hb.when('GET', '/url2').respond(201, 'second');
|
hb.when('GET', '/url2').respond(201, 'second');
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue