| 
									
										
										
										
											2016-06-23 09:47:54 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							|  |  |  |  * Copyright Google Inc. All Rights Reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Use of this source code is governed by an MIT-style license that can be | 
					
						
							|  |  |  |  * found in the LICENSE file at https://angular.io/license
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												perf: switch angular to use StaticInjector instead of ReflectiveInjector
This change allows ReflectiveInjector to be tree shaken resulting
in not needed Reflect polyfil and smaller bundles.
Code savings for HelloWorld using Closure:
Reflective: bundle.js:  105,864(34,190 gzip)
    Static: bundle.js:  154,889(33,555 gzip)
                            645( 2%)
BREAKING CHANGE:
`platformXXXX()` no longer accepts providers which depend on reflection.
Specifically the method signature when from `Provider[]` to
`StaticProvider[]`.
Example:
Before:
```
[
  MyClass,
  {provide: ClassA, useClass: SubClassA}
]
```
After:
```
[
  {provide: MyClass, deps: [Dep1,...]},
  {provide: ClassA, useClass: SubClassA, deps: [Dep1,...]}
]
```
NOTE: This only applies to platform creation and providers for the JIT
compiler. It does not apply to `@Compotent` or `@NgModule` provides
declarations.
Benchpress note: Previously Benchpress also supported reflective
provides, which now require static providers.
DEPRECATION:
- `ReflectiveInjector` is now deprecated as it will be remove. Use
  `Injector.create` as a replacement.
