diff options
Diffstat (limited to 'apps/system/test/unit/identity_test.js')
-rw-r--r-- | apps/system/test/unit/identity_test.js | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/apps/system/test/unit/identity_test.js b/apps/system/test/unit/identity_test.js new file mode 100644 index 0000000..150944c --- /dev/null +++ b/apps/system/test/unit/identity_test.js @@ -0,0 +1,92 @@ +'use strict'; + +requireApp('system/js/identity.js'); +requireApp('system/test/unit/mock_chrome_event.js'); +requireApp('system/test/unit/mock_trusted_ui_manager.js'); +requireApp('system/test/unit/mock_l10n.js'); + +// ensure its defined as a global so mocha will not complain about us +// leaking new global variables during the test +if (!window.TrustedUIManager) { + window.TrustedUIManager = true; +} + +suite('identity', function() { + var subject; + var realL10n; + var realTrustedUIManager; + var realDispatchEvent; + + var lastDispatchedEvent = null; + + suiteSetup(function() { + subject = Identity; + realTrustedUIManager = window.TrustedUIManager; + window.TrustedUIManager = MockTrustedUIManager; + + realL10n = navigator.mozL10n; + navigator.mozL10n = MockL10n; + + realDispatchEvent = subject._dispatchEvent; + subject._dispatchEvent = function (obj) { + lastDispatchedEvent = obj; + }; + }); + + suiteTeardown(function() { + window.TrustedUIManager = realTrustedUIManager; + subject._dispatchEvent = realDispatchEvent; + + navigator.mozL10n = realL10n; + }); + + setup(function() {}); + + teardown(function() { + MockTrustedUIManager.mTeardown(); + }); + + suite('open popup', function() { + setup(function() { + var event = new MockChromeEvent({ + type: 'open-id-dialog', + id: 'test-open-event-id', + showUI: true + }); + subject.handleEvent(event); + }); + + test('popup parameters', function() { + assert.equal(MockTrustedUIManager.mOpened, true); + assert.equal(MockTrustedUIManager.mName, 'persona-signin'); + assert.equal(MockTrustedUIManager.mChromeEventId, 'test-open-event-id'); + }); + + test('frame event listener', function() { + var frame = MockTrustedUIManager.mFrame; + var event = document.createEvent('CustomEvent'); + event.initCustomEvent('mozbrowserloadstart', true, true, {target: frame}); + frame.dispatchEvent(event); + + assert.equal(frame, lastDispatchedEvent.frame); + assert.equal('test-open-event-id', lastDispatchedEvent.id); + }); + }); + + suite('close popup', function() { + setup(function() { + var event = new MockChromeEvent({ + type: 'received-id-assertion', + id: 'test-close-event-id', + showUI: true + }); + subject.handleEvent(event); + }); + + test('close', function() { + assert.equal(false, MockTrustedUIManager.mOpened); + assert.equal('test-close-event-id', lastDispatchedEvent.id); + }); + }); +}); + |