import * as httpm from '../_out' import * as ifm from '../_out/interfaces' describe('headers', () => { let _http: httpm.HttpClient beforeEach(() => { _http = new httpm.HttpClient('http-client-tests') }) it('preserves existing headers on getJson', async () => { let additionalHeaders = {[httpm.Headers.Accept]: 'foo'} let jsonObj: ifm.ITypedResponse = await _http.getJson( 'https://httpbin.org/get', additionalHeaders ) expect(jsonObj.result.headers['Accept']).toBe('foo') expect(jsonObj.headers[httpm.Headers.ContentType]).toBe( httpm.MediaTypes.ApplicationJson ) let httpWithHeaders = new httpm.HttpClient() httpWithHeaders.requestOptions = { headers: { [httpm.Headers.Accept]: 'baz' } } jsonObj = await httpWithHeaders.getJson('https://httpbin.org/get') expect(jsonObj.result.headers['Accept']).toBe('baz') expect(jsonObj.headers[httpm.Headers.ContentType]).toBe( httpm.MediaTypes.ApplicationJson ) }) it('preserves existing headers on postJson', async () => { let additionalHeaders = {[httpm.Headers.Accept]: 'foo'} let jsonObj: ifm.ITypedResponse = await _http.postJson( 'https://httpbin.org/post', {}, additionalHeaders ) expect(jsonObj.result.headers['Accept']).toBe('foo') expect(jsonObj.headers[httpm.Headers.ContentType]).toBe( httpm.MediaTypes.ApplicationJson ) let httpWithHeaders = new httpm.HttpClient() httpWithHeaders.requestOptions = { headers: { [httpm.Headers.Accept]: 'baz' } } jsonObj = await httpWithHeaders.postJson( 'https://httpbin.org/post', {} ) expect(jsonObj.result.headers['Accept']).toBe('baz') expect(jsonObj.headers[httpm.Headers.ContentType]).toBe( httpm.MediaTypes.ApplicationJson ) }) it('preserves existing headers on putJson', async () => { let additionalHeaders = {[httpm.Headers.Accept]: 'foo'} let jsonObj: ifm.ITypedResponse = await _http.putJson( 'https://httpbin.org/put', {}, additionalHeaders ) expect(jsonObj.result.headers['Accept']).toBe('foo') expect(jsonObj.headers[httpm.Headers.ContentType]).toBe( httpm.MediaTypes.ApplicationJson ) let httpWithHeaders = new httpm.HttpClient() httpWithHeaders.requestOptions = { headers: { [httpm.Headers.Accept]: 'baz' } } jsonObj = await httpWithHeaders.putJson('https://httpbin.org/put', {}) expect(jsonObj.result.headers['Accept']).toBe('baz') expect(jsonObj.headers[httpm.Headers.ContentType]).toBe( httpm.MediaTypes.ApplicationJson ) }) it('preserves existing headers on patchJson', async () => { let additionalHeaders = {[httpm.Headers.Accept]: 'foo'} let jsonObj: ifm.ITypedResponse = await _http.patchJson( 'https://httpbin.org/patch', {}, additionalHeaders ) expect(jsonObj.result.headers['Accept']).toBe('foo') expect(jsonObj.headers[httpm.Headers.ContentType]).toBe( httpm.MediaTypes.ApplicationJson ) let httpWithHeaders = new httpm.HttpClient() httpWithHeaders.requestOptions = { headers: { [httpm.Headers.Accept]: 'baz' } } jsonObj = await httpWithHeaders.patchJson( 'https://httpbin.org/patch', {} ) expect(jsonObj.result.headers['Accept']).toBe('baz') expect(jsonObj.headers[httpm.Headers.ContentType]).toBe( httpm.MediaTypes.ApplicationJson ) }) })