fix(HTTP/XhrBackend): correctly set the status code on errors (#9355)
fixes #9329 fixes angular/http#54
This commit is contained in:
parent
ba46ca683b
commit
12c49042ab
|
@ -80,7 +80,12 @@ export class XHRConnection implements Connection {
|
|||
};
|
||||
// error event handler
|
||||
let onError = (err: any) => {
|
||||
var responseOptions = new ResponseOptions({body: err, type: ResponseType.Error});
|
||||
var responseOptions = new ResponseOptions({
|
||||
body: err,
|
||||
type: ResponseType.Error,
|
||||
status: _xhr.status,
|
||||
statusText: _xhr.statusText,
|
||||
});
|
||||
if (isPresent(baseResponseOptions)) {
|
||||
responseOptions = baseResponseOptions.merge(responseOptions);
|
||||
}
|
||||
|
|
|
@ -181,6 +181,24 @@ export function main() {
|
|||
existingXHRs[0].dispatchEvent('error');
|
||||
}));
|
||||
|
||||
it('should set the status text and status code on error',
|
||||
inject([AsyncTestCompleter], (async: AsyncTestCompleter) => {
|
||||
var connection = new XHRConnection(
|
||||
sampleRequest, new MockBrowserXHR(),
|
||||
new ResponseOptions({type: ResponseType.Error}));
|
||||
connection.response.subscribe(null, (res: Response) => {
|
||||
expect(res.type).toBe(ResponseType.Error);
|
||||
expect(res.status).toEqual(0);
|
||||
expect(res.statusText).toEqual('');
|
||||
async.done();
|
||||
});
|
||||
const xhr = existingXHRs[0];
|
||||
// status=0 with a text='' is common for CORS errors
|
||||
xhr.setStatusCode(0);
|
||||
xhr.setStatusText('');
|
||||
xhr.dispatchEvent('error');
|
||||
}));
|
||||
|
||||
it('should call open with method and url when subscribed to', () => {
|
||||
var connection = new XHRConnection(sampleRequest, new MockBrowserXHR());
|
||||
expect(openSpy).not.toHaveBeenCalled();
|
||||
|
@ -188,7 +206,6 @@ export function main() {
|
|||
expect(openSpy).toHaveBeenCalledWith('GET', sampleRequest.url);
|
||||
});
|
||||
|
||||
|
||||
it('should call send on the backend with request body when subscribed to', () => {
|
||||
var body = 'Some body to love';
|
||||
var base = new BaseRequestOptions();
|
||||
|
|
Loading…
Reference in New Issue