Skip to content

Commit 3525d8a

Browse files
author
Brian Yarger
committed
fix(http): throw if url is not string or Request
Closes angular#4245 Closes angular#4257
1 parent dd9b3b4 commit 3525d8a

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

modules/angular2/src/http/http.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ export class Http {
120120
new Request(mergeOptions(this._defaultOptions, options, RequestMethods.Get, url)));
121121
} else if (url instanceof Request) {
122122
responseObservable = httpRequest(this._backend, url);
123+
} else {
124+
throw makeTypeError('First argument must be a url string or Request instance.');
123125
}
124126
return responseObservable;
125127
}
@@ -201,6 +203,8 @@ export class Jsonp extends Http {
201203
makeTypeError('JSONP requests must use GET request method.');
202204
}
203205
responseObservable = httpRequest(this._backend, url);
206+
} else {
207+
throw makeTypeError('First argument must be a url string or Request instance.');
204208
}
205209
return responseObservable;
206210
}

modules/angular2/test/http/http_spec.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ export function main() {
103103
var injector: Injector;
104104
var backend: MockBackend;
105105
var baseResponse;
106+
var jsonp: Jsonp;
106107
beforeEach(() => {
107108
injector = Injector.resolveAndCreate([
108109
BaseRequestOptions,
@@ -111,9 +112,15 @@ export function main() {
111112
function(backend: ConnectionBackend, defaultOptions: BaseRequestOptions) {
112113
return new Http(backend, defaultOptions);
113114
},
115+
[MockBackend, BaseRequestOptions]),
116+
bind(Jsonp).toFactory(
117+
function(backend: ConnectionBackend, defaultOptions: BaseRequestOptions) {
118+
return new Jsonp(backend, defaultOptions);
119+
},
114120
[MockBackend, BaseRequestOptions])
115121
]);
116122
http = injector.get(Http);
123+
jsonp = injector.get(Jsonp);
117124
backend = injector.get(MockBackend);
118125
baseResponse = new Response(new ResponseOptions({body: 'base response'}));
119126
});
@@ -160,6 +167,13 @@ export function main() {
160167
// async.done();
161168
// });
162169
// }));
170+
171+
172+
it('should throw if url is not a string or Request', () => {
173+
var req = <Request>{};
174+
expect(() => http.request(req))
175+
.toThrowError('First argument must be a url string or Request instance.');
176+
});
163177
});
164178

165179

@@ -306,5 +320,15 @@ export function main() {
306320
}));
307321
});
308322
});
323+
324+
describe('Jsonp', () => {
325+
describe('.request()', () => {
326+
it('should throw if url is not a string or Request', () => {
327+
var req = <Request>{};
328+
expect(() => jsonp.request(req))
329+
.toThrowError('First argument must be a url string or Request instance.');
330+
});
331+
});
332+
});
309333
});
310334
}

0 commit comments

Comments
 (0)