closes #18496
											
										 
											2017-08-03 12:33:29 -07:00
										 |  |  | import {Injector} from '@angular/core'; | 
					
						
							| 
									
										
										
										
											2016-08-17 07:43:31 -07:00
										 |  |  | import {TestBed, getTestBed} from '@angular/core/testing'; | 
					
						
							| 
									
										
										
										
											2017-03-02 12:12:46 -08:00
										 |  |  | import {AsyncTestCompleter, afterEach, beforeEach, describe, inject, it} from '@angular/core/testing/src/testing_internal'; | 
					
						
							|  |  |  | import {expect} from '@angular/platform-browser/testing/src/matchers'; | 
					
						
							| 
									
										
										
										
											2015-11-30 17:22:52 -08:00
										 |  |  | import {Observable} from 'rxjs/Observable'; | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  | import {zip} from 'rxjs/observable/zip'; | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-23 16:34:57 -07:00
										 |  |  | import {BaseRequestOptions, ConnectionBackend, Http, HttpModule, JSONPBackend, Jsonp, JsonpModule, Request, RequestMethod, RequestOptions, Response, ResponseContentType, ResponseOptions, URLSearchParams, XHRBackend} from '../index'; | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  | import {stringToArrayBuffer} from '../src/http_utils'; | 
					
						
							| 
									
										
										
										
											2017-03-02 12:12:46 -08:00
										 |  |  | import {MockBackend, MockConnection} from '../testing/src/mock_backend'; | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  | export function main() { | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  |   describe('injectables', () => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |     const url = 'http://foo.bar'; | 
					
						
							|  |  |  |     let http: Http; | 
					
						
							|  |  |  |     let injector: Injector; | 
					
						
							|  |  |  |     let jsonpBackend: MockBackend; | 
					
						
							|  |  |  |     let xhrBackend: MockBackend; | 
					
						
							|  |  |  |     let jsonp: Jsonp; | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:43:31 -07:00
										 |  |  |     beforeEach(() => { | 
					
						
							|  |  |  |       TestBed.configureTestingModule({ | 
					
						
							|  |  |  |         imports: [HttpModule, JsonpModule], | 
					
						
							|  |  |  |         providers: [ | 
					
						
							|  |  |  |           {provide: XHRBackend, useClass: MockBackend}, | 
					
						
							|  |  |  |           {provide: JSONPBackend, useClass: MockBackend} | 
					
						
							|  |  |  |         ] | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       injector = getTestBed(); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  |     it('should allow using jsonpInjectables and httpInjectables in same injector', | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |        inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-17 07:43:31 -07:00
										 |  |  |          http = injector.get(Http); | 
					
						
							|  |  |  |          jsonp = injector.get(Jsonp); | 
					
						
							| 
									
										
										
										
											2017-09-12 20:45:02 +02:00
										 |  |  |          jsonpBackend = injector.get(JSONPBackend) as any as MockBackend; | 
					
						
							| 
									
										
										
										
											2017-01-03 16:54:46 -08:00
										 |  |  |          xhrBackend = injector.get(XHRBackend) as any as MockBackend; | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |          let xhrCreatedConnections = 0; | 
					
						
							|  |  |  |          let jsonpCreatedConnections = 0; | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |          xhrBackend.connections.subscribe(() => { | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  |            xhrCreatedConnections++; | 
					
						
							|  |  |  |            expect(xhrCreatedConnections).toEqual(1); | 
					
						
							|  |  |  |            if (jsonpCreatedConnections) { | 
					
						
							|  |  |  |              async.done(); | 
					
						
							|  |  |  |            } | 
					
						
							|  |  |  |          }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |          http.get(url).subscribe(() => {}); | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |          jsonpBackend.connections.subscribe(() => { | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  |            jsonpCreatedConnections++; | 
					
						
							|  |  |  |            expect(jsonpCreatedConnections).toEqual(1); | 
					
						
							|  |  |  |            if (xhrCreatedConnections) { | 
					
						
							|  |  |  |              async.done(); | 
					
						
							|  |  |  |            } | 
					
						
							|  |  |  |          }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |          jsonp.request(url).subscribe(() => {}); | 
					
						
							| 
									
										
										
										
											2015-07-30 16:29:16 +02:00
										 |  |  |        })); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  |   describe('http', () => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |     const url = 'http://foo.bar'; | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |     let http: Http; | 
					
						
							|  |  |  |     let injector: Injector; | 
					
						
							|  |  |  |     let backend: MockBackend; | 
					
						
							|  |  |  |     let baseResponse: Response; | 
					
						
							|  |  |  |     let jsonp: Jsonp; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  |     beforeEach(() => { | 
					
						
							| 
									
										
											  
											
												perf: switch angular to use StaticInjector instead of ReflectiveInjector
This change allows ReflectiveInjector to be tree shaken resulting
in not needed Reflect polyfil and smaller bundles.
Code savings for HelloWorld using Closure:
Reflective: bundle.js:  105,864(34,190 gzip)
    Static: bundle.js:  154,889(33,555 gzip)
                            645( 2%)
BREAKING CHANGE:
`platformXXXX()` no longer accepts providers which depend on reflection.
Specifically the method signature when from `Provider[]` to
`StaticProvider[]`.
Example:
Before:
```
[
  MyClass,
  {provide: ClassA, useClass: SubClassA}
]
```
After:
```
[
  {provide: MyClass, deps: [Dep1,...]},
  {provide: ClassA, useClass: SubClassA, deps: [Dep1,...]}
]
```
NOTE: This only applies to platform creation and providers for the JIT
compiler. It does not apply to `@Compotent` or `@NgModule` provides
declarations.
Benchpress note: Previously Benchpress also supported reflective
provides, which now require static providers.
DEPRECATION:
- `ReflectiveInjector` is now deprecated as it will be remove. Use
  `Injector.create` as a replacement.
closes #18496
											
										 
											2017-08-03 12:33:29 -07:00
										 |  |  |       injector = Injector.create([ | 
					
						
							|  |  |  |         {provide: BaseRequestOptions, deps: []}, {provide: MockBackend, deps: []}, { | 
					
						
							| 
									
										
										
										
											2016-06-02 17:30:40 -07:00
										 |  |  |           provide: Http, | 
					
						
							|  |  |  |           useFactory: function(backend: ConnectionBackend, defaultOptions: BaseRequestOptions) { | 
					
						
							|  |  |  |             return new Http(backend, defaultOptions); | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |           deps: [MockBackend, BaseRequestOptions] | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           provide: Jsonp, | 
					
						
							|  |  |  |           useFactory: function(backend: ConnectionBackend, defaultOptions: BaseRequestOptions) { | 
					
						
							|  |  |  |             return new Jsonp(backend, defaultOptions); | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |           deps: [MockBackend, BaseRequestOptions] | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |       ]); | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  |       http = injector.get(Http); | 
					
						
							| 
									
										
										
										
											2015-09-18 13:30:05 -07:00
										 |  |  |       jsonp = injector.get(Jsonp); | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  |       backend = injector.get(MockBackend); | 
					
						
							| 
									
										
										
										
											2015-06-24 00:27:07 -07:00
										 |  |  |       baseResponse = new Response(new ResponseOptions({body: 'base response'})); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |       spyOn(Http.prototype, 'request').and.callThrough(); | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |     afterEach(() => backend.verifyNoPendingRequests()); | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |     describe('Http', () => { | 
					
						
							| 
									
										
										
										
											2015-06-13 16:44:32 -07:00
										 |  |  |       describe('.request()', () => { | 
					
						
							| 
									
										
										
										
											2015-06-09 15:18:57 -07:00
										 |  |  |         it('should return an Observable', | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |            () => { expect(http.request(url)).toBeAnInstanceOf(Observable); }); | 
					
						
							| 
									
										
										
										
											2015-06-13 16:44:32 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-19 12:14:12 -07:00
										 |  |  |         it('should accept a fully-qualified request as its only parameter', | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-06-19 12:14:12 -07:00
										 |  |  |                expect(c.request.url).toBe('https://google.com'); | 
					
						
							| 
									
										
										
										
											2015-06-24 00:27:07 -07:00
										 |  |  |                c.mockRespond(new Response(new ResponseOptions({body: 'Thank you'}))); | 
					
						
							| 
									
										
										
										
											2015-06-19 12:14:12 -07:00
										 |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |              http.request(new Request(new RequestOptions({url: 'https://google.com'}))) | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |                  .subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-19 12:14:12 -07:00
										 |  |  |            })); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-19 19:54:23 -08:00
										 |  |  |         it('should accept a fully-qualified request as its only parameter', | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-11-19 19:54:23 -08:00
										 |  |  |                expect(c.request.url).toBe('https://google.com'); | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                expect(c.request.method).toBe(RequestMethod.Post); | 
					
						
							| 
									
										
										
										
											2015-11-19 19:54:23 -08:00
										 |  |  |                c.mockRespond(new Response(new ResponseOptions({body: 'Thank you'}))); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							|  |  |  |              http.request(new Request(new RequestOptions( | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                               {url: 'https://google.com', method: RequestMethod.Post}))) | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |                  .subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-11-19 19:54:23 -08:00
										 |  |  |            })); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-19 12:14:12 -07:00
										 |  |  |         it('should perform a get request for given url if only passed a string', | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => c.mockRespond(baseResponse)); | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |              http.request('http://basic.connection').subscribe((res: Response) => { | 
					
						
							|  |  |  |                expect(res.text()).toBe('base response'); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |            })); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-19 19:54:23 -08:00
										 |  |  |         it('should perform a post request for given url if options include a method', | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                expect(c.request.method).toEqual(RequestMethod.Post); | 
					
						
							| 
									
										
										
										
											2015-11-19 19:54:23 -08:00
										 |  |  |                c.mockRespond(baseResponse); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              const requestOptions = new RequestOptions({method: RequestMethod.Post}); | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |              http.request('http://basic.connection', requestOptions).subscribe((res: Response) => { | 
					
						
							|  |  |  |                expect(res.text()).toBe('base response'); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2015-11-19 19:54:23 -08:00
										 |  |  |            })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         it('should perform a post request for given url if options include a method', | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                expect(c.request.method).toEqual(RequestMethod.Post); | 
					
						
							| 
									
										
										
										
											2015-11-19 19:54:23 -08:00
										 |  |  |                c.mockRespond(baseResponse); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |              const requestOptions = {method: RequestMethod.Post}; | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |              http.request('http://basic.connection', requestOptions).subscribe((res: Response) => { | 
					
						
							|  |  |  |                expect(res.text()).toBe('base response'); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2015-11-19 19:54:23 -08:00
										 |  |  |            })); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |         it('should perform a get request and complete the response', | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => c.mockRespond(baseResponse)); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |              http.request('http://basic.connection') | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |                  .subscribe( | 
					
						
							| 
									
										
										
										
											2017-04-17 11:12:53 -07:00
										 |  |  |                      (res: Response) => { expect(res.text()).toBe('base response'); }, null !, | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |                      () => { async.done(); }); | 
					
						
							| 
									
										
										
										
											2015-06-19 12:14:12 -07:00
										 |  |  |            })); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |         it('should perform multiple get requests and complete the responses', | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => c.mockRespond(baseResponse)); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |              http.request('http://basic.connection').subscribe((res: Response) => { | 
					
						
							|  |  |  |                expect(res.text()).toBe('base response'); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |              http.request('http://basic.connection') | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |                  .subscribe( | 
					
						
							| 
									
										
										
										
											2017-04-17 11:12:53 -07:00
										 |  |  |                      (res: Response) => { expect(res.text()).toBe('base response'); }, null !, | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |                      () => { async.done(); }); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |            })); | 
					
						
							| 
									
										
										
										
											2015-09-18 13:30:05 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |         it('should throw if url is not a string or Request', () => { | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |           const req = <Request>{}; | 
					
						
							| 
									
										
										
										
											2015-09-18 13:30:05 -07:00
										 |  |  |           expect(() => http.request(req)) | 
					
						
							|  |  |  |               .toThrowError('First argument must be a url string or Request instance.'); | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2015-06-19 12:14:12 -07:00
										 |  |  |       }); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       describe('.get()', () => { | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should perform a get request for given url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                expect(c.request.method).toBe(RequestMethod.Get); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |                expect(http.request).toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              expect(http.request).not.toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              http.get(url).subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |            })); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       describe('.post()', () => { | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should perform a post request for given url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                expect(c.request.method).toBe(RequestMethod.Post); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |                expect(http.request).toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              expect(http.request).not.toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              http.post(url, 'post me').subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |            })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should attach the provided body to the request', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              const body = 'this is my post body'; | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |                expect(c.request.text()).toBe(body); | 
					
						
							|  |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              http.post(url, body).subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |            })); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       describe('.put()', () => { | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should perform a put request for given url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                expect(c.request.method).toBe(RequestMethod.Put); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |                expect(http.request).toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              expect(http.request).not.toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              http.put(url, 'put me').subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |            })); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should attach the provided body to the request', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              const body = 'this is my put body'; | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |                expect(c.request.text()).toBe(body); | 
					
						
							|  |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              http.put(url, body).subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |            })); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       describe('.delete()', () => { | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should perform a delete request for given url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                expect(c.request.method).toBe(RequestMethod.Delete); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |                expect(http.request).toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              expect(http.request).not.toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              http.delete(url).subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |            })); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       describe('.patch()', () => { | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should perform a patch request for given url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                expect(c.request.method).toBe(RequestMethod.Patch); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |                expect(http.request).toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |                backend.resolveAllConnections(); | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              expect(http.request).not.toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              http.patch(url, 'this is my patch body').subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |            })); | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should attach the provided body to the request', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              const body = 'this is my patch body'; | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |                expect(c.request.text()).toBe(body); | 
					
						
							|  |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              http.patch(url, body).subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |            })); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |       describe('.head()', () => { | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should perform a head request for given url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-12-03 22:44:14 +01:00
										 |  |  |                expect(c.request.method).toBe(RequestMethod.Head); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |                expect(http.request).toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |                backend.resolveAllConnections(); | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              expect(http.request).not.toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              http.head(url).subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |            })); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2015-07-13 14:47:10 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-08 18:15:13 +02:00
										 |  |  |       describe('.options()', () => { | 
					
						
							|  |  |  |         it('should perform an options request for given url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							|  |  |  |                expect(c.request.method).toBe(RequestMethod.Options); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |                expect(http.request).toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2016-08-08 18:15:13 +02:00
										 |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2016-10-18 09:04:25 +03:00
										 |  |  |              expect(http.request).not.toHaveBeenCalled(); | 
					
						
							| 
									
										
										
										
											2016-08-08 18:15:13 +02:00
										 |  |  |              http.options(url).subscribe((res: Response) => {}); | 
					
						
							|  |  |  |            })); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-13 14:47:10 -04:00
										 |  |  |       describe('searchParams', () => { | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should append search params to url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |              const params = new URLSearchParams(); | 
					
						
							| 
									
										
										
										
											2015-07-13 14:47:10 -04:00
										 |  |  |              params.append('q', 'puppies'); | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-07-13 14:47:10 -04:00
										 |  |  |                expect(c.request.url).toEqual('https://www.google.com?q=puppies'); | 
					
						
							|  |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |              http.get('https://www.google.com', new RequestOptions({search: params})) | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |                  .subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-07-13 14:47:10 -04:00
										 |  |  |            })); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |         it('should append string search params to url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-07-13 14:47:10 -04:00
										 |  |  |                expect(c.request.url).toEqual('https://www.google.com?q=piggies'); | 
					
						
							|  |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |              http.get('https://www.google.com', new RequestOptions({search: 'q=piggies'})) | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |                  .subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-07-13 14:47:10 -04:00
										 |  |  |            })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         it('should produce valid url when url already contains a query', | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2015-07-13 14:47:10 -04:00
										 |  |  |                expect(c.request.url).toEqual('https://www.google.com?q=angular&as_eq=1.x'); | 
					
						
							|  |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |              http.get('https://www.google.com?q=angular', new RequestOptions({search: 'as_eq=1.x'})) | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |                  .subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-07-13 14:47:10 -04:00
										 |  |  |            })); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2015-09-21 10:46:16 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-25 16:42:30 +01:00
										 |  |  |       describe('params', () => { | 
					
						
							|  |  |  |         it('should append params to url', | 
					
						
							|  |  |  |            inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |              backend.connections.subscribe((c: MockConnection) => { | 
					
						
							|  |  |  |                expect(c.request.url).toEqual('https://www.google.com?q=puppies'); | 
					
						
							|  |  |  |                backend.resolveAllConnections(); | 
					
						
							|  |  |  |                async.done(); | 
					
						
							|  |  |  |              }); | 
					
						
							|  |  |  |              http.get('https://www.google.com', {params: {q: 'puppies'}}) | 
					
						
							|  |  |  |                  .subscribe((res: Response) => {}); | 
					
						
							|  |  |  |            })); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-21 10:46:16 +03:00
										 |  |  |       describe('string method names', () => { | 
					
						
							|  |  |  |         it('should allow case insensitive strings for method names', () => { | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |           inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |             backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2016-07-21 17:12:00 -07:00
										 |  |  |               expect(c.request.method).toBe(RequestMethod.Post); | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |               c.mockRespond(new Response(new ResponseOptions({body: 'Thank you'}))); | 
					
						
							| 
									
										
										
										
											2015-09-21 10:46:16 +03:00
										 |  |  |               async.done(); | 
					
						
							|  |  |  |             }); | 
					
						
							| 
									
										
										
										
											2015-10-01 16:04:20 -07:00
										 |  |  |             http.request( | 
					
						
							|  |  |  |                     new Request(new RequestOptions({url: 'https://google.com', method: 'PosT'}))) | 
					
						
							| 
									
										
										
										
											2016-02-01 17:05:50 -08:00
										 |  |  |                 .subscribe((res: Response) => {}); | 
					
						
							| 
									
										
										
										
											2015-09-21 10:46:16 +03:00
										 |  |  |           }); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         it('should throw when invalid string parameter is passed for method name', () => { | 
					
						
							|  |  |  |           expect(() => { | 
					
						
							|  |  |  |             http.request( | 
					
						
							|  |  |  |                 new Request(new RequestOptions({url: 'https://google.com', method: 'Invalid'}))); | 
					
						
							|  |  |  |           }).toThrowError('Invalid request method. The method "Invalid" is not supported.'); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       }); | 
					
						
							| 
									
										
										
										
											2015-06-13 15:49:05 -07:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2015-09-18 13:30:05 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     describe('Jsonp', () => { | 
					
						
							|  |  |  |       describe('.request()', () => { | 
					
						
							|  |  |  |         it('should throw if url is not a string or Request', () => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |           const req = <Request>{}; | 
					
						
							| 
									
										
										
										
											2015-09-18 13:30:05 -07:00
										 |  |  |           expect(() => jsonp.request(req)) | 
					
						
							|  |  |  |               .toThrowError('First argument must be a url string or Request instance.'); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     describe('response buffer', () => { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should attach the provided buffer to the response', | 
					
						
							|  |  |  |          inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |            backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |              expect(c.request.responseType).toBe(ResponseContentType.ArrayBuffer); | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |              c.mockRespond(new Response(new ResponseOptions({body: new ArrayBuffer(32)}))); | 
					
						
							|  |  |  |              async.done(); | 
					
						
							|  |  |  |            }); | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |            http.get( | 
					
						
							|  |  |  |                    'https://www.google.com', | 
					
						
							|  |  |  |                    new RequestOptions({responseType: ResponseContentType.ArrayBuffer})) | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |                .subscribe((res: Response) => {}); | 
					
						
							|  |  |  |          })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should be able to consume a buffer containing a String as any response type', | 
					
						
							|  |  |  |          inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							|  |  |  |            backend.connections.subscribe((c: MockConnection) => c.mockRespond(baseResponse)); | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |            http.get('https://www.google.com').subscribe((res: Response) => { | 
					
						
							|  |  |  |              expect(res.arrayBuffer()).toBeAnInstanceOf(ArrayBuffer); | 
					
						
							|  |  |  |              expect(res.text()).toBe('base response'); | 
					
						
							|  |  |  |              async.done(); | 
					
						
							|  |  |  |            }); | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |          })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should be able to consume a buffer containing an ArrayBuffer as any response type', | 
					
						
							|  |  |  |          inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |            const arrayBuffer = stringToArrayBuffer('{"response": "ok"}'); | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |            backend.connections.subscribe( | 
					
						
							|  |  |  |                (c: MockConnection) => | 
					
						
							|  |  |  |                    c.mockRespond(new Response(new ResponseOptions({body: arrayBuffer})))); | 
					
						
							|  |  |  |            http.get('https://www.google.com').subscribe((res: Response) => { | 
					
						
							|  |  |  |              expect(res.arrayBuffer()).toBe(arrayBuffer); | 
					
						
							|  |  |  |              expect(res.text()).toEqual('{"response": "ok"}'); | 
					
						
							|  |  |  |              expect(res.json()).toEqual({response: 'ok'}); | 
					
						
							|  |  |  |              async.done(); | 
					
						
							|  |  |  |            }); | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |          })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should be able to consume a buffer containing an Object as any response type', | 
					
						
							|  |  |  |          inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |            const simpleObject = {'content': 'ok'}; | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |            backend.connections.subscribe( | 
					
						
							|  |  |  |                (c: MockConnection) => | 
					
						
							|  |  |  |                    c.mockRespond(new Response(new ResponseOptions({body: simpleObject})))); | 
					
						
							|  |  |  |            http.get('https://www.google.com').subscribe((res: Response) => { | 
					
						
							|  |  |  |              expect(res.arrayBuffer()).toBeAnInstanceOf(ArrayBuffer); | 
					
						
							| 
									
										
										
										
											2016-10-19 13:42:39 -07:00
										 |  |  |              expect(res.text()).toEqual(JSON.stringify(simpleObject, null, 2)); | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |              expect(res.json()).toBe(simpleObject); | 
					
						
							|  |  |  |              async.done(); | 
					
						
							|  |  |  |            }); | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |          })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should preserve encoding of ArrayBuffer response', | 
					
						
							|  |  |  |          inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |            const message = 'é@θЂ'; | 
					
						
							|  |  |  |            const arrayBuffer = stringToArrayBuffer(message); | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |            backend.connections.subscribe( | 
					
						
							|  |  |  |                (c: MockConnection) => | 
					
						
							|  |  |  |                    c.mockRespond(new Response(new ResponseOptions({body: arrayBuffer})))); | 
					
						
							|  |  |  |            http.get('https://www.google.com').subscribe((res: Response) => { | 
					
						
							|  |  |  |              expect(res.arrayBuffer()).toBeAnInstanceOf(ArrayBuffer); | 
					
						
							|  |  |  |              expect(res.text()).toEqual(message); | 
					
						
							|  |  |  |              async.done(); | 
					
						
							|  |  |  |            }); | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |          })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should preserve encoding of String response', | 
					
						
							|  |  |  |          inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |            const message = 'é@θЂ'; | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |            backend.connections.subscribe( | 
					
						
							|  |  |  |                (c: MockConnection) => | 
					
						
							|  |  |  |                    c.mockRespond(new Response(new ResponseOptions({body: message})))); | 
					
						
							|  |  |  |            http.get('https://www.google.com').subscribe((res: Response) => { | 
					
						
							|  |  |  |              expect(res.arrayBuffer()).toEqual(stringToArrayBuffer(message)); | 
					
						
							|  |  |  |              async.done(); | 
					
						
							|  |  |  |            }); | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |          })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       it('should have an equivalent response independently of the buffer used', | 
					
						
							|  |  |  |          inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |            const message = {'param': 'content'}; | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |            backend.connections.subscribe((c: MockConnection) => { | 
					
						
							| 
									
										
										
										
											2016-11-12 14:08:58 +01:00
										 |  |  |              const body = (): any => { | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |                switch (c.request.responseType) { | 
					
						
							|  |  |  |                  case ResponseContentType.Text: | 
					
						
							| 
									
										
										
										
											2016-10-19 13:42:39 -07:00
										 |  |  |                    return JSON.stringify(message, null, 2); | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |                  case ResponseContentType.Json: | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |                    return message; | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |                  case ResponseContentType.ArrayBuffer: | 
					
						
							| 
									
										
										
										
											2016-10-19 13:42:39 -07:00
										 |  |  |                    return stringToArrayBuffer(JSON.stringify(message, null, 2)); | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |                } | 
					
						
							|  |  |  |              }; | 
					
						
							| 
									
										
										
										
											2016-07-21 17:12:00 -07:00
										 |  |  |              c.mockRespond(new Response(new ResponseOptions({body: body()}))); | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |            }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-27 00:47:20 +02:00
										 |  |  |            zip(http.get( | 
					
						
							|  |  |  |                    'https://www.google.com', | 
					
						
							|  |  |  |                    new RequestOptions({responseType: ResponseContentType.Text})), | 
					
						
							|  |  |  |                http.get( | 
					
						
							|  |  |  |                    'https://www.google.com', | 
					
						
							|  |  |  |                    new RequestOptions({responseType: ResponseContentType.Json})), | 
					
						
							|  |  |  |                http.get( | 
					
						
							|  |  |  |                    'https://www.google.com', | 
					
						
							|  |  |  |                    new RequestOptions({responseType: ResponseContentType.ArrayBuffer}))) | 
					
						
							|  |  |  |                .subscribe((res: Array<any>) => { | 
					
						
							| 
									
										
										
										
											2016-02-24 16:37:18 +01:00
										 |  |  |                  expect(res[0].text()).toEqual(res[1].text()); | 
					
						
							|  |  |  |                  expect(res[1].text()).toEqual(res[2].text()); | 
					
						
							|  |  |  |                  async.done(); | 
					
						
							|  |  |  |                }); | 
					
						
							|  |  |  |          })); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2015-04-28 23:07:55 -07:00
										 |  |  |   }); | 
					
						
							|  |  |  | } |