Skip to content

Commit

Permalink
fix(http): Set response.ok
Browse files Browse the repository at this point in the history
The ok property was not being set on response objects.
It's now set based on the status code.

Closes angular#6390
  • Loading branch information
Utsav2 committed Jan 15, 2016
1 parent eda4c3e commit a5b0d5d
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
3 changes: 2 additions & 1 deletion modules/angular2/src/http/backends/xhr_backend.ts
Expand Up @@ -55,7 +55,8 @@ export class XHRConnection implements Connection {
responseOptions = baseResponseOptions.merge(responseOptions);
}
let response = new Response(responseOptions);
if (isSuccess(status)) {
response.ok = isSuccess(status);
if (response.ok) {
responseObserver.next(response);
// TODO(gdi2290): defer complete if array buffer until done
responseObserver.complete();
Expand Down
29 changes: 29 additions & 0 deletions modules/angular2/test/http/backends/xhr_backend_spec.ts
Expand Up @@ -210,6 +210,34 @@ export function main() {
existingXHRs[0].dispatchEvent('load');
}));

it('should set ok to true on 200 return', inject([AsyncTestCompleter], async => {
var statusCode = 200;
var connection = new XHRConnection(sampleRequest, new MockBrowserXHR(),
new ResponseOptions({status: statusCode}));

connection.response.subscribe(res => {
expect(res.ok).toBe(true);
async.done();
});

existingXHRs[0].setStatusCode(statusCode);
existingXHRs[0].dispatchEvent('load');
}));

it('should set ok to false on 300 return', inject([AsyncTestCompleter], async => {
var statusCode = 300;
var connection = new XHRConnection(sampleRequest, new MockBrowserXHR(),
new ResponseOptions({status: statusCode}));

connection.response.subscribe(res => { throw 'should not be called'; }, errRes => {
expect(errRes.ok).toBe(false);
async.done();
});

existingXHRs[0].setStatusCode(statusCode);
existingXHRs[0].dispatchEvent('load');
}));

it('should call error and not complete on 300+ codes', inject([AsyncTestCompleter], async => {
var nextCalled = false;
var errorCalled = false;
Expand All @@ -226,6 +254,7 @@ export function main() {
existingXHRs[0].setStatusCode(statusCode);
existingXHRs[0].dispatchEvent('load');
}));

it('should normalize IE\'s 1223 status code into 204', inject([AsyncTestCompleter], async => {
var statusCode = 1223;
var normalizedCode = 204;
Expand Down

0 comments on commit a5b0d5d

Please sign in to comment.