Skip to content

Commit

Permalink
Ensure generic data is returned after Torii.fetch (#1310)
Browse files Browse the repository at this point in the history
Previously, generic `sessionData` was being clobbered be the data returned by Torii.fetch.
Now, generic sessionData is preserved and the result of Torii.fetch is merged into it.
  • Loading branch information
elidupuis authored and marcoow committed Oct 4, 2017
1 parent 7e77eea commit e84ebdd
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 6 deletions.
7 changes: 4 additions & 3 deletions addon/authenticators/torii.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import RSVP from 'rsvp';
import { assert } from '@ember/debug';
import { isPresent, isEmpty } from '@ember/utils';
import { assign as emberAssign } from '@ember/polyfills';
import BaseAuthenticator from './base';

/**
Expand Down Expand Up @@ -58,9 +59,9 @@ export default BaseAuthenticator.extend({
if (!isEmpty(data.provider)) {
const { provider } = data;

return this.get('torii').fetch(data.provider, data).then((data) => {
this._authenticateWithProvider(provider, data);
return data;
return this.get('torii').fetch(data.provider, data).then((fetchedData) => {
this._authenticateWithProvider(provider, fetchedData);
return emberAssign(data, fetchedData);
}, () => delete this._provider);
} else {
delete this._provider;
Expand Down
6 changes: 3 additions & 3 deletions tests/unit/authenticators/torii-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ describe('ToriiAuthenticator', () => {
sinon.stub(torii, 'fetch').returns(RSVP.resolve({ some: 'other data' }));
});

it('returns a promise that resolves with the session data', function() {
return authenticator.restore({ some: 'data', provider: 'provider' }).then((data) => {
expect(data).to.eql({ some: 'other data', provider: 'provider' });
it('returns a promise that resolves with the session data merged with the data fetched from torri', function() {
return authenticator.restore({ some: 'data', provider: 'provider', another: 'prop' }).then((data) => {
expect(data).to.eql({ some: 'other data', provider: 'provider', another: 'prop' });
});
});
});
Expand Down

0 comments on commit e84ebdd

Please sign in to comment.