it('can be unset at runtime', function () { auth.delegate({ login: function () {} }); var collection = new MockCollection(); var wall = buildWall({ collection: collection, // may not always work postButton: true }, collection); wall._hasReceivedTranslations = true; wall.configure({forceReconstruct: true}); expect(wall.$el.find('menu').children().length).toBe(1); // ok now to remove it by specifying false wall.configure({ postButton: false }); expect(wall.$el.find('menu').children().length).toBe(0); // restore wall.configure({ postButton: true }); expect(wall.$el.find('menu').children().length).toBe(1); // ok now to remove it by specifying undefined wall.configure({ postButton: undefined }); expect(wall.$el.find('menu').children().length).toBe(0); wall.destroy(); });
it('invokes old delegate loginByCookie correctly', function() { var loginByCookieSpy = sinon.spy(oldDelegate, 'loginByCookie'); var newDelegate = authAdapters.oldToNew(oldDelegate); auth.delegate(newDelegate); expect(loginByCookieSpy).to.be.calledOnce; expect(loginByCookieSpy.getCall(0).args.length).to.equal(1); });
it('invokes old delegate logout method correcly', function() { var logoutSpy = sinon.spy(oldDelegate, 'logout'); var newDelegate = authAdapters.oldToNew(oldDelegate); auth.delegate(newDelegate); auth.logout(); expect(logoutSpy).to.be.calledOnce; });
it('invokes old delegate logout callback correcly', function() { var onceSpy = sinon.spy(window.Livefyre.user, 'once'); var newDelegate = authAdapters.oldToNew(betaDelegate); auth.delegate(newDelegate); auth.logout(); expect(onceSpy).to.be.calledOnce; expect(onceSpy.calledWith('logout')).to.be.true; });
it('invokes old delegate login method correcly', function() { var newDelegate = authAdapters.oldToNew(betaDelegate); auth.delegate(newDelegate); var loginSpy = sinon.spy(betaDelegate, 'login'); auth.login(); expect(loginSpy).to.be.calledOnce; loginSpy.restore(); });
it('binds to old delegate user token changes', function() { var fyreOnSpy = sinon.spy(window.fyre.conv.user, 'on'); var fyreOffSpy = sinon.spy(window.fyre.conv.user, 'off'); var newDelegate = authAdapters.oldToNew(oldDelegate); auth.delegate(newDelegate); expect(fyreOnSpy).to.be.calledOnce; expect(fyreOnSpy.getCall(0).args[0]).to.equal('change:token'); fyreOnSpy.restore(); fyreOffSpy.restore(); });
it('invokes old delegate login method correcly', function() { var loginSpy = sinon.spy(oldDelegate, 'login'); var newDelegate = authAdapters.oldToNew(oldDelegate); auth.delegate(newDelegate); auth.login(); expect(loginSpy).to.be.calledOnce; expect(loginSpy.getCall(0).args.length).to.equal(1); expect(loginSpy.getCall(0).args[0].success).to.be.a('function'); expect(loginSpy.getCall(0).args[0].failure).to.be.a('function'); });
it('invokes old delegate editProfile correctly', function() { var editProfileSpy = sinon.spy(oldDelegate, 'editProfile'); var newDelegate = authAdapters.oldToNew(oldDelegate); auth.delegate(newDelegate); auth.editProfile(123); expect(editProfileSpy).to.be.calledOnce; expect(editProfileSpy.getCall(0).args.length).to.equal(2); expect(editProfileSpy.getCall(0).args[0].success).to.be.a('function'); expect(editProfileSpy.getCall(0).args[0].failure).to.be.a('function'); expect(editProfileSpy.getCall(0).args[1]).to.equal(123); });
beforeEach(function () { // Auth mock user mockUserFactory = new MockUserFactory(); user = mockUserFactory.createUser(); cmdSpy = jasmine.createSpy('command function'); cmd = new Command(cmdSpy); authReqCmd = new AuthRequiredCommand(cmd); observer = jasmine.createSpy('change:canExecute'); authReqCmd.on('change:canExecute', observer); auth.delegate({ login: function () {} }); auth.delegate({ login: function () {}, logout: function (loggedOut) { loggedOut(); } }); });
it('is present if there is an auth login delegate and collection and opts.postButton is truthy', function () { auth.delegate({ login: function () {} }); var fakeCollection = { pipe: function () {} }; var wall = new WallComponent({ collection: fakeCollection, // may not always work postButton: true }); wall.render(); expect(wall.$('menu').children().length).toBe(1); });
it('authenticates with the correct collection and auth endpoint, with env', function() { var cb; window.fyre.conv.user.on = function (ev, callback) { cb = callback; }; var newDelegate = authAdapters.oldToNew(oldDelegate, 123, 456, 'test.fyre.co', 'qa.fyre.co'); auth.delegate(newDelegate); var remoteLoginSpy = sinon.spy(auth, 'login'); cb({}, 'tokenator'); expect(remoteLoginSpy).to.be.calledOnce; remoteLoginSpy.restore(); });
it('is present if there is an auth login delegate and collection and opts.postButton is truthy', function () { auth.delegate({ login: function () {} }); var collection = new MockCollection(); var wall = buildWall({ collection: collection, // may not always work postButton: true }, collection); wall.render(); expect(wall.$el.find('menu').children().length).toBe(1); wall.destroy(); });
it('authenticates with the correct collection and auth endpoint', function(done) { var cb; window.Livefyre.user.once = function (ev, callback) { cb = callback; }; var newDelegate = authAdapters.oldToNew(betaDelegate, 123, 456); auth.delegate(newDelegate); var remoteLoginSpy = sinon.spy(auth, 'login'); auth.login(function() { done(); }); cb(mockAuthResponse); remoteLoginSpy.restore(); });
it('can be translated', function () { auth.delegate({ login: function () {} }); var collection = new MockCollection(); var translation = 'What up!'; var wall = buildWall({ collection: collection, // may not always work postButton: 'content', postButtonText: translation }, collection); spyOn(wall, 'canRender').and.returnValue(true); wall.configure({forceReconstruct: true}); expect(wall.$el.find('.lf-comment-btn').html()).toBe(translation); wall.destroy(); });
it('handles old delegate user token changes', function() { var cb; window.fyre.conv.user.on = function (ev, callback) { cb = callback; }; var newDelegate = authAdapters.oldToNew(oldDelegate, 123, 456, 'test.fyre.co'); auth.delegate(newDelegate); var remoteLoginSpy = sinon.spy(auth, 'login'); cb({}, 'tokenator'); expect(remoteLoginSpy).to.be.calledOnce; var logoutSpy = sinon.spy(auth, 'logout'); cb(null); expect(logoutSpy).to.be.calledOnce; remoteLoginSpy.restore(); logoutSpy.restore(); });
it('can be set as one of content, photo, or contentWithPhoto', function () { auth.delegate({ login: function () {} }); var trials = [{ postButton: 'content', buttonHasClass: 'lf-comment-btn' },{ postButton: 'photo', buttonHasClass: 'lf-hub-upload-btn' },{ postButton: 'contentWithPhoto', buttonHasClass: 'lf-comment-btn' }]; // try on construction trials.forEach(function (trial) { var collection = new MockCollection(); var wall = buildWall({ collection: collection, // may not always work postButton: trial.postButton }, collection); wall._hasReceivedTranslations = true; wall.configure({forceReconstruct: true}); expect(wall.$el.find('menu').children().length).toBe(1); expect(wall.$el.find('menu').children().hasClass(trial.buttonHasClass)).toBe(true); wall.destroy(); }); // try changing at runtime trials.forEach(function (trial) { var collection = new MockCollection(); var wall = buildWall({ collection: collection }, collection); wall._hasReceivedTranslations = true; wall.configure({forceReconstruct: true}); wall.configure({ postButton: trial.postButton }); expect(wall.$el.find('menu').children().length).toBe(1); expect(wall.$el.find('menu').children().hasClass(trial.buttonHasClass)).toBe(true); wall.destroy(); }); });
beforeEach(function () { auth.delegate({}); });
var log = require('debug')('livefyre-sso-auth-demo'); var createAuthButton = require('auth/contrib/auth-button'); var createAuthLog = require('auth/contrib/auth-log'); function singleTokenLogin(token) { var singleTokenLoginDelegate = { login: function (authenticate) { authenticate(null, { livefyre: token }); } }; return singleTokenLoginDelegate; } var labsToken = 'eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJkb21haW4iOiAibGFicy5meXJlLmNvIiwgImV4cGlyZXMiOiAxMzk5MTk1MTYwLjE1NTc2MSwgInVzZXJfaWQiOiAiY29tbWVudGVyXzAifQ.N77QlLeF-Z6MMJhospdwpPpZH4HCfaf20fIPhL7GdOY'; var delegate = window.delegate = singleTokenLogin(labsToken); auth.delegate(delegate); auth.on('login.livefyre', function (livefyreUser) { log("User was logged into Livefyre", livefyreUser); }); window.token = labsToken; window.auth = auth; var authLog = createAuthLog(auth, document.getElementById('auth-log')); createAuthButton(auth, document.getElementById('auth-button'), authLog);