blob: ecc322ef767ae10308afe0f1a121eff15dc3427f [file] [log] [blame]
/**
* @license
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import '../../../test/common-test-setup-karma';
import './gr-identities';
import {GrIdentities} from './gr-identities';
import {AuthType} from '../../../constants/constants';
import {stubRestApi} from '../../../test/test-utils';
import {ServerInfo} from '../../../types/common';
import {createServerInfo} from '../../../test/test-data-generators';
import {queryAll, queryAndAssert} from '../../../test/test-utils';
import * as MockInteractions from '@polymer/iron-test-helpers/mock-interactions';
const basicFixture = fixtureFromElement('gr-identities');
suite('gr-identities tests', () => {
let element: GrIdentities;
const ids = [
{
identity: 'username:john',
email_address: 'john.doe@example.com',
trusted: true,
},
{
identity: 'gerrit:gerrit',
email_address: 'gerrit@example.com',
},
{
identity: 'mailto:gerrit2@example.com',
email_address: 'gerrit2@example.com',
trusted: true,
can_delete: true,
},
];
setup(async () => {
stubRestApi('getExternalIds').returns(Promise.resolve(ids));
element = basicFixture.instantiate();
await element.loadData();
await flush();
});
test('renders', () => {
const rows = Array.from(queryAll(element, 'tbody tr'));
assert.equal(rows.length, 2);
const nameCells = rows.map(row => queryAll(row, 'td')[2].textContent);
assert.equal(nameCells[0]!.trim(), 'gerrit:gerrit');
assert.equal(nameCells[1]!.trim(), '');
});
test('renders email', () => {
const rows = Array.from(queryAll(element, 'tbody tr'));
assert.equal(rows.length, 2);
const nameCells = rows.map(row => queryAll(row, 'td')[1]!.textContent);
assert.equal(nameCells[0]!, 'gerrit@example.com');
assert.equal(nameCells[1]!, 'gerrit2@example.com');
});
test('_computeIdentity', () => {
assert.equal(element._computeIdentity(ids[0].identity), 'username:john');
assert.equal(element._computeIdentity(ids[2].identity), '');
});
test('filterIdentities', () => {
assert.isFalse(element.filterIdentities(ids[0]));
assert.isTrue(element.filterIdentities(ids[1]));
});
test('delete id', async () => {
element._idName = 'mailto:gerrit2@example.com';
const loadDataStub = sinon.stub(element, 'loadData');
await element._handleDeleteItemConfirm();
assert.isTrue(loadDataStub.called);
});
test('_handleDeleteItem opens modal', () => {
const deleteBtn = queryAndAssert(element, '.deleteButton');
const deleteItem = sinon.stub(element, '_handleDeleteItem');
MockInteractions.tap(deleteBtn);
assert.isTrue(deleteItem.called);
});
test('_computeShowLinkAnotherIdentity', () => {
const config: ServerInfo = {
...createServerInfo(),
};
config.auth.auth_type = AuthType.OAUTH;
assert.isTrue(element._computeShowLinkAnotherIdentity(config));
config.auth.auth_type = AuthType.OPENID;
assert.isTrue(element._computeShowLinkAnotherIdentity(config));
config.auth.auth_type = AuthType.HTTP_LDAP;
assert.isFalse(element._computeShowLinkAnotherIdentity(config));
config.auth.auth_type = AuthType.LDAP;
assert.isFalse(element._computeShowLinkAnotherIdentity(config));
config.auth.auth_type = AuthType.HTTP;
assert.isFalse(element._computeShowLinkAnotherIdentity(config));
assert.isFalse(element._computeShowLinkAnotherIdentity(undefined));
});
test('_showLinkAnotherIdentity', () => {
let config: ServerInfo = {
...createServerInfo(),
};
config.auth.auth_type = AuthType.OAUTH;
element.serverConfig = config;
assert.isTrue(element._showLinkAnotherIdentity);
config = {
...createServerInfo(),
};
config.auth.auth_type = AuthType.LDAP;
element.serverConfig = config;
assert.isFalse(element._showLinkAnotherIdentity);
});
});