diff options
| author | Igor Minar | 2011-12-01 18:21:45 -0500 |
|---|---|---|
| committer | Igor Minar | 2011-12-01 18:21:45 -0500 |
| commit | bb2e7488fa7defea53e7dc3f5ab58fb4f837d2b6 (patch) | |
| tree | f1f68cda40278f3edf4a80b1526d8eea3fadc95f | |
| parent | 44b2f44f93afe226196cb11acb03eb2fa2de04c1 (diff) | |
| download | angular.js-bb2e7488fa7defea53e7dc3f5ab58fb4f837d2b6.tar.bz2 | |
fix($httpBackend mock): getResponseHeader should be case insensitive
| -rw-r--r-- | src/angular-mocks.js | 14 | ||||
| -rw-r--r-- | test/angular-mocksSpec.js | 24 |
2 files changed, 37 insertions, 1 deletions
diff --git a/src/angular-mocks.js b/src/angular-mocks.js index 903e6ff1..42b44c2f 100644 --- a/src/angular-mocks.js +++ b/src/angular-mocks.js @@ -766,7 +766,19 @@ function MockXhr() { }; 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() { diff --git a/test/angular-mocksSpec.js b/test/angular-mocksSpec.js index 30814985..5d0be7ad 100644 --- a/test/angular-mocksSpec.js +++ b/test/angular-mocksSpec.js @@ -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() { hb.when('GET', '/url1').respond(200, 'first'); hb.when('GET', '/url2').respond(201, 'second'); |
