fix(http): Set response.ok

The ok property was not being set on response objects.
It's now set based on the status code.

Closes #6390
Closes #6503
This commit is contained in:
Utsav Shah 2016-01-15 05:49:24 -05:00 committed by Misko Hevery
parent d4827caa08
commit 92340350d2
2 changed files with 30 additions and 1 deletions

View File

@ -69,7 +69,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();

View File

@ -343,6 +343,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: AsyncTestCompleter) => {
var nextCalled = false;