diff --git a/packages/-ember-data/tests/unit/adapters/rest-adapter/ajax-options-test.js b/packages/-ember-data/tests/unit/adapters/rest-adapter/ajax-options-test.js index 39ed014c433..44d7a7edab5 100644 --- a/packages/-ember-data/tests/unit/adapters/rest-adapter/ajax-options-test.js +++ b/packages/-ember-data/tests/unit/adapters/rest-adapter/ajax-options-test.js @@ -194,6 +194,33 @@ module('unit/adapters/rest-adapter/ajax-options - building requests', function(h }); }); + test('ajaxOptions() headers take precedence over adapter headers', function(assert) { + let store = this.owner.lookup('service:store'); + let adapter = store.adapterFor('application'); + + adapter.headers = { + 'Content-Type': 'application/x-www-form-urlencoded', + }; + + let url = 'example.com'; + let type = 'POST'; + let ajaxOptions = adapter.ajaxOptions(url, type, { + headers: { + 'Content-Type': 'application/json', + }, + }); + + assert.deepEqual(ajaxOptions, { + credentials: 'same-origin', + type: 'POST', + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + url: 'example.com', + }); + }); + test('_fetchRequest() returns a promise', function(assert) { let store = this.owner.lookup('service:store'); let adapter = store.adapterFor('application'); diff --git a/packages/adapter/addon/rest.js b/packages/adapter/addon/rest.js index 9309d8ad4db..8510fa37b94 100644 --- a/packages/adapter/addon/rest.js +++ b/packages/adapter/addon/rest.js @@ -1086,7 +1086,7 @@ const RESTAdapter = Adapter.extend(BuildURLMixin, { let headers = get(this, 'headers'); if (headers !== undefined) { - options.headers = assign({}, options.headers, headers); + options.headers = assign({}, headers, options.headers); } else if (!options.headers) { options.headers = {}; }