From 3a0d0833fc0040e982b642911b2b30e3ec5fa4ac Mon Sep 17 00:00:00 2001 From: John Cowen Date: Fri, 2 Aug 2019 13:36:22 +0200 Subject: [PATCH] ui: Upgrade ember-cli-api-double. Adds new staging env (#6136) ember-cli-api-double has been upgraded for 3 things: 1. Use the correct configuration flags 2. Automatically include the necessary files to enable the api doubles without requiring a server. This can be disabled to provide custom functionality (so we can stitch our BDD style testing in with this) 3. When used statically, read the cookies from the users browser to enable basic ad-hoc double editing (e.g. CONSUL_SERVICE_COUNT=100000) Once upgraded we've now moved the config to the correct place, added a new environment (staging) to use the static-style of doubles The test environment continues to use custom cookie setting and url checking so we disable this 'auto importing' by setting 'auto-import' to false for the configuration for the addon. We also added a couple of new package script targets to explicitly serve or build the UI with the entirely static UI. --- ui-v2/config/environment.js | 12 ++- ui-v2/package.json | 5 +- ui-v2/tests/helpers/api.js | 21 +++-- ui-v2/tests/helpers/set-cookies.js | 87 ++++++++++---------- ui-v2/yarn.lock | 126 +++-------------------------- 5 files changed, 75 insertions(+), 176 deletions(-) diff --git a/ui-v2/config/environment.js b/ui-v2/config/environment.js index 11ce0aef41..c33b836384 100644 --- a/ui-v2/config/environment.js +++ b/ui-v2/config/environment.js @@ -68,7 +68,6 @@ module.exports = function(environment) { CONSUL_COPYRIGHT_URL: 'https://www.hashicorp.com', CONSUL_COPYRIGHT_YEAR: '2019', }); - if (environment === 'development') { // ENV.APP.LOG_RESOLVER = true; // ENV.APP.LOG_ACTIVE_GENERATION = true; @@ -90,8 +89,15 @@ module.exports = function(environment) { ENV.APP.rootElement = '#ember-testing'; ENV.APP.autoboot = false; - ENV['ember-cli-api-double'] = { - reader: 'html', + ENV['@hashicorp/ember-cli-api-double'] = { + 'auto-import': false, + enabled: true, + endpoints: ['/node_modules/@hashicorp/consul-api-double/v1'], + }; + } + if (environment === 'staging') { + ENV['@hashicorp/ember-cli-api-double'] = { + enabled: true, endpoints: ['/node_modules/@hashicorp/consul-api-double/v1'], }; } diff --git a/ui-v2/package.json b/ui-v2/package.json index 93a67b6847..b926991b27 100644 --- a/ui-v2/package.json +++ b/ui-v2/package.json @@ -10,12 +10,14 @@ "repository": "", "scripts": { "build": "ember build --environment production", + "build:staging": "ember build --environment staging", "build-ci": "ember build --environment test", "lint:dev:js": "eslint -c .dev.eslintrc.js --fix ./*.js ./.*.js app config lib server tests", "lint:js": "eslint -c .eslintrc.js --fix ./*.js ./.*.js app config lib server tests", "format:js": "prettier --write \"{app,config,lib,server,tests}/**/*.js\" ./*.js ./.*.js", "format:css": "prettier --write \"app/styles/**/*.*\"", "start": "ember serve --port=${EMBER_SERVE_PORT:-4200} --live-reload-port=${EMBER_LIVE_RELOAD_PORT:-7020}", + "start:staging": "ember serve --port=${EMBER_SERVE_PORT:-4200} --live-reload-port=${EMBER_LIVE_RELOAD_PORT:-7020} --environment staging", "start:api": "api-double --dir ./node_modules/@hashicorp/consul-api-double", "test": "ember test --test-port=${EMBER_TEST_PORT:-7357}", "test-parallel": "EMBER_EXAM_PARALLEL=true ember exam --split=4 --parallel", @@ -50,7 +52,7 @@ "devDependencies": { "@babel/core": "^7.2.2", "@hashicorp/consul-api-double": "^2.0.1", - "@hashicorp/ember-cli-api-double": "^1.3.0", + "@hashicorp/ember-cli-api-double": "^2.0.0", "babel-plugin-transform-object-rest-spread": "^6.26.0", "base64-js": "^1.3.0", "broccoli-asset-rev": "^2.4.5", @@ -64,7 +66,6 @@ "ember-cli-app-version": "^3.0.0", "ember-cli-autoprefixer": "^0.8.1", "ember-cli-babel": "^6.6.0", - "ember-cli-cjs-transform": "^1.2.0", "ember-cli-code-coverage": "^1.0.0-beta.4", "ember-cli-dependency-checker": "^2.0.0", "ember-cli-eslint": "^4.2.1", diff --git a/ui-v2/tests/helpers/api.js b/ui-v2/tests/helpers/api.js index 651ae96da4..00f33190b8 100644 --- a/ui-v2/tests/helpers/api.js +++ b/ui-v2/tests/helpers/api.js @@ -1,17 +1,14 @@ -import getAPI from '@hashicorp/ember-cli-api-double'; +import config from 'consul-ui/config/environment'; + +import apiDouble from '@hashicorp/ember-cli-api-double'; import setCookies from 'consul-ui/tests/helpers/set-cookies'; import typeToURL from 'consul-ui/tests/helpers/type-to-url'; -import config from 'consul-ui/config/environment'; -const apiConfig = config['ember-cli-api-double']; -let path = '/consul-api-double'; -let reader; -if (apiConfig) { - const temp = apiConfig.endpoints[0].split('/'); - reader = apiConfig.reader; - temp.pop(); - path = temp.join('/'); -} -const api = getAPI(path, setCookies, typeToURL, reader); + +const addon = config['@hashicorp/ember-cli-api-double']; +const temp = addon.endpoints[0].split('/'); +temp.pop(); +const path = temp.join('/'); +const api = apiDouble(path, setCookies, typeToURL); export const get = function(_url, options = { headers: { cookie: {} } }) { const url = new URL(_url, 'http://localhost'); return new Promise(function(resolve) { diff --git a/ui-v2/tests/helpers/set-cookies.js b/ui-v2/tests/helpers/set-cookies.js index 6312e85ea0..65340c80cf 100644 --- a/ui-v2/tests/helpers/set-cookies.js +++ b/ui-v2/tests/helpers/set-cookies.js @@ -1,45 +1,48 @@ -export default function(type, count, obj) { - var key = ''; - obj['CONSUL_ACLS_ENABLE'] = 1; - switch (type) { - case 'dc': - key = 'CONSUL_DATACENTER_COUNT'; - break; - case 'service': - key = 'CONSUL_SERVICE_COUNT'; - break; - case 'node': - case 'instance': - key = 'CONSUL_NODE_COUNT'; - break; - case 'kv': - key = 'CONSUL_KV_COUNT'; - break; - case 'acl': - key = 'CONSUL_ACL_COUNT'; - obj['CONSUL_ACLS_ENABLE'] = 1; - break; - case 'session': - key = 'CONSUL_SESSION_COUNT'; - break; - case 'intention': - key = 'CONSUL_INTENTION_COUNT'; - break; - case 'policy': - key = 'CONSUL_POLICY_COUNT'; - obj['CONSUL_ACLS_ENABLE'] = 1; - break; - case 'role': - key = 'CONSUL_ROLE_COUNT'; - obj['CONSUL_ACLS_ENABLE'] = 1; - break; - case 'token': - key = 'CONSUL_TOKEN_COUNT'; - obj['CONSUL_ACLS_ENABLE'] = 1; - break; - } - if (key) { - obj[key] = count; +export default function(type, value) { + const obj = {}; + if (type !== '*') { + let key = ''; + obj['CONSUL_ACLS_ENABLE'] = 1; + switch (type) { + case 'dc': + key = 'CONSUL_DATACENTER_COUNT'; + break; + case 'service': + key = 'CONSUL_SERVICE_COUNT'; + break; + case 'node': + case 'instance': + key = 'CONSUL_NODE_COUNT'; + break; + case 'kv': + key = 'CONSUL_KV_COUNT'; + break; + case 'acl': + key = 'CONSUL_ACL_COUNT'; + obj['CONSUL_ACLS_ENABLE'] = 1; + break; + case 'session': + key = 'CONSUL_SESSION_COUNT'; + break; + case 'intention': + key = 'CONSUL_INTENTION_COUNT'; + break; + case 'policy': + key = 'CONSUL_POLICY_COUNT'; + obj['CONSUL_ACLS_ENABLE'] = 1; + break; + case 'role': + key = 'CONSUL_ROLE_COUNT'; + obj['CONSUL_ACLS_ENABLE'] = 1; + break; + case 'token': + key = 'CONSUL_TOKEN_COUNT'; + obj['CONSUL_ACLS_ENABLE'] = 1; + break; + } + if (key) { + obj[key] = value; + } } return obj; } diff --git a/ui-v2/yarn.lock b/ui-v2/yarn.lock index de7a7b5953..7d4468ee3f 100644 --- a/ui-v2/yarn.lock +++ b/ui-v2/yarn.lock @@ -884,15 +884,17 @@ resolved "https://registry.yarnpkg.com/@hashicorp/consul-api-double/-/consul-api-double-2.3.0.tgz#1163f6dacb29d43d8dac4d1473263c257321682a" integrity sha512-wbaOyOoA1X5Ur7Gj4VSZkor1zuJ2+GTbavPJGtpZZXd6CtL3RXC4HaldruBIF79j3lBXVgS/Y9ETMfGLdoAYgA== -"@hashicorp/ember-cli-api-double@^1.3.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@hashicorp/ember-cli-api-double/-/ember-cli-api-double-1.7.0.tgz#4fdab6152157dd82b999de030c593c87e0cdb8b7" - integrity sha512-ojPcUPyId+3hTbwAtBGYbP5TfCGVAH8Ky6kH+BzlisIO/8XKURo9BSYnFtmYWLgXQVLOIE3iuoia5kOjGS/w2A== +"@hashicorp/ember-cli-api-double@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@hashicorp/ember-cli-api-double/-/ember-cli-api-double-2.0.0.tgz#259b13c89150b852f2ebe3b7c182dd16d3ee4c42" + integrity sha512-ZQ+0exG43jnuxEg5dkPkdsaRPX3je5AU+0KQUOmIug6KQ21nSw3KXmMj9+z6dGymdYBaiXaMY2WNTtj+r1Ajuw== dependencies: "@hashicorp/api-double" "^1.3.0" array-range "^1.0.1" + broccoli-file-creator "^2.1.1" + broccoli-merge-trees "^3.0.2" + ember-auto-import "^1.4.0" ember-cli-babel "^6.6.0" - js-yaml "^3.11.0" merge-options "^1.0.1" pretender "^2.0.0" recursive-readdir-sync "^1.0.6" @@ -909,19 +911,11 @@ dependencies: samsam "1.3.0" -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - "@types/minimatch@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== -"@types/node@*": - version "10.11.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.11.3.tgz#c055536ac8a5e871701aa01914be5731539d01ee" - "@webassemblyjs/ast@1.7.11": version "1.7.11" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.11.tgz#b988582cafbb2b095e8b556526f30c90d057cace" @@ -3030,10 +3024,6 @@ builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -builtin-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e" - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -4363,22 +4353,6 @@ ember-cli-broccoli-sane-watcher@^2.0.4: rsvp "^3.0.18" sane "^2.4.1" -ember-cli-cjs-transform@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ember-cli-cjs-transform/-/ember-cli-cjs-transform-1.3.0.tgz#73a24a9335067b83a4acac9c5fe4deb51a62391a" - dependencies: - broccoli-debug "^0.6.4" - broccoli-plugin "^1.3.0" - ember-cli-babel "^6.6.0" - fs-extra "^5.0.0" - hash-for-dep "^1.2.3" - pkg-dir "^2.0.0" - resolve "^1.7.1" - rollup "^0.59.0" - rollup-plugin-commonjs "^9.1.0" - rollup-plugin-node-resolve "^3.3.0" - username "^3.0.0" - ember-cli-code-coverage@^1.0.0-beta.4: version "1.0.0-beta.6" resolved "https://registry.yarnpkg.com/ember-cli-code-coverage/-/ember-cli-code-coverage-1.0.0-beta.6.tgz#7da5dc4e2eb7c207b827b6cbdf91a96d0cca0983" @@ -5362,10 +5336,6 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" -estree-walker@^0.5.1, estree-walker@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" - esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" @@ -5427,18 +5397,6 @@ execa@^0.10.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" - dependencies: - cross-spawn "^5.0.1" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" @@ -6966,10 +6924,6 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - is-number@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" @@ -7255,15 +7209,7 @@ js-yaml@0.3.x: version "0.3.7" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-0.3.7.tgz#d739d8ee86461e54b354d6a7d7d1f2ad9a167f62" -js-yaml@^3.11.0, js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^3.12.0: +js-yaml@^3.12.0, js-yaml@^3.13.1: version "3.13.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== @@ -7923,12 +7869,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -magic-string@^0.22.4: - version "0.22.5" - resolved "http://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" - dependencies: - vlq "^0.2.2" - make-dir@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" @@ -8042,12 +7982,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= -mem@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" - dependencies: - mimic-fn "^1.0.0" - memory-fs@^0.4.0, memory-fs@~0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -8115,7 +8049,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: +micromatch@^2.1.5, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -9779,43 +9713,12 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-commonjs@^9.1.0: - version "9.1.8" - resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.1.8.tgz#4113ed94e6054b5f8a3501d8811f934cadde3246" - dependencies: - estree-walker "^0.5.1" - magic-string "^0.22.4" - resolve "^1.5.0" - rollup-pluginutils "^2.0.1" - -rollup-plugin-node-resolve@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz#908585eda12e393caac7498715a01e08606abc89" - dependencies: - builtin-modules "^2.0.0" - is-module "^1.0.0" - resolve "^1.1.6" - -rollup-pluginutils@^2.0.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794" - dependencies: - estree-walker "^0.5.2" - micromatch "^2.3.11" - rollup@^0.41.4: version "0.41.6" resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.41.6.tgz#e0d05497877a398c104d816d2733a718a7a94e2a" dependencies: source-map-support "^0.4.0" -rollup@^0.59.0: - version "0.59.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.59.4.tgz#6f80f7017c22667ff1bf3e62adf8624a44cc44aa" - dependencies: - "@types/estree" "0.0.39" - "@types/node" "*" - route-recognizer@^0.3.3: version "0.3.4" resolved "https://registry.yarnpkg.com/route-recognizer/-/route-recognizer-0.3.4.tgz#39ab1ffbce1c59e6d2bdca416f0932611e4f3ca3" @@ -11109,13 +11012,6 @@ username@^1.0.1: dependencies: meow "^3.4.0" -username@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/username/-/username-3.0.0.tgz#b3dba982a72b4ce59d52f159fa1aeba266af5fc8" - dependencies: - execa "^0.7.0" - mem "^1.1.0" - util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -11174,10 +11070,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vlq@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" - vm-browserify@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"