| Index: remoting/webapp/crd/js/identity_unittest.js
|
| diff --git a/remoting/webapp/crd/js/identity_unittest.js b/remoting/webapp/crd/js/identity_unittest.js
|
| deleted file mode 100644
|
| index a1871298e9742919cc6d220137c63b72279ed865..0000000000000000000000000000000000000000
|
| --- a/remoting/webapp/crd/js/identity_unittest.js
|
| +++ /dev/null
|
| @@ -1,149 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -(function() {
|
| -
|
| -'use strict';
|
| -
|
| -/** @type {MockConsent} */
|
| -var consentDialog = null;
|
| -/** @type {sinon.Spy | Function} */
|
| -var promptForConsent = null;
|
| -/** @type {sinon.Spy | Function} */
|
| -var getAuthToken = null;
|
| -/** @type {remoting.Identity} */
|
| -var identity = null;
|
| -
|
| -/**
|
| - * @param {QUnit.Assert} assert
|
| - * @constructor
|
| - * @implements {remoting.Identity.ConsentDialog}
|
| - */
|
| -var MockConsent = function(assert) {
|
| - /** @type {boolean} */
|
| - this.grantConsent = true;
|
| - /** @private {QUnit.Assert} */
|
| - this.assert_ = assert;
|
| -};
|
| -
|
| -MockConsent.prototype.show = function() {
|
| - // The consent dialog should only be shown if a previous call to getAuthToken
|
| - // with {interactive: false} failed, and it should occur before any call with
|
| - // {interactive: true}.
|
| - this.assert_.ok(getAuthToken.calledOnce);
|
| - this.assert_.ok(getAuthToken.calledWith(
|
| - {'interactive': false, scopes: undefined}));
|
| - getAuthToken.reset();
|
| -
|
| - if (this.grantConsent) {
|
| - chromeMocks.identity.mock$setToken('token');
|
| - }
|
| - return Promise.resolve();
|
| -};
|
| -
|
| -QUnit.module('Identity', {
|
| - beforeEach: function(/** QUnit.Assert*/ assert) {
|
| - chromeMocks.identity.mock$clearToken();
|
| - chromeMocks.activate(['identity', 'runtime']);
|
| - consentDialog = new MockConsent(assert);
|
| - promptForConsent = sinon.spy(consentDialog, 'show');
|
| - identity = new remoting.Identity(consentDialog);
|
| - getAuthToken = sinon.spy(chromeMocks.identity, 'getAuthToken');
|
| - },
|
| - afterEach: function() {
|
| - chromeMocks.restore();
|
| - getAuthToken.restore();
|
| - }
|
| -});
|
| -
|
| -QUnit.test('consent is requested only on first invocation', function(assert) {
|
| - assert.ok(!promptForConsent.called);
|
| - return identity.getToken().then(
|
| - function(/** string */ token) {
|
| - assert.ok(promptForConsent.called);
|
| - assert.ok(getAuthToken.calledOnce);
|
| - assert.ok(getAuthToken.calledWith(
|
| - {'interactive': true, 'scopes': undefined}));
|
| -
|
| - // Request another token.
|
| - promptForConsent.reset();
|
| - getAuthToken.reset();
|
| - return identity.getToken();
|
| -
|
| - }).then(function(/** string */ token) {
|
| - assert.ok(!promptForConsent.called);
|
| - assert.ok(getAuthToken.calledOnce);
|
| - assert.ok(getAuthToken.calledWith({
|
| - 'interactive': true, 'scopes': undefined}));
|
| - assert.equal(token, 'token');
|
| - });
|
| -});
|
| -
|
| -QUnit.test('requesting an explicit scope works', function(assert) {
|
| - assert.ok(!promptForConsent.called);
|
| - return identity.getToken().then(
|
| - function() {
|
| - // Request a token with an explicit scope.
|
| - promptForConsent.reset();
|
| - getAuthToken.reset();
|
| - return identity.getToken(['scope']);
|
| -
|
| - }).then(function(/** string */ token) {
|
| - assert.ok(!promptForConsent.called);
|
| - assert.ok(getAuthToken.calledOnce);
|
| - assert.ok(getAuthToken.calledWith({
|
| - 'interactive': true, 'scopes': ['scope']}));
|
| - assert.equal(token, 'token["scope"]');
|
| - });
|
| -});
|
| -
|
| -QUnit.test('multiple concurrent outstanding requests are handled correctly',
|
| - function(assert) {
|
| - assert.ok(!promptForConsent.called);
|
| - return identity.getToken().then(
|
| - function() {
|
| - // Request a token with an explicit scope and another without.
|
| - promptForConsent.reset();
|
| - getAuthToken.reset();
|
| - var withScope = identity.getToken(['scope']);
|
| - var withoutScope = identity.getToken();
|
| - return Promise.all([withScope, withoutScope]);
|
| -
|
| - }).then(function(/** Array<string> */ tokens) {
|
| - assert.ok(!promptForConsent.called);
|
| - assert.ok(getAuthToken.calledTwice);
|
| - assert.ok(getAuthToken.calledWith({
|
| - 'interactive': true, 'scopes': ['scope']}));
|
| - assert.ok(getAuthToken.calledWith({
|
| - 'interactive': true, 'scopes': undefined}));
|
| - assert.equal(tokens.length, 2);
|
| - assert.equal(tokens[0], 'token["scope"]');
|
| - assert.equal(tokens[1], 'token');
|
| - });
|
| -});
|
| -
|
| -QUnit.test('cancellations are reported correctly', function(assert) {
|
| - consentDialog.grantConsent = false;
|
| - chromeMocks.runtime.lastError.message = 'The user did not approve access.';
|
| - return identity.getToken().then(
|
| - function(/** string */ token) {
|
| - assert.ok(false, 'expected getToken() to fail');
|
| - }).catch(function(/** remoting.Error */ error) {
|
| - assert.equal(error.getTag(), remoting.Error.Tag.CANCELLED);
|
| - });
|
| -});
|
| -
|
| -
|
| -QUnit.test('other errors are reported correctly', function(assert) {
|
| - consentDialog.grantConsent = false;
|
| - chromeMocks.runtime.lastError.message = '<some other error message>';
|
| - return identity.getToken().then(
|
| - function(/** string */ token) {
|
| - assert.ok(false, 'expected getToken() to fail');
|
| - }).catch(function(/** remoting.Error */ error) {
|
| - assert.equal(error.getTag(), remoting.Error.Tag.NOT_AUTHENTICATED);
|
| - });
|
| -});
|
| -
|
| -}());
|
|
|