UI - test console cleanup (#6674)
* add ember-cli-deprecation-workflow * this._router in routes to quiet deprecation * mark style bindings as htmlSafe strings * simplify authenticate service hook with async fn * don't serialize aliases relationship on entities * update ember-test-selectors so we can use supportsDataTestProperties * allow duplicate flash messages because we don't want a log warning * update ember-concurrency for better error message * use ember-qunit instead of ember-cli-qunit * update ember-cli-page-object so we're not using a beta lol * ignore test-helper jquery context warning * fix race condition in pgp-file test by using ember-concurrency task and test waiter * await cli commands * fail tests if async leakage is detected * update auth-jwt component and tests to be simpler * fix linting * review feedback
This commit is contained in:
parent
d9f855d9a8
commit
93e827fe81
|
@ -198,7 +198,7 @@ export default Component.extend(DEFAULTS, {
|
|||
let transition = this.router.transitionTo(targetRoute, { queryParams: { namespace } });
|
||||
// returning this w/then because if we keep it
|
||||
// in the task, it will get cancelled when the component in un-rendered
|
||||
return transition.followRedirects().then(() => {
|
||||
yield transition.followRedirects().then(() => {
|
||||
if (isRoot) {
|
||||
this.flashMessages.warning(
|
||||
'You have logged in with a root token. As a security precaution, this root token will not be stored by your browser and you will need to re-authenticate after the window is closed or refreshed.'
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import Ember from 'ember';
|
||||
import { inject as service } from '@ember/service';
|
||||
import Component from './outer-html';
|
||||
import { next, later } from '@ember/runloop';
|
||||
import { later } from '@ember/runloop';
|
||||
import { task, timeout, waitForEvent } from 'ember-concurrency';
|
||||
import { computed } from '@ember/object';
|
||||
|
||||
|
@ -27,18 +27,16 @@ export default Component.extend({
|
|||
onNamespace() {},
|
||||
|
||||
didReceiveAttrs() {
|
||||
next(() => {
|
||||
let { oldSelectedAuthPath, selectedAuthPath } = this;
|
||||
let shouldDebounce = !oldSelectedAuthPath && !selectedAuthPath;
|
||||
if (oldSelectedAuthPath !== selectedAuthPath) {
|
||||
this.set('role', null);
|
||||
this.onRoleName(this.roleName);
|
||||
this.fetchRole.perform(null, { debounce: false });
|
||||
} else if (shouldDebounce) {
|
||||
this.fetchRole.perform(this.roleName);
|
||||
}
|
||||
this.set('oldSelectedAuthPath', selectedAuthPath);
|
||||
});
|
||||
let { oldSelectedAuthPath, selectedAuthPath } = this;
|
||||
let shouldDebounce = !oldSelectedAuthPath && !selectedAuthPath;
|
||||
if (oldSelectedAuthPath !== selectedAuthPath) {
|
||||
this.set('role', null);
|
||||
this.onRoleName(this.roleName);
|
||||
this.fetchRole.perform(null, { debounce: false });
|
||||
} else if (shouldDebounce) {
|
||||
this.fetchRole.perform(this.roleName);
|
||||
}
|
||||
this.set('oldSelectedAuthPath', selectedAuthPath);
|
||||
},
|
||||
|
||||
// OIDC roles in the JWT/OIDC backend are those with an authUrl,
|
||||
|
@ -68,7 +66,9 @@ export default Component.extend({
|
|||
}
|
||||
}
|
||||
this.set('role', role);
|
||||
}).restartable(),
|
||||
})
|
||||
.restartable()
|
||||
.withTestWaiter(),
|
||||
|
||||
handleOIDCError(err) {
|
||||
this.onLoading(false);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import Component from '@ember/component';
|
||||
import { set } from '@ember/object';
|
||||
import { task } from 'ember-concurrency';
|
||||
const BASE_64_REGEX = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gi;
|
||||
|
||||
export default Component.extend({
|
||||
|
@ -34,12 +35,12 @@ export default Component.extend({
|
|||
|
||||
readFile(file) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = () => this.setPGPKey(reader.result, file.name);
|
||||
reader.onload = () => this.setPGPKey.perform(reader.result, file.name);
|
||||
// this gives us a base64-encoded string which is important in the onload
|
||||
reader.readAsDataURL(file);
|
||||
},
|
||||
|
||||
setPGPKey(dataURL, filename) {
|
||||
setPGPKey: task(function*(dataURL, filename) {
|
||||
const b64File = dataURL.split(',')[1].trim();
|
||||
const decoded = atob(b64File).trim();
|
||||
|
||||
|
@ -48,8 +49,8 @@ export default Component.extend({
|
|||
// If after decoding it's not b64, we want
|
||||
// the original as it was only encoded when we used `readAsDataURL`.
|
||||
const fileData = decoded.match(BASE_64_REGEX) ? decoded : b64File;
|
||||
this.get('onChange')(this.get('index'), { value: fileData, fileName: filename });
|
||||
},
|
||||
yield this.get('onChange')(this.get('index'), { value: fileData, fileName: filename });
|
||||
}).withTestWaiter(),
|
||||
|
||||
actions: {
|
||||
pickedFile(e) {
|
||||
|
|
|
@ -21,6 +21,8 @@ export function linkParams({ mode, secret, queryParams }) {
|
|||
|
||||
export default Component.extend({
|
||||
tagName: '',
|
||||
// so that ember-test-selectors doesn't log a warning
|
||||
supportsDataTestProperties: true,
|
||||
mode: 'list',
|
||||
|
||||
secret: null,
|
||||
|
|
|
@ -2,6 +2,7 @@ import { inject as service } from '@ember/service';
|
|||
import Component from '@ember/component';
|
||||
import { computed } from '@ember/object';
|
||||
import { FEATURE_MACHINE_STEPS, INIT_STEPS } from 'vault/helpers/wizard-constants';
|
||||
import { htmlSafe } from '@ember/template';
|
||||
|
||||
export default Component.extend({
|
||||
wizard: service(),
|
||||
|
@ -66,25 +67,25 @@ export default Component.extend({
|
|||
let bar = [];
|
||||
if (this.currentTutorialProgress) {
|
||||
bar.push({
|
||||
style: `width:${this.currentTutorialProgress.percentage}%;`,
|
||||
style: htmlSafe(`width:${this.currentTutorialProgress.percentage}%;`),
|
||||
completed: false,
|
||||
showIcon: true,
|
||||
});
|
||||
} else {
|
||||
if (this.currentFeatureProgress) {
|
||||
this.completedFeatures.forEach(feature => {
|
||||
bar.push({ style: 'width:100%;', completed: true, feature: feature, showIcon: true });
|
||||
bar.push({ style: htmlSafe('width:100%;'), completed: true, feature: feature, showIcon: true });
|
||||
});
|
||||
this.wizard.featureList.forEach(feature => {
|
||||
if (feature === this.currentMachine) {
|
||||
bar.push({
|
||||
style: `width:${this.currentFeatureProgress.percentage}%;`,
|
||||
style: htmlSafe(`width:${this.currentFeatureProgress.percentage}%;`),
|
||||
completed: this.currentFeatureProgress.percentage == 100 ? true : false,
|
||||
feature: feature,
|
||||
showIcon: true,
|
||||
});
|
||||
} else {
|
||||
bar.push({ style: 'width:0%;', completed: false, feature: feature, showIcon: true });
|
||||
bar.push({ style: htmlSafe('width:0%;'), completed: false, feature: feature, showIcon: true });
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ import { inject as service } from '@ember/service';
|
|||
import Component from '@ember/component';
|
||||
import { computed } from '@ember/object';
|
||||
import { FEATURE_MACHINE_TIME } from 'vault/helpers/wizard-constants';
|
||||
import { htmlSafe } from '@ember/template';
|
||||
|
||||
export default Component.extend({
|
||||
wizard: service(),
|
||||
|
@ -48,10 +49,10 @@ export default Component.extend({
|
|||
}),
|
||||
selectProgress: computed('selectedFeatures', function() {
|
||||
let bar = this.selectedFeatures.map(feature => {
|
||||
return { style: 'width:0%;', completed: false, showIcon: true, feature: feature };
|
||||
return { style: htmlSafe('width:0%;'), completed: false, showIcon: true, feature: feature };
|
||||
});
|
||||
if (bar.length === 0) {
|
||||
bar = [{ style: 'width:0%;', showIcon: false }];
|
||||
bar = [{ style: htmlSafe('width:0%;'), showIcon: false }];
|
||||
}
|
||||
return bar;
|
||||
}),
|
||||
|
|
|
@ -2,7 +2,7 @@ import Route from '@ember/routing/route';
|
|||
|
||||
export default Route.extend({
|
||||
renderTemplate() {
|
||||
let { targetName } = this.router.currentState.routerJs.activeTransition;
|
||||
let { targetName } = this._router.currentState.routerJs.activeTransition;
|
||||
let isCallback =
|
||||
targetName === 'vault.cluster.oidc-callback' || targetName === 'vault.cluster.oidc-callback-namespace';
|
||||
if (isCallback) {
|
||||
|
|
|
@ -2,6 +2,8 @@ import DS from 'ember-data';
|
|||
import IdentitySerializer from './_base';
|
||||
|
||||
export default IdentitySerializer.extend(DS.EmbeddedRecordsMixin, {
|
||||
// we don't need to serialize relationships here
|
||||
serializeHasMany() {},
|
||||
attrs: {
|
||||
aliases: { embedded: 'always' },
|
||||
},
|
||||
|
|
|
@ -304,21 +304,14 @@ export default Service.extend({
|
|||
});
|
||||
},
|
||||
|
||||
authenticate(/*{clusterId, backend, data}*/) {
|
||||
async authenticate(/*{clusterId, backend, data}*/) {
|
||||
const [options] = arguments;
|
||||
const adapter = this.clusterAdapter();
|
||||
|
||||
return adapter.authenticate(options).then(resp => {
|
||||
return this.persistAuthData(options, resp.auth || resp.data, this.get('namespace.path')).then(
|
||||
authData => {
|
||||
return this.get('permissions')
|
||||
.getPaths.perform()
|
||||
.then(() => {
|
||||
return authData;
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
let resp = await adapter.authenticate(options);
|
||||
let authData = await this.persistAuthData(options, resp.auth || resp.data, this.get('namespace.path'));
|
||||
await this.get('permissions').getPaths.perform();
|
||||
return authData;
|
||||
},
|
||||
|
||||
deleteCurrentToken() {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<div class="level is-mobile">
|
||||
<div class="level-left">
|
||||
<label class="is-label" data-test-pgp-label=true>
|
||||
<label class="is-label" data-test-pgp-label>
|
||||
{{#if label}}
|
||||
{{label}}
|
||||
{{else}}
|
||||
|
@ -11,7 +11,7 @@
|
|||
<div class="level-right">
|
||||
<div class="control is-flex">
|
||||
<input
|
||||
data-test-text-toggle=true
|
||||
data-test-text-toggle
|
||||
id={{concat "useText-" elementId}}
|
||||
type="checkbox"
|
||||
name={{concat "useText-" elementId}}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
/* global self */
|
||||
self.deprecationWorkflow = self.deprecationWorkflow || {};
|
||||
self.deprecationWorkflow.config = {
|
||||
workflow: [
|
||||
// ivy-codemirror and ember-radio-button still use send-action
|
||||
{ handler: 'silence', matchId: 'ember-component.send-action' },
|
||||
{ handler: 'silence', matchId: 'ember-runtime.deprecate-copy-copyable' },
|
||||
// ember-cli-page-object uses jquery's this.$() by default - this will change when we remove jquery
|
||||
{ handler: 'silence', matchId: 'ember-test-helpers.rendering-context.jquery-element' },
|
||||
],
|
||||
};
|
|
@ -30,7 +30,6 @@ module.exports = function(environment) {
|
|||
flashMessageDefaults: {
|
||||
timeout: 7000,
|
||||
sticky: false,
|
||||
preventDuplicates: true,
|
||||
},
|
||||
};
|
||||
if (environment === 'development') {
|
||||
|
@ -39,26 +38,16 @@ module.exports = function(environment) {
|
|||
ENV.APP.LOG_TRANSITIONS = true;
|
||||
// ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
|
||||
// ENV.APP.LOG_VIEW_LOOKUPS = true;
|
||||
//ENV['ember-cli-mirage'] = {
|
||||
//enabled: true
|
||||
//};
|
||||
}
|
||||
|
||||
if (environment === 'test') {
|
||||
// Testem prefers this...
|
||||
ENV.locationType = 'none';
|
||||
|
||||
// keep test console output quieter
|
||||
ENV.APP.LOG_ACTIVE_GENERATION = false;
|
||||
ENV.APP.LOG_VIEW_LOOKUPS = false;
|
||||
|
||||
ENV.APP.rootElement = '#ember-testing';
|
||||
|
||||
ENV['ember-cli-mirage'] = {
|
||||
enabled: false,
|
||||
};
|
||||
ENV.APP.autoboot = false;
|
||||
|
||||
ENV.flashMessageDefaults.timeout = 50;
|
||||
}
|
||||
if (environment !== 'production') {
|
||||
|
|
|
@ -13,13 +13,15 @@
|
|||
"build-dev": "ember build",
|
||||
"lint:hbs": "ember-template-lint .",
|
||||
"lint:js": "eslint .",
|
||||
"start": "export VAULT_ADDR=http://localhost:8200; ember server --proxy=$VAULT_ADDR",
|
||||
"test": "node scripts/start-vault.js & yarn run lint:js && ember test",
|
||||
"start2": "ember server --proxy=http://localhost:8202 --port=4202",
|
||||
"test-oss": "yarn run lint:js && yarn run test -f='!enterprise'",
|
||||
"fmt": "yarn run fmt-js && yarn run fmt-styles",
|
||||
"fmt-js": "prettier-eslint --single-quote --no-use-tabs --trailing-comma es5 --print-width=110 --write '{app,tests,config,lib}/**/*.js'",
|
||||
"fmt-styles": "prettier --write app/styles/**/*.*",
|
||||
"fmt": "yarn run fmt-js && yarn run fmt-styles",
|
||||
"start": "export VAULT_ADDR=http://localhost:8200; ember server --proxy=$VAULT_ADDR",
|
||||
"start2": "ember server --proxy=http://localhost:8202 --port=4202",
|
||||
"test": "node scripts/start-vault.js & yarn run lint:js & ember test",
|
||||
"test-oss": "yarn run test -f='!enterprise'",
|
||||
"test-quick": "node scripts/start-vault.js & ember test",
|
||||
"test-quick-oss": "yarn run test-quick -f='!enterprise'",
|
||||
"build-storybook": "build-storybook -s ../pkg/web_ui",
|
||||
"storybook": "start-storybook -p 6006 -s ../pkg/web_ui",
|
||||
"gen-story-md": "node scripts/gen-story-md.js"
|
||||
|
@ -64,13 +66,13 @@
|
|||
"ember-cli-clipboard": "^0.8.0",
|
||||
"ember-cli-content-security-policy": "^1.0.0",
|
||||
"ember-cli-dependency-checker": "^3.0.0",
|
||||
"ember-cli-deprecation-workflow": "^1.0.1",
|
||||
"ember-cli-flash": "1.7.1",
|
||||
"ember-cli-htmlbars": "^3.0.0",
|
||||
"ember-cli-htmlbars-inline-precompile": "^1.0.3",
|
||||
"ember-cli-inject-live-reload": "^1.8.2",
|
||||
"ember-cli-page-object": "1.15.0-beta.3",
|
||||
"ember-cli-page-object": "^1.15.3",
|
||||
"ember-cli-pretender": "^1.0.1",
|
||||
"ember-cli-qunit": "^4.3.2",
|
||||
"ember-cli-sass": "^9.0.0",
|
||||
"ember-cli-sri": "meirish/ember-cli-sri#rooturl",
|
||||
"ember-cli-string-helpers": "^1.5.0",
|
||||
|
@ -78,7 +80,7 @@
|
|||
"ember-cli-uglify": "^2.1.0",
|
||||
"ember-composable-helpers": "^2.0.3",
|
||||
"ember-computed-query": "^0.1.1",
|
||||
"ember-concurrency": "^0.8.14",
|
||||
"ember-concurrency": "^0.10.0",
|
||||
"ember-concurrency-test-waiter": "^0.3.1",
|
||||
"ember-copy": "^1.0.0",
|
||||
"ember-data": "~3.4.0",
|
||||
|
@ -91,12 +93,13 @@
|
|||
"ember-maybe-import-regenerator": "^0.1.6",
|
||||
"ember-maybe-in-element": "^0.1.3",
|
||||
"ember-power-select": "^2.0.12",
|
||||
"ember-qunit": "^4.4.1",
|
||||
"ember-radio-button": "^1.1.1",
|
||||
"ember-resolver": "^5.0.1",
|
||||
"ember-responsive": "^3.0.0-beta.3",
|
||||
"ember-sinon": "^1.0.1",
|
||||
"ember-source": "~3.4.0",
|
||||
"ember-test-selectors": "^1.0.0",
|
||||
"ember-test-selectors": "^2.1.0",
|
||||
"ember-truth-helpers": "^2.1.0",
|
||||
"escape-string-regexp": "^1.0.5",
|
||||
"eslint": "^5.16.0",
|
||||
|
|
|
@ -28,10 +28,7 @@ module('Acceptance | secrets/generic/create', function(hooks) {
|
|||
test('it creates and can view a secret with the generic backend', async function(assert) {
|
||||
const path = `generic-${new Date().getTime()}`;
|
||||
const kvPath = `generic-kv-${new Date().getTime()}`;
|
||||
cli.consoleInput(`write sys/mounts/${path} type=generic`);
|
||||
cli.enter();
|
||||
cli.consoleInput(`write ${path}/foo bar=baz`);
|
||||
cli.enter();
|
||||
await cli.runCommands([`write sys/mounts/${path} type=generic`, `write ${path}/foo bar=baz`]);
|
||||
await listPage.visitRoot({ backend: path });
|
||||
assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.list-root', 'navigates to the list page');
|
||||
assert.equal(listPage.secrets.length, 1, 'lists one secret in the backend');
|
||||
|
@ -45,13 +42,12 @@ module('Acceptance | secrets/generic/create', function(hooks) {
|
|||
test('upgrading generic to version 2 lists all existing secrets, and CRUD continues to work', async function(assert) {
|
||||
const path = `generic-${new Date().getTime()}`;
|
||||
const kvPath = `generic-kv-${new Date().getTime()}`;
|
||||
cli.consoleInput(`write sys/mounts/${path} type=generic`);
|
||||
cli.enter();
|
||||
cli.consoleInput(`write ${path}/foo bar=baz`);
|
||||
cli.enter();
|
||||
// upgrade to version 2 generic mount
|
||||
cli.consoleInput(`write sys/mounts/${path}/tune options=version=2`);
|
||||
cli.enter();
|
||||
await cli.runCommands([
|
||||
`write sys/mounts/${path} type=generic`,
|
||||
`write ${path}/foo bar=baz`,
|
||||
// upgrade to version 2 generic mount
|
||||
`write sys/mounts/${path}/tune options=version=2`,
|
||||
]);
|
||||
await listPage.visitRoot({ backend: path });
|
||||
assert.equal(currentRouteName(), 'vault.cluster.secrets.backend.list-root', 'navigates to the list page');
|
||||
assert.equal(listPage.secrets.length, 1, 'lists the old secret in the backend');
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
import { later, run } from '@ember/runloop';
|
||||
import { run } from '@ember/runloop';
|
||||
import EmberObject, { computed } from '@ember/object';
|
||||
import Evented from '@ember/object/evented';
|
||||
import Service from '@ember/service';
|
||||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render, settled } from '@ember/test-helpers';
|
||||
import { render, settled, waitUntil } from '@ember/test-helpers';
|
||||
import hbs from 'htmlbars-inline-precompile';
|
||||
import sinon from 'sinon';
|
||||
import Pretender from 'pretender';
|
||||
import { resolve } from 'rsvp';
|
||||
import { create } from 'ember-cli-page-object';
|
||||
import form from '../../pages/components/auth-jwt';
|
||||
import { ERROR_WINDOW_CLOSED, ERROR_MISSING_PARAMS } from 'vault/components/auth-jwt';
|
||||
|
@ -40,7 +41,7 @@ fakeWindow.reopen({
|
|||
},
|
||||
|
||||
close() {
|
||||
fakeWindow.prototype.trigger('close');
|
||||
fakeWindow.proto().trigger('close');
|
||||
},
|
||||
});
|
||||
|
||||
|
@ -59,9 +60,9 @@ const routerStub = Service.extend({
|
|||
const renderIt = async (context, path = 'jwt') => {
|
||||
let handler = (data, e) => {
|
||||
if (e && e.preventDefault) e.preventDefault();
|
||||
return resolve();
|
||||
};
|
||||
let fake = fakeWindow.create();
|
||||
sinon.spy(fake, 'open');
|
||||
context.set('window', fake);
|
||||
context.set('handler', sinon.spy(handler));
|
||||
context.set('roleName', '');
|
||||
|
@ -86,6 +87,7 @@ module('Integration | Component | auth jwt', function(hooks) {
|
|||
setupRenderingTest(hooks);
|
||||
|
||||
hooks.beforeEach(function() {
|
||||
this.openSpy = sinon.spy(fakeWindow.proto(), 'open');
|
||||
this.owner.register('service:router', routerStub);
|
||||
this.server = new Pretender(function() {
|
||||
this.get('/v1/auth/:path/oidc/callback', function() {
|
||||
|
@ -121,6 +123,7 @@ module('Integration | Component | auth jwt', function(hooks) {
|
|||
});
|
||||
|
||||
hooks.afterEach(function() {
|
||||
this.openSpy.restore();
|
||||
this.server.shutdown();
|
||||
});
|
||||
|
||||
|
@ -172,22 +175,16 @@ module('Integration | Component | auth jwt', function(hooks) {
|
|||
this.set('selectedAuthPath', 'foo');
|
||||
await component.role('test');
|
||||
component.login();
|
||||
|
||||
later(async () => {
|
||||
run.cancelTimers();
|
||||
await settled();
|
||||
let call = this.window.open.getCall(0);
|
||||
assert.deepEqual(
|
||||
call.args,
|
||||
[
|
||||
'http://example.com',
|
||||
'vaultOIDCWindow',
|
||||
'width=500,height=600,resizable,scrollbars=yes,top=0,left=0',
|
||||
],
|
||||
'called with expected args'
|
||||
);
|
||||
}, 50);
|
||||
await settled();
|
||||
await waitUntil(() => {
|
||||
return this.openSpy.calledOnce;
|
||||
});
|
||||
run.cancelTimers();
|
||||
let call = this.openSpy.getCall(0);
|
||||
assert.deepEqual(
|
||||
call.args,
|
||||
['http://example.com', 'vaultOIDCWindow', 'width=500,height=600,resizable,scrollbars=yes,top=0,left=0'],
|
||||
'called with expected args'
|
||||
);
|
||||
});
|
||||
|
||||
test('oidc: it calls error handler when popup is closed', async function(assert) {
|
||||
|
@ -195,13 +192,12 @@ module('Integration | Component | auth jwt', function(hooks) {
|
|||
this.set('selectedAuthPath', 'foo');
|
||||
await component.role('test');
|
||||
component.login();
|
||||
|
||||
later(async () => {
|
||||
this.window.close();
|
||||
await settled();
|
||||
assert.equal(this.error, ERROR_WINDOW_CLOSED, 'calls onError with error string');
|
||||
}, 50);
|
||||
await waitUntil(() => {
|
||||
return this.openSpy.calledOnce;
|
||||
});
|
||||
this.window.close();
|
||||
await settled();
|
||||
assert.equal(this.error, ERROR_WINDOW_CLOSED, 'calls onError with error string');
|
||||
});
|
||||
|
||||
test('oidc: storage event fires with wrong key', async function(assert) {
|
||||
|
@ -209,12 +205,12 @@ module('Integration | Component | auth jwt', function(hooks) {
|
|||
this.set('selectedAuthPath', 'foo');
|
||||
await component.role('test');
|
||||
component.login();
|
||||
later(async () => {
|
||||
run.cancelTimers();
|
||||
this.window.trigger('storage', { key: 'wrongThing' });
|
||||
assert.equal(this.window.localStorage.removeItem.callCount, 0, 'never calls removeItem');
|
||||
}, 50);
|
||||
await settled();
|
||||
await waitUntil(() => {
|
||||
return this.openSpy.calledOnce;
|
||||
});
|
||||
this.window.trigger('storage', { key: 'wrongThing' });
|
||||
run.cancelTimers();
|
||||
assert.equal(this.window.localStorage.removeItem.callCount, 0, 'never calls removeItem');
|
||||
});
|
||||
|
||||
test('oidc: storage event fires with correct key, wrong params', async function(assert) {
|
||||
|
@ -222,13 +218,13 @@ module('Integration | Component | auth jwt', function(hooks) {
|
|||
this.set('selectedAuthPath', 'foo');
|
||||
await component.role('test');
|
||||
component.login();
|
||||
later(async () => {
|
||||
this.window.trigger('storage', { key: 'oidcState', newValue: JSON.stringify({}) });
|
||||
await settled();
|
||||
assert.equal(this.window.localStorage.removeItem.callCount, 1, 'calls removeItem');
|
||||
assert.equal(this.error, ERROR_MISSING_PARAMS, 'calls onError with params missing error');
|
||||
}, 50);
|
||||
await settled();
|
||||
await waitUntil(() => {
|
||||
return this.openSpy.calledOnce;
|
||||
});
|
||||
this.window.trigger('storage', { key: 'oidcState', newValue: JSON.stringify({}) });
|
||||
run.cancelTimers();
|
||||
assert.equal(this.window.localStorage.removeItem.callCount, 1, 'calls removeItem');
|
||||
assert.equal(this.error, ERROR_MISSING_PARAMS, 'calls onError with params missing error');
|
||||
});
|
||||
|
||||
test('oidc: storage event fires with correct key, correct params', async function(assert) {
|
||||
|
@ -236,20 +232,20 @@ module('Integration | Component | auth jwt', function(hooks) {
|
|||
this.set('selectedAuthPath', 'foo');
|
||||
await component.role('test');
|
||||
component.login();
|
||||
later(async () => {
|
||||
this.window.trigger('storage', {
|
||||
key: 'oidcState',
|
||||
newValue: JSON.stringify({
|
||||
path: 'foo',
|
||||
state: 'state',
|
||||
code: 'code',
|
||||
}),
|
||||
});
|
||||
await settled();
|
||||
assert.equal(this.selectedAuth, 'token', 'calls onSelectedAuth with token');
|
||||
assert.equal(this.token, 'token', 'calls onToken with token');
|
||||
assert.ok(this.handler.calledOnce, 'calls the onSubmit handler');
|
||||
}, 50);
|
||||
await waitUntil(() => {
|
||||
return this.openSpy.calledOnce;
|
||||
});
|
||||
this.window.trigger('storage', {
|
||||
key: 'oidcState',
|
||||
newValue: JSON.stringify({
|
||||
path: 'foo',
|
||||
state: 'state',
|
||||
code: 'code',
|
||||
}),
|
||||
});
|
||||
await settled();
|
||||
assert.equal(this.selectedAuth, 'token', 'calls onSelectedAuth with token');
|
||||
assert.equal(this.token, 'token', 'calls onToken with token');
|
||||
assert.ok(this.handler.calledOnce, 'calls the onSubmit handler');
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import { module, test } from 'qunit';
|
||||
import { setupRenderingTest } from 'ember-qunit';
|
||||
import { render, click, fillIn, findAll, find, triggerEvent, waitUntil } from '@ember/test-helpers';
|
||||
import { settled, render, click, fillIn, findAll, find, triggerEvent, waitUntil } from '@ember/test-helpers';
|
||||
import hbs from 'htmlbars-inline-precompile';
|
||||
|
||||
let file;
|
||||
const fileEvent = () => {
|
||||
const data = { some: 'content' };
|
||||
file = new File([JSON.stringify(data, null, 2)], 'file.json', { type: 'application/json' });
|
||||
return ['change', [file]];
|
||||
return ['change', { files: [file] }];
|
||||
};
|
||||
|
||||
module('Integration | Component | pgp file', function(hooks) {
|
||||
|
@ -81,6 +81,7 @@ module('Integration | Component | pgp file', function(hooks) {
|
|||
|
||||
await render(hbs`{{pgp-file index=index key=key onChange=(action change)}}`);
|
||||
await triggerEvent('[data-test-pgp-file-input]', ...event);
|
||||
await settled();
|
||||
await click('[data-test-text-toggle]');
|
||||
assert.equal(findAll('[data-test-pgp-file-textarea]').length, 1, 'renders the textarea on toggle');
|
||||
assert.equal(
|
||||
|
|
|
@ -6,4 +6,6 @@ import './helpers/flash-message';
|
|||
|
||||
setApplication(Application.create(config.APP));
|
||||
|
||||
start();
|
||||
start({
|
||||
setupTestIsolationValidation: true,
|
||||
});
|
||||
|
|
290
ui/yarn.lock
290
ui/yarn.lock
|
@ -71,6 +71,17 @@
|
|||
source-map "^0.5.0"
|
||||
trim-right "^1.0.1"
|
||||
|
||||
"@babel/generator@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041"
|
||||
integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.4.4"
|
||||
jsesc "^2.5.1"
|
||||
lodash "^4.17.11"
|
||||
source-map "^0.5.0"
|
||||
trim-right "^1.0.1"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
|
||||
|
@ -107,6 +118,18 @@
|
|||
"@babel/helper-replace-supers" "^7.3.4"
|
||||
"@babel/helper-split-export-declaration" "^7.0.0"
|
||||
|
||||
"@babel/helper-create-class-features-plugin@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.4.4.tgz#fc3d690af6554cc9efc607364a82d48f58736dba"
|
||||
integrity sha512-UbBHIa2qeAGgyiNR9RszVF7bUHEdgS4JAUNT8SiqrAN6YJVxlOxeLr5pBzb5kan302dejJ9nla4RyKcR1XT6XA==
|
||||
dependencies:
|
||||
"@babel/helper-function-name" "^7.1.0"
|
||||
"@babel/helper-member-expression-to-functions" "^7.0.0"
|
||||
"@babel/helper-optimise-call-expression" "^7.0.0"
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/helper-replace-supers" "^7.4.4"
|
||||
"@babel/helper-split-export-declaration" "^7.4.4"
|
||||
|
||||
"@babel/helper-define-map@^7.1.0":
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c"
|
||||
|
@ -223,6 +246,16 @@
|
|||
"@babel/traverse" "^7.3.4"
|
||||
"@babel/types" "^7.3.4"
|
||||
|
||||
"@babel/helper-replace-supers@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.4.4.tgz#aee41783ebe4f2d3ab3ae775e1cc6f1a90cefa27"
|
||||
integrity sha512-04xGEnd+s01nY1l15EuMS1rfKktNF+1CkKmHoErDppjAAZL+IUBZpzT748x262HF7fibaQPhbvWUl5HeSt1EXg==
|
||||
dependencies:
|
||||
"@babel/helper-member-expression-to-functions" "^7.0.0"
|
||||
"@babel/helper-optimise-call-expression" "^7.0.0"
|
||||
"@babel/traverse" "^7.4.4"
|
||||
"@babel/types" "^7.4.4"
|
||||
|
||||
"@babel/helper-simple-access@^7.1.0":
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c"
|
||||
|
@ -238,6 +271,13 @@
|
|||
dependencies:
|
||||
"@babel/types" "^7.0.0"
|
||||
|
||||
"@babel/helper-split-export-declaration@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
|
||||
integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
|
||||
dependencies:
|
||||
"@babel/types" "^7.4.4"
|
||||
|
||||
"@babel/helper-wrap-function@^7.1.0":
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66"
|
||||
|
@ -285,6 +325,11 @@
|
|||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.3.4.tgz#a43357e4bbf4b92a437fb9e465c192848287f27c"
|
||||
integrity sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==
|
||||
|
||||
"@babel/parser@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6"
|
||||
integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.1.0":
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce"
|
||||
|
@ -311,6 +356,23 @@
|
|||
"@babel/helper-create-class-features-plugin" "^7.3.4"
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-proposal-class-properties@^7.3.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.4.4.tgz#93a6486eed86d53452ab9bab35e368e9461198ce"
|
||||
integrity sha512-WjKTI8g8d5w1Bc9zgwSz2nfrsNQsXcCf9J9cdCvrJV6RF56yztwm4TmJC0MgJ9tvwO9gUA/mcYe89bLdGfiXFg==
|
||||
dependencies:
|
||||
"@babel/helper-create-class-features-plugin" "^7.4.4"
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-proposal-decorators@^7.3.0":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0"
|
||||
integrity sha512-z7MpQz3XC/iQJWXH9y+MaWcLPNSMY9RQSthrLzak8R8hCj0fuyNk+Dzi9kfNe/JxxlWQ2g7wkABbgWjW36MTcw==
|
||||
dependencies:
|
||||
"@babel/helper-create-class-features-plugin" "^7.4.4"
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
"@babel/plugin-syntax-decorators" "^7.2.0"
|
||||
|
||||
"@babel/plugin-proposal-json-strings@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e"
|
||||
|
@ -391,6 +453,13 @@
|
|||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-syntax-decorators@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b"
|
||||
integrity sha512-38QdqVoXdHUQfTpZo3rQwqQdWtCn5tMv4uV6r2RMfTqNBuv4ZBhz79SfaQWKTVmxHjeFv/DnXVC/+agHCklYWA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.0.0"
|
||||
|
||||
"@babel/plugin-syntax-dynamic-import@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612"
|
||||
|
@ -1047,6 +1116,21 @@
|
|||
globals "^11.1.0"
|
||||
lodash "^4.17.11"
|
||||
|
||||
"@babel/traverse@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8"
|
||||
integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
"@babel/generator" "^7.4.4"
|
||||
"@babel/helper-function-name" "^7.1.0"
|
||||
"@babel/helper-split-export-declaration" "^7.4.4"
|
||||
"@babel/parser" "^7.4.4"
|
||||
"@babel/types" "^7.4.4"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.11"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.3":
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.3.tgz#3a767004567060c2f40fca49a304712c525ee37d"
|
||||
|
@ -1065,6 +1149,15 @@
|
|||
lodash "^4.17.11"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0"
|
||||
integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==
|
||||
dependencies:
|
||||
esutils "^2.0.2"
|
||||
lodash "^4.17.11"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@ember/jquery@^0.5.2":
|
||||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@ember/jquery/-/jquery-0.5.2.tgz#fe312c03ada0022fa092d23f7cd7e2eb0374b53a"
|
||||
|
@ -1097,16 +1190,7 @@
|
|||
ember-cli-babel "^6.16.0"
|
||||
ember-compatibility-helpers "^1.0.0"
|
||||
|
||||
"@ember/test-helpers@^0.7.18":
|
||||
version "0.7.25"
|
||||
resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-0.7.25.tgz#b4014c108b40ffaf74f3c4d5918800917541541d"
|
||||
integrity sha1-tAFMEItA/69088TVkYgAkXVBVB0=
|
||||
dependencies:
|
||||
broccoli-funnel "^2.0.1"
|
||||
ember-cli-babel "^6.12.0"
|
||||
ember-cli-htmlbars-inline-precompile "^1.0.0"
|
||||
|
||||
"@ember/test-helpers@^1.3.1":
|
||||
"@ember/test-helpers@^1.3.1", "@ember/test-helpers@^1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@ember/test-helpers/-/test-helpers-1.5.0.tgz#a480181c412778294e317c256d04ca52e63c813a"
|
||||
integrity sha512-RrS0O3VlDASMsI6v9nxUgO0k8EJGy1nzz/1HgiScbu8LbCpPj4Mp8S82yT/olXA3TShu7c/RfLZHjlN/iRW2OA==
|
||||
|
@ -3107,6 +3191,13 @@ babel-plugin-debug-macros@^0.1.10, babel-plugin-debug-macros@^0.1.11:
|
|||
dependencies:
|
||||
semver "^5.3.0"
|
||||
|
||||
babel-plugin-debug-macros@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-debug-macros/-/babel-plugin-debug-macros-0.2.0.tgz#0120ac20ce06ccc57bf493b667cf24b85c28da7a"
|
||||
integrity sha512-Wpmw4TbhR3Eq2t3W51eBAQSdKlr+uAyF0GI4GtPfMCD12Y4cIdpKC9l0RjNTH/P9isFypSqqewMPm7//fnZlNA==
|
||||
dependencies:
|
||||
semver "^5.3.0"
|
||||
|
||||
babel-plugin-debug-macros@^0.2.0-beta.6:
|
||||
version "0.2.0-beta.6"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-debug-macros/-/babel-plugin-debug-macros-0.2.0-beta.6.tgz#ecdf6e408d5c863ab21740d7ad7f43f027d2f912"
|
||||
|
@ -4396,7 +4487,7 @@ broccoli-merge-trees@^3.0.0:
|
|||
broccoli-plugin "^1.3.0"
|
||||
merge-trees "^2.0.0"
|
||||
|
||||
broccoli-merge-trees@^3.0.2:
|
||||
broccoli-merge-trees@^3.0.1, broccoli-merge-trees@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/broccoli-merge-trees/-/broccoli-merge-trees-3.0.2.tgz#f33b451994225522b5c9bcf27d59decfd8ba537d"
|
||||
integrity sha512-ZyPAwrOdlCddduFbsMyyFzJUrvW6b04pMvDiAQZrCwghlvgowJDY+EfoXn+eR1RRA5nmGHJ+B68T63VnpRiT1A==
|
||||
|
@ -6795,6 +6886,11 @@ ember-cli-autoprefixer@^0.8.1:
|
|||
broccoli-autoprefixer "^5.0.0"
|
||||
lodash "^4.0.0"
|
||||
|
||||
ember-cli-babel-plugin-helpers@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-babel-plugin-helpers/-/ember-cli-babel-plugin-helpers-1.1.0.tgz#de3baedd093163b6c2461f95964888c1676325ac"
|
||||
integrity sha512-Zr4my8Xn+CzO0gIuFNXji0eTRml5AxZUTDQz/wsNJ5AJAtyFWCY4QtKdoELNNbiCVGt1lq5yLiwTm4scGKu6xA==
|
||||
|
||||
ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-beta.7, ember-cli-babel@^6.0.0-beta.9, ember-cli-babel@^6.10.0, ember-cli-babel@^6.11.0, ember-cli-babel@^6.12.0, ember-cli-babel@^6.3.0, ember-cli-babel@^6.6.0, ember-cli-babel@^6.8.0, ember-cli-babel@^6.8.1, ember-cli-babel@^6.8.2, ember-cli-babel@^6.9.0, ember-cli-babel@^6.9.2:
|
||||
version "6.17.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.17.0.tgz#1f3e8ed9f4e2338caef6bc2c3d08d3c9928d0ddd"
|
||||
|
@ -6903,6 +6999,33 @@ ember-cli-babel@^7.4.3:
|
|||
ensure-posix-path "^1.0.2"
|
||||
semver "^5.5.0"
|
||||
|
||||
ember-cli-babel@^7.5.0:
|
||||
version "7.7.3"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-7.7.3.tgz#f94709f6727583d18685ca6773a995877b87b8a0"
|
||||
integrity sha512-/LWwyKIoSlZQ7k52P+6agC7AhcOBqPJ5C2u27qXHVVxKvCtg6ahNuRk/KmfZmV4zkuw4EjTZxfJE1PzpFyHkXg==
|
||||
dependencies:
|
||||
"@babel/core" "^7.0.0"
|
||||
"@babel/plugin-proposal-class-properties" "^7.3.4"
|
||||
"@babel/plugin-proposal-decorators" "^7.3.0"
|
||||
"@babel/plugin-transform-modules-amd" "^7.0.0"
|
||||
"@babel/plugin-transform-runtime" "^7.2.0"
|
||||
"@babel/polyfill" "^7.0.0"
|
||||
"@babel/preset-env" "^7.0.0"
|
||||
"@babel/runtime" "^7.2.0"
|
||||
amd-name-resolver "^1.2.1"
|
||||
babel-plugin-debug-macros "^0.3.0"
|
||||
babel-plugin-ember-modules-api-polyfill "^2.8.0"
|
||||
babel-plugin-module-resolver "^3.1.1"
|
||||
broccoli-babel-transpiler "^7.1.2"
|
||||
broccoli-debug "^0.6.4"
|
||||
broccoli-funnel "^2.0.1"
|
||||
broccoli-source "^1.1.0"
|
||||
clone "^2.1.2"
|
||||
ember-cli-babel-plugin-helpers "^1.1.0"
|
||||
ember-cli-version-checker "^2.1.2"
|
||||
ensure-posix-path "^1.0.2"
|
||||
semver "^5.5.0"
|
||||
|
||||
ember-cli-broccoli-sane-watcher@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-broccoli-sane-watcher/-/ember-cli-broccoli-sane-watcher-2.1.1.tgz#1687adada9022de26053fba833dc7dd10f03dd08"
|
||||
|
@ -6944,6 +7067,16 @@ ember-cli-dependency-checker@^3.0.0:
|
|||
resolve "^1.5.0"
|
||||
semver "^5.3.0"
|
||||
|
||||
ember-cli-deprecation-workflow@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-deprecation-workflow/-/ember-cli-deprecation-workflow-1.0.1.tgz#3305a6879af7f074216a54963d92491c411ce7e0"
|
||||
integrity sha512-tns8l4FLz8zmhmNRH7ywihs4XNTTuQysl+POYTpiyjb4zPNKv0cUJBCT/MklYFWBCo/5DcVzabhLODJZcScUfg==
|
||||
dependencies:
|
||||
broccoli-funnel "^2.0.1"
|
||||
broccoli-merge-trees "^3.0.1"
|
||||
broccoli-plugin "^1.3.1"
|
||||
ember-debug-handlers-polyfill "^1.1.1"
|
||||
|
||||
ember-cli-flash@1.7.1:
|
||||
version "1.7.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-flash/-/ember-cli-flash-1.7.1.tgz#0b9d2464d80144df0c65e928b6fc006259ef6a58"
|
||||
|
@ -6958,7 +7091,7 @@ ember-cli-get-component-path-option@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/ember-cli-get-component-path-option/-/ember-cli-get-component-path-option-1.0.0.tgz#0d7b595559e2f9050abed804f1d8eff1b08bc771"
|
||||
integrity sha1-DXtZVVni+QUKvtgE8djv8bCLx3E=
|
||||
|
||||
ember-cli-htmlbars-inline-precompile@^1.0.0, ember-cli-htmlbars-inline-precompile@^1.0.3:
|
||||
ember-cli-htmlbars-inline-precompile@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-htmlbars-inline-precompile/-/ember-cli-htmlbars-inline-precompile-1.0.3.tgz#332ff96c06fc522965162f1090d78a615379c3c2"
|
||||
integrity sha1-My/5bAb8UillFi8QkNeKYVN5w8I=
|
||||
|
@ -7052,15 +7185,15 @@ ember-cli-normalize-entity-name@^1.0.0:
|
|||
dependencies:
|
||||
silent-error "^1.0.0"
|
||||
|
||||
ember-cli-page-object@1.15.0-beta.3:
|
||||
version "1.15.0-beta.3"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-page-object/-/ember-cli-page-object-1.15.0-beta.3.tgz#e41f3a33e35a6717c507b1a4c13fc990950c7d35"
|
||||
integrity sha512-RuFhCuz32Ww4oguG0DdF4pxrqoxfmE1RMQ3aXw/IyzpAEKe9cPWY7ZZovW7zPKEoeu9hNQ9qRttH/vnlVMGalg==
|
||||
ember-cli-page-object@^1.15.3:
|
||||
version "1.15.3"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-page-object/-/ember-cli-page-object-1.15.3.tgz#4b1814e270367a455353aeb81019fb8d8c641886"
|
||||
integrity sha512-wGZqQnsyFHcJilf0xcWa53my/bprtZWHXg7m6wZPbWbnJCXNf1aAouj9uwH77r3PnE+/uYt0MIKMfX3Cnd607g==
|
||||
dependencies:
|
||||
broccoli-file-creator "^2.1.1"
|
||||
broccoli-merge-trees "^2.0.0"
|
||||
ceibo "~2.0.0"
|
||||
ember-cli-babel "^6.12.0"
|
||||
ember-cli-babel "^6.16.0"
|
||||
ember-cli-node-assets "^0.2.2"
|
||||
ember-native-dom-helpers "^0.5.3"
|
||||
jquery "^3.2.1"
|
||||
|
@ -7094,14 +7227,6 @@ ember-cli-pretender@^1.0.1:
|
|||
pretender "^1.4.2"
|
||||
resolve "^1.2.0"
|
||||
|
||||
ember-cli-qunit@^4.3.2:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-qunit/-/ember-cli-qunit-4.3.2.tgz#cfd89ad3b0dbc28a9c2223d532b52eeade7c602c"
|
||||
integrity sha1-z9ia07DbwoqcIiPVMrUu6t58YCw=
|
||||
dependencies:
|
||||
ember-cli-babel "^6.11.0"
|
||||
ember-qunit "^3.3.2"
|
||||
|
||||
ember-cli-sass@^9.0.0:
|
||||
version "9.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-sass/-/ember-cli-sass-9.0.0.tgz#d68e972d6a77b5837face7c03cfd5d1674bb1941"
|
||||
|
@ -7192,6 +7317,14 @@ ember-cli-version-checker@^2.0.0, ember-cli-version-checker@^2.1.0, ember-cli-ve
|
|||
resolve "^1.3.3"
|
||||
semver "^5.3.0"
|
||||
|
||||
ember-cli-version-checker@^3.1.2:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli-version-checker/-/ember-cli-version-checker-3.1.3.tgz#7c9b4f5ff30fdebcd480b1c06c4de43bb51c522c"
|
||||
integrity sha512-PZNSvpzwWgv68hcXxyjREpj3WWb81A7rtYNQq1lLEgrWIchF8ApKJjWP3NBpHjaatwILkZAV8klair5WFlXAKg==
|
||||
dependencies:
|
||||
resolve-package-path "^1.2.6"
|
||||
semver "^5.6.0"
|
||||
|
||||
ember-cli@~3.5.1:
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-cli/-/ember-cli-3.5.1.tgz#a1c7295eed935726891d40a81e0cc389f2d15fdf"
|
||||
|
@ -7296,6 +7429,15 @@ ember-compatibility-helpers@^1.0.0:
|
|||
ember-cli-version-checker "^2.1.1"
|
||||
semver "^5.4.1"
|
||||
|
||||
ember-compatibility-helpers@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-1.2.0.tgz#feee16c5e9ef1b1f1e53903b241740ad4b01097e"
|
||||
integrity sha512-pUW4MzJdcaQtwGsErYmitFRs0rlCYBAnunVzlFFUBr4xhjlCjgHJo0b53gFnhTgenNM3d3/NqLarzRhDTjXRTg==
|
||||
dependencies:
|
||||
babel-plugin-debug-macros "^0.2.0"
|
||||
ember-cli-version-checker "^2.1.1"
|
||||
semver "^5.4.1"
|
||||
|
||||
ember-composable-helpers@^2.0.3:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-composable-helpers/-/ember-composable-helpers-2.1.0.tgz#71f75ab2de1c696d21939b5f9dcc62eaf2c947e5"
|
||||
|
@ -7318,13 +7460,14 @@ ember-concurrency-test-waiter@^0.3.1:
|
|||
dependencies:
|
||||
ember-cli-babel "^6.6.0"
|
||||
|
||||
ember-concurrency@^0.8.14:
|
||||
version "0.8.20"
|
||||
resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-0.8.20.tgz#2c4f84ed3eb86cd0c7be9c2d21dd23f560757ac7"
|
||||
integrity sha512-pZ0+F6UoGvDWL6boRLoQ0/qrEw3K8CHZcRRswOLdsPIGboYwquPD8pStm6haS7QIaEd+gfYxXYpdGfBo3fIUmg==
|
||||
ember-concurrency@^0.10.0:
|
||||
version "0.10.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-concurrency/-/ember-concurrency-0.10.0.tgz#9c7c79dca411e01466119f02d7197c0a4ff0df08"
|
||||
integrity sha512-KhNNkUqnAN0isuAwSHaTJtmY/MdHJogSSAj7lCigzfJn2+21yafQcwzoVqf5LdMOn2+owWYURr1YiwzuOvlGyQ==
|
||||
dependencies:
|
||||
babel-core "^6.24.1"
|
||||
ember-cli-babel "^6.8.2"
|
||||
ember-compatibility-helpers "^1.2.0"
|
||||
ember-maybe-import-regenerator "^0.1.5"
|
||||
|
||||
ember-concurrency@^0.8.19:
|
||||
|
@ -7388,6 +7531,11 @@ ember-data@~3.4.0:
|
|||
semver "^5.5.0"
|
||||
silent-error "^1.1.0"
|
||||
|
||||
ember-debug-handlers-polyfill@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-debug-handlers-polyfill/-/ember-debug-handlers-polyfill-1.1.1.tgz#e9ae0a720271a834221179202367421b580002ef"
|
||||
integrity sha512-lO7FBAqJjzbL+IjnWhVfQITypPOJmXdZngZR/Vdn513W4g/Q6Sjicao/mDzeDCb48Y70C4Facwk0LjdIpSZkRg==
|
||||
|
||||
ember-export-application-global@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-export-application-global/-/ember-export-application-global-2.0.0.tgz#8d6d7619ac8a1a3f8c43003549eb21ebed685bd2"
|
||||
|
@ -7469,18 +7617,18 @@ ember-power-select@^2.0.12:
|
|||
ember-text-measurer "^0.4.0"
|
||||
ember-truth-helpers "^2.0.0"
|
||||
|
||||
ember-qunit@^3.3.2:
|
||||
version "3.4.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-3.4.1.tgz#204a2d39a5d44d494c56bf17cf3fd12f06210359"
|
||||
integrity sha512-WuWan6duE/HfygQHrgU77okTnt7B3lWcGn+N7NkBXR86pk2s+qxbX9p98uqSc0ISNt2Vg6Opz++RZn+fomHkBw==
|
||||
ember-qunit@^4.4.1:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/ember-qunit/-/ember-qunit-4.4.1.tgz#3654cadf9fa7e2287fe7b61fc7f19c3eb06222b5"
|
||||
integrity sha512-RYyEqn3UpwLri4+lL9sFdDp1uPa0AfN587661iKm7r3kTAzYHxZE7jRsBDIejhgSH2kVSky0+Q9Y7oLULYiM/Q==
|
||||
dependencies:
|
||||
"@ember/test-helpers" "^0.7.18"
|
||||
broccoli-funnel "^2.0.1"
|
||||
broccoli-merge-trees "^2.0.0"
|
||||
"@ember/test-helpers" "^1.5.0"
|
||||
broccoli-funnel "^2.0.2"
|
||||
broccoli-merge-trees "^3.0.2"
|
||||
common-tags "^1.4.0"
|
||||
ember-cli-babel "^6.8.2"
|
||||
ember-cli-babel "^7.5.0"
|
||||
ember-cli-test-loader "^2.2.0"
|
||||
qunit "^2.5.0"
|
||||
qunit "^2.9.2"
|
||||
|
||||
ember-radio-button@^1.1.1:
|
||||
version "1.2.4"
|
||||
|
@ -7592,13 +7740,13 @@ ember-template-lint@^1.0.0-beta.5:
|
|||
resolve "^1.1.3"
|
||||
strip-bom "^3.0.0"
|
||||
|
||||
ember-test-selectors@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-test-selectors/-/ember-test-selectors-1.0.0.tgz#a2f8cd86f4fb4c320004a2bf0e4c450d41668a21"
|
||||
integrity sha1-ovjNhvT7TDIABKK/DkxFDUFmiiE=
|
||||
ember-test-selectors@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ember-test-selectors/-/ember-test-selectors-2.1.0.tgz#faebdf06702aaa0bc510d55eb721ce54d2e85793"
|
||||
integrity sha512-c5HmvefmeABH8hg380TSNZiE9VAK1CBeXWrgyXy+IXHtsew4lZHHw7GnqCAqsakxwvmaMARbAKY9KfSAE91s1g==
|
||||
dependencies:
|
||||
ember-cli-babel "^6.8.2"
|
||||
ember-cli-version-checker "^2.0.0"
|
||||
ember-cli-version-checker "^3.1.2"
|
||||
|
||||
ember-text-measurer@^0.4.0:
|
||||
version "0.4.1"
|
||||
|
@ -8183,11 +8331,6 @@ exenv@^1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
|
||||
integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=
|
||||
|
||||
exists-stat@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/exists-stat/-/exists-stat-1.0.0.tgz#0660e3525a2e89d9e446129440c272edfa24b529"
|
||||
integrity sha1-BmDjUlouidnkRhKUQMJy7foktSk=
|
||||
|
||||
exists-sync@0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.yarnpkg.com/exists-sync/-/exists-sync-0.0.4.tgz#9744c2c428cc03b01060db454d4b12f0ef3c8879"
|
||||
|
@ -8689,7 +8832,7 @@ find-yarn-workspace-root@^1.1.0:
|
|||
fs-extra "^4.0.3"
|
||||
micromatch "^3.1.4"
|
||||
|
||||
findup-sync@2.0.0, findup-sync@^2.0.0:
|
||||
findup-sync@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc"
|
||||
integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=
|
||||
|
@ -12822,6 +12965,11 @@ node-version@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.2.0.tgz#34fde3ffa8e1149bd323983479dda620e1b5060d"
|
||||
integrity sha512-ma6oU4Sk0qOoKEAymVoTvk8EdXEobdS7m/mAGhDJ8Rouugho48crHBORAmy5BoOcv8wraPM6xumapQp5hl4iIQ==
|
||||
|
||||
node-watch@0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.6.0.tgz#ab0703b60cd270783698e57a428faa0010ed8fd0"
|
||||
integrity sha512-XAgTL05z75ptd7JSVejH1a2Dm1zmXYhuDr9l230Qk6Z7/7GPcnAs/UyJJ4ggsXSvWil8iOzwQLW0zuGUvHpG8g==
|
||||
|
||||
"nomnom@>= 1.5.x":
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7"
|
||||
|
@ -14370,18 +14518,16 @@ qunit-dom@^0.7.1:
|
|||
broccoli-funnel "^2.0.0"
|
||||
broccoli-merge-trees "^2.0.0"
|
||||
|
||||
qunit@^2.5.0:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.6.2.tgz#551210c5cf857258a4fe39a7fe15d9e14dfef22c"
|
||||
integrity sha512-PHbKulmd4rrDhFto7iHicIstDTX7oMRvAcI7loHstvU8J7AOGwzcchONmy+EG4KU8HDk0K90o7vO0GhlYyKlOg==
|
||||
qunit@^2.9.2:
|
||||
version "2.9.2"
|
||||
resolved "https://registry.yarnpkg.com/qunit/-/qunit-2.9.2.tgz#97919440c9c0ae838bcd3c33a2ee42f35c5ef4a0"
|
||||
integrity sha512-wTOYHnioWHcx5wa85Wl15IE7D6zTZe2CQlsodS14yj7s2FZ3MviRnQluspBZsueIDEO7doiuzKlv05yfky1R7w==
|
||||
dependencies:
|
||||
commander "2.12.2"
|
||||
exists-stat "1.0.0"
|
||||
findup-sync "2.0.0"
|
||||
js-reporters "1.2.1"
|
||||
resolve "1.5.0"
|
||||
sane "^2.5.2"
|
||||
walk-sync "0.3.2"
|
||||
minimatch "3.0.4"
|
||||
node-watch "0.6.0"
|
||||
resolve "1.9.0"
|
||||
|
||||
qw@~1.0.1:
|
||||
version "1.0.1"
|
||||
|
@ -15314,6 +15460,14 @@ resolve-package-path@^1.0.11:
|
|||
path-root "^0.1.1"
|
||||
resolve "^1.10.0"
|
||||
|
||||
resolve-package-path@^1.2.6:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/resolve-package-path/-/resolve-package-path-1.2.7.tgz#2a7bc37ad96865e239330e3102c31322847e652e"
|
||||
integrity sha512-fVEKHGeK85bGbVFuwO9o1aU0n3vqQGrezPc51JGu9UTXpFQfWq5qCeKxyaRUSvephs+06c5j5rPq/dzHGEo8+Q==
|
||||
dependencies:
|
||||
path-root "^0.1.1"
|
||||
resolve "^1.10.0"
|
||||
|
||||
resolve-path@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-path/-/resolve-path-1.4.0.tgz#c4bda9f5efb2fce65247873ab36bb4d834fe16f7"
|
||||
|
@ -15332,12 +15486,12 @@ resolve-url@^0.2.1:
|
|||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
|
||||
|
||||
resolve@1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36"
|
||||
integrity sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==
|
||||
resolve@1.9.0:
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06"
|
||||
integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==
|
||||
dependencies:
|
||||
path-parse "^1.0.5"
|
||||
path-parse "^1.0.6"
|
||||
|
||||
resolve@^1.1.3, resolve@^1.1.7, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.3.3, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.7.1, resolve@^1.8.1:
|
||||
version "1.8.1"
|
||||
|
@ -15555,7 +15709,7 @@ samsam@1.3.0, samsam@1.x, samsam@^1.1.3:
|
|||
resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.3.0.tgz#8d1d9350e25622da30de3e44ba692b5221ab7c50"
|
||||
integrity sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==
|
||||
|
||||
sane@^2.4.1, sane@^2.5.2:
|
||||
sane@^2.4.1:
|
||||
version "2.5.2"
|
||||
resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa"
|
||||
integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o=
|
||||
|
@ -17737,14 +17891,6 @@ walk-back@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/walk-back/-/walk-back-3.0.1.tgz#0c0012694725604960d6c2f75aaf1a1e7d455d35"
|
||||
integrity sha512-umiNB2qLO731Sxbp6cfZ9pwURJzTnftxE4Gc7hq8n/ehkuXC//s9F65IEIJA2ZytQZ1ZOsm/Fju4IWx0bivkUQ==
|
||||
|
||||
walk-sync@0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.3.2.tgz#4827280afc42d0e035367c4a4e31eeac0d136f75"
|
||||
integrity sha512-FMB5VqpLqOCcqrzA9okZFc0wq0Qbmdm396qJxvQZhDpyu0W95G9JCmp74tx7iyYnyOcBtUuKJsgIKAqjozvmmQ==
|
||||
dependencies:
|
||||
ensure-posix-path "^1.0.0"
|
||||
matcher-collection "^1.0.0"
|
||||
|
||||
walk-sync@^0.2.5, walk-sync@^0.2.7:
|
||||
version "0.2.7"
|
||||
resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.2.7.tgz#b49be4ee6867657aeb736978b56a29d10fa39969"
|
||||
|
|
Loading…
Reference in New Issue