From 7ad3ce8a15774a3e10976a69ca5515d8a5c508ea Mon Sep 17 00:00:00 2001 From: javierbrea Date: Wed, 20 Nov 2019 07:17:15 +0100 Subject: [PATCH 01/10] Rename package --- CHANGELOG.md | 54 +++------------------------------------- package-lock.json | 45 ++++++++++----------------------- package.json | 20 ++++++--------- sonar-project.properties | 4 +-- 4 files changed, 26 insertions(+), 97 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26e392e..f2dddf0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,10 +5,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## [To be deprecated] -- Deprecate options "features" and "feature". - Remove "/features" api path. -- Remove "features" getter from Server -- Remove Server and Cli constructors. Use @mocks-server/core instead ## [unreleased] ### Added @@ -16,50 +13,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed ### Removed -## [1.3.0] - 2019-11-17 -### Added -- Add programmatic Classes end-to-end tests -- Add files watcher end-to-end tests - -### Changed -- Full refactor for making it pluggable. -- Split code into core, cli and api main Classes, which are intended to be published separately. - -## [1.2.0] - 2019-11-13 -### Added -- Add api acceptance tests - -### Changed -- Upgrade dependencies - -### Fixed -- Catch server.listen error and reject start method promise with it when occurs. - -## [1.1.1] - 2019-11-12 -### Changed -- Change readme. Add links to docs website. - -## [1.1.0] - 2019-11-08 -### Changed -- Change "feature" concept by "behavior". Maintain old "feature" options and urls as aliases for maintaining compatibility. -- Upgrade dependencies - -## [1.0.3] - 2019-11-08 -### Fixed -- Fix examples and badges in readme. - -## [1.0.2] - 2019-11-08 -### Changed -- Project forked from xbyorange/mocks-server. Fixed license. Read NOTICE for further details - -### Fixed -- Fix some minor Sonar bugs and code smells. - -## [1.0.1] - 2019-06-04 -### Fixed -- Upgrade dependencies to fix potential security vulnerability -- Bind winston tracer methods to winston tracer instance to fix an issue produced by new Winston version as described in: https://github.com/winstonjs/winston/issues/1577 - -## [1.0.0] - 2019-06-04 -### Changed -- Forked from xbyorange mocks-server gitlab private repository. +## [1.0.0] - +- Migrate administration api from [@mocks-server/main, v1.3.0](https://github.com/mocks-server/main/releases/tag/v1.3.0). For further info read the [previous repository CHANGELOG.md](https://github.com/mocks-server/main/blob/v1.3.0/CHANGELOG.md#130---2019-11-17) +- Export Plugin, which can be used only programmatically. (Binary is still distributed in the [@mocks-server/main](https://github.com/mocks-server/main) package). +- Remove core and inquirer-cli. Both have now their own repositories. diff --git a/package-lock.json b/package-lock.json index a2cc090..4236558 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { - "name": "@mocks-server/main", - "version": "1.3.0", + "name": "@mocks-server/plugin-admin-api", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2775,8 +2775,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -2797,14 +2796,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2819,20 +2816,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -2949,8 +2943,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -2962,7 +2955,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2977,7 +2969,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -2985,14 +2976,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3011,7 +3000,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -3092,8 +3080,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -3105,7 +3092,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3191,8 +3177,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -3228,7 +3213,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3248,7 +3232,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3292,14 +3275,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/package.json b/package.json index 160b996..f5da100 100644 --- a/package.json +++ b/package.json @@ -1,36 +1,30 @@ { - "name": "@mocks-server/main", - "version": "1.3.0", - "description": "Mocks server supporting multiple api behaviors", + "name": "@mocks-server/plugin-admin-api", + "version": "1.0.0", + "description": "Mocks server administration REST API plugin", "keywords": [ "mocks", "server", "mock", - "fixtures", - "behaviors", + "administration", + "admin", "api", "rest", - "cli", - "express", "testing", "development" ], "author": "Javier Brea", "license": "Apache-2.0", - "repository": "https://github.com/mocks-server/main", + "repository": "https://github.com/mocks-server/plugin-admin-api", "homepage": "https://www.mocks-server.org", "publishConfig": { "access": "public" }, "files": [ - "bin", - "lib", + "src", "index.js" ], "main": "index.js", - "bin": { - "mocks-server": "./bin/mocks-server" - }, "scripts": { "lint": "eslint index.js lib test jest.config.js jest.acceptance.config.js", "lint-staged": "lint-staged", diff --git a/sonar-project.properties b/sonar-project.properties index 9a9acec..aeacfbc 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,6 +1,6 @@ sonar.organization=mocks-server -sonar.projectKey=mocks-server-main -sonar.projectVersion=1.3.0 +sonar.projectKey=mocks-server-plugin-admin-api +sonar.projectVersion=1.0.0 sonar.javascript.file.suffixes=.js sonar.sourceEncoding=UTF-8 From e967e737d1e8aa2d6c2badcc3e62cb7f49f06a42 Mon Sep 17 00:00:00 2001 From: javierbrea Date: Wed, 20 Nov 2019 07:31:33 +0100 Subject: [PATCH 02/10] Change notice. Change package description --- NOTICE | 2 +- package.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/NOTICE b/NOTICE index 69d10be..e318eb6 100644 --- a/NOTICE +++ b/NOTICE @@ -1,4 +1,4 @@ -mocks-server. Main distributable +mocks-server admin-api plugin. Copyright 2019 Javier Brea Portions of this software were developed at XbyOrange company. diff --git a/package.json b/package.json index f5da100..5470dd2 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { "name": "@mocks-server/plugin-admin-api", "version": "1.0.0", - "description": "Mocks server administration REST API plugin", + "description": "Plugin for Mocks Server. Provides a REST API for administrating settings, fixtures and behaviors", "keywords": [ "mocks", "server", "mock", + "plugin", "administration", "admin", "api", From dcd91571847ee87a6d1d1c5911a0e023fe886c46 Mon Sep 17 00:00:00 2001 From: javierbrea Date: Fri, 6 Dec 2019 11:00:17 +0100 Subject: [PATCH 03/10] Remove unused files --- LICENSE | 2 +- assets/cli_animation.gif | Bin 1032579 -> 0 bytes bin/mocks-server | 14 -- docs/cli.md | 30 --- lib/ProgrammaticCli.js | 67 ------ lib/ProgrammaticServer.js | 77 ------- lib/cli/Cli.js | 250 ---------------------- lib/cli/Inquirer.js | 136 ------------ lib/core/Core.js | 125 ----------- lib/core/Plugins.js | 161 -------------- lib/core/eventNames.js | 14 -- lib/core/mocks/Behavior.js | 66 ------ lib/core/mocks/Behaviors.js | 168 --------------- lib/core/mocks/FilesHandler.js | 125 ----------- lib/core/mocks/Mocks.js | 37 ---- lib/core/server/Server.js | 166 -------------- lib/core/server/middlewares.js | 65 ------ lib/core/settings/CommandLineArguments.js | 76 ------- lib/core/settings/Options.js | 156 -------------- lib/core/settings/Settings.js | 64 ------ lib/core/tracer.js | 59 ----- lib/start.js | 37 ---- 22 files changed, 1 insertion(+), 1894 deletions(-) delete mode 100644 assets/cli_animation.gif delete mode 100755 bin/mocks-server delete mode 100644 docs/cli.md delete mode 100644 lib/ProgrammaticCli.js delete mode 100644 lib/ProgrammaticServer.js delete mode 100644 lib/cli/Cli.js delete mode 100644 lib/cli/Inquirer.js delete mode 100644 lib/core/Core.js delete mode 100644 lib/core/Plugins.js delete mode 100644 lib/core/eventNames.js delete mode 100644 lib/core/mocks/Behavior.js delete mode 100644 lib/core/mocks/Behaviors.js delete mode 100644 lib/core/mocks/FilesHandler.js delete mode 100644 lib/core/mocks/Mocks.js delete mode 100644 lib/core/server/Server.js delete mode 100644 lib/core/server/middlewares.js delete mode 100644 lib/core/settings/CommandLineArguments.js delete mode 100644 lib/core/settings/Options.js delete mode 100644 lib/core/settings/Settings.js delete mode 100644 lib/core/tracer.js delete mode 100644 lib/start.js diff --git a/LICENSE b/LICENSE index 58a0db8..b43ac62 100644 --- a/LICENSE +++ b/LICENSE @@ -175,5 +175,5 @@ END OF TERMS AND CONDITIONS - Copyright 2019 Javier Brea and contributors + Copyright 2019 Javier Brea Copyright 2019 XbyOrange diff --git a/assets/cli_animation.gif b/assets/cli_animation.gif deleted file mode 100644 index 9f45b50af35c3f5e9ad5b8e73ce5268f232342f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1032579 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 z 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�uY*0OcKhPdv-^PfbH-E{Gdar^lI6VVAV_tman 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

;<`8_uzB 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 z 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⩔buse$+I8a_T39P?=C(s;_Ntdzbjwm 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≀Q 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

rmO#Hifw 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

!Ka6Zd5@# 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 X=Cl{j?_{lS6SMuDwJ{I0BGVcGaU($& diff --git a/bin/mocks-server b/bin/mocks-server deleted file mode 100755 index 95c063c..0000000 --- a/bin/mocks-server +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env node -"use strict"; - -require("../lib/start").start(); - -/* -Copyright 2019 XbyOrange - -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. -*/ diff --git a/docs/cli.md b/docs/cli.md deleted file mode 100644 index fd42eb9..0000000 --- a/docs/cli.md +++ /dev/null @@ -1,30 +0,0 @@ -#### CLI - -The interactive CLI can be instantiated and started programmatically: - -```js -const { Cli } = require("@mocks-server/main"); - -const startMyCli = () => { - const cli = new Cli({ - port: 3200, - log: "debug", - watch: false - }); - - return cli.start(); -}; - -startMyCli().catch(err => { - console.log("Error starting CLI", err); -}); -``` - -##### `Cli` (\[options\]\[,customQuitMethod\]) -For first argument options, please read the [options](#options) chapter of this documentation. Available methods of an instance are: -- `start` () -Inits the server in case it was stopped, adds the watch listeners, and renders main menu. -- `initServer` () -Inits the server in case it was stopped, adds the watch listeners. -- `stopListeningServerWatch` () -When server watch is active, the main menu will be displayed on file changes. This behavior can be deactivated using this method. This is useful when this CLI is loaded as a submenu of another CLI, for example. diff --git a/lib/ProgrammaticCli.js b/lib/ProgrammaticCli.js deleted file mode 100644 index 63eba70..0000000 --- a/lib/ProgrammaticCli.js +++ /dev/null @@ -1,67 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -"use strict"; - -// TODO, deprecate this programmatic initialization. Use Core instead. - -const Core = require("./core/Core"); -const AdminApi = require("./api/Api"); -const InquirerCli = require("./cli/Cli"); - -class ProgrammaticCli { - constructor(options = {}) { - const createInquirerCli = core => { - this._inquirerCli = new InquirerCli(core); - return this._inquirerCli; - }; - - this._core = new Core({ - onlyProgrammaticOptions: true, - plugins: [AdminApi, createInquirerCli] - }); - this._options = { ...options }; - this._cliStarted = false; - this._coreStarted = false; - this._core.tracer.warn( - "Deprecation warning: Cli constructor will be deprecated. Use @mocks-server/core instead" - ); - } - - async _startCore(cliEnabled) { - if (!this._coreStarted) { - this._coreStarted = true; - await this._core.init(this._options); - this._core.settings.set("cli", cliEnabled); - return this._core.start(); - } - return Promise.resolve(); - } - - async start() { - await this._startCore(true); - if (!this._cliStarted && !this._core.settings.get("cli")) { - this._core.settings.set("cli", true); - this._cliStarted = true; - return this._inquirerCli.start(); - } - return Promise.resolve(); - } - - async initServer() { - return this._startCore(false); - } - - stopListeningServerWatch() { - return this._inquirerCli.stopListeningServerWatch(); - } -} - -module.exports = ProgrammaticCli; diff --git a/lib/ProgrammaticServer.js b/lib/ProgrammaticServer.js deleted file mode 100644 index 33f11d0..0000000 --- a/lib/ProgrammaticServer.js +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -"use strict"; - -// TODO, deprecate this programmatic initialization. Use Core instead. - -const Core = require("./core/Core"); -const AdminApi = require("./api/Api"); - -class ProgrammaticServer { - constructor(mocksFolder, options = {}) { - this._core = new Core({ - onlyProgrammaticOptions: true, - plugins: [AdminApi] - }); - this._options = { ...options, behaviors: mocksFolder }; - this._initPromise = null; - this._onLoadMocks = this._onLoadMocks.bind(this); - this._core.tracer.warn( - "Deprecation warning: Server constructor will be deprecated. Use @mocks-server/core instead" - ); - } - - async _init() { - if (!this._initPromise) { - this._core.onChangeSettings(this._onLoadMocks); - this._initPromise = this._core.init(this._options); - } - return this._initPromise; - } - - async start() { - await this._init(); - return this._core.start().then(() => { - return Promise.resolve(this); - }); - } - - _onLoadMocks() { - // TODO, deprecate Retro compability - this._core._eventEmitter.emit("watch-reload"); - } - - stop() { - return this._core.stop(); - } - - async switchWatch(state) { - return this._core.settings.set("watch", state); - } - - get behaviors() { - return this._core.behaviors; - } - - get watchEnabled() { - return this._core.settings.get("watch"); - } - - get error() { - return this._core.serverError; - } - - get events() { - return this._core._eventEmitter; - } -} - -module.exports = ProgrammaticServer; diff --git a/lib/cli/Cli.js b/lib/cli/Cli.js deleted file mode 100644 index 1914de5..0000000 --- a/lib/cli/Cli.js +++ /dev/null @@ -1,250 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const chalk = require("chalk"); -const { isNumber } = require("lodash"); - -const inquirer = require("./Inquirer"); - -const questions = { - main: { - type: "list", - message: "Select action:", - name: "value", - choices: [ - { - name: "Change current behavior", - value: "behavior" - }, - { - name: "Change delay", - value: "delay" - }, - { - name: "Restart server", - value: "restart" - }, - { - name: "Change log level", - value: "logLevel" - }, - { - name: "Switch watch", - value: "watch" - }, - { - name: "Display server logs", - value: "logs" - } - ] - }, - logLevel: { - type: "list", - message: "Select log level:", - name: "value", - choices: ["silly", "debug", "verbose", "info", "warn", "error"] - }, - behavior: { - type: "autocomplete", - name: "value", - message: "Please choose behavior" - }, - delay: { - type: "input", - name: "value", - message: "Enter delay time in ms:", - validate: value => isNumber(value), - filter: value => { - if (/^\d*$/.test(value)) { - return parseInt(value, 10); - } - return false; - } - } -}; - -const SCREENS = { - MAIN: "main", - BEHAVIOR: "behavior", - DELAY: "delay", - LOG_LEVEL: "log-level", - LOGS: "logs" -}; - -class Cli { - constructor(core) { - this._core = core; - this._tracer = core.tracer; - this._settings = core.settings; - this._inited = false; - this._currentScreen = null; - - this._onLoadMocks = this._onLoadMocks.bind(this); - this._onChangeSettings = this._onChangeSettings.bind(this); - - this._core.addCustomSetting({ - name: "cli", - type: "booleanString", // Workaround to maintain retrocompatibility with --cli=false - description: "Start interactive CLI plugin", - default: true - }); - } - - init() { - if (!this._settings.get("cli")) { - return Promise.resolve(); - } - this._questions = questions; - this._cli = new inquirer.Inquirer( - this._questions, - this._header.bind(this) // TODO, deprecate quit method - ); - this._logLevel = this._settings.get("log"); - this._inited = true; - this._core.onChangeSettings(this._onChangeSettings); - return Promise.resolve(); - } - - start() { - if (!this._inited || !this._settings.get("cli")) { - return Promise.resolve(); - } - this._stopListeningFilesLoad = this._core.onLoadMocks(this._onLoadMocks); - this._silentTraces(); - return this._displayMainMenu(); - } - - _onLoadMocks() { - this._cli.removeListeners(); - this._cli.exitLogsMode(); - return this._displayMainMenu(); - } - - _onChangeSettings() { - if (this._currentScreen === SCREENS.MAIN) { - this._cli.removeListeners(); - return this._displayMainMenu(); - } - } - - get _serverUrl() { - return `http://${this._settings.get("host")}:${this._settings.get("port")}`; - } - - _header() { - const header = [ - `Mocks server listening at: ${chalk.cyan(this._serverUrl)}`, - `Delay: ${chalk.cyan(this._settings.get("delay"))}`, - `Behaviors: ${chalk.cyan(this._core.behaviors.totalBehaviors)}`, - `Current behavior: ${chalk.cyan(this._core.behaviors.currentName || "-")}`, - `Current fixtures: ${chalk.cyan(this._core.behaviors.currentTotalFixtures || 0)}`, - `Log level: ${chalk.cyan(this._logLevel)}`, - `Watch enabled: ${chalk.cyan(this._settings.get("watch"))}` - ]; - - if (this._core.serverError) { - header.unshift( - chalk.red.bold(`There was an error restarting server: ${this._core.serverError.message}`) - ); - } - - return header; - } - - async _displayMainMenu() { - this._cli.clearScreen(); - this._currentScreen = SCREENS.MAIN; - const action = await this._cli.inquire("main"); - switch (action) { - case "behavior": - return this._changeCurrentBehavior(); - case "delay": - return this._changeDelay(); - case "restart": - return this._restartServer(); - case "logLevel": - return this._changeLogLevel(); - case "watch": - return this._switchWatch(); - case "logs": - return this._displayLogs(); - } - } - - async _changeCurrentBehavior() { - this._currentScreen = SCREENS.BEHAVIOR; - this._cli.clearScreen(); - const behaviorsNames = this._core.behaviors.names; - const behavior = await this._cli.inquire("behavior", { - source: (answers, input) => { - if (!input || !input.length) { - return Promise.resolve(behaviorsNames); - } - return Promise.resolve( - behaviorsNames.filter(currentBehavior => currentBehavior.includes(input)) - ); - } - }); - this._settings.set("behavior", behavior); - return this._displayMainMenu(); - } - - async _changeDelay() { - this._currentScreen = SCREENS.DELAY; - this._cli.clearScreen(); - const delay = await this._cli.inquire("delay"); - this._settings.set("delay", delay); - return this._displayMainMenu(); - } - - async _restartServer() { - try { - await this._core.restart(); - } catch (err) {} - return this._displayMainMenu(); - } - - async _switchWatch() { - this._settings.set("watch", !this._settings.get("watch")); - return this._displayMainMenu(); - } - - async _changeLogLevel() { - this._currentScreen = SCREENS.LOG_LEVEL; - this._cli.clearScreen(); - this._logLevel = await this._cli.inquire("logLevel"); - return this._displayMainMenu(); - } - - async _displayLogs() { - this._currentScreen = SCREENS.LOGS; - this._cli.clearScreen(); - await this._cli.logsMode(() => { - this._settings.set("log", this._logLevel); - }); - this._silentTraces(); - return this._displayMainMenu(); - } - - _silentTraces() { - this._settings.set("log", "silent"); - } - - stopListeningServerWatch() { - if (this._stopListeningFilesLoad) { - this._stopListeningFilesLoad(); - } - } -} - -module.exports = Cli; diff --git a/lib/cli/Inquirer.js b/lib/cli/Inquirer.js deleted file mode 100644 index 9977556..0000000 --- a/lib/cli/Inquirer.js +++ /dev/null @@ -1,136 +0,0 @@ -/* -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const chalk = require("chalk"); -const inquirer = require("inquirer"); -const autocomplete = require("inquirer-autocomplete-prompt"); -const { cloneDeep, map } = require("lodash"); - -inquirer.registerPrompt("autocomplete", autocomplete); - -const STDIN_ENCODING = "utf8"; -const CTRL_C = "\u0003"; -const CLRS = "\x1Bc"; -const EVENT_LISTENER = "keypress"; -const STDIN_EVENT = "data"; - -const HEADER_ITEM = chalk.yellow(">>"); -const HEADER_FOOTER = "------------------------------------"; -const MAIN_MENU_ID = "main"; -const DEFAULT_QUIT_NAME = "Exit"; -const QUIT_ACTION_ID = "quit"; -const LOGS_MODE_MESSAGE = "Displaying logs. Press any key to display main menu again"; - -const Inquirer = class Inquirer { - constructor(questions, header, quitMethod) { - this._header = header; - this._questions = this._initQuestions(questions, quitMethod); - this._exitLogsMode = this._exitLogsMode.bind(this); - } - - _initQuestions(questions, quitMethod) { - const clonedQuestions = cloneDeep(questions); - const quitQuestion = { - name: DEFAULT_QUIT_NAME, - value: QUIT_ACTION_ID - }; - if (clonedQuestions[MAIN_MENU_ID] && clonedQuestions[MAIN_MENU_ID].choices) { - clonedQuestions[MAIN_MENU_ID].choices.push(new inquirer.Separator()); - if (quitMethod) { - clonedQuestions[MAIN_MENU_ID].choices.push({ - ...quitQuestion, - name: quitMethod.name - }); - this._quit = quitMethod.action; - } else { - clonedQuestions[MAIN_MENU_ID].choices.push(quitQuestion); - this._quit = () => process.exit(); - } - } - return clonedQuestions; - } - - exitLogsMode() { - if (this._logModeExit) { - const stdin = process.stdin; - if (stdin.setRawMode) { - stdin.setRawMode(false); - } - stdin.pause(); - stdin.removeListener(STDIN_EVENT, this._exitLogsMode); - this._logModeExit(); - delete this._logModeExit; - } - } - - _exitLogsMode(key) { - if (key === CTRL_C) { - process.exit(); - } - this.exitLogsMode(); - } - - async logsMode(startLogs) { - this.clearScreen(); - console.log(chalk.blue(LOGS_MODE_MESSAGE)); - const stdin = process.stdin; - if (stdin.setRawMode) { - stdin.setRawMode(true); - } - stdin.resume(); - stdin.setEncoding(STDIN_ENCODING); - stdin.on(STDIN_EVENT, this._exitLogsMode); - if (startLogs) { - startLogs(); - } - return new Promise(resolve => { - this._logModeExit = resolve; - }); - } - - async inquire(questionKey, extendProperties) { - const answers = await inquirer.prompt({ - ...this._questions[questionKey], - ...extendProperties - }); - this.removeListeners(); - if (questionKey === MAIN_MENU_ID && answers.value === QUIT_ACTION_ID) { - return this._quit(); - } - return answers.value; - } - - quit() { - this._quit(); - } - - clearScreen(opts) { - const options = opts || {}; - process.stdout.write(CLRS); - if (options.header !== false) { - const headers = (this._header && this._header()) || []; - headers.map(header => console.log(`${HEADER_ITEM} ${header}`)); - console.log(HEADER_FOOTER); - } - } - - removeListeners() { - const listeners = process.stdin.listeners(EVENT_LISTENER); - map(listeners, listener => { - process.stdin.removeListener(EVENT_LISTENER, listener); - }); - } -}; - -module.exports = { - Inquirer -}; diff --git a/lib/core/Core.js b/lib/core/Core.js deleted file mode 100644 index 15b95f4..0000000 --- a/lib/core/Core.js +++ /dev/null @@ -1,125 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const EventEmitter = require("events"); - -const { LOAD_MOCKS, CHANGE_SETTINGS } = require("./eventNames"); -const Server = require("./server/Server"); -const tracer = require("./tracer"); -const Mocks = require("./mocks/Mocks"); -const Settings = require("./settings/Settings"); -const Plugins = require("./Plugins"); - -class Core { - constructor(coreOptions = {}) { - this._eventEmitter = new EventEmitter(); - this._settings = new Settings( - { - onlyProgrammaticOptions: coreOptions.onlyProgrammaticOptions - }, - this._eventEmitter - ); - this._mocks = new Mocks(this._settings, this._eventEmitter); - this._server = new Server(this._mocks, this._settings, this._eventEmitter); - this._plugins = new Plugins(coreOptions.plugins, this); - this._inited = false; - this._startPluginsPromise = null; - } - - async init(options) { - if (this._inited) { - return Promise.resolve(); - } - this._inited = true; - // Register plugins, let them add their custom settings - await this._plugins.register(); - // Init settings, read command line arguments, etc. - await this._settings.init(options); - // Settings are ready, init all - await this._mocks.init(); - await this._server.init(); - return this._plugins.init(); - } - - async start() { - await this.init(); // in case it has not been initializated manually before - await this._mocks.start(); - await this._server.start(); - return this._startPlugins(); - } - - async _startPlugins() { - if (!this._startPluginsPromise) { - this._startPluginsPromise = this._plugins.start(); - } - return this._startPluginsPromise; - } - - addCustomRouter(path, router) { - return this._server.addCustomRouter(path, router); - } - - addCustomSetting(option) { - return this._settings.addCustom(option); - } - - // Listeners - - onLoadMocks(cb) { - const removeCallback = () => { - this._eventEmitter.removeListener(LOAD_MOCKS, cb); - }; - this._eventEmitter.on(LOAD_MOCKS, cb); - return removeCallback; - } - - onChangeSettings(cb) { - const removeCallback = () => { - this._eventEmitter.removeListener(CHANGE_SETTINGS, cb); - }; - this._eventEmitter.on(CHANGE_SETTINGS, cb); - return removeCallback; - } - - // Expose Server methods and getters - - stop() { - return this._server.stop(); - } - - restart() { - return this._server.restart(); - } - - get serverError() { - return this._server.error; - } - - // Expose child objects needed - - get settings() { - return this._settings; - } - - get behaviors() { - return this._mocks.behaviors; - } - - // TODO, deprecate getter - get features() { - return this._mocks.behaviors; - } - - get tracer() { - return tracer; - } -} - -module.exports = Core; diff --git a/lib/core/Plugins.js b/lib/core/Plugins.js deleted file mode 100644 index 044142e..0000000 --- a/lib/core/Plugins.js +++ /dev/null @@ -1,161 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const isPromise = require("is-promise"); -const { isObject, isFunction } = require("lodash"); - -const tracer = require("./tracer"); - -class Plugins { - constructor(plugins, core) { - this._core = core; - this._plugins = plugins || []; - this._pluginsInstances = []; - this._pluginsRegistered = 0; - this._pluginsInitialized = 0; - this._pluginsStarted = 0; - } - - register() { - return this._registerPlugins().then(() => { - tracer.verbose(`Registered ${this._pluginsRegistered} plugins`); - return Promise.resolve(); - }); - } - - init() { - return this._initPlugins().then(() => { - tracer.verbose(`Initializated ${this._pluginsInitialized} plugins`); - return Promise.resolve(); - }); - } - - start() { - return this._startPlugins().then(() => { - tracer.verbose(`Started ${this._pluginsStarted} plugins`); - return Promise.resolve(); - }); - } - - _catchRegisterError(error) { - console.log("Error registering plugin"); - console.log(error); - return {}; - } - - _catchInitError(error) { - this._pluginsInitialized = this._pluginsInitialized - 1; - tracer.error("Error initializating plugin"); - tracer.debug(error); - return Promise.resolve(); - } - - _catchStartError(error) { - this._pluginsStarted = this._pluginsStarted - 1; - tracer.error("Error starting plugin"); - tracer.debug(error); - return Promise.resolve(); - } - - _registerPluginFunction(Plugin) { - let pluginInstance; - try { - pluginInstance = Plugin(this._core); - this._pluginsRegistered++; - } catch (error) { - return this._catchRegisterError(error); - } - return pluginInstance; - } - - _registerPlugin(Plugin) { - if (isObject(Plugin) && !isFunction(Plugin)) { - this._pluginsRegistered++; - return Plugin; - } - let pluginInstance; - try { - pluginInstance = new Plugin(this._core); - this._pluginsRegistered++; - } catch (error) { - if (error.message.includes("is not a constructor")) { - return this._registerPluginFunction(Plugin); - } else { - return this._catchRegisterError(error); - } - } - return pluginInstance; - } - - _registerPlugins(pluginIndex = 0) { - if (pluginIndex === this._plugins.length) { - return Promise.resolve(); - } - const plugin = this._registerPlugin(this._plugins[pluginIndex]); - this._pluginsInstances.push(plugin); - return this._registerPlugins(pluginIndex + 1); - } - - _initPlugins(pluginIndex = 0) { - if (pluginIndex === this._pluginsInstances.length) { - return Promise.resolve(); - } - this._pluginsInitialized++; - tracer.debug(`Initializing plugin ${pluginIndex}`); - const initNextPlugin = () => { - return this._initPlugins(pluginIndex + 1); - }; - - if (!this._pluginsInstances[pluginIndex].init) { - this._pluginsInitialized = this._pluginsInitialized - 1; - return initNextPlugin(); - } - let pluginInit; - try { - pluginInit = this._pluginsInstances[pluginIndex].init(); - } catch (error) { - return this._catchInitError(error).then(initNextPlugin); - } - - if (!isPromise(pluginInit)) { - return initNextPlugin(); - } - return pluginInit.catch(this._catchInitError).then(initNextPlugin); - } - - _startPlugins(pluginIndex = 0) { - if (pluginIndex === this._pluginsInstances.length) { - return Promise.resolve(); - } - this._pluginsStarted++; - tracer.debug(`Starting plugin ${pluginIndex}`); - const startNextPlugin = () => { - return this._startPlugins(pluginIndex + 1); - }; - - if (!this._pluginsInstances[pluginIndex].start) { - this._pluginsStarted = this._pluginsStarted - 1; - return startNextPlugin(); - } - let pluginStart; - try { - pluginStart = this._pluginsInstances[pluginIndex].start(); - } catch (error) { - return this._catchStartError(error).then(startNextPlugin); - } - - if (!isPromise(pluginStart)) { - return startNextPlugin(); - } - return pluginStart.catch(this._catchStartError).then(startNextPlugin); - } -} - -module.exports = Plugins; diff --git a/lib/core/eventNames.js b/lib/core/eventNames.js deleted file mode 100644 index 11e05e6..0000000 --- a/lib/core/eventNames.js +++ /dev/null @@ -1,14 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -module.exports = { - LOAD_MOCKS: "load:mocks", - CHANGE_SETTINGS: "change:settings" -}; diff --git a/lib/core/mocks/Behavior.js b/lib/core/mocks/Behavior.js deleted file mode 100644 index 3c65120..0000000 --- a/lib/core/mocks/Behavior.js +++ /dev/null @@ -1,66 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const { cloneDeep, map, sum } = require("lodash"); -const routeParser = require("route-parser"); - -const FUNCTION_TYPE = "function"; - -class Behavior { - constructor(fixtures) { - this._fixtures = fixtures; - this._methods = this.fixturesToMethods(fixtures); - this._fixturesCollection = this.fixturesToCollection(fixtures); - } - - fixturesToCollection(fixtures) { - return cloneDeep(fixtures).map(fixture => { - if (typeof fixture.response === FUNCTION_TYPE) { - // TODO, add a fixture property indicating type - fixture.response = FUNCTION_TYPE; - } - delete fixture.route; - return fixture; - }); - } - - fixturesToMethods(fixtures, baseFixtures = {}) { - const fixturesObject = cloneDeep(baseFixtures); - fixtures.forEach(fixtureData => { - fixturesObject[fixtureData.method] = fixturesObject[fixtureData.method] || {}; - fixturesObject[fixtureData.method][fixtureData.url] = { - route: routeParser(fixtureData.url), - response: fixtureData.response - }; - }); - return fixturesObject; - } - - extend(fixtures) { - return new Behavior(this._fixtures.concat(fixtures)); - } - - get methods() { - return this._methods; - } - - get fixtures() { - return this._fixturesCollection; - } - - get totalFixtures() { - return sum(map(this._methods, urls => Object.keys(urls).length)); - } -} - -module.exports = Behavior; diff --git a/lib/core/mocks/Behaviors.js b/lib/core/mocks/Behaviors.js deleted file mode 100644 index f670b33..0000000 --- a/lib/core/mocks/Behaviors.js +++ /dev/null @@ -1,168 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const Boom = require("boom"); - -const { flatten, map, each, compact } = require("lodash"); - -const tracer = require("../tracer"); - -const { LOAD_MOCKS, CHANGE_SETTINGS } = require("../eventNames"); - -class Behaviors { - constructor(filesHandler, settings, eventEmitter) { - this._filesHandler = filesHandler; - this._settings = settings; - this._eventEmitter = eventEmitter; - this._onLoadMocks = this._onLoadMocks.bind(this); - this._onChangeSettings = this._onChangeSettings.bind(this); - } - - init() { - this._loadBehaviors(); - this._eventEmitter.on(LOAD_MOCKS, this._onLoadMocks); - this._eventEmitter.on(CHANGE_SETTINGS, this._onChangeSettings); - return Promise.resolve(); - } - - _loadBehaviors() { - tracer.debug("Processing mocks"); - this._behaviors = this._getBehaviors(this._filesHandler.files); - this._totalFixtures = this._getTotalFixtures(this._filesHandler.files); - this._collection = this._getCollection(this._filesHandler.files); - this._names = this._getNames(this._collection); - this._current = this._settings.get("behavior") || this._names[0]; - tracer.silly( - `Mocks details: ${JSON.stringify( - { - totalFixtures: this._totalFixtures, - current: this._current - }, - null, - 2 - )}` - ); - - try { - this._checkCurrent(this._current); - } catch (error) { - tracer.warn( - `Defined behavior "${this._current}" was not found. Inititializing with first found behavior` - ); - this._current = this._names[0]; - } - } - - _onLoadMocks() { - this._loadBehaviors(); - } - - _onChangeSettings(changeDetails) { - if (changeDetails.hasOwnProperty("behavior")) { - this.current = changeDetails.behavior; - } - } - - _getCollection(mocksFolderFiles) { - return compact( - flatten( - map(mocksFolderFiles, mocksFolderFile => - map(mocksFolderFile, (behavior, behaviorName) => { - if (behavior.fixtures) { - return { - name: behaviorName, - fixtures: behavior.fixtures - }; - } - return null; - }) - ) - ) - ); - } - - _getBehaviors(mocksFolderFiles) { - const behaviors = {}; - each(mocksFolderFiles, mocksFolderFile => { - each(mocksFolderFile, (behavior, behaviorName) => { - // TODO, check if current object is a behavior with common method - if (behavior.methods) { - behaviors[behaviorName] = behavior.methods; - } - }); - }); - return behaviors; - } - - _getTotalFixtures(mocksFolderFiles) { - const totalFixtures = {}; - each(mocksFolderFiles, mocksFolderFile => { - each(mocksFolderFile, (behavior, behaviorName) => { - // TODO, check if current object is a behavior with common method - if (behavior.totalFixtures) { - totalFixtures[behaviorName] = behavior.totalFixtures; - } - }); - }); - return totalFixtures; - } - - _getNames(collection) { - return collection.map(item => item.name); - } - - _checkCurrent(behaviorName) { - if (!this._names.includes(behaviorName)) { - throw Boom.badData(`Behavior not found: ${behaviorName}`); - } - } - - set current(behaviorName) { - this._checkCurrent(behaviorName); - this._current = behaviorName; - } - - get current() { - return this._behaviors[this._current]; - } - - get currentTotalFixtures() { - return this._totalFixtures[this._current]; - } - - get currentFromCollection() { - return this._collection.find(item => item.name === this._current); - } - - get all() { - return this._behaviors; - } - - get names() { - return this._names; - } - - get totalBehaviors() { - return this._names.length; - } - - get currentName() { - return this._current; - } - - get collection() { - return this._collection; - } -} - -module.exports = Behaviors; diff --git a/lib/core/mocks/FilesHandler.js b/lib/core/mocks/FilesHandler.js deleted file mode 100644 index 173f6e7..0000000 --- a/lib/core/mocks/FilesHandler.js +++ /dev/null @@ -1,125 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const path = require("path"); -const Boom = require("boom"); -const requireAll = require("require-all"); -const watch = require("node-watch"); - -const { map, debounce } = require("lodash"); - -const tracer = require("../tracer"); -const { LOAD_MOCKS, CHANGE_SETTINGS } = require("../eventNames"); - -class FilesHandler { - constructor(settings, eventEmitter, extraOptions = {}) { - this._customRequireCache = extraOptions.requireCache; - this._settings = settings; - this._eventEmitter = eventEmitter; - this._onChangeSettings = this._onChangeSettings.bind(this); - } - - init() { - this._eventEmitter.on(CHANGE_SETTINGS, this._onChangeSettings); - try { - this._loadFiles(); - return Promise.resolve(); - } catch (err) { - return Promise.reject(err); - } - } - - start() { - this._switchWatch(); - } - - _cleanRequireCacheFolder() { - map(this._cache(), (cacheData, filePath) => { - if (filePath.indexOf(this._path) === 0) { - this._cleanRequireCache(this._cache()[filePath]); - } - }); - } - - _cleanRequireCache(requireModule) { - if (requireModule) { - map(requireModule.children, moduleData => { - if (moduleData.id.indexOf(this._path) === 0) { - this._cleanRequireCache(this._cache()[moduleData.id]); - } - }); - this._cache()[requireModule.id] = undefined; - } - } - - _resolveFolder(folder) { - if (!folder) { - tracer.error( - 'Please provide a path to a folder containing behaviors using the "behaviors" option' - ); - throw Boom.badData("Invalid mocks folder"); - } - if (path.isAbsolute(folder)) { - return folder; - } - return path.resolve(process.cwd(), folder); - } - - _loadFiles() { - this._path = this._resolveFolder(this._settings.get("behaviors")); - tracer.info(`Loading mocks from folder ${this._path}`); - this._cleanRequireCacheFolder(); - this._files = requireAll({ - dirname: this._path, - recursive: true - }); - this._eventEmitter.emit(LOAD_MOCKS); - } - - _switchWatch() { - const enabled = this._settings.get("watch"); - if (this._watcher) { - tracer.debug("Stopping files watch"); - this._watcher.close(); - } - if (enabled) { - tracer.debug("Starting files watcher"); - this._watcher = watch( - this._path, - { recursive: true }, - debounce(() => { - tracer.info("Files changed detected"); - this._loadFiles(); - }), - 1000 - ); - } - } - - _onChangeSettings(changeDetails) { - if (changeDetails.hasOwnProperty("behaviors")) { - this._loadFiles(); - this._switchWatch(); - } else if (changeDetails.hasOwnProperty("watch")) { - this._switchWatch(); - } - } - - _cache() { - return this._customRequireCache || require.cache; - } - - get files() { - return this._files; - } -} - -module.exports = FilesHandler; diff --git a/lib/core/mocks/Mocks.js b/lib/core/mocks/Mocks.js deleted file mode 100644 index f051ea7..0000000 --- a/lib/core/mocks/Mocks.js +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const Behaviors = require("./Behaviors"); -const FilesHandler = require("./FilesHandler"); - -class Mocks { - constructor(settings, eventEmitter) { - this._settings = settings; - this._eventEmitter = eventEmitter; - this._filesHandler = new FilesHandler(this._settings, this._eventEmitter); - this._behaviors = new Behaviors(this._filesHandler, this._settings, this._eventEmitter); - } - - async init() { - await this._filesHandler.init(); - return this._behaviors.init(); - } - - async start() { - await this._filesHandler.start(); - } - - get behaviors() { - return this._behaviors; - } -} - -module.exports = Mocks; diff --git a/lib/core/server/Server.js b/lib/core/server/Server.js deleted file mode 100644 index 6e06ba8..0000000 --- a/lib/core/server/Server.js +++ /dev/null @@ -1,166 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const http = require("http"); - -const express = require("express"); -const { delay, find } = require("lodash"); -const tracer = require("../tracer"); -const middlewares = require("./middlewares"); - -class Server { - constructor(mocks, settings, eventEmitter) { - this._mocks = mocks; - this._eventEmitter = eventEmitter; - this._customRouters = []; - this._settings = settings; - this._error = null; - - this._startServer = this._startServer.bind(this); - } - - init() { - process.on("SIGINT", () => { - this.stop().then(() => { - tracer.info("Server closed"); - }); - process.exit(); - }); - return Promise.resolve(); - } - - _initServer() { - if (this._serverInitted) { - return; - } - this._serverInitted = true; - this._express = express(); - - // Add middlewares - this._express.use(middlewares.addRequestId); - this._express.use(middlewares.enableCors); - this._express.use(middlewares.addCommonHeaders); - this._express.options("*", middlewares.enableCors); - this._express.use(middlewares.jsonBodyParser); - this._express.use(middlewares.traceRequest); - this._registerCustomRouters(); - this._express.use(this._fixturesMiddleware.bind(this)); - this._express.use(middlewares.notFound); - this._express.use(middlewares.errorHandler); - - // Create server - this._server = http.createServer(this._express); - - this._server.on("error", error => { - tracer.error(`Server error: ${error.message}`); - this._error = error; - throw error; - }); - } - - _startServer(resolve, reject) { - try { - this._server.listen( - { - port: this._settings.get("port"), - host: this._settings.get("host") - }, - error => { - if (error) { - tracer.error(`Error starting server: ${error.message}`); - this._serverStarting = false; - this._serverStarted = false; - this._error = error; - reject(error); - } else { - tracer.info( - `Server started and listening at http://localhost:${this._settings.get("port")}` - ); - this._error = null; - this._serverStarting = false; - this._serverStarted = true; - resolve(this); - } - } - ); - } catch (error) { - reject(error); - } - } - - _registerCustomRouters() { - this._customRouters.forEach(customRouter => { - this._express.use(customRouter.path, customRouter.router); - }); - } - - _getFixtureMatching(method, url) { - return find(this._mocks.behaviors.current[method], fixture => fixture.route.match(url)); - } - - _fixturesMiddleware(req, res, next) { - const fixture = this._getFixtureMatching(req.method, req.url); - if (fixture) { - delay(() => { - // TODO, add property to fixtures indicating type - if (typeof fixture.response === "function") { - tracer.debug(`Fixture response is a function, executing response | ${req.id}`); - req.params = fixture.route.match(req.url); - fixture.response(req, res, next); - } else { - tracer.debug(`Sending fixture | ${req.id}`); - res.status(fixture.response.status); - res.send(fixture.response.body); - } - }, this._settings.get("delay")); - } else { - next(); - } - } - - stop() { - if (this._server) { - return new Promise(resolve => { - tracer.verbose("Stopping server"); - this._server.close(() => { - tracer.info("Server stopped"); - resolve(); - }); - }); - } - return Promise.resolve(); - } - - async start() { - this._initServer(); - return new Promise(this._startServer); - } - - addCustomRouter(path, router) { - this._customRouters.push({ - path, - router - }); - } - - async restart() { - await this.stop(); - return this.start(); - } - - get error() { - return this._error; - } -} - -module.exports = Server; diff --git a/lib/core/server/middlewares.js b/lib/core/server/middlewares.js deleted file mode 100644 index 76133ea..0000000 --- a/lib/core/server/middlewares.js +++ /dev/null @@ -1,65 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const bodyParser = require("body-parser"); -const Boom = require("boom"); -const cors = require("cors"); -const expressRequestId = require("express-request-id"); - -const tracer = require("../tracer"); - -const addRequestId = expressRequestId(); -const jsonBodyParser = bodyParser.json(); -const enableCors = cors(); - -const addCommonHeaders = (req, res, next) => { - res.header("Accept-Encoding", "gzip, deflate, br"); - res.header("Accept-Language", "es-ES,es;q=0.9,en;q=0.8,la;q=0.7,fr;q=0.6"); // TODO, remove harcoded language headers - next(); -}; - -const traceRequest = (req, res, next) => { - tracer.verbose(`Request received | ${req.method} => ${req.url} | Assigned id: ${req.id}`); - next(); -}; - -const notFound = (req, res, next) => { - tracer.debug(`Sending Not found response | ${req.id}`); - next(Boom.notFound()); -}; - -const errorHandler = (err, req, res, next) => { - const isBoom = Boom.isBoom(err); - const stack = isBoom ? null : err && err.stack; - const error = isBoom ? err : err && Boom.badImplementation(err); - if (error) { - tracer.error(`Sending Error "${error.message}" | ${req.id}`); - if (stack) { - tracer.silly(stack.toString()); - } - res.status(error.output.statusCode); - res.send(error.output.payload); - } else { - next(); - } -}; - -module.exports = { - addRequestId, - jsonBodyParser, - traceRequest, - enableCors, - addCommonHeaders, - notFound, - errorHandler -}; diff --git a/lib/core/settings/CommandLineArguments.js b/lib/core/settings/CommandLineArguments.js deleted file mode 100644 index 1563043..0000000 --- a/lib/core/settings/CommandLineArguments.js +++ /dev/null @@ -1,76 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const { isUndefined } = require("lodash"); - -const commander = require("commander"); - -class CommandLineArguments { - constructor(defaultOptions) { - this._options = {}; - this._optionsNames = Object.keys(defaultOptions); - // TODO, generate initial options dynamically from Options object using "addCustomOption" method - this._commander = commander - .option("--behavior ", "Define current behavior") - .option("--behaviors ", "Define folder from which load behaviors") - .option("--delay ", "Define delay time") - .option("--host ", "Host for server") - .option("--log ", "Log level") - .option("--port ", "Port for server", parseInt) - .option("--watch ", "Watch or not", this._stringToBoolean) // TODO, change by --no-watch option - // TODO, remove deprecated options - .option("--feature ", "Define current behavior") - .option("--features ", "Define folder from which load behaviors"); - } - - init() { - this._options = this._commander.parse(process.argv); - return Promise.resolve(); - } - - // TODO, deprecate "stringBoolean" options. Use --no- commander feature - _stringToBoolean(val) { - if (isUndefined(val) || val === "true") { - return true; - } else if (val === "false") { - return false; - } - throw new Error("Invalid boolean value"); - } - - addCustom(optionDetails) { - const optionPrefix = - optionDetails.type === "boolean" && optionDetails.default === true ? "--no-" : "--"; - const optionValueGetter = optionDetails.type === "boolean" ? "" : ` <${optionDetails.name}>`; - const optionParser = optionDetails.parse - ? optionDetails.parse - : optionDetails.type === "number" - ? parseInt - : optionDetails.type === "booleanString" - ? this._stringToBoolean - : undefined; - - this._commander.option( - `${optionPrefix}${optionDetails.name}${optionValueGetter}`, - optionDetails.description, - optionParser - ); - this._optionsNames.push(optionDetails.name); - } - - get options() { - return this._options; - } -} - -module.exports = CommandLineArguments; diff --git a/lib/core/settings/Options.js b/lib/core/settings/Options.js deleted file mode 100644 index 3d7eec4..0000000 --- a/lib/core/settings/Options.js +++ /dev/null @@ -1,156 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const { isUndefined } = require("lodash"); - -const tracer = require("../tracer"); - -const CommandLineArguments = require("./CommandLineArguments"); - -const DEFAULT_OPTIONS = { - behavior: null, - behaviors: null, - delay: 0, - host: "0.0.0.0", - port: 3100, - watch: true, - log: "info", - // TODO, remove deprecated options - feature: null, - features: null -}; - -const DEPRECATED_OPTIONS = { - feature: "behavior", - features: "behaviors" -}; - -class Options { - constructor(coreOptions = {}) { - this._onlyProgrammaticOptions = coreOptions.onlyProgrammaticOptions; - this._options = {}; - this._optionsNames = Object.keys(DEFAULT_OPTIONS); - this._customDefaults = {}; - this._initialized = false; - this._removeDeprecatedOption = this._removeDeprecatedOption.bind(this); - this._commandLineArguments = new CommandLineArguments(DEFAULT_OPTIONS); - } - - async init(options) { - if (!this._initialized) { - this._initialized = true; - const baseOptions = { - ...DEFAULT_OPTIONS, - ...this._customDefaults, - ...options - }; - if (!this._onlyProgrammaticOptions) { - await this._commandLineArguments.init(); - this._options = this._getValidOptions( - this._removeDeprecatedOptions({ - ...baseOptions, - ...this._commandLineArguments.options - }) - ); - } else { - this._options = this._getValidOptions(this._removeDeprecatedOptions(baseOptions)); - } - } - return Promise.resolve(); - } - - get options() { - return this._options; - } - - _rejectCustomOption(errorMessage) { - tracer.error(errorMessage); - throw new Error(errorMessage); - } - - addCustom(optionDetails) { - if (this._initialized) { - this._rejectCustomOption("Options are already initializated. No more options can be added"); - } - if (!optionDetails) { - this._rejectCustomOption("Please provide option details when adding a new option"); - } - if (!optionDetails.name) { - this._rejectCustomOption("Please provide option name when adding a new option"); - } - if (this._optionsNames.includes(optionDetails.name)) { - this._rejectCustomOption(`Option with name ${optionDetails.name} is already registered`); - } - if ( - !optionDetails.type || - !["string", "number", "boolean", "booleanString"].includes(optionDetails.type) - ) { - this._rejectCustomOption( - "Please provide a valid option type between: string, number, boolean" - ); - } - if (!optionDetails.description) { - tracer.warn("Please provide option description when adding a new option"); - optionDetails.description = ""; - } - - this._optionsNames.push(optionDetails.name); - this._customDefaults[optionDetails.name] = optionDetails.default; - this._commandLineArguments.addCustom(optionDetails); - } - - getValidOptionName(optionName) { - if (this._optionsNames.includes(optionName) && !DEPRECATED_OPTIONS[optionName]) { - return optionName; - } - if (DEPRECATED_OPTIONS[optionName]) { - tracer.warn( - `Deprecation warning: ${optionName} option will be deprecated. Use ${DEPRECATED_OPTIONS[optionName]} instead` - ); - return DEPRECATED_OPTIONS[optionName]; - } - throw new Error("Not valid option"); - } - - _getValidOptions(options) { - return this._optionsNames.reduce((cleanObject, currentKey) => { - if (!isUndefined(options[currentKey])) { - cleanObject[currentKey] = options[currentKey]; - } - return cleanObject; - }, {}); - } - - _removeDeprecatedOption(options, optionName) { - if (options[optionName] !== DEFAULT_OPTIONS[optionName]) { - const newOption = DEPRECATED_OPTIONS[optionName]; - if (!options[newOption]) { - options[newOption] = options[optionName]; - } - tracer.warn( - `Deprecation warning: --${optionName} option will be deprecated. Use --${DEPRECATED_OPTIONS[optionName]} instead` - ); - } - delete options[optionName]; - return options; - } - - _removeDeprecatedOptions(options) { - let newOptions = options; - Object.keys(DEPRECATED_OPTIONS).forEach(optionName => { - newOptions = this._removeDeprecatedOption(newOptions, optionName); - }); - - return newOptions; - } -} - -module.exports = Options; diff --git a/lib/core/settings/Settings.js b/lib/core/settings/Settings.js deleted file mode 100644 index a35af5a..0000000 --- a/lib/core/settings/Settings.js +++ /dev/null @@ -1,64 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const Options = require("./Options"); - -const tracer = require("../tracer"); -const { CHANGE_SETTINGS } = require("../eventNames"); - -class Settings { - constructor(coreOptions, eventEmitter) { - this._eventEmitter = eventEmitter; - this._optionsHandler = new Options(coreOptions); - this._emitChange = this._emitChange.bind(this); //Add debounce here to group change events - this._newSettings = {}; - } - - async init(options) { - await this._optionsHandler.init(options); - this._settings = { ...this._optionsHandler.options }; - this._setTracerLevel(); - tracer.info("Settings ready"); - tracer.verbose(`Current settings: ${JSON.stringify(this._settings, null, 2)}`); - return Promise.resolve(); - } - - _setTracerLevel() { - tracer.set("console", this._settings.log); - } - - _emitChange() { - this._eventEmitter.emit(CHANGE_SETTINGS, { ...this._newSettings }); - this._newSettings = {}; - } - - set(option, value) { - const optionName = this._optionsHandler.getValidOptionName(option); - if (this._settings[optionName] !== value) { - this._settings[optionName] = value; - this._newSettings[optionName] = value; - this._emitChange(); - if (optionName === "log") { - this._setTracerLevel(); - } - } - } - - get(option) { - return this._settings[this._optionsHandler.getValidOptionName(option)]; - } - - addCustom(option) { - return this._optionsHandler.addCustom(option); - } -} - -module.exports = Settings; diff --git a/lib/core/tracer.js b/lib/core/tracer.js deleted file mode 100644 index c604c78..0000000 --- a/lib/core/tracer.js +++ /dev/null @@ -1,59 +0,0 @@ -/* -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const winston = require("winston"); - -const format = winston.format.printf(info => { - return `${info.timestamp} [Mocks ${info.level}] ${info.message}`; -}); - -const transports = { - console: new winston.transports.Console({ - format: winston.format.combine( - winston.format.colorize(), - winston.format.timestamp({ - format: "HH:mm:ss:SS" - }), - format - ) - }) -}; - -const logger = winston.createLogger({ - transports: [transports.console] -}); - -logger.silly = logger.silly.bind(logger); -logger.debug = logger.debug.bind(logger); -logger.verbose = logger.verbose.bind(logger); -logger.info = logger.info.bind(logger); -logger.warn = logger.warn.bind(logger); -logger.error = logger.error.bind(logger); - -const set = (transport, level) => { - if (level === "silent") { - transports[transport].silent = true; - } else { - transports[transport].silent = false; - transports[transport].level = level; - } -}; - -module.exports = { - silly: logger.silly, - debug: logger.debug, - verbose: logger.verbose, - info: logger.info, - warn: logger.warn, - error: logger.error, - set: set -}; diff --git a/lib/start.js b/lib/start.js deleted file mode 100644 index afeeda1..0000000 --- a/lib/start.js +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const Core = require("./core/Core"); -const AdminApi = require("./api/Api"); -const InquirerCli = require("./cli/Cli"); - -const handleError = error => { - console.error(`Error: ${error.message}`); - process.exitCode = 1; -}; - -const start = () => { - try { - const mocksServer = new Core({ - plugins: [AdminApi, InquirerCli] - }); - - return mocksServer.start().catch(handleError); - } catch (error) { - return handleError(error); - } -}; - -module.exports = { - start -}; From 937b35a3126caa00fe3d5d1119a76c71f6dd61ae Mon Sep 17 00:00:00 2001 From: javierbrea Date: Fri, 6 Dec 2019 11:28:29 +0100 Subject: [PATCH 04/10] Remove unused files. Fix unit tests dependencies paths --- index.js | 11 +- package-lock.json | 272 +++++----- package.json | 21 +- {lib/api => src}/Api.js | 0 {lib/api => src}/Behaviors.js | 0 {lib/api => src}/Settings.js | 0 test/acceptance/cli/CliRunner.js | 246 --------- test/acceptance/cli/autocomplete.spec.js | 173 ------- test/acceptance/cli/custom-quit.spec.js | 68 --- test/acceptance/cli/exit-logs-mode.spec.js | 63 --- test/acceptance/cli/fixtures/autocomplete.js | 67 --- .../cli/fixtures/custom-quit-method.js | 53 -- .../acceptance/cli/fixtures/exit-logs-mode.js | 61 --- test/acceptance/cli/fixtures/logs-mode.js | 58 --- .../acceptance/cli/fixtures/readme-example.js | 49 -- .../cli/fixtures/remove-listeners.js | 58 --- test/acceptance/cli/logs-mode.spec.js | 77 --- test/acceptance/cli/mocks-server-bin.spec.js | 27 - test/acceptance/cli/readme-example.spec.js | 76 --- test/acceptance/cli/remove-listeners.spec.js | 57 --- test/acceptance/main/InteractiveCliRunner.js | 78 --- ...in-api.spec.js => change-behavior.spec.js} | 0 test/acceptance/main/cli-arguments.spec.js | 170 ------- .../main/cli-disabled-arguments.spec.js | 185 ------- test/acceptance/main/cli-no-behaviors.spec.js | 46 -- test/acceptance/main/delay-setting.spec.js | 42 -- ...iles-watch.spec.js => files-watch.spec.js} | 0 .../main/fixtures/no-behaviors/base.js | 1 - .../fixtures/programmatic-cli/init-server.js | 29 -- .../fixtures/programmatic-cli/start-delay.js | 13 - .../start-dynamic-behavior.js | 14 - .../programmatic-cli/start-dynamic-feature.js | 14 - .../programmatic-cli/start-features.js | 13 - .../start-unexistant-behavior.js | 14 - .../start-unexistant-feature.js | 14 - .../main/fixtures/programmatic-cli/start.js | 13 - .../programmatic-server/start-and-stop.js | 24 - .../programmatic-server/start-delay.js | 12 - .../start-dynamic-behavior.js | 13 - .../start-dynamic-feature.js | 13 - .../start-unexistant-behavior.js | 13 - .../start-unexistant-feature.js | 13 - .../programmatic-server/start-watch.js | 12 - .../fixtures/programmatic-server/start.js | 12 - test/acceptance/main/interactive-cli.spec.js | 134 ----- test/acceptance/main/programmatic-cli.spec.js | 193 ------- .../main/programmatic-server.spec.js | 168 ------- test/acceptance/main/utils.js | 24 +- test/acceptance/main/web-tutorial-cli.spec.js | 116 ----- test/unit/{core => }/Core.mocks.js | 4 +- test/unit/Libs.mocks.js | 33 +- test/unit/ProgrammaticCli.spec.js | 137 ----- test/unit/ProgrammaticServer.spec.js | 125 ----- test/unit/api/Api.mocks.js | 40 -- test/unit/cli/Cli.mocks.js | 42 -- test/unit/cli/Cli.spec.js | 326 ------------ test/unit/cli/Inquirer.mocks.js | 82 --- test/unit/cli/Inquirer.spec.js | 275 ---------- test/unit/core/Core.spec.js | 223 -------- test/unit/core/Plugins.mocks.js | 47 -- test/unit/core/Plugins.spec.js | 265 ---------- test/unit/core/mocks/Behavior.spec.js | 304 ----------- test/unit/core/mocks/Behaviors.mocks.js | 44 -- test/unit/core/mocks/Behaviors.spec.js | 254 ---------- test/unit/core/mocks/FilesHandler.mocks.js | 117 ----- test/unit/core/mocks/FilesHandler.spec.js | 311 ------------ test/unit/core/mocks/Mocks.mocks.js | 44 -- test/unit/core/mocks/Mocks.spec.js | 67 --- test/unit/core/server/Server.mocks.js | 46 -- test/unit/core/server/Server.spec.js | 292 ----------- test/unit/core/server/middlewares.spec.js | 189 ------- .../settings/CommandLineArguments.mocks.js | 43 -- .../settings/CommandLineArguments.spec.js | 378 -------------- test/unit/core/settings/Options.mocks.js | 47 -- test/unit/core/settings/Options.spec.js | 476 ------------------ test/unit/core/settings/Settings.mocks.js | 44 -- test/unit/core/settings/Settings.spec.js | 114 ----- test/unit/core/tracer.spec.js | 42 -- test/unit/index.spec.js | 17 +- test/unit/{api => src}/Api.spec.js | 4 +- test/unit/{api => src}/Behaviors.mocks.js | 4 +- test/unit/{api => src}/Behaviors.spec.js | 4 +- test/unit/{api => src}/Settings.mocks.js | 4 +- test/unit/{api => src}/Settings.spec.js | 4 +- test/unit/start.spec.js | 59 --- 85 files changed, 174 insertions(+), 7163 deletions(-) rename {lib/api => src}/Api.js (100%) rename {lib/api => src}/Behaviors.js (100%) rename {lib/api => src}/Settings.js (100%) delete mode 100644 test/acceptance/cli/CliRunner.js delete mode 100644 test/acceptance/cli/autocomplete.spec.js delete mode 100644 test/acceptance/cli/custom-quit.spec.js delete mode 100644 test/acceptance/cli/exit-logs-mode.spec.js delete mode 100644 test/acceptance/cli/fixtures/autocomplete.js delete mode 100644 test/acceptance/cli/fixtures/custom-quit-method.js delete mode 100644 test/acceptance/cli/fixtures/exit-logs-mode.js delete mode 100644 test/acceptance/cli/fixtures/logs-mode.js delete mode 100644 test/acceptance/cli/fixtures/readme-example.js delete mode 100644 test/acceptance/cli/fixtures/remove-listeners.js delete mode 100644 test/acceptance/cli/logs-mode.spec.js delete mode 100644 test/acceptance/cli/mocks-server-bin.spec.js delete mode 100644 test/acceptance/cli/readme-example.spec.js delete mode 100644 test/acceptance/cli/remove-listeners.spec.js delete mode 100644 test/acceptance/main/InteractiveCliRunner.js rename test/acceptance/main/{web-tutorial-admin-api.spec.js => change-behavior.spec.js} (100%) delete mode 100644 test/acceptance/main/cli-arguments.spec.js delete mode 100644 test/acceptance/main/cli-disabled-arguments.spec.js delete mode 100644 test/acceptance/main/cli-no-behaviors.spec.js delete mode 100644 test/acceptance/main/delay-setting.spec.js rename test/acceptance/main/{web-tutorial-files-watch.spec.js => files-watch.spec.js} (100%) delete mode 100644 test/acceptance/main/fixtures/no-behaviors/base.js delete mode 100644 test/acceptance/main/fixtures/programmatic-cli/init-server.js delete mode 100644 test/acceptance/main/fixtures/programmatic-cli/start-delay.js delete mode 100644 test/acceptance/main/fixtures/programmatic-cli/start-dynamic-behavior.js delete mode 100644 test/acceptance/main/fixtures/programmatic-cli/start-dynamic-feature.js delete mode 100644 test/acceptance/main/fixtures/programmatic-cli/start-features.js delete mode 100644 test/acceptance/main/fixtures/programmatic-cli/start-unexistant-behavior.js delete mode 100644 test/acceptance/main/fixtures/programmatic-cli/start-unexistant-feature.js delete mode 100644 test/acceptance/main/fixtures/programmatic-cli/start.js delete mode 100644 test/acceptance/main/fixtures/programmatic-server/start-and-stop.js delete mode 100644 test/acceptance/main/fixtures/programmatic-server/start-delay.js delete mode 100644 test/acceptance/main/fixtures/programmatic-server/start-dynamic-behavior.js delete mode 100644 test/acceptance/main/fixtures/programmatic-server/start-dynamic-feature.js delete mode 100644 test/acceptance/main/fixtures/programmatic-server/start-unexistant-behavior.js delete mode 100644 test/acceptance/main/fixtures/programmatic-server/start-unexistant-feature.js delete mode 100644 test/acceptance/main/fixtures/programmatic-server/start-watch.js delete mode 100644 test/acceptance/main/fixtures/programmatic-server/start.js delete mode 100644 test/acceptance/main/interactive-cli.spec.js delete mode 100644 test/acceptance/main/programmatic-cli.spec.js delete mode 100644 test/acceptance/main/programmatic-server.spec.js delete mode 100644 test/acceptance/main/web-tutorial-cli.spec.js rename test/unit/{core => }/Core.mocks.js (95%) delete mode 100644 test/unit/ProgrammaticCli.spec.js delete mode 100644 test/unit/ProgrammaticServer.spec.js delete mode 100644 test/unit/api/Api.mocks.js delete mode 100644 test/unit/cli/Cli.mocks.js delete mode 100644 test/unit/cli/Cli.spec.js delete mode 100644 test/unit/cli/Inquirer.mocks.js delete mode 100644 test/unit/cli/Inquirer.spec.js delete mode 100644 test/unit/core/Core.spec.js delete mode 100644 test/unit/core/Plugins.mocks.js delete mode 100644 test/unit/core/Plugins.spec.js delete mode 100644 test/unit/core/mocks/Behavior.spec.js delete mode 100644 test/unit/core/mocks/Behaviors.mocks.js delete mode 100644 test/unit/core/mocks/Behaviors.spec.js delete mode 100644 test/unit/core/mocks/FilesHandler.mocks.js delete mode 100644 test/unit/core/mocks/FilesHandler.spec.js delete mode 100644 test/unit/core/mocks/Mocks.mocks.js delete mode 100644 test/unit/core/mocks/Mocks.spec.js delete mode 100644 test/unit/core/server/Server.mocks.js delete mode 100644 test/unit/core/server/Server.spec.js delete mode 100644 test/unit/core/server/middlewares.spec.js delete mode 100644 test/unit/core/settings/CommandLineArguments.mocks.js delete mode 100644 test/unit/core/settings/CommandLineArguments.spec.js delete mode 100644 test/unit/core/settings/Options.mocks.js delete mode 100644 test/unit/core/settings/Options.spec.js delete mode 100644 test/unit/core/settings/Settings.mocks.js delete mode 100644 test/unit/core/settings/Settings.spec.js delete mode 100644 test/unit/core/tracer.spec.js rename test/unit/{api => src}/Api.spec.js (97%) rename test/unit/{api => src}/Behaviors.mocks.js (91%) rename test/unit/{api => src}/Behaviors.spec.js (96%) rename test/unit/{api => src}/Settings.mocks.js (91%) rename test/unit/{api => src}/Settings.spec.js (96%) delete mode 100644 test/unit/start.spec.js diff --git a/index.js b/index.js index 9c35100..875fbc2 100644 --- a/index.js +++ b/index.js @@ -11,13 +11,6 @@ Unless required by applicable law or agreed to in writing, software distributed "use strict"; -const ProgrammaticCli = require("./lib/ProgrammaticCli"); -const ProgrammaticServer = require("./lib/ProgrammaticServer"); -const Behavior = require("./lib/core/mocks/Behavior"); +const PluginAdminApi = require("./src/Api"); -module.exports = { - Cli: ProgrammaticCli, - Server: ProgrammaticServer, - Feature: Behavior, - Behavior -}; +module.exports = PluginAdminApi; diff --git a/package-lock.json b/package-lock.json index 4236558..2aaa6cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -464,6 +464,25 @@ "@types/yargs": "^13.0.0" } }, + "@mocks-server/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mocks-server/core/-/core-1.0.0.tgz", + "integrity": "sha512-Up3gDTUBCyC81H+tivxwoJorVaxEmVeQFe4PdaqajydyfxZEfZI3hBtjEgj2JjiqjZSQTkILrbIdo2CkVe7T1g==", + "dev": true, + "requires": { + "body-parser": "1.19.0", + "boom": "7.3.0", + "commander": "4.0.1", + "cors": "2.8.5", + "express": "4.17.1", + "express-request-id": "1.4.1", + "lodash": "4.17.15", + "node-watch": "0.6.3", + "require-all": "3.0.0", + "route-parser": "0.0.5", + "winston": "3.2.1" + } + }, "@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", @@ -576,11 +595,6 @@ "@babel/types": "^7.3.0" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -753,17 +767,20 @@ "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -871,6 +888,7 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, "requires": { "lodash": "^4.17.14" } @@ -1123,6 +1141,7 @@ "version": "7.3.0", "resolved": "https://registry.npmjs.org/boom/-/boom-7.3.0.tgz", "integrity": "sha512-Swpoyi2t5+GhOEGw8rEsKvTxFLIDiiKoUc2gsoV6Lyr43LHBIzch3k2MvYUs8RTROrIkVJ3Al0TkaOGjnb+B6A==", + "dev": true, "requires": { "hoek": "6.x.x" } @@ -1279,56 +1298,11 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", - "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, "ci-info": { "version": "2.0.0", @@ -1369,6 +1343,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, "requires": { "restore-cursor": "^3.1.0" } @@ -1429,7 +1404,8 @@ "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true }, "cliui": { "version": "5.0.0", @@ -1496,6 +1472,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "dev": true, "requires": { "color-convert": "^1.9.1", "color-string": "^1.5.2" @@ -1505,6 +1482,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -1512,12 +1490,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "color-string": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -1526,17 +1506,20 @@ "colornames": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", - "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=" + "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=", + "dev": true }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true }, "colorspace": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "dev": true, "requires": { "color": "3.0.x", "text-hex": "1.0.x" @@ -1554,7 +1537,8 @@ "commander": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.0.1.tgz", - "integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==" + "integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==", + "dev": true }, "component-emitter": { "version": "1.3.0", @@ -1609,12 +1593,14 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, "requires": { "object-assign": "^4", "vary": "^1" @@ -1883,6 +1869,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "dev": true, "requires": { "colorspace": "1.1.x", "enabled": "1.0.x", @@ -1967,6 +1954,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", + "dev": true, "requires": { "env-variable": "0.0.x" } @@ -1988,7 +1976,8 @@ "env-variable": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz", - "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==" + "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==", + "dev": true }, "error-ex": { "version": "1.3.2", @@ -2036,7 +2025,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "1.12.0", @@ -2378,6 +2368,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/express-request-id/-/express-request-id-1.4.1.tgz", "integrity": "sha512-qpxK6XhDYtdx9FvxwCHkUeZVWtkGbWR87hBAzGECfwYF/QQCPXEwwB2/9NGkOR1tT7/aLs9mma3CT0vjSzuZVw==", + "dev": true, "requires": { "uuid": "^3.3.2" } @@ -2413,6 +2404,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, "requires": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -2575,7 +2567,8 @@ "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "dev": true }, "fastq": { "version": "1.6.0", @@ -2598,12 +2591,14 @@ "fecha": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", - "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==" + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } @@ -3466,7 +3461,8 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-symbols": { "version": "1.0.0", @@ -3509,7 +3505,8 @@ "hoek": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.3.tgz", - "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==" + "integrity": "sha512-YXXAAhmF9zpQbC7LEcREFtXfGq5K1fmd+4PHkBq8NUqmzW3G+Dq10bI/i0KucLRwss3YYFQ0fSfoxBZYiGUqtQ==", + "dev": true }, "hosted-git-info": { "version": "2.8.5", @@ -3697,6 +3694,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz", "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==", + "dev": true, "requires": { "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", @@ -3717,6 +3715,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz", "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==", + "dev": true, "requires": { "type-fest": "^0.5.2" } @@ -3725,6 +3724,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -3735,6 +3735,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "dev": true, "requires": { "escape-string-regexp": "^1.0.5" } @@ -3743,6 +3744,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -3750,30 +3752,8 @@ "type-fest": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", - "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==" - } - } - }, - "inquirer-autocomplete-prompt": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.0.1.tgz", - "integrity": "sha512-Y4V6ifAu9LNrNjcEtYq8YUKhrgmmufUn5fsDQqeWgHY8rEO6ZAQkNUiZtBm2kw2uUQlC9HdgrRCHDhTPPguH5A==", - "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "figures": "^2.0.0", - "run-async": "^2.3.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", + "dev": true } } }, @@ -3904,7 +3884,8 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true }, "is-generator-fn": { "version": "2.1.0", @@ -3980,7 +3961,8 @@ "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true }, "is-regex": { "version": "1.0.4", @@ -4000,7 +3982,8 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true }, "is-symbol": { "version": "1.0.2", @@ -4032,7 +4015,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -4895,6 +4879,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "dev": true, "requires": { "colornames": "^1.1.1" } @@ -5308,7 +5293,8 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true }, "lodash.sortby": { "version": "4.7.0", @@ -5436,6 +5422,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", + "dev": true, "requires": { "colors": "^1.2.1", "fast-safe-stringify": "^2.0.4", @@ -5578,7 +5565,8 @@ "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true }, "minimatch": { "version": "3.0.4", @@ -5633,7 +5621,8 @@ "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true }, "nan": { "version": "2.14.0", @@ -5733,7 +5722,8 @@ "node-watch": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.6.3.tgz", - "integrity": "sha512-InVPsg51EemnMVH3fvrrSVgqVBMlksZ/mK7ZDWx/NuWdNQi28wcVJX1/BP38alraPFXbRi9jZ35OfK4Ra7l8Bg==" + "integrity": "sha512-InVPsg51EemnMVH3fvrrSVgqVBMlksZ/mK7ZDWx/NuWdNQi28wcVJX1/BP38alraPFXbRi9jZ35OfK4Ra7l8Bg==", + "dev": true }, "normalize-package-data": { "version": "2.5.0", @@ -5794,7 +5784,8 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-copy": { "version": "0.1.0", @@ -5887,12 +5878,14 @@ "one-time": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=" + "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=", + "dev": true }, "onetime": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, "requires": { "mimic-fn": "^2.1.0" } @@ -5930,7 +5923,8 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true }, "p-each-series": { "version": "1.0.0", @@ -6165,7 +6159,8 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "progress": { "version": "2.0.3", @@ -6329,6 +6324,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -6441,7 +6437,8 @@ "require-all": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/require-all/-/require-all-3.0.0.tgz", - "integrity": "sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI=" + "integrity": "sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI=", + "dev": true }, "require-directory": { "version": "2.1.1", @@ -6497,6 +6494,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, "requires": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -6526,7 +6524,8 @@ "route-parser": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/route-parser/-/route-parser-0.0.5.tgz", - "integrity": "sha1-fR0J0zXkkJQDHqFpkaSnmwG74fQ=" + "integrity": "sha1-fR0J0zXkkJQDHqFpkaSnmwG74fQ=", + "dev": true }, "rsvp": { "version": "4.8.5", @@ -6538,6 +6537,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, "requires": { "is-promise": "^2.1.0" } @@ -6558,6 +6558,7 @@ "version": "6.5.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "dev": true, "requires": { "tslib": "^1.9.0" } @@ -6730,12 +6731,14 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, "requires": { "is-arrayish": "^0.3.1" }, @@ -6743,7 +6746,8 @@ "is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true } } }, @@ -7023,7 +7027,8 @@ "stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true }, "stack-utils": { "version": "1.0.2", @@ -7100,6 +7105,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -7109,12 +7115,14 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, "requires": { "ansi-regex": "^4.1.0" } @@ -7145,6 +7153,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "requires": { "safe-buffer": "~5.2.0" }, @@ -7152,7 +7161,8 @@ "safe-buffer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true } } }, @@ -7167,21 +7177,6 @@ "is-regexp": "^1.0.0" } }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "requires": { - "ansi-regex": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" - } - } - }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -7210,6 +7205,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -7283,7 +7279,8 @@ "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true }, "text-table": { "version": "0.2.0", @@ -7300,12 +7297,14 @@ "through": { "version": "2.3.8", "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "requires": { "os-tmpdir": "~1.0.2" } @@ -7396,20 +7395,17 @@ "punycode": "^2.1.0" } }, - "tree-kill-sync": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tree-kill-sync/-/tree-kill-sync-1.0.0.tgz", - "integrity": "sha1-1LrZklYR55KXmjrcFetgBMHVqa0=" - }, "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true }, "tunnel-agent": { "version": "0.6.0", @@ -7578,7 +7574,8 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "util.promisify": { "version": "1.0.0", @@ -7598,7 +7595,8 @@ "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true }, "v8-compile-cache": { "version": "2.1.0", @@ -7701,6 +7699,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "dev": true, "requires": { "async": "^2.6.1", "diagnostics": "^1.1.1", @@ -7717,6 +7716,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", + "dev": true, "requires": { "readable-stream": "^2.3.6", "triple-beam": "^1.2.0" @@ -7726,6 +7726,7 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -7740,6 +7741,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } diff --git a/package.json b/package.json index 5470dd2..98fc34a 100644 --- a/package.json +++ b/package.json @@ -34,25 +34,14 @@ "test-ci": "npm run test && npm run test-acceptance", "coveralls": "cat ./coverage/lcov.info | coveralls" }, + "peerDependencies": { + "@mocks-server/core": "1.0.0" + }, "dependencies": { - "body-parser": "1.19.0", - "boom": "7.3.0", - "chalk": "^3.0.0", - "commander": "4.0.1", - "cors": "2.8.5", - "express": "4.17.1", - "express-request-id": "1.4.1", - "inquirer": "7.0.0", - "inquirer-autocomplete-prompt": "^1.0.1", - "lodash": "4.17.15", - "node-watch": "0.6.3", - "require-all": "3.0.0", - "route-parser": "0.0.5", - "strip-ansi": "6.0.0", - "tree-kill-sync": "^1.0.0", - "winston": "3.2.1" + "express": "4.17.1" }, "devDependencies": { + "@mocks-server/core": "1.0.0", "coveralls": "^3.0.7", "eslint": "6.6.0", "eslint-config-prettier": "6.5.0", diff --git a/lib/api/Api.js b/src/Api.js similarity index 100% rename from lib/api/Api.js rename to src/Api.js diff --git a/lib/api/Behaviors.js b/src/Behaviors.js similarity index 100% rename from lib/api/Behaviors.js rename to src/Behaviors.js diff --git a/lib/api/Settings.js b/src/Settings.js similarity index 100% rename from lib/api/Settings.js rename to src/Settings.js diff --git a/test/acceptance/cli/CliRunner.js b/test/acceptance/cli/CliRunner.js deleted file mode 100644 index 8240bf9..0000000 --- a/test/acceptance/cli/CliRunner.js +++ /dev/null @@ -1,246 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -"use strict"; - -const EventEmitter = require("events"); -const childProcess = require("child_process"); - -const treeKillSync = require("tree-kill-sync"); -const stripAnsi = require("strip-ansi"); -const { isArray, isNumber } = require("lodash"); - -const ENCODING_TYPE = "utf8"; -const CLRS = "\x1Bc"; -const CTRL_C = "\u0003"; -const LOG_EVENT_NAME = "logged"; -const CLEAR_SCREEN_EVENT_NAME = "clearScreen"; -const CLI_DEBUG = "[CLI-Runner] ------ "; - -module.exports = class CliRunner { - constructor(commandToExecute, options = {}) { - this._eventEmitter = new EventEmitter(); - this._command = this.getCommandToExecute(commandToExecute); - this._cwd = options.cwd || process.cwd(); - this._debug = options.debug === true; - this._logs = []; - this._allLogs = []; - this.logData = this.logData.bind(this); - this.write = this.write.bind(this); - this.pressEnter = this.pressEnter.bind(this); - this.cursorUp = this.cursorUp.bind(this); - this.cursorDown = this.cursorDown.bind(this); - this.pressCtrlC = this.pressCtrlC.bind(this); - this._exitPromise = new Promise(resolve => { - this._resolveExitPromise = resolve; - }); - this.run(); - } - - getCommandToExecute(commandToExecute) { - const commandIsArray = isArray(commandToExecute); - const command = commandIsArray ? [...commandToExecute] : commandToExecute; - return { - name: commandIsArray ? command[0] : "node", - params: commandIsArray ? command.splice(1, command.length - 1) : [command] - }; - } - - logData(data) { - if (data.includes(CLRS)) { - this._eventEmitter.emit(CLEAR_SCREEN_EVENT_NAME, stripAnsi(data.split(CLRS)[1] || "")); - } - const cleanData = stripAnsi(data.replace(/\x1Bc/, "")); - if (cleanData.length) { - this._logs.push(cleanData); - this._allLogs.push(data); - this._eventEmitter.emit(LOG_EVENT_NAME, cleanData); - } - } - - run() { - if (this._cliProcess) { - throw new Error("Cli is already running"); - } else { - this._cliProcess = childProcess.spawn(this._command.name, this._command.params, { - cwd: this._cwd - }); - this._cliProcess.stdin.setEncoding(ENCODING_TYPE); - - this._cliProcess.stdout.setEncoding(ENCODING_TYPE); - this._cliProcess.stderr.setEncoding(ENCODING_TYPE); - - this._cliProcess.stdout.on("data", this.logData); - this._cliProcess.stderr.on("data", this.logData); - - this._cliProcess.on("close", code => { - this._exitCode = code; - this._resolveExitPromise(true); - }); - } - } - - write(data) { - this._cliProcess.stdin.write(`${data}`); - } - - pressEnter() { - this.write("\n"); - } - - cursorUp() { - this.write("\u001b[A"); - } - - cursorDown() { - this.write("\u001b[B"); - } - - pressCtrlC() { - this.write(CTRL_C); - } - - async kill() { - treeKillSync(this._cliProcess.pid); - return this._exitPromise; - } - - async hasExit() { - return this._exitPromise; - } - - async hasPrinted(data, inputAction, inputTimeOut = 1000) { - let timeOut = inputTimeOut; - let action = inputAction; - if (isNumber(action)) { - timeOut = action; - action = null; - } - let resolver; - let rejecter; - - const timeout = setTimeout(() => { - const errorMessage = `${data} was not printed after ${timeOut}ms`; - console.log(errorMessage); - rejecter(new Error(errorMessage)); - }, timeOut); - - const listener = logData => { - if (logData.includes(data)) { - this._eventEmitter.removeListener(LOG_EVENT_NAME, listener); - clearTimeout(timeout); - resolver(); - } - }; - - return new Promise((resolve, reject) => { - resolver = resolve; - rejecter = reject; - this._eventEmitter.on(LOG_EVENT_NAME, listener); - if (action) { - action(); - } - }); - } - - async newScreenAfter(action, timeOut = 1000) { - let resolver; - let rejecter; - let screenLogs = []; - let noLogsTimeout; - let continuosLogsTriggered; - let continuosLogsTimeout; - - const getScreenLogs = () => { - const logs = screenLogs.join(""); - if (this._debug) { - console.log(`${CLI_DEBUG} Screen:`); - console.log(logs); - } - return logs; - }; - - const clearScreenTimeout = setTimeout(() => { - const errorMessage = `No new screen was rendered after ${timeOut}ms`; - console.log(errorMessage); - this._eventEmitter.removeListener(CLEAR_SCREEN_EVENT_NAME, clearScreenListener); - rejecter(new Error(errorMessage)); - }, timeOut); - - const startContinuosLogsTimeout = () => { - continuosLogsTimeout = setTimeout(() => { - continuosLogsTriggered = true; - clearTimeout(noLogsTimeout); - this._eventEmitter.removeListener(LOG_EVENT_NAME, logsListener); - console.log( - `Still receiving logs after 3000ms. Resolving promise with received data until now` - ); - resolver(getScreenLogs()); - }, 3000); - }; - - const waitForNewLogs = () => { - if (noLogsTimeout) { - clearTimeout(noLogsTimeout); - } - noLogsTimeout = setTimeout(() => { - this._eventEmitter.removeListener(LOG_EVENT_NAME, logsListener); - clearTimeout(continuosLogsTimeout); - resolver(getScreenLogs()); - }, 200); - }; - - const logsListener = logData => { - screenLogs.push(logData); - if (!continuosLogsTriggered) { - waitForNewLogs(); - } - }; - - const clearScreenListener = logData => { - if (this._debug) { - console.log(`${CLI_DEBUG} New screen`); - } - clearTimeout(clearScreenTimeout); - this._eventEmitter.removeListener(CLEAR_SCREEN_EVENT_NAME, clearScreenListener); - this._eventEmitter.on(LOG_EVENT_NAME, logsListener); - screenLogs.push(logData); - startContinuosLogsTimeout(); - waitForNewLogs(); - }; - - return new Promise((resolve, reject) => { - resolver = resolve; - rejecter = reject; - this._eventEmitter.on(CLEAR_SCREEN_EVENT_NAME, clearScreenListener); - action(); - }); - } - - flush() { - this._logs = []; - } - - get logs() { - return this._logs.join(""); - } - - get allLogs() { - return this._allLogs - .join("") - .split(CLRS) - .map(stripAnsi); - } - - get exitCode() { - return this._exitCode; - } -}; diff --git a/test/acceptance/cli/autocomplete.spec.js b/test/acceptance/cli/autocomplete.spec.js deleted file mode 100644 index 6611a50..0000000 --- a/test/acceptance/cli/autocomplete.spec.js +++ /dev/null @@ -1,173 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const path = require("path"); - -const CliRunner = require("./CliRunner"); - -const END_SCREEN = "Exit"; - -const RENDER_TIME_OUT = 10000; -const INSERT_TAGS = "Insert tags"; - -describe("when autocomplete fixture is executed", () => { - jest.setTimeout(15000); - const cliFile = path.resolve(__dirname, "fixtures", "autocomplete.js"); - let cliRunner; - - beforeEach(() => { - expect.assertions(1); - cliRunner = new CliRunner(cliFile); - }); - - afterEach(async () => { - await cliRunner.kill(); - }); - - it('should print a menu with "Select tags"', async () => { - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - expect(cliRunner.logs).toEqual(expect.stringContaining("Select tags")); - }); - - it('should print a menu with "Exit" option', async () => { - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - expect(cliRunner.logs).toEqual(expect.stringContaining("Exit")); - }); - - it('should print selected option as "none" in header when inited', async () => { - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - expect(cliRunner.logs).toEqual(expect.stringContaining("Selected option: None")); - }); - - it('should allow to choose all available tags when "Select tags" is selected', async () => { - expect.assertions(3); - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - expect(newScreen).toEqual(expect.stringContaining("a-tag")); - expect(newScreen).toEqual(expect.stringContaining("b-tag")); - expect(newScreen).toEqual(expect.stringContaining("c-tag")); - }); - - it('should allow to choose only "a-tag" tag when "Select tags" is selected, and "a" is pressed', async () => { - expect.assertions(3); - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - await cliRunner.hasPrinted( - INSERT_TAGS, - () => { - cliRunner.write("a"); - }, - RENDER_TIME_OUT - ); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - cliRunner.flush(); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - - expect(cliRunner.logs).toEqual(expect.stringContaining("a-tag")); - expect(cliRunner.logs).not.toEqual(expect.stringContaining("b-tag")); - expect(cliRunner.logs).not.toEqual(expect.stringContaining("c-tag")); - }); - - it('should print selected option as "a-tag" when a-tag is selected in autocomplete', async () => { - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - await cliRunner.hasPrinted( - INSERT_TAGS, - () => { - cliRunner.write("a"); - }, - RENDER_TIME_OUT - ); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - - expect(newScreen).toEqual(expect.stringContaining("Selected option: a-tag")); - }); - - it('should allow to choose only "b-tag" tag when "Select tags" is selected, and "b" is pressed', async () => { - expect.assertions(4); - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - await cliRunner.hasPrinted( - INSERT_TAGS, - () => { - cliRunner.write("b"); - }, - RENDER_TIME_OUT - ); - cliRunner.flush(); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - expect(cliRunner.logs).toEqual(expect.stringContaining("Searching...")); - cliRunner.flush(); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - - expect(cliRunner.logs).toEqual(expect.stringContaining("b-tag")); - expect(cliRunner.logs).not.toEqual(expect.stringContaining("a-tag")); - expect(cliRunner.logs).not.toEqual(expect.stringContaining("c-tag")); - }); - - it('should print selected option as "b-tag" when b-tag is selected in autocomplete', async () => { - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - await cliRunner.hasPrinted( - INSERT_TAGS, - () => { - cliRunner.write("b"); - }, - RENDER_TIME_OUT - ); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - - expect(newScreen).toEqual(expect.stringContaining("Selected option: b-tag")); - }); - - it('should allow to choose only "c-tag" tag when "Select tags" is selected, and "c" is pressed', async () => { - expect.assertions(4); - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - await cliRunner.hasPrinted( - INSERT_TAGS, - () => { - cliRunner.write("c"); - }, - RENDER_TIME_OUT - ); - cliRunner.flush(); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - expect(cliRunner.logs).toEqual(expect.stringContaining("Searching...")); - cliRunner.flush(); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - - expect(cliRunner.logs).toEqual(expect.stringContaining("c-tag")); - expect(cliRunner.logs).not.toEqual(expect.stringContaining("a-tag")); - expect(cliRunner.logs).not.toEqual(expect.stringContaining("b-tag")); - }); - - it('should print selected option as "c-tag" when c-tag is selected in autocomplete', async () => { - await cliRunner.hasPrinted(END_SCREEN, RENDER_TIME_OUT); - await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - await cliRunner.hasPrinted( - INSERT_TAGS, - () => { - cliRunner.write("c"); - }, - RENDER_TIME_OUT - ); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - await cliRunner.hasPrinted(INSERT_TAGS, RENDER_TIME_OUT); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter, RENDER_TIME_OUT); - - expect(newScreen).toEqual(expect.stringContaining("Selected option: c-tag")); - }); -}); diff --git a/test/acceptance/cli/custom-quit.spec.js b/test/acceptance/cli/custom-quit.spec.js deleted file mode 100644 index 0a35248..0000000 --- a/test/acceptance/cli/custom-quit.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const path = require("path"); - -const CliRunner = require("./CliRunner"); - -const END_SCREEN = "Quit"; - -jest.setTimeout(20000); - -describe("when a customQuit fixture (which has a custom quitMethod) is executed", () => { - const cliFile = path.resolve(__dirname, "fixtures", "custom-quit-method.js"); - let cliRunner; - - beforeEach(() => { - expect.assertions(1); - cliRunner = new CliRunner(cliFile); - }); - - afterEach(async () => { - await cliRunner.kill(); - }); - - it('should print a menu with "Option 1"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Option 1")); - }); - - it('should print a menu with "Quit" option', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Quit")); - }); - - it('should print selected option as "none" in header when inited', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Selected option: None")); - }); - - it('should print selected option as "option1" when user selects "Option 1"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - expect(newScreen).toEqual(expect.stringContaining("Selected option: option1")); - }); - - it('should print selected option as "Quit" when user selects "Quit"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - cliRunner.cursorDown(); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - - expect(newScreen).toEqual(expect.stringContaining("Selected option: Quit")); - }); - - it("should exit process if user press CTRL+C", async () => { - await cliRunner.hasPrinted(END_SCREEN); - cliRunner.pressCtrlC(); - - expect(await cliRunner.hasExit()).toEqual(true); - }); -}); diff --git a/test/acceptance/cli/exit-logs-mode.spec.js b/test/acceptance/cli/exit-logs-mode.spec.js deleted file mode 100644 index 38e072a..0000000 --- a/test/acceptance/cli/exit-logs-mode.spec.js +++ /dev/null @@ -1,63 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const path = require("path"); - -const CliRunner = require("./CliRunner"); - -const END_SCREEN = "Exit"; - -describe("when exitLogsMode is executed", () => { - const cliFile = path.resolve(__dirname, "fixtures", "exit-logs-mode.js"); - let cliRunner; - - beforeEach(() => { - expect.assertions(1); - cliRunner = new CliRunner(cliFile); - }); - - afterEach(async () => { - await cliRunner.kill(); - }); - - it('should print a menu with "Option 1"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Option 1")); - }); - - it('should print a menu with "Exit" option', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Exit")); - }); - - it('should print selected option as "none" in header when inited', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Selected option: None")); - }); - - it('should print selected option as "option1" when user selects "Option 1"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - expect(newScreen).toEqual(expect.stringContaining("Selected option: option1")); - }); - - it('should enter in logs mode, exit it after 500ms when user select "Display logs", and continue working normally', async () => { - expect.assertions(3); - await cliRunner.hasPrinted(END_SCREEN); - cliRunner.cursorDown(); - let newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - expect(newScreen).toEqual(expect.stringContaining("Displaying logs")); - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Option 1")); - newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - expect(newScreen).toEqual(expect.stringContaining("Selected option: option1")); - }); -}); diff --git a/test/acceptance/cli/fixtures/autocomplete.js b/test/acceptance/cli/fixtures/autocomplete.js deleted file mode 100644 index 0356431..0000000 --- a/test/acceptance/cli/fixtures/autocomplete.js +++ /dev/null @@ -1,67 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const { Inquirer } = require("../../../../lib/cli/Inquirer"); - -const questions = { - main: { - type: "list", - message: "Select action:", - name: "value", - choices: [ - { - name: "Select tags", - value: "tags" - } - ] - }, - tags: { - type: "autocomplete", - name: "value", - message: "Insert tags:" - } -}; - -const MyCli = class MyCli { - constructor() { - this._cli = new Inquirer(questions, this.header.bind(this)); - this._selectedOption = "None"; - } - - header() { - return [`Selected option: ${this._selectedOption}`]; - } - - async changeTags() { - this._cli.clearScreen(); - const tags = ["a-tag", "b-tag", "c-tag"]; - this._selectedOption = await this._cli.inquire("tags", { - source: (answers, input) => { - const currentInput = input ? input.split(" ").pop() : null; - if (!currentInput) { - return Promise.resolve(tags); - } - return Promise.resolve(tags.filter(tag => tag.indexOf(currentInput) === 0)); - } - }); - return this.displayMainMenu(); - } - - async displayMainMenu() { - this._cli.clearScreen(); - this._selectedOption = await this._cli.inquire("main"); - if (this._selectedOption === "tags") { - return this.changeTags(); - } - } -}; - -new MyCli().displayMainMenu(); diff --git a/test/acceptance/cli/fixtures/custom-quit-method.js b/test/acceptance/cli/fixtures/custom-quit-method.js deleted file mode 100644 index 6fee694..0000000 --- a/test/acceptance/cli/fixtures/custom-quit-method.js +++ /dev/null @@ -1,53 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const { Inquirer } = require("../../../../lib/cli/Inquirer"); - -const questions = { - main: { - type: "list", - message: "Select action:", - name: "value", - choices: [ - { - name: "Option 1", - value: "option1" - } - ] - } -}; - -const MyCli = class MyCli { - constructor() { - this._cli = new Inquirer(questions, this.header.bind(this), { - name: "Custom Quit", - action: this.customExitSelected.bind(this) - }); - this._selectedOption = "None"; - } - - header() { - return [`Selected option: ${this._selectedOption}`]; - } - - async customExitSelected() { - this._selectedOption = "Quit"; - await this.displayMainMenu(); - } - - async displayMainMenu() { - this._cli.clearScreen(); - this._selectedOption = await this._cli.inquire("main"); - await this.displayMainMenu(); - } -}; - -new MyCli().displayMainMenu(); diff --git a/test/acceptance/cli/fixtures/exit-logs-mode.js b/test/acceptance/cli/fixtures/exit-logs-mode.js deleted file mode 100644 index f22c630..0000000 --- a/test/acceptance/cli/fixtures/exit-logs-mode.js +++ /dev/null @@ -1,61 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const { Inquirer } = require("../../../../lib/cli/Inquirer"); - -const questions = { - main: { - type: "list", - message: "Select action:", - name: "value", - choices: [ - { - name: "Option 1", - value: "option1" - }, - { - name: "Display logs", - value: "logs" - } - ] - } -}; - -const MyCli = class MyCli { - constructor() { - this._cli = new Inquirer(questions, this.header.bind(this)); - this._selectedOption = "None"; - } - - header() { - return [`Selected option: ${this._selectedOption}`]; - } - - async displayLogs() { - await this._cli.logsMode(() => { - console.log("This is a foo log"); - setTimeout(() => { - this._cli.exitLogsMode(); - }, 500); - }); - } - - async displayMainMenu() { - this._cli.clearScreen(); - this._selectedOption = await this._cli.inquire("main"); - if (this._selectedOption === "logs") { - await this.displayLogs(); - } - await this.displayMainMenu(); - } -}; - -new MyCli().displayMainMenu(); diff --git a/test/acceptance/cli/fixtures/logs-mode.js b/test/acceptance/cli/fixtures/logs-mode.js deleted file mode 100644 index 2b55158..0000000 --- a/test/acceptance/cli/fixtures/logs-mode.js +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const { Inquirer } = require("../../../../lib/cli/Inquirer"); - -const questions = { - main: { - type: "list", - message: "Select action:", - name: "value", - choices: [ - { - name: "Option 1", - value: "option1" - }, - { - name: "Display logs", - value: "logs" - } - ] - } -}; - -const MyCli = class MyCli { - constructor() { - this._cli = new Inquirer(questions, this.header.bind(this)); - this._selectedOption = "None"; - } - - header() { - return [`Selected option: ${this._selectedOption}`]; - } - - async displayLogs() { - await this._cli.logsMode(() => { - console.log("This is a foo log"); - }); - } - - async displayMainMenu() { - this._cli.clearScreen(); - this._selectedOption = await this._cli.inquire("main"); - if (this._selectedOption === "logs") { - await this.displayLogs(); - } - await this.displayMainMenu(); - } -}; - -new MyCli().displayMainMenu(); diff --git a/test/acceptance/cli/fixtures/readme-example.js b/test/acceptance/cli/fixtures/readme-example.js deleted file mode 100644 index 8a2f716..0000000 --- a/test/acceptance/cli/fixtures/readme-example.js +++ /dev/null @@ -1,49 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const { Inquirer } = require("../../../../lib/cli/Inquirer"); - -const questions = { - main: { - type: "list", - message: "Select action:", - name: "value", - choices: [ - { - name: "Main option 1", - value: "option1" - }, - { - name: "Main option 2", - value: "option2" - } - ] - } -}; - -const MyCli = class MyCli { - constructor() { - this._cli = new Inquirer(questions, this.header.bind(this)); - this._selectedOption = "None"; - } - - header() { - return [`Selected option: ${this._selectedOption}`]; - } - - async displayMainMenu() { - this._cli.clearScreen(); - this._selectedOption = await this._cli.inquire("main"); - await this.displayMainMenu(); - } -}; - -new MyCli().displayMainMenu(); diff --git a/test/acceptance/cli/fixtures/remove-listeners.js b/test/acceptance/cli/fixtures/remove-listeners.js deleted file mode 100644 index 8226685..0000000 --- a/test/acceptance/cli/fixtures/remove-listeners.js +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const { Inquirer } = require("../../../../lib/cli/Inquirer"); - -const questions = { - main: { - type: "list", - message: "Select action:", - name: "value", - choices: [ - { - name: "Option 1", - value: "option1" - }, - { - name: "Display logs", - value: "logs" - } - ] - } -}; - -const MyCli = class MyCli { - constructor() { - this._cli = new Inquirer(questions, this.header.bind(this)); - this._selectedOption = "None"; - } - - header() { - return [`Selected option: ${this._selectedOption}`]; - } - - async displayMainMenu() { - this._cli.clearScreen(); - - setTimeout(() => { - this._cli.removeListeners(); - }, 100); // Remove listeners will do promise never resolving. This is for testing purposes only - - this._selectedOption = await this._cli.inquire("main"); - - if (this._selectedOption === "logs") { - await this.displayLogs(); - } - await this.displayMainMenu(); - } -}; - -new MyCli().displayMainMenu(); diff --git a/test/acceptance/cli/logs-mode.spec.js b/test/acceptance/cli/logs-mode.spec.js deleted file mode 100644 index 9e54225..0000000 --- a/test/acceptance/cli/logs-mode.spec.js +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const path = require("path"); - -const CliRunner = require("./CliRunner"); - -const END_SCREEN = "Exit"; - -describe("when logs-mode fixture is executed", () => { - const cliFile = path.resolve(__dirname, "fixtures", "logs-mode.js"); - let cliRunner; - - beforeEach(() => { - expect.assertions(1); - cliRunner = new CliRunner(cliFile); - }); - - afterEach(async () => { - await cliRunner.kill(); - }); - - it('should print a menu with "Option 1"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Option 1")); - }); - - it('should print a menu with "Exit" option', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Exit")); - }); - - it('should print selected option as "none" in header when inited', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Selected option: None")); - }); - - it('should print selected option as "option1" when user selects "Option 1"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - expect(newScreen).toEqual(expect.stringContaining("Selected option: option1")); - }); - - it('should enter in logs mode when user select "Display logs"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - cliRunner.cursorDown(); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - - expect(newScreen).toEqual(expect.stringContaining("Displaying logs")); - }); - - it("should exit logs mode when user press a key", async () => { - await cliRunner.hasPrinted(END_SCREEN); - cliRunner.cursorDown(); - await cliRunner.newScreenAfter(cliRunner.pressEnter); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - - expect(newScreen).toEqual(expect.stringContaining("Selected option: logs")); - }); - - it("should exit process when displaying logs if user press CTRL+C", async () => { - await cliRunner.hasPrinted(END_SCREEN); - cliRunner.cursorDown(); - await cliRunner.newScreenAfter(cliRunner.pressEnter); - cliRunner.pressCtrlC(); - - expect(await cliRunner.hasExit()).toEqual(true); - }); -}); diff --git a/test/acceptance/cli/mocks-server-bin.spec.js b/test/acceptance/cli/mocks-server-bin.spec.js deleted file mode 100644 index 7e9bd48..0000000 --- a/test/acceptance/cli/mocks-server-bin.spec.js +++ /dev/null @@ -1,27 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const path = require("path"); - -const CliRunner = require("./CliRunner"); - -describe("when mocks-server binary is executed", () => { - const binFile = path.resolve(__dirname, "..", "..", "..", "bin", "mocks-server"); - let cliRunner; - - it("should throw a controlled error if no behaviors folder is provided", async () => { - cliRunner = new CliRunner([binFile]); - await cliRunner.hasExit(); - expect(await cliRunner.logs).toEqual( - expect.stringContaining("Please provide a path to a folder containing behaviors") - ); - }); -}); diff --git a/test/acceptance/cli/readme-example.spec.js b/test/acceptance/cli/readme-example.spec.js deleted file mode 100644 index 6599486..0000000 --- a/test/acceptance/cli/readme-example.spec.js +++ /dev/null @@ -1,76 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const path = require("path"); - -const CliRunner = require("./CliRunner"); - -const END_SCREEN = "Exit"; - -describe("when readme example is executed", () => { - const cliFile = path.resolve(__dirname, "fixtures", "readme-example.js"); - let cliRunner; - - beforeEach(() => { - expect.assertions(1); - cliRunner = new CliRunner(cliFile); - }); - - afterEach(async () => { - await cliRunner.kill(); - }); - - it('should print a menu with "Main option 1" and "Main option 2"', async () => { - expect.assertions(2); - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Main option 1")); - expect(cliRunner.logs).toEqual(expect.stringContaining("Main option 2")); - }); - - it('should print a menu with "Exit" option', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Exit")); - }); - - it('should print selected option as "none" in header when inited', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Selected option: None")); - }); - - it('should print selected option as "option1" when user selects "Main option 1"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - expect(newScreen).toEqual(expect.stringContaining("Selected option: option1")); - }); - - it('should print selected option as "option2" when user selects "Main option 2"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - cliRunner.cursorDown(); - const newScreen = await cliRunner.newScreenAfter(cliRunner.pressEnter); - expect(newScreen).toEqual(expect.stringContaining("Selected option: option2")); - }); - - it('should exit process when user selects "Exit"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - cliRunner.cursorDown(); - cliRunner.cursorDown(); - cliRunner.pressEnter(); - - expect(await cliRunner.hasExit()).toEqual(true); - }); - - it("should exit process if user press CTRL+C", async () => { - await cliRunner.hasPrinted(END_SCREEN); - cliRunner.pressCtrlC(); - - expect(await cliRunner.hasExit()).toEqual(true); - }); -}); diff --git a/test/acceptance/cli/remove-listeners.spec.js b/test/acceptance/cli/remove-listeners.spec.js deleted file mode 100644 index dfee055..0000000 --- a/test/acceptance/cli/remove-listeners.spec.js +++ /dev/null @@ -1,57 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const path = require("path"); - -const CliRunner = require("./CliRunner"); - -const END_SCREEN = "Exit"; - -describe("when removeListeners is executed", () => { - const cliFile = path.resolve(__dirname, "fixtures", "remove-listeners.js"); - let cliRunner; - - beforeEach(() => { - expect.assertions(1); - cliRunner = new CliRunner(cliFile); - }); - - afterEach(async () => { - await cliRunner.kill(); - }); - - it('should print a menu with "Option 1"', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Option 1")); - }); - - it('should print a menu with "Exit" option', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Exit")); - }); - - it('should print selected option as "none" in header when inited', async () => { - await cliRunner.hasPrinted(END_SCREEN); - expect(cliRunner.logs).toEqual(expect.stringContaining("Selected option: None")); - }); - - it("should do nothing after removing Listeners even when user tries to select an option", async done => { - await cliRunner.hasPrinted(END_SCREEN); - setTimeout(async () => { - try { - await cliRunner.newScreenAfter(cliRunner.pressEnter); - } catch (error) { - expect(error.message).toEqual(expect.stringContaining("No new screen was rendered")); - done(); - } - }, 600); - }); -}); diff --git a/test/acceptance/main/InteractiveCliRunner.js b/test/acceptance/main/InteractiveCliRunner.js deleted file mode 100644 index b71c841..0000000 --- a/test/acceptance/main/InteractiveCliRunner.js +++ /dev/null @@ -1,78 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const { CliRunner, wait } = require("./utils"); - -const LOG = "[CLI]: "; -const SCREEN_SEPARATOR = ">> Mocks server"; - -module.exports = class InteractiveCliRunner { - constructor(cliArguments, cliOptions) { - this._cli = new CliRunner(cliArguments, cliOptions); - } - - _log(log) { - console.log(`${LOG}${log}`); - } - - async getCurrentScreen() { - await wait(500); - const allLogs = this._cli.allLogs; - const lastLog = allLogs[allLogs.length - 1]; - return lastLog.includes(SCREEN_SEPARATOR) - ? `${SCREEN_SEPARATOR}${lastLog.split(SCREEN_SEPARATOR).pop()}` - : lastLog; - } - - async logCurrentScreen() { - this._log(`Current screen:\n${await this.getCurrentScreen()}`); - this._log("----------------"); - } - - async getCurrentSelection() { - const screen = await this.getCurrentScreen(); - const splitted = screen.split("❯"); - const lastAction = splitted[splitted.length - 1]; - return lastAction.split("\n")[0]; - } - - async logCurrentSelection() { - this._log(`Current selection: ❯ ${await this.getCurrentSelection()}`); - } - - kill() { - return this._cli.kill(); - } - - get logs() { - return this._cli.logs; - } - - async cursorDown(number) { - this._log("Moving cursor down"); - this._cli.cursorDown(); - await this.logCurrentSelection(); - if (number > 1) { - await this.cursorDown(number - 1); - } - } - - async pressEnter() { - this._log("Pressing Enter"); - const newScreen = await this._cli.newScreenAfter(this._cli.pressEnter); - await this.logCurrentSelection(); - return newScreen; - } - - write(data) { - this._log(`Writing: "${data}"`); - this._cli.write(data); - } -}; diff --git a/test/acceptance/main/web-tutorial-admin-api.spec.js b/test/acceptance/main/change-behavior.spec.js similarity index 100% rename from test/acceptance/main/web-tutorial-admin-api.spec.js rename to test/acceptance/main/change-behavior.spec.js diff --git a/test/acceptance/main/cli-arguments.spec.js b/test/acceptance/main/cli-arguments.spec.js deleted file mode 100644 index 2d6887c..0000000 --- a/test/acceptance/main/cli-arguments.spec.js +++ /dev/null @@ -1,170 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const path = require("path"); -const { CliRunner, request, wait, TimeCounter } = require("./utils"); - -describe("command line arguments", () => { - const binaryPath = "../../../../bin/mocks-server"; - const cwdPath = path.resolve(__dirname, "fixtures"); - let cli; - - afterEach(async () => { - await cli.kill(); - }); - - describe("behaviors option", () => { - it("should set mocks folder", async () => { - expect.assertions(2); - cli = new CliRunner([binaryPath, "--behaviors=web-tutorial"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - expect(cli.logs).toEqual(expect.stringContaining("Behaviors: 3")); - }); - }); - - describe("behavior option", () => { - describe("when not provided", () => { - it("should set as current behavior the first one found", async () => { - expect.assertions(2); - cli = new CliRunner([binaryPath, "--behaviors=web-tutorial"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: standard")); - }); - }); - - describe("when provided and exists", () => { - it("should set current behavior", async () => { - expect.assertions(2); - cli = new CliRunner([binaryPath, "--behaviors=web-tutorial", "--behavior=dynamic"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: dynamic")); - }); - }); - - describe("when provided and does not exist", () => { - it("should print a warning", async () => { - cli = new CliRunner([binaryPath, "--behaviors=web-tutorial", "--behavior=foo"], { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining('Defined behavior "foo" was not found')); - }); - - it("should set as current behavior the first one found", async () => { - expect.assertions(2); - cli = new CliRunner([binaryPath, "--behaviors=web-tutorial", "--behavior=foo"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: standard")); - }); - }); - }); - - describe("features option", () => { - it("should set mocks folder", async () => { - expect.assertions(2); - cli = new CliRunner([binaryPath, "--features=web-tutorial"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - expect(cli.logs).toEqual(expect.stringContaining("Behaviors: 3")); - }); - }); - - describe("feature option", () => { - describe("when not provided", () => { - it("should set as current behavior the first one found", async () => { - expect.assertions(2); - cli = new CliRunner([binaryPath, "--features=web-tutorial"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: standard")); - }); - }); - - describe("when provided and exists", () => { - it("should set current behavior", async () => { - expect.assertions(2); - cli = new CliRunner([binaryPath, "--features=web-tutorial", "--feature=dynamic"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: dynamic")); - }); - }); - - describe("when provided and does not exist", () => { - it("should print a warning", async () => { - cli = new CliRunner([binaryPath, "--features=web-tutorial", "--feature=foo"], { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining('Defined behavior "foo" was not found')); - }); - - it("should set as current behavior the first one found", async () => { - expect.assertions(2); - cli = new CliRunner([binaryPath, "--features=web-tutorial", "--feature=foo"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: standard")); - }); - }); - }); - - describe("delay option", () => { - it("should set delay", async () => { - expect.assertions(2); - cli = new CliRunner([binaryPath, "--behaviors=web-tutorial", "--delay=2000"], { - cwd: cwdPath - }); - await wait(); - const timeCounter = new TimeCounter(); - const users = await request("/api/users"); - timeCounter.stop(); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - expect(timeCounter.total).toBeGreaterThan(1999); - }); - }); -}); diff --git a/test/acceptance/main/cli-disabled-arguments.spec.js b/test/acceptance/main/cli-disabled-arguments.spec.js deleted file mode 100644 index f33237a..0000000 --- a/test/acceptance/main/cli-disabled-arguments.spec.js +++ /dev/null @@ -1,185 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const path = require("path"); -const { CliRunner, request, wait, TimeCounter } = require("./utils"); - -describe("command line arguments with cli disabled", () => { - const binaryPath = "../../../../bin/mocks-server"; - const cwdPath = path.resolve(__dirname, "fixtures"); - let cli; - - afterEach(async () => { - await cli.kill(); - }); - - describe("interactive cli", () => { - it("should not be started", async () => { - cli = new CliRunner([binaryPath, "--behaviors=web-tutorial", "--cli=false"], { - cwd: cwdPath - }); - await wait(3000); - expect(cli.logs).toEqual(expect.not.stringContaining("Select action")); - }); - }); - - describe("behaviors option", () => { - it("should set mocks folder", async () => { - cli = new CliRunner([binaryPath, "--behaviors=web-tutorial", "--cli=false"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - }); - }); - - describe("behavior option", () => { - describe("when not provided", () => { - it("should set as current behavior the first one found", async () => { - cli = new CliRunner([binaryPath, "--behaviors=web-tutorial", "--cli=false"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - }); - - describe("when provided and exists", () => { - it("should set current behavior", async () => { - cli = new CliRunner( - [binaryPath, "--behaviors=web-tutorial", "--behavior=dynamic", "--cli=false"], - { - cwd: cwdPath - } - ); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - }); - }); - - describe("when provided and does not exist", () => { - it("should print a warning", async () => { - cli = new CliRunner( - [binaryPath, "--behaviors=web-tutorial", "--behavior=foo", "--cli=false"], - { - cwd: cwdPath - } - ); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining('Defined behavior "foo" was not found')); - }); - - it("should set as current behavior the first one found", async () => { - cli = new CliRunner( - [binaryPath, "--behaviors=web-tutorial", "--behavior=foo", "--cli=false"], - { - cwd: cwdPath - } - ); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - }); - }); - - describe("features option", () => { - it("should set mocks folder", async () => { - cli = new CliRunner([binaryPath, "--features=web-tutorial", "--cli=false"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - }); - }); - - describe("feature option", () => { - describe("when not provided", () => { - it("should set as current behavior the first one found", async () => { - cli = new CliRunner([binaryPath, "--features=web-tutorial", "--cli=false"], { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - }); - - describe("when provided and exists", () => { - it("should set current behavior", async () => { - cli = new CliRunner( - [binaryPath, "--features=web-tutorial", "--feature=dynamic", "--cli=false"], - { - cwd: cwdPath - } - ); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - }); - }); - - describe("when provided and does not exist", () => { - it("should print a warning", async () => { - cli = new CliRunner( - [binaryPath, "--features=web-tutorial", "--feature=foo", "--cli=false"], - { - cwd: cwdPath - } - ); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining('Defined behavior "foo" was not found')); - }); - - it("should set as current behavior the first one found", async () => { - cli = new CliRunner( - [binaryPath, "--features=web-tutorial", "--feature=foo", "--cli=false"], - { - cwd: cwdPath - } - ); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - }); - }); - - describe("delay option", () => { - it("should set delay", async () => { - expect.assertions(2); - cli = new CliRunner( - [binaryPath, "--behaviors=web-tutorial", "--delay=2000", "--cli=false"], - { - cwd: cwdPath - } - ); - await wait(); - const timeCounter = new TimeCounter(); - const users = await request("/api/users"); - timeCounter.stop(); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - expect(timeCounter.total).toBeGreaterThan(1999); - }); - }); -}); diff --git a/test/acceptance/main/cli-no-behaviors.spec.js b/test/acceptance/main/cli-no-behaviors.spec.js deleted file mode 100644 index abdb09c..0000000 --- a/test/acceptance/main/cli-no-behaviors.spec.js +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const path = require("path"); -const { CliRunner, wait } = require("./utils"); - -describe("with no behaviors", () => { - const binaryPath = "../../../../bin/mocks-server"; - const cwdPath = path.resolve(__dirname, "fixtures"); - let cli; - - afterEach(async () => { - await cli.kill(); - }); - - it("should print a dash as current behavior", async () => { - cli = new CliRunner([binaryPath, "--behaviors=no-behaviors"], { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: -")); - }); - - it("should print behaviors as 0", async () => { - cli = new CliRunner([binaryPath, "--behaviors=no-behaviors"], { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining("Behaviors: 0")); - }); - - it("should print current fixtures as 0", async () => { - cli = new CliRunner([binaryPath, "--behaviors=no-behaviors"], { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining("Current fixtures: 0")); - }); -}); diff --git a/test/acceptance/main/delay-setting.spec.js b/test/acceptance/main/delay-setting.spec.js deleted file mode 100644 index 6d7982f..0000000 --- a/test/acceptance/main/delay-setting.spec.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const { startServer, stopServer, request, changeDelay, TimeCounter } = require("./utils"); - -describe("delay setting", () => { - let server; - - beforeAll(async () => { - server = await startServer(); - }); - - afterAll(() => { - stopServer(server); - }); - - describe("When started", () => { - it("should respond with no delay", async () => { - const timeCounter = new TimeCounter(); - await request("/api/users"); - timeCounter.stop(); - expect(timeCounter.total).toBeLessThan(200); - }); - }); - - describe("When delay is changed through admin-api", () => { - it("should respond after defined delay", async () => { - await changeDelay(1000); - const timeCounter = new TimeCounter(); - await request("/api/users"); - timeCounter.stop(); - expect(timeCounter.total).toBeGreaterThan(999); - }); - }); -}); diff --git a/test/acceptance/main/web-tutorial-files-watch.spec.js b/test/acceptance/main/files-watch.spec.js similarity index 100% rename from test/acceptance/main/web-tutorial-files-watch.spec.js rename to test/acceptance/main/files-watch.spec.js diff --git a/test/acceptance/main/fixtures/no-behaviors/base.js b/test/acceptance/main/fixtures/no-behaviors/base.js deleted file mode 100644 index f053ebf..0000000 --- a/test/acceptance/main/fixtures/no-behaviors/base.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = {}; diff --git a/test/acceptance/main/fixtures/programmatic-cli/init-server.js b/test/acceptance/main/fixtures/programmatic-cli/init-server.js deleted file mode 100644 index 79b190f..0000000 --- a/test/acceptance/main/fixtures/programmatic-cli/init-server.js +++ /dev/null @@ -1,29 +0,0 @@ -const path = require("path"); -const { Cli } = require("../../../../../index"); - -const wait = (time = 3000) => { - return new Promise(resolve => { - setTimeout(() => { - resolve(); - }, time); - }); -}; - -const cli = new Cli({ - behaviors: path.resolve(__dirname, "..", "web-tutorial"), - port: 3100, - log: "debug", - watch: false -}); - -cli - .initServer() - .catch(err => { - console.log("Error initializing CLI", err); - }) - .then(() => { - console.log("Cli initialized"); - return wait().then(() => { - return cli.start(); - }); - }); diff --git a/test/acceptance/main/fixtures/programmatic-cli/start-delay.js b/test/acceptance/main/fixtures/programmatic-cli/start-delay.js deleted file mode 100644 index 9d5b298..0000000 --- a/test/acceptance/main/fixtures/programmatic-cli/start-delay.js +++ /dev/null @@ -1,13 +0,0 @@ -const path = require("path"); -const { Cli } = require("../../../../../index"); - -const cli = new Cli({ - behaviors: path.resolve(__dirname, "..", "web-tutorial"), - port: 3100, - log: "debug", - delay: 2000 -}); - -cli.start().catch(err => { - console.log("Error starting CLI", err); -}); diff --git a/test/acceptance/main/fixtures/programmatic-cli/start-dynamic-behavior.js b/test/acceptance/main/fixtures/programmatic-cli/start-dynamic-behavior.js deleted file mode 100644 index 4312e85..0000000 --- a/test/acceptance/main/fixtures/programmatic-cli/start-dynamic-behavior.js +++ /dev/null @@ -1,14 +0,0 @@ -const path = require("path"); -const { Cli } = require("../../../../../index"); - -const cli = new Cli({ - behaviors: path.resolve(__dirname, "..", "web-tutorial"), - behavior: "dynamic", - port: 3100, - log: "debug", - watch: false -}); - -cli.start().catch(err => { - console.log("Error starting CLI", err); -}); diff --git a/test/acceptance/main/fixtures/programmatic-cli/start-dynamic-feature.js b/test/acceptance/main/fixtures/programmatic-cli/start-dynamic-feature.js deleted file mode 100644 index 86266d4..0000000 --- a/test/acceptance/main/fixtures/programmatic-cli/start-dynamic-feature.js +++ /dev/null @@ -1,14 +0,0 @@ -const path = require("path"); -const { Cli } = require("../../../../../index"); - -const cli = new Cli({ - behaviors: path.resolve(__dirname, "..", "web-tutorial"), - feature: "dynamic", - port: 3100, - log: "debug", - watch: false -}); - -cli.start().catch(err => { - console.log("Error starting CLI", err); -}); diff --git a/test/acceptance/main/fixtures/programmatic-cli/start-features.js b/test/acceptance/main/fixtures/programmatic-cli/start-features.js deleted file mode 100644 index 0e8052c..0000000 --- a/test/acceptance/main/fixtures/programmatic-cli/start-features.js +++ /dev/null @@ -1,13 +0,0 @@ -const path = require("path"); -const { Cli } = require("../../../../../index"); - -const cli = new Cli({ - features: path.resolve(__dirname, "..", "web-tutorial"), - port: 3100, - log: "debug", - watch: false -}); - -cli.start().catch(err => { - console.log("Error starting CLI", err); -}); diff --git a/test/acceptance/main/fixtures/programmatic-cli/start-unexistant-behavior.js b/test/acceptance/main/fixtures/programmatic-cli/start-unexistant-behavior.js deleted file mode 100644 index c8ca70c..0000000 --- a/test/acceptance/main/fixtures/programmatic-cli/start-unexistant-behavior.js +++ /dev/null @@ -1,14 +0,0 @@ -const path = require("path"); -const { Cli } = require("../../../../../index"); - -const cli = new Cli({ - behaviors: path.resolve(__dirname, "..", "web-tutorial"), - behavior: "foo", - port: 3100, - log: "debug", - watch: false -}); - -cli.start().catch(err => { - console.log("Error starting CLI", err); -}); diff --git a/test/acceptance/main/fixtures/programmatic-cli/start-unexistant-feature.js b/test/acceptance/main/fixtures/programmatic-cli/start-unexistant-feature.js deleted file mode 100644 index 1075ba3..0000000 --- a/test/acceptance/main/fixtures/programmatic-cli/start-unexistant-feature.js +++ /dev/null @@ -1,14 +0,0 @@ -const path = require("path"); -const { Cli } = require("../../../../../index"); - -const cli = new Cli({ - behaviors: path.resolve(__dirname, "..", "web-tutorial"), - feature: "foo", - port: 3100, - log: "debug", - watch: false -}); - -cli.start().catch(err => { - console.log("Error starting CLI", err); -}); diff --git a/test/acceptance/main/fixtures/programmatic-cli/start.js b/test/acceptance/main/fixtures/programmatic-cli/start.js deleted file mode 100644 index 378ec40..0000000 --- a/test/acceptance/main/fixtures/programmatic-cli/start.js +++ /dev/null @@ -1,13 +0,0 @@ -const path = require("path"); -const { Cli } = require("../../../../../index"); - -const cli = new Cli({ - behaviors: path.resolve(__dirname, "..", "web-tutorial"), - port: 3100, - log: "debug", - watch: false -}); - -cli.start().catch(err => { - console.log("Error starting CLI", err); -}); diff --git a/test/acceptance/main/fixtures/programmatic-server/start-and-stop.js b/test/acceptance/main/fixtures/programmatic-server/start-and-stop.js deleted file mode 100644 index 930e457..0000000 --- a/test/acceptance/main/fixtures/programmatic-server/start-and-stop.js +++ /dev/null @@ -1,24 +0,0 @@ -const path = require("path"); -const { Server } = require("../../../../../index"); - -const wait = (time = 2000) => { - return new Promise(resolve => { - setTimeout(() => { - resolve(); - }, time); - }); -}; - -const server = new Server(path.resolve(__dirname, "..", "web-tutorial"), { - port: 3100, - log: "debug", - watch: false -}); - -server.start().then(serverInstance => { - console.log("Server started"); - return wait().then(() => { - serverInstance.stop(); - console.log("Server stopped"); - }); -}); diff --git a/test/acceptance/main/fixtures/programmatic-server/start-delay.js b/test/acceptance/main/fixtures/programmatic-server/start-delay.js deleted file mode 100644 index aec77d7..0000000 --- a/test/acceptance/main/fixtures/programmatic-server/start-delay.js +++ /dev/null @@ -1,12 +0,0 @@ -const path = require("path"); -const { Server } = require("../../../../../index"); - -const server = new Server(path.resolve(__dirname, "..", "web-tutorial"), { - port: 3100, - log: "debug", - delay: 2000 -}); - -server.start().then(() => { - console.log("Server started"); -}); diff --git a/test/acceptance/main/fixtures/programmatic-server/start-dynamic-behavior.js b/test/acceptance/main/fixtures/programmatic-server/start-dynamic-behavior.js deleted file mode 100644 index 64458b2..0000000 --- a/test/acceptance/main/fixtures/programmatic-server/start-dynamic-behavior.js +++ /dev/null @@ -1,13 +0,0 @@ -const path = require("path"); -const { Server } = require("../../../../../index"); - -const server = new Server(path.resolve(__dirname, "..", "web-tutorial"), { - port: 3100, - log: "debug", - watch: false, - behavior: "dynamic" -}); - -server.start().then(() => { - console.log("Server started"); -}); diff --git a/test/acceptance/main/fixtures/programmatic-server/start-dynamic-feature.js b/test/acceptance/main/fixtures/programmatic-server/start-dynamic-feature.js deleted file mode 100644 index 5ffd8e5..0000000 --- a/test/acceptance/main/fixtures/programmatic-server/start-dynamic-feature.js +++ /dev/null @@ -1,13 +0,0 @@ -const path = require("path"); -const { Server } = require("../../../../../index"); - -const server = new Server(path.resolve(__dirname, "..", "web-tutorial"), { - port: 3100, - log: "debug", - watch: false, - feature: "dynamic" -}); - -server.start().then(() => { - console.log("Server started"); -}); diff --git a/test/acceptance/main/fixtures/programmatic-server/start-unexistant-behavior.js b/test/acceptance/main/fixtures/programmatic-server/start-unexistant-behavior.js deleted file mode 100644 index 7af1d2e..0000000 --- a/test/acceptance/main/fixtures/programmatic-server/start-unexistant-behavior.js +++ /dev/null @@ -1,13 +0,0 @@ -const path = require("path"); -const { Server } = require("../../../../../index"); - -const server = new Server(path.resolve(__dirname, "..", "web-tutorial"), { - port: 3100, - log: "debug", - watch: false, - behavior: "foo" -}); - -server.start().then(() => { - console.log("Server started"); -}); diff --git a/test/acceptance/main/fixtures/programmatic-server/start-unexistant-feature.js b/test/acceptance/main/fixtures/programmatic-server/start-unexistant-feature.js deleted file mode 100644 index 7928b02..0000000 --- a/test/acceptance/main/fixtures/programmatic-server/start-unexistant-feature.js +++ /dev/null @@ -1,13 +0,0 @@ -const path = require("path"); -const { Server } = require("../../../../../index"); - -const server = new Server(path.resolve(__dirname, "..", "web-tutorial"), { - port: 3100, - log: "debug", - watch: false, - feature: "foo" -}); - -server.start().then(() => { - console.log("Server started"); -}); diff --git a/test/acceptance/main/fixtures/programmatic-server/start-watch.js b/test/acceptance/main/fixtures/programmatic-server/start-watch.js deleted file mode 100644 index c31b8da..0000000 --- a/test/acceptance/main/fixtures/programmatic-server/start-watch.js +++ /dev/null @@ -1,12 +0,0 @@ -const path = require("path"); -const { Server } = require("../../../../../index"); - -const server = new Server(path.resolve(__dirname, "..", "files-watch"), { - port: 3100, - log: "debug", - watch: true -}); - -server.start().then(() => { - console.log("Server started"); -}); diff --git a/test/acceptance/main/fixtures/programmatic-server/start.js b/test/acceptance/main/fixtures/programmatic-server/start.js deleted file mode 100644 index 2b879de..0000000 --- a/test/acceptance/main/fixtures/programmatic-server/start.js +++ /dev/null @@ -1,12 +0,0 @@ -const path = require("path"); -const { Server } = require("../../../../../index"); - -const server = new Server(path.resolve(__dirname, "..", "web-tutorial"), { - port: 3100, - log: "debug", - watch: false -}); - -server.start().then(() => { - console.log("Server started"); -}); diff --git a/test/acceptance/main/interactive-cli.spec.js b/test/acceptance/main/interactive-cli.spec.js deleted file mode 100644 index 9756390..0000000 --- a/test/acceptance/main/interactive-cli.spec.js +++ /dev/null @@ -1,134 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const path = require("path"); -const { request, wait, TimeCounter } = require("./utils"); -const InteractiveCliRunner = require("./InteractiveCliRunner"); - -describe("interactive CLI", () => { - let cli; - const binaryPath = "../../../../bin/mocks-server"; - const cwdPath = path.resolve(__dirname, "fixtures"); - - beforeAll(async () => { - cli = new InteractiveCliRunner([binaryPath, "--behaviors=web-tutorial"], { - cwd: cwdPath - }); - await wait(); - }); - - afterAll(async () => { - await cli.kill(); - }); - - describe("When started", () => { - it("should have 3 behaviors available", async () => { - expect(cli.logs).toEqual(expect.stringContaining("Behaviors: 3")); - }); - - it("should serve users collection mock under the /api/users path", async () => { - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - }); - - it("should serve user 1 under the /api/users/1 path", async () => { - const users = await request("/api/users/1"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - - it("should serve user 1 under the /api/users/2 path", async () => { - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - }); - - describe('When changing current behavior to "dynamic"', () => { - it("should display new selected behavior", async () => { - await cli.pressEnter(); - await cli.cursorDown(2); - const newScreen = await cli.pressEnter(); - expect(newScreen).toEqual(expect.stringContaining("Current behavior: dynamic")); - }); - - it("should serve users collection mock under the /api/users path", async () => { - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - }); - - it("should serve user 1 under the /api/users/1 path", async () => { - const users = await request("/api/users/1"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - - it("should serve user 2 under the /api/users/2 path", async () => { - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - }); - - it("should return not found for /api/users/3 path", async () => { - const usersResponse = await request("/api/users/3", { - resolveWithFullResponse: true, - simple: false - }); - expect(usersResponse.statusCode).toEqual(404); - }); - }); - - describe("When changing logs level", () => { - it("should display new selected log level", async () => { - await cli.cursorDown(3); - await cli.pressEnter(); - await cli.cursorDown(2); - const newScreen = await cli.pressEnter(); - expect(newScreen).toEqual(expect.stringContaining("Log level: verbose")); - }); - }); - - describe("When displaying logs", () => { - it("should log requests", async () => { - expect.assertions(2); - await cli.cursorDown(5); - await cli.pressEnter(); - await request("/api/users"); - const newScreen = await cli.getCurrentScreen(); - expect(newScreen).toEqual(expect.stringContaining("Displaying logs")); - expect(newScreen).toEqual(expect.stringContaining("[Mocks verbose] Request received")); - await cli.pressEnter(); - }); - }); - - describe("When changing delay time", () => { - it("should display new selected delay time", async () => { - await cli.cursorDown(); - await cli.pressEnter(); - await cli.write(2000); - const newScreen = await cli.pressEnter(); - expect(newScreen).toEqual(expect.stringContaining("Delay: 2000")); - }); - - it("should respond after defined delay", async () => { - expect.assertions(2); - const timeCounter = new TimeCounter(); - const users = await request("/api/users"); - timeCounter.stop(); - expect(timeCounter.total).toBeGreaterThan(1999); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - }); - }); -}); diff --git a/test/acceptance/main/programmatic-cli.spec.js b/test/acceptance/main/programmatic-cli.spec.js deleted file mode 100644 index 60621ac..0000000 --- a/test/acceptance/main/programmatic-cli.spec.js +++ /dev/null @@ -1,193 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const { CliRunner, request, wait, TimeCounter, fixturesFolder } = require("./utils"); - -describe("programmatic Cli", () => { - const cwdPath = fixturesFolder("programmatic-cli"); - let cli; - - afterEach(async () => { - await cli.kill(); - }); - - describe("When started", () => { - it("should set mocks folder", async () => { - expect.assertions(2); - cli = new CliRunner("start.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - expect(cli.logs).toEqual(expect.stringContaining("Behaviors: 3")); - }); - - it("should set mocks folder even when deprecated features option is received", async () => { - expect.assertions(3); - cli = new CliRunner("start-features.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - expect(cli.logs).toEqual( - expect.stringContaining( - "Deprecation warning: --features option will be deprecated. Use --behaviors instead" - ) - ); - expect(cli.logs).toEqual(expect.stringContaining("Behaviors: 3")); - }); - - it("should print a log when started", async () => { - cli = new CliRunner("start.js", { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining("Server started")); - }); - }); - - describe("behavior option", () => { - describe("when not provided", () => { - it("should set as current behavior the first one found", async () => { - expect.assertions(2); - cli = new CliRunner("start.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: standard")); - }); - }); - - describe("when provided and exists", () => { - it("should set current behavior", async () => { - expect.assertions(2); - cli = new CliRunner("start-dynamic-behavior.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: dynamic")); - }); - }); - - describe("when provided and does not exist", () => { - it("should print a warning", async () => { - cli = new CliRunner("start-unexistant-behavior.js", { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining('Defined behavior "foo" was not found')); - }); - - it("should set as current behavior the first one found", async () => { - expect.assertions(2); - cli = new CliRunner("start-unexistant-behavior.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: standard")); - }); - }); - }); - - describe("feature option", () => { - describe("when provided and exists", () => { - it("should set current behavior", async () => { - expect.assertions(2); - cli = new CliRunner("start-dynamic-feature.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: dynamic")); - }); - - it("should print a deprecation warning", async () => { - cli = new CliRunner("start-dynamic-feature.js", { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual( - expect.stringContaining( - "Deprecation warning: --feature option will be deprecated. Use --behavior instead" - ) - ); - }); - }); - - describe("when provided and does not exist", () => { - it("should print a warning", async () => { - cli = new CliRunner("start-unexistant-feature.js", { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining('Defined behavior "foo" was not found')); - }); - - it("should set as current behavior the first one found", async () => { - expect.assertions(2); - cli = new CliRunner("start-unexistant-feature.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - expect(cli.logs).toEqual(expect.stringContaining("Current behavior: standard")); - }); - }); - }); - - describe("delay option", () => { - it("should set delay", async () => { - expect.assertions(2); - cli = new CliRunner("start-delay.js", { - cwd: cwdPath - }); - await wait(); - const timeCounter = new TimeCounter(); - const users = await request("/api/users"); - timeCounter.stop(); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - expect(timeCounter.total).toBeGreaterThan(1999); - }); - }); - - describe("when initializing server manually and start after", () => { - it("should start server without cli, then start", async () => { - expect.assertions(3); - cli = new CliRunner("init-server.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - expect(cli.logs).toEqual(expect.not.stringContaining("Select action")); - await wait(3000); - expect(cli.logs).toEqual(expect.stringContaining("Select action")); - }); - }); -}); diff --git a/test/acceptance/main/programmatic-server.spec.js b/test/acceptance/main/programmatic-server.spec.js deleted file mode 100644 index 027100e..0000000 --- a/test/acceptance/main/programmatic-server.spec.js +++ /dev/null @@ -1,168 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const { CliRunner, request, wait, TimeCounter, fixturesFolder } = require("./utils"); - -describe("programmatic Server", () => { - const cwdPath = fixturesFolder("programmatic-server"); - let cli; - - afterEach(async () => { - await cli.kill(); - }); - - describe("When started", () => { - it("should set mocks folder", async () => { - cli = new CliRunner("start.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - }); - - it("should print a log when started", async () => { - cli = new CliRunner("start.js", { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining("Server started")); - }); - }); - - describe("behavior option", () => { - describe("when not provided", () => { - it("should set as current behavior the first one found", async () => { - cli = new CliRunner("start.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - }); - - describe("when provided and exists", () => { - it("should set current behavior", async () => { - cli = new CliRunner("start-dynamic-behavior.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - }); - }); - - describe("when provided and does not exist", () => { - it("should print a warning", async () => { - cli = new CliRunner("start-unexistant-behavior.js", { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining('Defined behavior "foo" was not found')); - }); - - it("should set as current behavior the first one found", async () => { - cli = new CliRunner("start-unexistant-behavior.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - }); - }); - - describe("feature option", () => { - describe("when provided and exists", () => { - it("should set current behavior", async () => { - cli = new CliRunner("start-dynamic-feature.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - }); - - it("should print a deprecation warning", async () => { - cli = new CliRunner("start-dynamic-feature.js", { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual( - expect.stringContaining( - "Deprecation warning: --feature option will be deprecated. Use --behavior instead" - ) - ); - }); - }); - - describe("when provided and does not exist", () => { - it("should print a warning", async () => { - cli = new CliRunner("start-unexistant-feature.js", { - cwd: cwdPath - }); - await wait(); - expect(cli.logs).toEqual(expect.stringContaining('Defined behavior "foo" was not found')); - }); - - it("should set as current behavior the first one found", async () => { - cli = new CliRunner("start-unexistant-feature.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - }); - }); - - describe("delay option", () => { - it("should set delay", async () => { - expect.assertions(2); - cli = new CliRunner("start-delay.js", { - cwd: cwdPath - }); - await wait(); - const timeCounter = new TimeCounter(); - const users = await request("/api/users"); - timeCounter.stop(); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - expect(timeCounter.total).toBeGreaterThan(1999); - }); - }); - - describe("stop method", () => { - it("should stop the server", async () => { - expect.assertions(2); - cli = new CliRunner("start-and-stop.js", { - cwd: cwdPath - }); - await wait(); - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - await wait(2000); - try { - await request("/api/users"); - } catch (error) { - expect(error.message).toEqual(expect.stringContaining("ECONNREFUSED")); - } - }); - }); -}); diff --git a/test/acceptance/main/utils.js b/test/acceptance/main/utils.js index 3046686..cff0b75 100644 --- a/test/acceptance/main/utils.js +++ b/test/acceptance/main/utils.js @@ -9,10 +9,10 @@ Unless required by applicable law or agreed to in writing, software distributed */ const path = require("path"); +const { Core } = require("@mocks-server/core"); +const PluginAdminApi = require("../../../index"); const requestPromise = require("request-promise"); -const CliRunner = require("../cli/CliRunner"); // TODO, export in CLI package for testing purposes? -const { Server } = require("../../../index"); const SERVER_PORT = 3100; @@ -30,20 +30,25 @@ const fixturesFolder = folderName => { return path.resolve(__dirname, "fixtures", folderName); }; -const startServer = (mocksPath, options = {}) => { +const startServer = (mocksPath, opts = {}) => { const mocks = mocksPath || "web-tutorial"; - const server = new Server(fixturesFolder(mocks), { + const options = { + behaviors: fixturesFolder(mocks), ...defaultOptions, - ...options + ...opts + }; + const server = new Core({ + plugins: [PluginAdminApi] }); - return server.start().then(() => { - return Promise.resolve(server); + return server.init(options).then(() => { + return server.start().then(() => { + return Promise.resolve(server); + }); }); }; const stopServer = server => { - server.stop(); - server.switchWatch(false); + return server.stop(); }; const request = (uri, options = {}) => { @@ -116,7 +121,6 @@ module.exports = { getBehaviors, changeDelay, TimeCounter, - CliRunner, wait, fixturesFolder }; diff --git a/test/acceptance/main/web-tutorial-cli.spec.js b/test/acceptance/main/web-tutorial-cli.spec.js deleted file mode 100644 index d86c83c..0000000 --- a/test/acceptance/main/web-tutorial-cli.spec.js +++ /dev/null @@ -1,116 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const path = require("path"); -const { request, wait } = require("./utils"); -const InteractiveCliRunner = require("./InteractiveCliRunner"); - -describe("web tutorial", () => { - let cli; - const binaryPath = "../../../../bin/mocks-server"; - const cwdPath = path.resolve(__dirname, "fixtures"); - - beforeAll(async () => { - cli = new InteractiveCliRunner([binaryPath, "--behaviors=web-tutorial"], { - cwd: cwdPath - }); - await wait(); - }); - - afterAll(async () => { - await cli.kill(); - }); - - describe("When started", () => { - it("should have 3 behaviors available", async () => { - expect(cli.logs).toEqual(expect.stringContaining("Behaviors: 3")); - }); - - it("should serve users collection mock under the /api/users path", async () => { - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - }); - - it("should serve user 1 under the /api/users/1 path", async () => { - const users = await request("/api/users/1"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - - it("should serve user 1 under the /api/users/2 path", async () => { - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - }); - - describe('When changing current behavior to "user2"', () => { - it("should display new selected behavior", async () => { - await cli.pressEnter(); - await cli.cursorDown(); - const newScreen = await cli.pressEnter(); - expect(newScreen).toEqual(expect.stringContaining("Current behavior: user2")); - }); - - it("should serve users collection mock under the /api/users path", async () => { - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - }); - - it("should serve user 2 under the /api/users/1 path", async () => { - const users = await request("/api/users/1"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - }); - - it("should serve user 2 under the /api/users/2 path", async () => { - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - }); - }); - - describe('When changing current behavior to "dynamic"', () => { - it("should display new selected behavior", async () => { - await cli.pressEnter(); - await cli.cursorDown(2); - const newScreen = await cli.pressEnter(); - expect(newScreen).toEqual(expect.stringContaining("Current behavior: dynamic")); - }); - - it("should serve users collection mock under the /api/users path", async () => { - const users = await request("/api/users"); - expect(users).toEqual([ - { id: 1, name: "John Doe" }, - { id: 2, name: "Jane Doe" } - ]); - }); - - it("should serve user 1 under the /api/users/1 path", async () => { - const users = await request("/api/users/1"); - expect(users).toEqual({ id: 1, name: "John Doe" }); - }); - - it("should serve user 2 under the /api/users/2 path", async () => { - const users = await request("/api/users/2"); - expect(users).toEqual({ id: 2, name: "Jane Doe" }); - }); - - it("should return not found for /api/users/3 path", async () => { - const usersResponse = await request("/api/users/3", { - resolveWithFullResponse: true, - simple: false - }); - expect(usersResponse.statusCode).toEqual(404); - }); - }); -}); diff --git a/test/unit/core/Core.mocks.js b/test/unit/Core.mocks.js similarity index 95% rename from test/unit/core/Core.mocks.js rename to test/unit/Core.mocks.js index 972791c..8e88ddb 100644 --- a/test/unit/core/Core.mocks.js +++ b/test/unit/Core.mocks.js @@ -10,9 +10,9 @@ Unless required by applicable law or agreed to in writing, software distributed const sinon = require("sinon"); -jest.mock("../../../lib/core/Core"); +jest.mock("@mocks-server/core"); -const Core = require("../../../lib/core/Core"); +const { Core } = require("@mocks-server/core"); class CoreMock { constructor() { diff --git a/test/unit/Libs.mocks.js b/test/unit/Libs.mocks.js index 6f09240..7185221 100644 --- a/test/unit/Libs.mocks.js +++ b/test/unit/Libs.mocks.js @@ -1,4 +1,5 @@ /* +Copyright 2019 Javier Brea Copyright 2019 XbyOrange 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 @@ -13,10 +14,8 @@ const sinon = require("sinon"); const http = require("http"); jest.mock("express"); -jest.mock("node-watch"); const express = require("express"); -const watch = require("node-watch"); class CallBackRunner { constructor() { @@ -34,43 +33,14 @@ class CallBackRunner { } } -class WatchRunner { - constructor(closeStub) { - this.runner = this.runner.bind(this); - this.triggerChange = this.triggerChange.bind(this); - this._closeStub = closeStub; - this._change = false; - } - - runner(eventName, options, cb) { - if (this._change) { - return cb(); - } - return { - close: this._closeStub - }; - } - - triggerChange(change) { - this._change = change; - } -} - class Mock { constructor() { this._sandbox = sinon.createSandbox(); const httpCreateServerOnError = new CallBackRunner(); const httpCreateServerOnListen = new CallBackRunner(); - const watchClose = this._sandbox.stub(); - const watchRunner = new WatchRunner(watchClose); - const watchStub = this._sandbox.stub().callsFake(watchRunner.runner); - watchStub.triggerChange = watchRunner.triggerChange; this._stubs = { - watch: watchStub, - watchTriggerChange: watchRunner.triggerChange, - watchClose, express: { use: this._sandbox.stub(), options: this._sandbox.stub() @@ -87,7 +57,6 @@ class Mock { }; express.mockImplementation(() => this._stubs.express); - watch.mockImplementation(this._stubs.watch); this._sandbox.stub(http, "createServer").returns(this._stubs.http.createServer); } diff --git a/test/unit/ProgrammaticCli.spec.js b/test/unit/ProgrammaticCli.spec.js deleted file mode 100644 index 5c81974..0000000 --- a/test/unit/ProgrammaticCli.spec.js +++ /dev/null @@ -1,137 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const sinon = require("sinon"); - -const CoreMocks = require("./core/Core.mocks.js"); -const CliMocks = require("./cli/Cli.mocks.js"); - -const AdminApi = require("../../lib/api/Api"); - -const ProgrammaticCli = require("../../lib/ProgrammaticCli"); - -describe("start method", () => { - let sandbox; - let coreMocks; - let cliMocks; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - coreMocks = new CoreMocks(); - cliMocks = new CliMocks(); - }); - - afterEach(() => { - sandbox.restore(); - coreMocks.restore(); - }); - - describe("when created", () => { - it("should pass admin Api plugin to Core", async () => { - new ProgrammaticCli(); - expect(coreMocks.stubs.Constructor.mock.calls[0][0].plugins[0]).toEqual(AdminApi); - }); - - it("should pass a callback to Core returning a CLI plugin, which reference is saved", async () => { - const cli = new ProgrammaticCli(); - coreMocks.stubs.Constructor.mock.calls[0][0].plugins[1](); - expect(cli._inquirerCli).toEqual(cliMocks.stubs.instance); - }); - }); - - describe("start method", () => { - let cli; - const fooOptions = { - foo: "foo", - foo2: "foo2" - }; - - beforeEach(() => { - cli = new ProgrammaticCli(fooOptions); - coreMocks.stubs.Constructor.mock.calls[0][0].plugins[1](); - }); - - it("should init Core wit provided options", async () => { - await cli.start(); - expect(coreMocks.stubs.instance.init.getCall(0).args[0]).toEqual(fooOptions); - }); - - it("should start core", async () => { - await cli.start(); - expect(coreMocks.stubs.instance.start.callCount).toEqual(1); - }); - - it("should start CLI", async () => { - await cli.start(); - expect(cliMocks.stubs.instance.start.callCount).toEqual(1); - }); - - it("should start CLI only when CLI was disabled", async () => { - coreMocks.stubs.instance.settings.get.returns(true); - await cli.start(); - expect(cliMocks.stubs.instance.start.callCount).toEqual(0); - }); - - it("should start core and CLI only once when called multiple times", async () => { - expect.assertions(2); - await cli.start(); - await cli.start(); - expect(cliMocks.stubs.instance.start.callCount).toEqual(1); - expect(coreMocks.stubs.instance.start.callCount).toEqual(1); - }); - }); - - describe("init method", () => { - let cli; - const fooOptions = { - foo: "foo", - foo2: "foo2" - }; - - beforeEach(() => { - cli = new ProgrammaticCli(fooOptions); - coreMocks.stubs.Constructor.mock.calls[0][0].plugins[1](); - }); - - it("should init Core wit provided options", async () => { - await cli.initServer(); - expect(coreMocks.stubs.instance.init.getCall(0).args[0]).toEqual(fooOptions); - }); - - it("should disable cli", async () => { - await cli.initServer(); - expect(coreMocks.stubs.instance.settings.set.getCall(0).args).toEqual(["cli", false]); - }); - - it("should start core", async () => { - await cli.initServer(); - expect(coreMocks.stubs.instance.start.callCount).toEqual(1); - }); - - it("should start core only once after calling start", async () => { - await cli.initServer(); - await cli.start(); - expect(coreMocks.stubs.instance.start.callCount).toEqual(1); - }); - }); - - describe("stopListeningServerWatch method", () => { - let cli; - beforeEach(() => { - cli = new ProgrammaticCli(); - coreMocks.stubs.Constructor.mock.calls[0][0].plugins[1](); - }); - - it("should call to stopListeningServerWatch method of cli plugin", async () => { - await cli.stopListeningServerWatch(); - expect(cliMocks.stubs.instance.stopListeningServerWatch.callCount).toEqual(1); - }); - }); -}); diff --git a/test/unit/ProgrammaticServer.spec.js b/test/unit/ProgrammaticServer.spec.js deleted file mode 100644 index 660fad2..0000000 --- a/test/unit/ProgrammaticServer.spec.js +++ /dev/null @@ -1,125 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const sinon = require("sinon"); - -const CoreMocks = require("./core/Core.mocks.js"); - -const AdminApi = require("../../lib/api/Api"); - -const ProgrammaticServer = require("../../lib/ProgrammaticServer"); - -describe("start method", () => { - const fooMocksPath = "foo-mocks-path"; - const fooOptions = { - foo: "foo", - foo2: "foo2" - }; - let sandbox; - let coreMocks; - let cli; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - coreMocks = new CoreMocks(); - cli = new ProgrammaticServer(fooMocksPath, fooOptions); - }); - - afterEach(() => { - sandbox.restore(); - coreMocks.restore(); - }); - - describe("when created", () => { - it("should pass admin Api plugin to Core", async () => { - new ProgrammaticServer(); - expect(coreMocks.stubs.Constructor.mock.calls[0][0].plugins[0]).toEqual(AdminApi); - }); - }); - - describe("start method", () => { - it("should init Core with provided options", async () => { - await cli.start(); - expect(coreMocks.stubs.instance.init.getCall(0).args[0]).toEqual({ - ...fooOptions, - behaviors: fooMocksPath - }); - }); - - it("should not init core if it was done before", async () => { - await cli.start(); - await cli.start(); - await cli.start(); - expect(coreMocks.stubs.instance.init.callCount).toEqual(1); - }); - - it("should start core", async () => { - await cli.start(); - expect(coreMocks.stubs.instance.start.callCount).toEqual(1); - }); - - it("should resolve with ProgrammaticServer instance", async () => { - const instance = await cli.start(); - expect(instance).toEqual(cli); - }); - - it("should emit a watch-reload event when core emits a load:mocks event", async () => { - await cli.start(); - coreMocks.stubs.instance.onChangeSettings.getCall(0).args[0](); - expect(coreMocks.stubs.instance._eventEmitter.emit.getCall(0).args[0]).toEqual( - "watch-reload" - ); - }); - }); - - describe("stop method", () => { - it("should stop core", async () => { - await cli.stop(); - expect(coreMocks.stubs.instance.stop.callCount).toEqual(1); - }); - }); - - describe("switchWatch method", () => { - it("should set watch state as false if called with false", async () => { - await cli.switchWatch(false); - expect(coreMocks.stubs.instance.settings.set.getCall(0).args).toEqual(["watch", false]); - }); - - it("should set watch state as true if called with true", async () => { - await cli.switchWatch(true); - expect(coreMocks.stubs.instance.settings.set.getCall(0).args).toEqual(["watch", true]); - }); - }); - - describe("behaviors getter", () => { - it("should return core behaviors", async () => { - expect(cli.behaviors).toEqual(coreMocks.stubs.instance.behaviors); - }); - }); - - describe("watchEnabled getter", () => { - it("should return watch setting state", async () => { - coreMocks.stubs.instance.settings.get.returns(false); - expect(cli.watchEnabled).toEqual(false); - }); - }); - - describe("error getter", () => { - it("should return core serverError", async () => { - expect(cli.error).toEqual(coreMocks.stubs.instance.serverError); - }); - }); - - describe("events getter", () => { - it("should return core _eventEmitter", async () => { - expect(cli.events).toEqual(coreMocks.stubs.instance._eventEmitter); - }); - }); -}); diff --git a/test/unit/api/Api.mocks.js b/test/unit/api/Api.mocks.js deleted file mode 100644 index eea29cf..0000000 --- a/test/unit/api/Api.mocks.js +++ /dev/null @@ -1,40 +0,0 @@ -/* -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../lib/api/Api"); - -const Api = require("../../../lib/api/Api"); - -const Mock = class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - router: this._sandbox.stub() - }; - - Api.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: Api, - instance: this._stubs - }; - } - - restore() { - this._sandbox.restore(); - } -}; - -module.exports = Mock; diff --git a/test/unit/cli/Cli.mocks.js b/test/unit/cli/Cli.mocks.js deleted file mode 100644 index d60c615..0000000 --- a/test/unit/cli/Cli.mocks.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../lib/cli/Cli"); - -const Cli = require("../../../lib/cli/Cli"); - -class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - start: this._sandbox.stub().resolves(), - stopListeningServerWatch: this._sandbox.stub() - }; - - Cli.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: Cli, - instance: this._stubs - }; - } - - restore() { - this._sandbox.restore(); - } -} - -module.exports = Mock; diff --git a/test/unit/cli/Cli.spec.js b/test/unit/cli/Cli.spec.js deleted file mode 100644 index 650cc99..0000000 --- a/test/unit/cli/Cli.spec.js +++ /dev/null @@ -1,326 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -const CoreMocks = require("../core/Core.mocks.js"); -const InquirerMocks = require("./Inquirer.mocks.js"); - -const Cli = require("../../../lib/cli/Cli"); - -describe("Cli", () => { - let sandbox; - let inquirerMocks; - let coreMocks; - let coreInstance; - let cli; - - beforeEach(async () => { - sandbox = sinon.createSandbox(); - inquirerMocks = new InquirerMocks(); - coreMocks = new CoreMocks(); - coreInstance = coreMocks.stubs.instance; - cli = new Cli(coreInstance); - expect.assertions(1); - coreInstance.settings.get.withArgs("cli").returns(true); - coreInstance.settings.get.withArgs("log").returns("info"); - await cli.init(); - }); - - afterEach(() => { - sandbox.restore(); - inquirerMocks.restore(); - coreMocks.restore(); - }); - - describe("when created", () => { - it("should have added cli custom setting to core", () => { - coreMocks.reset(); - cli = new Cli(coreInstance); - expect(coreInstance.addCustomSetting.getCall(0).args[0].name).toEqual("cli"); - }); - }); - - describe("when initializated", () => { - it("should call to create an inquirer", () => { - expect(inquirerMocks.stubs.Inquirer.callCount).toEqual(1); - }); - - it("not be initializated if cli setting is disabled", async () => { - inquirerMocks.reset(); - coreInstance.settings.get.withArgs("cli").returns(false); - cli = new Cli(coreInstance); - await cli.init(); - expect(inquirerMocks.stubs.Inquirer.callCount).toEqual(0); - }); - - it("should save current log log level", () => { - expect(cli._logLevel).toEqual("info"); - }); - - it("should display main menu when core settings are changed and current screen is main menu", async () => { - await cli.start(); - expect.assertions(2); - coreInstance.onChangeSettings.getCall(0).args[0](); - expect(inquirerMocks.stubs.inquirer.inquire.callCount).toEqual(2); - expect(inquirerMocks.stubs.inquirer.inquire.getCall(1).args[0]).toEqual("main"); - }); - - it("should not display main menu when core settings are changed and current screen is not main menu", async () => { - await cli.start(); - expect.assertions(2); - cli._changeCurrentBehavior(); - coreInstance.onChangeSettings.getCall(0).args[0](); - expect(inquirerMocks.stubs.inquirer.inquire.callCount).toEqual(2); - expect(inquirerMocks.stubs.inquirer.inquire.getCall(1).args[0]).toEqual("behavior"); - }); - }); - - describe("when started", () => { - beforeEach(async () => { - await cli.start(); - }); - - it("should do nothing if it cli has not been inited", async () => { - inquirerMocks.reset(); - cli = new Cli(coreInstance); - coreInstance.settings.get.withArgs("cli").returns(true); - await cli.start(); - expect(inquirerMocks.stubs.inquirer.inquire.callCount).toEqual(0); - }); - - it("should do nothing if it cli is disabled", async () => { - inquirerMocks.reset(); - cli = new Cli(coreInstance); - coreInstance.settings.get.withArgs("cli").returns(false); - await cli.init(); - await cli.start(); - expect(inquirerMocks.stubs.inquirer.inquire.callCount).toEqual(0); - }); - - it("should silent core tracer", () => { - expect(coreInstance.settings.set.getCall(0).args).toEqual(["log", "silent"]); - }); - - it("should display inquirer", () => { - expect(inquirerMocks.stubs.inquirer.inquire.callCount).toEqual(1); - }); - }); - - describe('when user selects "Change current behavior"', () => { - const fooSelectedBehavior = "foo behavior"; - beforeEach(() => { - inquirerMocks.stubs.inquirer.inquire.onCall(0).resolves("behavior"); - inquirerMocks.stubs.inquirer.inquire.onCall(1).resolves(fooSelectedBehavior); - }); - - it("should call to clear screen", async () => { - await cli.start(); - expect(inquirerMocks.stubs.inquirer.clearScreen.callCount).toEqual(3); - }); - - it("should call to display behavior menu", async () => { - await cli.start(); - expect(inquirerMocks.stubs.inquirer.inquire.getCall(1).args[0]).toEqual("behavior"); - }); - - it("should set current selected behavior", async () => { - await cli.start(); - expect(coreInstance.settings.set.getCall(1).args).toEqual(["behavior", fooSelectedBehavior]); - }); - - it("should not filter current behaviors if there is no input", async () => { - const fooBehaviorsNames = ["foo1", "foo2"]; - inquirerMocks.stubs.inquirer.inquireFake.executeCb(true); - inquirerMocks.stubs.inquirer.inquireFake.returns(null); - inquirerMocks.stubs.inquirer.inquire - .onCall(0) - .callsFake(inquirerMocks.stubs.inquirer.inquireFake.runner); - coreInstance.behaviors.names = fooBehaviorsNames; - await cli._changeCurrentBehavior(); - expect(coreInstance.settings.set.getCall(0).args).toEqual(["behavior", fooBehaviorsNames]); - }); - - it("should not filter current features if current input is empty", async () => { - const fooBehaviorsNames = ["foo1", "foo2"]; - inquirerMocks.stubs.inquirer.inquireFake.executeCb(true); - inquirerMocks.stubs.inquirer.inquireFake.returns([]); - inquirerMocks.stubs.inquirer.inquire - .onCall(0) - .callsFake(inquirerMocks.stubs.inquirer.inquireFake.runner); - coreInstance.behaviors.names = fooBehaviorsNames; - await cli._changeCurrentBehavior(); - expect(coreInstance.settings.set.getCall(0).args).toEqual(["behavior", fooBehaviorsNames]); - }); - - it("should filter current behaviors and returns all that includes current input", async () => { - const fooBehaviorsNames = ["foo1", "foo2", "not-included"]; - inquirerMocks.stubs.inquirer.inquireFake.executeCb(true); - inquirerMocks.stubs.inquirer.inquireFake.returns("foo"); - inquirerMocks.stubs.inquirer.inquire - .onCall(0) - .callsFake(inquirerMocks.stubs.inquirer.inquireFake.runner); - coreInstance.behaviors.names = fooBehaviorsNames; - await cli._changeCurrentBehavior(); - expect(coreInstance.settings.set.getCall(0).args).toEqual(["behavior", ["foo1", "foo2"]]); - }); - }); - - describe('when user selects "Change Delay"', () => { - const fooDelay = 2000; - beforeEach(() => { - inquirerMocks.stubs.inquirer.inquire.onCall(0).resolves("delay"); - inquirerMocks.stubs.inquirer.inquire.onCall(1).resolves(fooDelay); - }); - - it("should call to clear screen", async () => { - await cli.start(); - expect(inquirerMocks.stubs.inquirer.clearScreen.callCount).toEqual(3); - }); - - it("should call to display delay menu", async () => { - await cli.start(); - expect(inquirerMocks.stubs.inquirer.inquire.getCall(1).args[0]).toEqual("delay"); - }); - - it("should set current selected feature", async () => { - await cli.start(); - expect(coreInstance.settings.set.getCall(1).args).toEqual(["delay", fooDelay]); - }); - - it("should not pass delay validation if user introduce non numeric characters", async () => { - expect(cli._questions.delay.validate(cli._questions.delay.filter("asdads"))).toEqual(false); - }); - - it("should pass delay validation if user introduce numeric characters", async () => { - expect(cli._questions.delay.validate(cli._questions.delay.filter("123230"))).toEqual(true); - }); - }); - - describe('when user selects "Restart server"', () => { - beforeEach(() => { - inquirerMocks.stubs.inquirer.inquire.onCall(0).resolves("restart"); - }); - - it("should call to restart server", async () => { - await cli.start(); - expect(coreInstance.restart.callCount).toEqual(1); - }); - }); - - describe('when user selects "Change log level"', () => { - const fooLogLevel = "foo-level"; - - beforeEach(() => { - inquirerMocks.stubs.inquirer.inquire.onCall(0).resolves("logLevel"); - inquirerMocks.stubs.inquirer.inquire.onCall(1).resolves(fooLogLevel); - }); - - it("should call to display log level menu", async () => { - await cli.start(); - expect(inquirerMocks.stubs.inquirer.inquire.getCall(1).args[0]).toEqual("logLevel"); - }); - - it("should set current log level with the result of log level question", async () => { - await cli.start(); - expect(cli._logLevel).toEqual(fooLogLevel); - }); - }); - - describe('when user selects "Switch watch"', () => { - beforeEach(() => { - inquirerMocks.stubs.inquirer.inquire.onCall(0).resolves("watch"); - }); - - it("should call to switchWatch server method, passing true if it was disabled", async () => { - coreInstance.settings.get.withArgs("watch").returns(false); - await cli.start(); - expect(coreInstance.settings.set.getCall(1).args).toEqual(["watch", true]); - }); - - it("should call to switchWatch server method, passing false if it was enabled", async () => { - coreInstance.settings.get.withArgs("watch").returns(true); - await cli.start(); - expect(coreInstance.settings.set.getCall(1).args).toEqual(["watch", false]); - }); - }); - - describe('when user selects "Display server logs"', () => { - beforeEach(() => { - inquirerMocks.stubs.inquirer.inquire.onCall(0).resolves("logs"); - }); - - it("should call to logsMode CLI method", async () => { - await cli.start(); - expect(inquirerMocks.stubs.inquirer.logsMode.callCount).toEqual(1); - }); - - it("should call to set current log level after logs mode is enabled", async () => { - const fooLogLevel = "foo-log-level"; - coreMocks.reset(); - cli = new Cli(coreInstance); - coreInstance.settings.get.withArgs("cli").returns(true); - coreInstance.settings.get.withArgs("log").returns(fooLogLevel); - await cli.init(); - inquirerMocks.stubs.inquirer.logsMode.executeCb(true); - await cli.start(); - expect(coreInstance.settings.set.getCall(1).args).toEqual(["log", fooLogLevel]); - }); - }); - - describe("when printing header", () => { - it("should print it as first element if server has an error", async () => { - const fooServerErrorMessage = "foo server error"; - const fooServerError = new Error(fooServerErrorMessage); - coreInstance.serverError = fooServerError; - await cli.start(); - expect(cli._header()[0]).toEqual(expect.stringContaining(fooServerErrorMessage)); - }); - - it("should print server url as first element if server has not an error", async () => { - coreInstance.serverError = null; - await cli.start(); - expect(cli._header()[0]).toEqual(expect.stringContaining("Mocks server listening")); - }); - }); - - describe("when server emits load:mocks event watch has reloaded the features", () => { - beforeEach(async () => { - await cli.start(); - coreInstance.onLoadMocks.getCall(0).args[0](); - }); - - it("should remove all base-cli listeners", async () => { - expect(inquirerMocks.stubs.inquirer.removeListeners.callCount).toEqual(1); - }); - - it("should exit logs mode", async () => { - expect(inquirerMocks.stubs.inquirer.exitLogsMode.callCount).toEqual(1); - }); - }); - - describe("stopListeningServerWatch method", () => { - it("should remove load:mocks listener if cli has been started", async () => { - const spy = sandbox.spy(); - coreInstance.onLoadMocks.returns(spy); - await cli.start(); - cli.stopListeningServerWatch(); - expect(spy.callCount).toEqual(1); - }); - - it("should not remove load:mocks listener if cli has not been started", () => { - const spy = sandbox.spy(); - coreInstance.onLoadMocks.returns(spy); - cli.stopListeningServerWatch(); - expect(spy.callCount).toEqual(0); - }); - }); -}); diff --git a/test/unit/cli/Inquirer.mocks.js b/test/unit/cli/Inquirer.mocks.js deleted file mode 100644 index 17c010a..0000000 --- a/test/unit/cli/Inquirer.mocks.js +++ /dev/null @@ -1,82 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -const inquirer = require("../../../lib/cli/Inquirer"); - -class CallBackRunner { - constructor() { - this.runner = this.runner.bind(this); - this.executeCb = this.executeCb.bind(this); - this._execute = false; - this._returns = null; - } - - runner(eventName, cb) { - if (this._execute) { - if (cb) { - if (cb.source) { - return cb.source(null, this._returns); - } - return cb(); - } - return eventName(); - } - } - - executeCb(execute) { - this._execute = execute; - } - - returns(data) { - this._returns = data; - } -} - -class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - const logsModeFake = new CallBackRunner(); - const logsModeStub = this._sandbox.stub().callsFake(logsModeFake.runner); - logsModeStub.executeCb = logsModeFake.executeCb; - - const inquireFake = new CallBackRunner(); - - this._stubs = { - inquirer: { - removeListeners: this._sandbox.stub(), - exitLogsMode: this._sandbox.stub(), - clearScreen: this._sandbox.stub(), - inquire: this._sandbox.stub().resolves(), - inquireFake: inquireFake, - logsMode: logsModeStub - } - }; - - this._stubs.Inquirer = this._sandbox.stub(inquirer, "Inquirer").returns(this._stubs.inquirer); - } - - get stubs() { - return this._stubs; - } - - restore() { - this._sandbox.restore(); - } - - reset() { - this._sandbox.reset(); - } -} - -module.exports = Mock; diff --git a/test/unit/cli/Inquirer.spec.js b/test/unit/cli/Inquirer.spec.js deleted file mode 100644 index 0ef205d..0000000 --- a/test/unit/cli/Inquirer.spec.js +++ /dev/null @@ -1,275 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const inquirer = require("inquirer"); -const sinon = require("sinon"); -const chalk = require("chalk"); - -const Inquirer = require("../../../lib/cli/Inquirer").Inquirer; - -const fooQuestions = { - main: { - type: "list", - message: "Select action:", - name: "value", - choices: [ - { - name: "Option 1", - value: "option1" - } - ] - } -}; - -describe("Inquirer", () => { - let sandbox; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - }); - - afterEach(() => { - sandbox.restore(); - }); - - describe("when initing questions", () => { - it("should add an extra exit option to main menu", () => { - const cli = new Inquirer(fooQuestions); - expect(cli._questions.main.choices[2].name).toEqual("Exit"); - }); - - it("should not add an extra option if main question does not exists", () => { - const questionsWithoutMain = { notMain: fooQuestions.main }; - - const cli = new Inquirer(questionsWithoutMain); - expect(cli._questions.notMain.choices.length).toEqual(1); - }); - - describe("when quitMethod option is provided", () => { - it("should add it as an extra option to main menu choices", () => { - const fooQuitMethodName = "foo name"; - const cli = new Inquirer(fooQuestions, null, { - name: fooQuitMethodName, - action: () => {} - }); - expect(cli._questions.main.choices[2].name).toEqual(fooQuitMethodName); - }); - }); - }); - - describe("quit method", () => { - it("should call to exit process", () => { - sandbox.stub(process, "exit"); - const cli = new Inquirer(fooQuestions); - cli.quit(); - expect(process.exit.callCount).toEqual(1); - }); - - describe("when quitMethod option is provided", () => { - it("should call to provided quitMethod action", () => { - const fooQuitMethodAction = sandbox.spy(); - const cli = new Inquirer(fooQuestions, null, { - name: "foo name", - action: fooQuitMethodAction - }); - cli.quit(); - expect(fooQuitMethodAction.callCount).toEqual(1); - }); - }); - }); - - describe("clearScreen method", () => { - it("should write Clear screen characters in process stdout", () => { - sandbox.stub(process.stdout, "write"); - const cli = new Inquirer(fooQuestions); - cli.clearScreen(); - expect(process.stdout.write.calledWith("\x1Bc")).toEqual(true); - }); - - it("should print all strings returned by header method provided to constructor", () => { - const fooHeader = "foo header"; - sandbox.stub(process.stdout, "write"); - sandbox.stub(console, "log"); - const cli = new Inquirer(fooQuestions, () => [fooHeader]); - cli.clearScreen(); - expect(console.log.getCall(0).args[0]).toEqual(expect.stringContaining(fooHeader)); - }); - - it("should not print header if header option is set to false", () => { - const fooHeader = "foo header"; - sandbox.stub(process.stdout, "write"); - sandbox.stub(console, "log"); - const cli = new Inquirer(fooQuestions, () => [fooHeader]); - cli.clearScreen({ - header: false - }); - expect(console.log.getCalls().length).toEqual(0); - }); - }); - - describe("inquire method", () => { - it("should return the inquirer returned value", async () => { - expect.assertions(1); - const fooValue = "foo-value"; - sandbox - .stub(inquirer, "prompt") - .usingPromise() - .resolves({ value: fooValue }); - const cli = new Inquirer(fooQuestions); - expect(await cli.inquire("main")).toEqual(fooValue); - }); - - it("should call to inquire prompt method, passing the correspondant question", async () => { - expect.assertions(1); - sandbox - .stub(inquirer, "prompt") - .usingPromise() - .resolves({}); - const cli = new Inquirer(fooQuestions); - await cli.inquire("main"); - expect(inquirer.prompt.getCall(0).args[0].message).toEqual("Select action:"); - }); - - it("should call to remove keypress listener after inquire has finished", async () => { - expect.assertions(1); - sandbox - .stub(inquirer, "prompt") - .usingPromise() - .resolves({}); - const cli = new Inquirer(fooQuestions); - process.stdin.on("keypress", () => {}); - sandbox.stub(process.stdin, "removeListener"); - await cli.inquire("main"); - expect(process.stdin.removeListener.getCall(0).args[0]).toEqual("keypress"); - }); - - it('should call to quit method if inquired question is "main" and answer value is "quit"', async () => { - expect.assertions(1); - sandbox.stub(process, "exit"); - sandbox - .stub(inquirer, "prompt") - .usingPromise() - .resolves({ value: "quit" }); - const cli = new Inquirer(fooQuestions); - await cli.inquire("main"); - expect(process.exit.callCount).toEqual(1); - }); - }); - - describe("logs mode method", () => { - let fooKeyPresser; - let fakeRawMode = false; - - const FooKeyPresser = class FooKeyPresser { - constructor(key = "a") { - this._key = key; - this.handler = this.handler.bind(this); - } - - handler(eventName, callBack) { - this._callBack = callBack; - setTimeout(() => { - callBack(this._key); - }, 200); - } - - set key(keyToPress) { - this._key = keyToPress; - } - }; - - beforeEach(() => { - fooKeyPresser = new FooKeyPresser(); - sandbox.stub(process, "exit"); - sandbox.stub(process.stdin, "resume"); - sandbox.stub(process.stdin, "removeListener"); - sandbox.stub(process.stdin, "setEncoding"); - sandbox.stub(process.stdout, "write"); - sandbox.stub(process.stdin, "on").callsFake(fooKeyPresser.handler); - sandbox.spy(console, "log"); - }); - - afterEach(() => { - if (fakeRawMode) { - delete process.stdin.setRawMode; - } - }); - - it("should call to clear Screen", async () => { - const cli = new Inquirer(fooQuestions); - await cli.logsMode(); - expect(process.stdout.write.calledWith("\x1Bc")).toEqual(true); - }); - - it("should print that logs mode started", async () => { - const cli = new Inquirer(fooQuestions); - await cli.logsMode(); - expect( - console.log.calledWith( - chalk.blue("Displaying logs. Press any key to display main menu again") - ) - ).toEqual(true); - }); - - it("should call to provided callback", async () => { - const cli = new Inquirer(fooQuestions); - const fooCallBack = sinon.spy(); - await cli.logsMode(fooCallBack); - expect(fooCallBack.callCount).toEqual(1); - }); - - it("should call to exit process if pressed key is equal to CTRL+C", async () => { - fooKeyPresser.key = "\u0003"; - const cli = new Inquirer(fooQuestions); - await cli.logsMode(); - expect(process.exit.callCount).toEqual(1); - }); - - it("should not call to setRawMode if process has it available", async () => { - if (process.stdin.setRawMode) { - sandbox.stub(process.stdin, "setRawMode"); - } else { - fakeRawMode = true; - process.stdin.setRawMode = sandbox.stub(); - } - const cli = new Inquirer(fooQuestions); - await cli.logsMode(); - expect(process.stdin.setRawMode.callCount).toEqual(2); - }); - - it("should not call to setRawMode if process has not it available", async () => { - if (process.stdin.setRawMode) { - sandbox.stub(process.stdin, "setRawMode"); - } else { - fakeRawMode = true; - process.stdin.setRawMode = sandbox.stub(); - } - const originalStdin = process.stdin; - process.stdin.setRawMode = false; - const cli = new Inquirer(fooQuestions); - await cli.logsMode(); - process.stdin = originalStdin; - expect(process.stdin.setRawMode.callCount).toEqual(undefined); - }); - }); - - describe("exitLogsMode method", () => { - beforeEach(() => { - sandbox.stub(process.stdin, "removeListener"); - }); - - it("should do nothing if logs mode is not currently enabled", async () => { - const cli = new Inquirer(fooQuestions); - await cli.exitLogsMode(); - expect(process.stdin.removeListener.callCount).toEqual(0); - }); - }); -}); diff --git a/test/unit/core/Core.spec.js b/test/unit/core/Core.spec.js deleted file mode 100644 index b26d6cd..0000000 --- a/test/unit/core/Core.spec.js +++ /dev/null @@ -1,223 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const sinon = require("sinon"); - -const SettingsMocks = require("./settings/Settings.mocks.js"); -const MocksMocks = require("./mocks/Mocks.mocks.js"); -const ServerMocks = require("./server/Server.mocks.js"); -const PluginsMocks = require("./Plugins.mocks.js"); - -const Core = require("../../../lib/core/Core"); -const tracer = require("../../../lib/core/tracer"); - -describe("Settings", () => { - let sandbox; - let settingsMocks; - let settingsInstance; - let mocksMocks; - let mocksInstance; - let serverMocks; - let serverInstance; - let pluginsMocks; - let pluginsInstance; - let core; - - beforeEach(async () => { - sandbox = sinon.createSandbox(); - settingsMocks = new SettingsMocks(); - settingsInstance = settingsMocks.stubs.instance; - mocksMocks = new MocksMocks(); - mocksInstance = mocksMocks.stubs.instance; - serverMocks = new ServerMocks(); - serverInstance = serverMocks.stubs.instance; - pluginsMocks = new PluginsMocks(); - pluginsInstance = pluginsMocks.stubs.instance; - - core = new Core(); - await core.init(); - }); - - afterEach(() => { - sandbox.restore(); - settingsMocks.restore(); - mocksMocks.restore(); - serverMocks.restore(); - pluginsMocks.restore(); - }); - - describe("init method", () => { - it("should init only once", async () => { - await core.init(); - await core.init(); - expect(pluginsInstance.register.callCount).toEqual(1); - }); - - it("should register plugins", () => { - expect(pluginsInstance.register.callCount).toEqual(1); - }); - - it("should init settings with received options", async () => { - const fooOptions = { - foo: "foo" - }; - core = new Core(); - await core.init(fooOptions); - expect(settingsInstance.init.calledWith(fooOptions)).toEqual(true); - }); - - it("should init mocks", () => { - expect(mocksInstance.init.callCount).toEqual(1); - }); - - it("should init server", () => { - expect(serverInstance.init.callCount).toEqual(1); - }); - - it("should init plugins", () => { - expect(pluginsInstance.init.callCount).toEqual(1); - }); - }); - - describe("start method", () => { - it("should init if it has not been done before", async () => { - pluginsMocks.reset(); - core = new Core(); - await core.start(); - expect(pluginsInstance.register.callCount).toEqual(1); - }); - - it("should not init if it has been done before", async () => { - await core.start(); - expect(pluginsInstance.register.callCount).toEqual(1); - }); - - it("should start mocks", async () => { - await core.start(); - expect(mocksInstance.start.callCount).toEqual(1); - }); - - it("should start server", async () => { - await core.start(); - expect(serverInstance.start.callCount).toEqual(1); - }); - - it("should start plugins", async () => { - await core.start(); - expect(pluginsInstance.start.callCount).toEqual(1); - }); - - it("should start plugins only once", async () => { - core.start(); - core.start(); - core.start(); - await core.start(); - expect(pluginsInstance.start.callCount).toEqual(1); - }); - }); - - describe("addCustomRouter method", () => { - it("should add custom router to server", () => { - core.addCustomRouter(); - expect(serverInstance.addCustomRouter.callCount).toEqual(1); - }); - }); - - describe("addCustomSetting method", () => { - it("should add custom setting to settings", () => { - core.addCustomSetting(); - expect(settingsInstance.addCustom.callCount).toEqual(1); - }); - }); - - describe("onLoadMocks method", () => { - it("should add listener to eventEmitter", () => { - const spy = sandbox.spy(); - core.onLoadMocks(spy); - core._eventEmitter.emit("load:mocks"); - expect(spy.callCount).toEqual(1); - }); - - it("should return a function to remove listener", () => { - expect.assertions(2); - const spy = sandbox.spy(); - const removeCallback = core.onLoadMocks(spy); - core._eventEmitter.emit("load:mocks"); - expect(spy.callCount).toEqual(1); - removeCallback(); - core._eventEmitter.emit("load:mocks"); - expect(spy.callCount).toEqual(1); - }); - }); - - describe("onChangeSettings method", () => { - it("should add listener to eventEmitter", () => { - const spy = sandbox.spy(); - core.onChangeSettings(spy); - core._eventEmitter.emit("change:settings"); - expect(spy.callCount).toEqual(1); - }); - - it("should return a function to remove listener", () => { - expect.assertions(2); - const spy = sandbox.spy(); - const removeCallback = core.onChangeSettings(spy); - core._eventEmitter.emit("change:settings"); - expect(spy.callCount).toEqual(1); - removeCallback(); - core._eventEmitter.emit("change:settings"); - expect(spy.callCount).toEqual(1); - }); - }); - - describe("stop method", () => { - it("should stop server", async () => { - await core.stop(); - expect(serverInstance.stop.callCount).toEqual(1); - }); - }); - - describe("restart method", () => { - it("should restart server", async () => { - await core.restart(); - expect(serverInstance.restart.callCount).toEqual(1); - }); - }); - - describe("tracer getter", () => { - it("should return tracer instance", () => { - expect(core.tracer).toEqual(tracer); - }); - }); - - describe("serverError getter", () => { - it("should return server error", () => { - expect(core.serverError).toEqual(serverInstance.error); - }); - }); - - describe("settings getter", () => { - it("should return settings", () => { - expect(core.settings).toEqual(settingsInstance); - }); - }); - - describe("behaviors getter", () => { - it("should return mocks behaviors", () => { - expect(core.behaviors).toEqual(mocksInstance.behaviors); - }); - }); - - describe("features getter", () => { - it("should return mocks behaviors", () => { - expect(core.features).toEqual(mocksInstance.behaviors); - }); - }); -}); diff --git a/test/unit/core/Plugins.mocks.js b/test/unit/core/Plugins.mocks.js deleted file mode 100644 index 2ec9255..0000000 --- a/test/unit/core/Plugins.mocks.js +++ /dev/null @@ -1,47 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../lib/core/Plugins"); - -const Plugins = require("../../../lib/core/Plugins"); - -class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - init: this._sandbox.stub(), - register: this._sandbox.stub(), - start: this._sandbox.stub().resolves() - }; - - Plugins.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: Plugins, - instance: this._stubs - }; - } - - restore() { - this._sandbox.restore(); - } - - reset() { - this._sandbox.reset(); - } -} - -module.exports = Mock; diff --git a/test/unit/core/Plugins.spec.js b/test/unit/core/Plugins.spec.js deleted file mode 100644 index fdf9d1a..0000000 --- a/test/unit/core/Plugins.spec.js +++ /dev/null @@ -1,265 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const sinon = require("sinon"); - -const CoreMocks = require("./Core.mocks.js"); - -const Plugins = require("../../../lib/core/Plugins"); -const tracer = require("../../../lib/core/tracer"); - -describe("Settings", () => { - let sandbox; - let coreMocks; - let coreInstance; - let plugins; - - beforeEach(async () => { - sandbox = sinon.createSandbox(); - sandbox.stub(tracer, "verbose"); - sandbox.stub(tracer, "debug"); - sandbox.stub(tracer, "error"); - sandbox.spy(console, "log"); - coreMocks = new CoreMocks(); - coreInstance = coreMocks.stubs.instance; - }); - - afterEach(() => { - sandbox.restore(); - coreMocks.restore(); - }); - - describe("register method", () => { - it("should do nothing if there are no plugins to register", async () => { - plugins = new Plugins(null, coreInstance); - await plugins.register(); - expect(tracer.verbose.calledWith("Registered 0 plugins")).toEqual(true); - }); - - it("should register object plugins", async () => { - const fooPlugin = {}; - plugins = new Plugins([fooPlugin], coreInstance); - await plugins.register(); - expect(tracer.verbose.calledWith("Registered 1 plugins")).toEqual(true); - }); - - it("should not register strings as plugins", async () => { - expect.assertions(2); - plugins = new Plugins(["foo"], coreInstance); - await plugins.register(); - expect(console.log.calledWith("Error registering plugin")).toEqual(true); - expect(tracer.verbose.calledWith("Registered 0 plugins")).toEqual(true); - }); - - it("should not register booleans as plugins", async () => { - expect.assertions(2); - plugins = new Plugins([true], coreInstance); - await plugins.register(); - expect(console.log.calledWith("Error registering plugin")).toEqual(true); - expect(tracer.verbose.calledWith("Registered 0 plugins")).toEqual(true); - }); - - it("should register function plugins executing them passing the core", async () => { - expect.assertions(3); - const fooPlugin = sinon.spy(); - plugins = new Plugins([fooPlugin], coreInstance); - await plugins.register(); - expect(fooPlugin.calledWith(coreInstance)).toEqual(true); - expect(fooPlugin.callCount).toEqual(1); - expect(tracer.verbose.calledWith("Registered 1 plugins")).toEqual(true); - }); - - it("should register class plugins, instantiating them passing the core", async () => { - expect.assertions(3); - let instantiated = false; - let receivedCore; - class FooPlugin { - constructor(core) { - console.log("Created class"); - receivedCore = core; - instantiated = true; - } - } - plugins = new Plugins([FooPlugin], coreInstance); - await plugins.register(); - expect(receivedCore).toEqual(coreInstance); - expect(instantiated).toEqual(true); - expect(tracer.verbose.calledWith("Registered 1 plugins")).toEqual(true); - }); - - it("should not register class plugins if class throw an error when being created", async () => { - expect.assertions(2); - class FooPlugin { - constructor() { - throw new Error(); - } - } - plugins = new Plugins([FooPlugin], coreInstance); - await plugins.register(); - expect(console.log.calledWith("Error registering plugin")).toEqual(true); - expect(tracer.verbose.calledWith("Registered 0 plugins")).toEqual(true); - }); - - it("should trace the total number of registered plugins", async () => { - expect.assertions(2); - class FooPlugin { - constructor() { - throw new Error(); - } - } - class FooPlugin2 {} - plugins = new Plugins( - [FooPlugin, FooPlugin2, () => {}, true, false, "foo", { foo: "foo" }], - coreInstance - ); - await plugins.register(); - expect(console.log.calledWith("Error registering plugin")).toEqual(true); - expect(tracer.verbose.calledWith("Registered 3 plugins")).toEqual(true); - }); - }); - - describe("init method", () => { - it("should do nothing if there are no plugins to register", async () => { - plugins = new Plugins(null, coreInstance); - await plugins.register(); - await plugins.init(); - expect(tracer.verbose.calledWith("Initializated 0 plugins")).toEqual(true); - }); - - it("should init object plugins with an init property", async () => { - expect.assertions(2); - const fooPlugin = { - init: sinon.spy() - }; - plugins = new Plugins([fooPlugin], coreInstance); - await plugins.register(); - await plugins.init(); - expect(fooPlugin.init.callCount).toEqual(1); - expect(tracer.verbose.calledWith("Initializated 1 plugins")).toEqual(true); - }); - - it("should accept init methods non returning a Promise", async () => { - expect.assertions(1); - const fooPlugin = { - init: () => true - }; - const fooPlugin2 = { - init: () => Promise.resolve() - }; - plugins = new Plugins([fooPlugin, fooPlugin2], coreInstance); - await plugins.register(); - await plugins.init(); - expect(tracer.verbose.calledWith("Initializated 2 plugins")).toEqual(true); - }); - - it("should catch init method errors", async () => { - expect.assertions(1); - const fooPlugin = { - init: () => { - throw new Error(); - } - }; - const fooPlugin2 = { - init: () => Promise.resolve() - }; - const fooPlugin3 = { - init: () => Promise.resolve() - }; - plugins = new Plugins([fooPlugin, fooPlugin2, fooPlugin3], coreInstance); - await plugins.register(); - await plugins.init(); - expect(tracer.verbose.calledWith("Initializated 2 plugins")).toEqual(true); - }); - - it("should accept plugins with no init method", async () => { - expect.assertions(1); - const fooPlugin = {}; - const fooPlugin2 = { - init: () => Promise.resolve() - }; - const fooPlugin3 = { - init: () => Promise.resolve() - }; - plugins = new Plugins([fooPlugin, fooPlugin2, fooPlugin3], coreInstance); - await plugins.register(); - await plugins.init(); - expect(tracer.verbose.calledWith("Initializated 2 plugins")).toEqual(true); - }); - }); - - describe("start method", () => { - it("should do nothing if there are no plugins to register", async () => { - plugins = new Plugins(null, coreInstance); - await plugins.register(); - await plugins.start(); - expect(tracer.verbose.calledWith("Started 0 plugins")).toEqual(true); - }); - - it("should start object plugins with an init property", async () => { - expect.assertions(2); - const fooPlugin = { - start: sinon.spy() - }; - plugins = new Plugins([fooPlugin], coreInstance); - await plugins.register(); - await plugins.start(); - expect(fooPlugin.start.callCount).toEqual(1); - expect(tracer.verbose.calledWith("Started 1 plugins")).toEqual(true); - }); - - it("should accept start methods non returning a Promise", async () => { - expect.assertions(1); - const fooPlugin = { - start: () => true - }; - const fooPlugin2 = { - start: () => Promise.resolve() - }; - plugins = new Plugins([fooPlugin, fooPlugin2], coreInstance); - await plugins.register(); - await plugins.start(); - expect(tracer.verbose.calledWith("Started 2 plugins")).toEqual(true); - }); - - it("should catch start method errors", async () => { - expect.assertions(1); - const fooPlugin = { - start: () => { - throw new Error(); - } - }; - const fooPlugin2 = { - start: () => Promise.resolve() - }; - const fooPlugin3 = { - start: () => Promise.resolve() - }; - plugins = new Plugins([fooPlugin, fooPlugin2, fooPlugin3], coreInstance); - await plugins.register(); - await plugins.start(); - expect(tracer.verbose.calledWith("Started 2 plugins")).toEqual(true); - }); - - it("should accept plugins with no start method", async () => { - expect.assertions(1); - const fooPlugin = {}; - const fooPlugin2 = { - start: () => Promise.resolve() - }; - const fooPlugin3 = { - start: () => Promise.resolve() - }; - plugins = new Plugins([fooPlugin, fooPlugin2, fooPlugin3], coreInstance); - await plugins.register(); - await plugins.start(); - expect(tracer.verbose.calledWith("Started 2 plugins")).toEqual(true); - }); - }); -}); diff --git a/test/unit/core/mocks/Behavior.spec.js b/test/unit/core/mocks/Behavior.spec.js deleted file mode 100644 index 47a52d2..0000000 --- a/test/unit/core/mocks/Behavior.spec.js +++ /dev/null @@ -1,304 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -jest.mock("route-parser"); - -const routeParser = require("route-parser"); - -const Behavior = require("../../../../lib/core/mocks/Behavior"); - -describe("Behavior", () => { - const fooFunctionResponse = () => {}; - const fooBehaviorData = [ - { - url: "/api/foo/foo-uri", - method: "GET", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - }, - { - url: "/api/foo/foo-uri-2", - method: "POST", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - }, - { - url: "/api/foo/foo-uri-3", - method: "POST", - response: fooFunctionResponse - } - ]; - - const fooExtendedData = [ - { - url: "/api/foo/foo-uri-2", - method: "POST", - response: { - status: 500, - body: { - fooPropertyExtended: "foo-extended" - } - } - }, - { - url: "/api/foo/foo-uri-4", - method: "POST", - response: { - status: 200, - body: {} - } - } - ]; - - beforeEach(() => { - routeParser.mockImplementation(() => "foo-route-parser"); - expect.assertions(1); - }); - - describe("methods method", () => { - it("should return an object containing provided fixtures grouped by methods", () => { - const behavior = new Behavior(fooBehaviorData); - expect(behavior.methods).toEqual({ - GET: { - "/api/foo/foo-uri": { - route: "foo-route-parser", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - } - }, - POST: { - "/api/foo/foo-uri-2": { - route: "foo-route-parser", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - }, - "/api/foo/foo-uri-3": { - route: "foo-route-parser", - response: fooFunctionResponse - } - } - }); - }); - }); - - describe("fixtures method", () => { - it("should return an array containing provided fixtures", () => { - const behavior = new Behavior(fooBehaviorData); - expect(behavior.fixtures).toEqual([ - { - url: "/api/foo/foo-uri", - method: "GET", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - }, - { - url: "/api/foo/foo-uri-2", - method: "POST", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - }, - { - url: "/api/foo/foo-uri-3", - method: "POST", - response: "function" - } - ]); - }); - }); - - describe("totalFixtures method", () => { - it("should return the total number of fixtures", () => { - const behavior = new Behavior(fooBehaviorData); - expect(behavior.totalFixtures).toEqual(3); - }); - }); - - describe("extend method", () => { - it("should leave original Behavior methods without modification", () => { - const behavior = new Behavior(fooBehaviorData); - behavior.extend(fooExtendedData); - expect(behavior.methods).toEqual({ - GET: { - "/api/foo/foo-uri": { - route: "foo-route-parser", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - } - }, - POST: { - "/api/foo/foo-uri-2": { - route: "foo-route-parser", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - }, - "/api/foo/foo-uri-3": { - route: "foo-route-parser", - response: fooFunctionResponse - } - } - }); - }); - - it("should leave original Behavior fixtures without modification", () => { - const behavior = new Behavior(fooBehaviorData); - behavior.extend(fooExtendedData); - expect(behavior.fixtures).toEqual([ - { - url: "/api/foo/foo-uri", - method: "GET", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - }, - { - url: "/api/foo/foo-uri-2", - method: "POST", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - }, - { - url: "/api/foo/foo-uri-3", - method: "POST", - response: "function" - } - ]); - }); - - it("should return a new Behavior which methods will be an extension from current", () => { - const behavior = new Behavior(fooBehaviorData); - const extendedBehavior = behavior.extend(fooExtendedData); - expect(extendedBehavior.methods).toEqual({ - GET: { - "/api/foo/foo-uri": { - route: "foo-route-parser", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - } - }, - POST: { - "/api/foo/foo-uri-2": { - route: "foo-route-parser", - response: { - status: 500, - body: { - fooPropertyExtended: "foo-extended" - } - } - }, - "/api/foo/foo-uri-3": { - route: "foo-route-parser", - response: fooFunctionResponse - }, - "/api/foo/foo-uri-4": { - route: "foo-route-parser", - response: { - status: 200, - body: {} - } - } - } - }); - }); - - it("should return a new Behavior which fixtures will be an extension from current", () => { - const behavior = new Behavior(fooBehaviorData); - const extendedBehavior = behavior.extend(fooExtendedData); - expect(extendedBehavior.fixtures).toEqual([ - { - url: "/api/foo/foo-uri", - method: "GET", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - }, - { - url: "/api/foo/foo-uri-2", - method: "POST", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - }, - { - url: "/api/foo/foo-uri-3", - method: "POST", - response: "function" - }, - { - url: "/api/foo/foo-uri-2", - method: "POST", - response: { - status: 500, - body: { - fooPropertyExtended: "foo-extended" - } - } - }, - { - url: "/api/foo/foo-uri-4", - method: "POST", - response: { - status: 200, - body: {} - } - } - ]); - }); - }); -}); diff --git a/test/unit/core/mocks/Behaviors.mocks.js b/test/unit/core/mocks/Behaviors.mocks.js deleted file mode 100644 index db83e41..0000000 --- a/test/unit/core/mocks/Behaviors.mocks.js +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../../lib/core/mocks/Behaviors"); - -const Behaviors = require("../../../../lib/core/mocks/Behaviors"); - -class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - currentName: "foo-current-name", - current: {}, - init: this._sandbox.stub().resolves(), - start: this._sandbox.stub().resolves() - }; - - Behaviors.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: Behaviors, - instance: this._stubs - }; - } - - restore() { - this._sandbox.restore(); - } -} - -module.exports = Mock; diff --git a/test/unit/core/mocks/Behaviors.spec.js b/test/unit/core/mocks/Behaviors.spec.js deleted file mode 100644 index 876a696..0000000 --- a/test/unit/core/mocks/Behaviors.spec.js +++ /dev/null @@ -1,254 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); -const Boom = require("boom"); - -const FilesHandlerMocks = require("./FilesHandler.mocks.js"); -const CoreMocks = require("../Core.mocks.js"); - -const Behaviors = require("../../../../lib/core/mocks/Behaviors"); -const tracer = require("../../../../lib/core/tracer"); - -describe("Behaviors", () => { - const fooBoomError = new Error("foo boom error"); - let sandbox; - let coreMocks; - let coreInstance; - let filesHandlerMock; - let filesHandlerInstance; - let behaviors; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - sandbox.stub(Boom, "badData").returns(fooBoomError); - filesHandlerMock = new FilesHandlerMocks(); - filesHandlerInstance = filesHandlerMock.stubs.instance; - coreMocks = new CoreMocks(); - coreInstance = coreMocks.stubs.instance; - coreInstance.settings.get.withArgs("behavior").returns("behavior1"); - sandbox.stub(tracer, "warn"); - sandbox.stub(tracer, "silly"); - behaviors = new Behaviors( - filesHandlerInstance, - coreInstance.settings, - coreInstance._eventEmitter - ); - }); - - afterEach(() => { - sandbox.restore(); - filesHandlerMock.restore(); - coreMocks.restore(); - }); - - describe("when initializated", () => { - it("should set as current the first one behavior found if no behavior is defined", async () => { - coreInstance.settings.get.withArgs("behavior").returns(undefined); - await behaviors.init(); - expect(behaviors.currentName).toEqual("behavior1"); - }); - - it("should trace an error if selected behavior is not found in behaviors", async () => { - coreInstance.settings.get.withArgs("behavior").returns("foo"); - await behaviors.init(); - expect(tracer.warn.getCall(0).args[0]).toEqual( - expect.stringContaining('Defined behavior "foo" was not found') - ); - }); - }); - - describe("when core emits load:mocks", () => { - it("should process mocks again", async () => { - await behaviors.init(); - coreInstance._eventEmitter.on.getCall(0).args[1](); - expect(tracer.silly.callCount).toEqual(2); - }); - }); - - describe("when core emits a change:settings event", () => { - it("should set new behavior as current one if behavior has changed", async () => { - await behaviors.init(); - coreInstance._eventEmitter.on.getCall(1).args[1]({ - behavior: "behavior2" - }); - expect(behaviors.currentName).toEqual("behavior2"); - }); - - it("should do nothing if behavior has not changed", async () => { - await behaviors.init(); - coreInstance._eventEmitter.on.getCall(1).args[1]({}); - expect(behaviors.currentName).toEqual("behavior1"); - }); - }); - - describe("current setter", () => { - it("should throw an error if behavior to set is not found in behaviors", async () => { - await behaviors.init(); - try { - behaviors.current = "foo"; - } catch (err) { - expect(err).toEqual(fooBoomError); - } - }); - - it("should change the current selected behavior", async () => { - await behaviors.init(); - behaviors.current = "behavior2"; - expect(behaviors.current).toEqual({ - POST: { - "/api/foo/foo-uri-2": { - route: "foo-route-parser", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - } - } - }); - }); - }); - - describe("current getter", () => { - it("should return the current selected behavior", async () => { - await behaviors.init(); - expect(behaviors.current).toEqual({ - POST: { - "/api/foo/foo-uri": { - route: "foo-route-parser", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - } - } - }); - }); - - it("should return the first behavior if current was not set", async () => { - await behaviors.init(); - expect(behaviors.current).toEqual({ - POST: { - "/api/foo/foo-uri": { - route: "foo-route-parser", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - } - } - }); - }); - }); - - describe("totalBehaviors getter", () => { - it("should return the number of behaviors", async () => { - await behaviors.init(); - expect(behaviors.totalBehaviors).toEqual(2); - }); - }); - - describe("currentTotalFixtures getter", () => { - it("should return the total number of fixtures of currently selected behavior", async () => { - await behaviors.init(); - expect(behaviors.currentTotalFixtures).toEqual(1); - }); - }); - - describe("currentFromCollection getter", () => { - it("should return the current selected behavior in collection format", async () => { - await behaviors.init(); - expect(behaviors.currentFromCollection).toEqual({ - fixtures: [ - { - method: "GET", - response: { body: { fooProperty: "foo" }, status: 200 }, - url: "/api/foo/foo-uri" - } - ], - name: "behavior1" - }); - }); - }); - - describe("all getter", () => { - it("should return all behaviors", async () => { - await behaviors.init(); - expect(behaviors.all).toEqual({ - behavior1: { - POST: { - "/api/foo/foo-uri": { - response: { body: { fooProperty: "foo" }, status: 200 }, - route: "foo-route-parser" - } - } - }, - behavior2: { - POST: { - "/api/foo/foo-uri-2": { - response: { body: { fooProperty2: "foo2" }, status: 422 }, - route: "foo-route-parser" - } - } - } - }); - }); - }); - - describe("names getter", () => { - it("should return all behaviors names", async () => { - await behaviors.init(); - expect(behaviors.names).toEqual(["behavior1", "behavior2"]); - }); - }); - - describe("currentName getter", () => { - it("should return current behavior name", async () => { - coreInstance.settings.get.withArgs("behavior").returns("behavior2"); - await behaviors.init(); - expect(behaviors.currentName).toEqual("behavior2"); - }); - }); - - describe("collection getter", () => { - it("should return all behaviors in collection format", async () => { - await behaviors.init(); - expect(behaviors.collection).toEqual([ - { - fixtures: [ - { - method: "GET", - response: { body: { fooProperty: "foo" }, status: 200 }, - url: "/api/foo/foo-uri" - } - ], - name: "behavior1" - }, - { - fixtures: [ - { - method: "POST", - response: { body: { fooProperty2: "foo2" }, status: 422 }, - url: "/api/foo/foo-uri-2" - } - ], - name: "behavior2" - } - ]); - }); - }); -}); diff --git a/test/unit/core/mocks/FilesHandler.mocks.js b/test/unit/core/mocks/FilesHandler.mocks.js deleted file mode 100644 index cf906a1..0000000 --- a/test/unit/core/mocks/FilesHandler.mocks.js +++ /dev/null @@ -1,117 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../../lib/core/mocks/FilesHandler"); - -const FilesHandler = require("../../../../lib/core/mocks/FilesHandler"); - -const INITIAL_FILES = { - file1: { - behavior1: { - fixtures: [ - { - url: "/api/foo/foo-uri", - method: "GET", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - } - ], - totalFixtures: 1, - methods: { - POST: { - "/api/foo/foo-uri": { - route: "foo-route-parser", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - } - } - } - } - }, - file2: { - behavior2: { - fixtures: [ - { - url: "/api/foo/foo-uri-2", - method: "POST", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - } - ], - totalFixtures: 1, - methods: { - POST: { - "/api/foo/foo-uri-2": { - route: "foo-route-parser", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - } - } - } - } - }, - folder: { - folder2: { - file: { - fooProperty: "" - } - } - } -}; - -class Mock { - static get files() { - return INITIAL_FILES; - } - - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - files: INITIAL_FILES, - init: this._sandbox.stub().resolves(), - start: this._sandbox.stub().resolves() - }; - - FilesHandler.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: FilesHandler, - instance: this._stubs - }; - } - - restore() { - this._stubs.files = INITIAL_FILES; - this._sandbox.restore(); - } -} - -module.exports = Mock; diff --git a/test/unit/core/mocks/FilesHandler.spec.js b/test/unit/core/mocks/FilesHandler.spec.js deleted file mode 100644 index e3182cf..0000000 --- a/test/unit/core/mocks/FilesHandler.spec.js +++ /dev/null @@ -1,311 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const path = require("path"); -const sinon = require("sinon"); -const Boom = require("boom"); -const { cloneDeep } = require("lodash"); - -jest.mock("require-all"); - -const requireAll = require("require-all"); - -const LibsMocks = require("../../Libs.mocks.js"); -const CoreMocks = require("../Core.mocks.js"); - -const FilesHandler = require("../../../../lib/core/mocks/FilesHandler"); -const tracer = require("../../../../lib/core/tracer"); - -const wait = () => { - return new Promise(resolve => { - setTimeout(() => { - resolve(); - }, 1000); - }); -}; - -describe("Behaviors", () => { - const fooRequireCache = { - "foo-path": { - id: "foo-path", - children: { - "foo-path/foo-children": { - id: "foo-path/foo-children" - } - } - }, - "foo-path/foo-children": { - id: "foo-path/foo-children", - children: { - "foo-path/foo-children-2": { - id: "foo-path/foo-children-2" - } - } - }, - "foo-path/foo-children-2": { - id: "foo-path/foo-children-2", - children: { - "foo-children-3": { - id: "foo-children-3" - } - } - }, - "foo-not-children": { - id: "foo-not-children" - } - }; - - const fooFiles = { - file1: { - behavior1: { - fixtures: [ - { - url: "/api/foo/foo-uri", - method: "GET", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - } - ], - totalFixtures: 1, - methods: { - POST: { - "/api/foo/foo-uri": { - route: "foo-route-parser", - response: { - status: 200, - body: { - fooProperty: "foo" - } - } - } - } - } - } - }, - file2: { - behavior2: { - fixtures: [ - { - url: "/api/foo/foo-uri-2", - method: "POST", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - } - ], - totalFixtures: 1, - methods: { - POST: { - "/api/foo/foo-uri-2": { - route: "foo-route-parser", - response: { - status: 422, - body: { - fooProperty2: "foo2" - } - } - } - } - } - } - }, - folder: { - folder2: { - file: { - fooProperty: "" - } - } - } - }; - - const fooBoomError = new Error("foo boom error"); - let sandbox; - let coreMocks; - let coreInstance; - let requireCache; - let filesHandler; - let libsMocks; - - beforeEach(async () => { - requireCache = cloneDeep(fooRequireCache); - sandbox = sinon.createSandbox(); - sandbox.stub(Boom, "badData").returns(fooBoomError); - coreMocks = new CoreMocks(); - libsMocks = new LibsMocks(); - coreInstance = coreMocks.stubs.instance; - sandbox.stub(tracer, "error"); - sandbox.stub(tracer, "info"); - sandbox.stub(tracer, "debug"); - requireAll.mockImplementation(() => fooFiles); - filesHandler = new FilesHandler(coreInstance.settings, coreInstance._eventEmitter, { - requireCache - }); - sandbox.stub(path, "isAbsolute").returns(true); - coreInstance.settings.get.withArgs("behaviors").returns("foo-path"); - }); - - afterEach(() => { - libsMocks.restore(); - sandbox.restore(); - coreMocks.restore(); - }); - - describe("when initialized", () => { - it("should require all files from mocks folders calculating it from cwd", async () => { - path.isAbsolute.returns(false); - await filesHandler.init(); - expect(requireAll).toHaveBeenCalledWith({ - dirname: path.resolve(process.cwd(), "foo-path"), - recursive: true - }); - }); - - it("should require all files from exactly mocks folder if it is absolute", async () => { - await filesHandler.init(); - expect(requireAll).toHaveBeenCalledWith({ - dirname: "foo-path", - recursive: true - }); - }); - - it("should throw an error if mocks folder is not defined", async () => { - expect.assertions(1); - try { - coreInstance.settings.get.withArgs("behaviors").returns(undefined); - await filesHandler.init(); - } catch (error) { - expect(error).toEqual(fooBoomError); - } - }); - - it("should clean require cache for behaviors folder", async () => { - const fooCachePath = "foo-path"; - - expect(requireCache[fooCachePath]).toBeDefined(); - await filesHandler.init(); - expect(requireCache[fooCachePath]).not.toBeDefined(); - }); - - it("should require cache in order to found the behaviors folder", async () => { - filesHandler = new FilesHandler(coreInstance.settings, coreInstance._eventEmitter); - sandbox.spy(filesHandler, "_cleanRequireCache"); - await filesHandler.init(); - // it seems like require cache is empty in jest environment - expect(filesHandler._cleanRequireCache.callCount).toEqual(0); - }); - - it("should clean require cache for behaviors folder childs", async () => { - const fooCachePath = "foo-path/foo-children"; - - expect(requireCache[fooCachePath]).toBeDefined(); - await filesHandler.init(); - expect(requireCache[fooCachePath]).not.toBeDefined(); - }); - - it("should clean require cache for behaviors folder childs recursively", async () => { - const fooCachePath = "foo-path/foo-children-2"; - - expect(requireCache[fooCachePath]).toBeDefined(); - await filesHandler.init(); - expect(requireCache[fooCachePath]).not.toBeDefined(); - }); - }); - - describe("files getter", () => { - it("should return current files", async () => { - await filesHandler.init(); - expect(filesHandler.files).toEqual(fooFiles); - }); - }); - - describe("start method", () => { - describe("when starting files watch", () => { - it("should do nothing if watch was not enabled", async () => { - coreInstance.settings.get.withArgs("watch").returns(false); - await filesHandler.init(); - await filesHandler.start(); - expect(libsMocks.stubs.watch.callCount).toEqual(0); - }); - - it("should call to close watcher if watch was enabled previously", async () => { - coreInstance.settings.get.withArgs("watch").returns(true); - await filesHandler.init(); - await filesHandler.start(); - await filesHandler.start(); - expect(libsMocks.stubs.watchClose.callCount).toEqual(1); - }); - }); - }); - - describe("when a file is changed", () => { - it("should load files again", async () => { - coreInstance.settings.get.withArgs("watch").returns(true); - await filesHandler.init(); - await filesHandler.start(); - libsMocks.stubs.watch.getCall(0).args[2](); - await wait(); - expect(requireAll.mock.calls.length).toEqual(2); - }); - }); - - describe("when core settings change", () => { - it("should load files again if behaviors setting is changed", async () => { - await filesHandler.init(); - coreInstance._eventEmitter.on.getCall(0).args[1]({ - behaviors: "foo-path" - }); - await wait(); - expect(requireAll.mock.calls.length).toEqual(2); - }); - - it("should enable watch again if behaviors setting is changed", async () => { - coreInstance.settings.get.withArgs("watch").returns(true); - await filesHandler.init(); - await filesHandler.start(); - coreInstance._eventEmitter.on.getCall(0).args[1]({ - behaviors: "foo-path" - }); - await wait(); - expect(libsMocks.stubs.watch.callCount).toEqual(2); - }); - - it("should disable watch if watch is changed", async () => { - coreInstance.settings.get.withArgs("watch").returns(true); - await filesHandler.init(); - await filesHandler.start(); - coreInstance.settings.get.withArgs("watch").returns(false); - coreInstance._eventEmitter.on.getCall(0).args[1]({ - watch: false - }); - await wait(); - expect(libsMocks.stubs.watchClose.callCount).toEqual(1); - }); - - it("should do nothing if no behaviors or watch settings are changed", async () => { - expect.assertions(3); - coreInstance.settings.get.withArgs("watch").returns(true); - await filesHandler.init(); - await filesHandler.start(); - coreInstance._eventEmitter.on.getCall(0).args[1]({}); - await wait(); - expect(requireAll.mock.calls.length).toEqual(1); - expect(libsMocks.stubs.watch.callCount).toEqual(1); - expect(libsMocks.stubs.watchClose.callCount).toEqual(0); - }); - }); -}); diff --git a/test/unit/core/mocks/Mocks.mocks.js b/test/unit/core/mocks/Mocks.mocks.js deleted file mode 100644 index 1cf2dc1..0000000 --- a/test/unit/core/mocks/Mocks.mocks.js +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../../lib/core/mocks/Mocks"); - -const Mocks = require("../../../../lib/core/mocks/Mocks"); - -class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - init: this._sandbox.stub().resolves(), - start: this._sandbox.stub().resolves(), - behaviors: { - current: {} - } - }; - - Mocks.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: Mocks, - instance: this._stubs - }; - } - - restore() { - this._sandbox.restore(); - } -} - -module.exports = Mock; diff --git a/test/unit/core/mocks/Mocks.spec.js b/test/unit/core/mocks/Mocks.spec.js deleted file mode 100644 index 70ad12c..0000000 --- a/test/unit/core/mocks/Mocks.spec.js +++ /dev/null @@ -1,67 +0,0 @@ -/* -Copyright 2019 Javier Brea - -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. -*/ - -const sinon = require("sinon"); -const Boom = require("boom"); - -const BehaviorsMocks = require("./Behaviors.mocks.js"); -const FilesHandlerMocks = require("./FilesHandler.mocks.js"); -const CoreMocks = require("../Core.mocks.js"); - -const Mocks = require("../../../../lib/core/mocks/Mocks"); - -describe("Behaviors", () => { - const fooBoomError = new Error("foo boom error"); - let sandbox; - let coreMocks; - let filesHandlerMocks; - let behaviorsMocks; - let coreInstance; - let mocks; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - sandbox.stub(Boom, "badData").returns(fooBoomError); - coreMocks = new CoreMocks(); - coreInstance = coreMocks.stubs.instance; - filesHandlerMocks = new FilesHandlerMocks(); - behaviorsMocks = new BehaviorsMocks(); - mocks = new Mocks(coreInstance.settings, coreInstance._eventEmitter); - }); - - afterEach(() => { - sandbox.restore(); - filesHandlerMocks.restore(); - behaviorsMocks.restore(); - coreMocks.restore(); - }); - - describe("init method", () => { - it("should init filesHandler and behaviors", async () => { - expect.assertions(2); - await mocks.init(); - expect(filesHandlerMocks.stubs.instance.init.callCount).toEqual(1); - expect(behaviorsMocks.stubs.instance.init.callCount).toEqual(1); - }); - }); - - describe("start method", () => { - it("should start filesHandler", async () => { - await mocks.start(); - expect(filesHandlerMocks.stubs.instance.start.callCount).toEqual(1); - }); - }); - - describe("behaviors getter", () => { - it("should return behaviors", async () => { - expect(mocks.behaviors).toEqual(behaviorsMocks.stubs.instance); - }); - }); -}); diff --git a/test/unit/core/server/Server.mocks.js b/test/unit/core/server/Server.mocks.js deleted file mode 100644 index b0a27a4..0000000 --- a/test/unit/core/server/Server.mocks.js +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../../lib/core/server/Server"); - -const Server = require("../../../../lib/core/server/Server"); - -class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - error: null, - start: this._sandbox.stub().resolves(), - restart: this._sandbox.stub().resolves(), - stop: this._sandbox.stub().resolves(), - init: this._sandbox.stub().resolves(), - addCustomRouter: this._sandbox.stub().resolves() - }; - - Server.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: Server, - instance: this._stubs - }; - } - - restore() { - this._sandbox.restore(); - } -} - -module.exports = Mock; diff --git a/test/unit/core/server/Server.spec.js b/test/unit/core/server/Server.spec.js deleted file mode 100644 index 06f52e5..0000000 --- a/test/unit/core/server/Server.spec.js +++ /dev/null @@ -1,292 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -const LibsMocks = require("../../Libs.mocks.js"); -const MocksMocks = require("../mocks/Mocks.mocks.js"); -const CoreMocks = require("../Core.mocks.js"); - -const Server = require("../../../../lib/core/server/Server"); -const tracer = require("../../../../lib/core/tracer"); - -const wait = (time = 1000) => { - return new Promise(resolve => { - setTimeout(() => { - resolve(); - }, time); - }); -}; - -describe("Server", () => { - let sandbox; - let libsMocks; - let mocksMocks; - let coreMocks; - let coreInstance; - let processOnStub; - let server; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - - processOnStub = sandbox.stub(process, "on"); - sandbox.stub(process, "exit"); - sandbox.stub(tracer, "error"); - sandbox.stub(tracer, "info"); - sandbox.stub(tracer, "debug"); - libsMocks = new LibsMocks(); - mocksMocks = new MocksMocks(); - coreMocks = new CoreMocks(); - coreInstance = coreMocks.stubs.instance; - server = new Server( - mocksMocks.stubs.instance, - coreInstance.settings, - coreInstance._eventEmitter - ); - expect.assertions(1); - }); - - afterEach(() => { - libsMocks.restore(); - sandbox.restore(); - coreMocks.restore(); - mocksMocks.restore(); - }); - - describe("when initialized", () => { - it("should be listening to process exit signals and stop the server if occurs", async () => { - processOnStub.callsFake((event, cb) => { - wait().then(() => { - cb(); - }); - }); - libsMocks.stubs.http.createServer.onListen.returns(null); - await server.init(); - await server.start(); - await wait(); - expect(libsMocks.stubs.http.createServer.close.callCount).toEqual(1); - }); - }); - - describe("custom routers", () => { - it("should be registered when initializating http server", async () => { - const fooRouter = sandbox.spy(); - server.addCustomRouter("fooPath", fooRouter); - libsMocks.stubs.http.createServer.onListen.returns(null); - await server.start(); - expect(libsMocks.stubs.express.use.calledWith("fooPath", fooRouter)).toEqual(true); - }); - }); - - describe("when started", () => { - it("should reject the promise if an error occurs when calling to server listen method", async () => { - const error = new Error("Foo error"); - libsMocks.stubs.http.createServer.listen.throws(error); - - await server.init(); - - try { - await server.start(); - } catch (err) { - expect(err).toEqual(error); - } - }); - - it("should be listening to server errors and throw an error if occurs", async () => { - const error = new Error(); - libsMocks.stubs.http.createServer.onError.returns(error); - - try { - await server.init(); - await server.start(); - } catch (err) { - expect(err).toEqual(error); - } - }); - - it("should not init httpServer more than once", async () => { - libsMocks.stubs.http.createServer.onListen.returns(null); - await server.start(); - await server.start(); - await server.start(); - expect(libsMocks.stubs.http.createServer.on.callCount).toEqual(1); - }); - - it("should call to server listen, and resolve the promise when started", async () => { - libsMocks.stubs.http.createServer.onListen.returns(null); - - await server.init(); - - expect(await server.start()).toEqual(server); - }); - - it("should call to server listen, and rejects the promise when starts throw an error", async () => { - const error = new Error(); - libsMocks.stubs.http.createServer.onListen.returns(new Error()); - await server.init(); - - try { - await server.start(); - } catch (err) { - expect(err).toEqual(error); - } - }); - }); - - describe("stop method", () => { - beforeEach(() => { - libsMocks.stubs.http.createServer.onListen.returns(null); - }); - - it("should call to stop the server", async () => { - await server.init(); - await server.start(); - await server.stop(); - expect(libsMocks.stubs.http.createServer.close.callCount).toEqual(1); - }); - - it("should not call to stop server if it has not been initialized", async () => { - await server.init(); - await server.stop(); - expect(libsMocks.stubs.http.createServer.close.callCount).toEqual(0); - }); - }); - - describe("restart method", () => { - beforeEach(() => { - libsMocks.stubs.http.createServer.onListen.returns(null); - }); - - it("should call to stop the server", async () => { - await server.init(); - await server.start(); - await server.restart(); - expect(libsMocks.stubs.http.createServer.close.callCount).toEqual(1); - }); - - it("should call to start server again", async () => { - await server.init(); - await server.start(); - await server.restart(); - expect(libsMocks.stubs.http.createServer.listen.callCount).toEqual(2); - }); - }); - - describe("error getter", () => { - it("should return null if there is no error", async () => { - await server.init(); - expect(server.error).toEqual(null); - }); - - it("should return current error if there was an error", async () => { - const error = new Error(); - libsMocks.stubs.http.createServer.onListen.returns(new Error()); - await server.init(); - - try { - await server.start(); - } catch (err) { - expect(server.error).toEqual(error); - } - }); - }); - - describe("behaviors middleware", () => { - const fooRequest = { - method: "get", - url: "foo-route" - }; - let statusSpy; - let sendSpy; - let resMock; - let nextSpy; - - beforeEach(async () => { - statusSpy = sandbox.spy(); - sendSpy = sandbox.spy(); - resMock = { - status: statusSpy, - send: sendSpy - }; - nextSpy = sandbox.spy(); - libsMocks.stubs.http.createServer.onListen.returns(null); - coreInstance.settings.get.withArgs("delay").returns(0); - }); - - it("should call next if does not found a fixture in current feature matching the request url", async () => { - await server.start(); - - server._fixturesMiddleware(fooRequest, resMock, nextSpy); - expect(nextSpy.callCount).toEqual(1); - }); - - it("should call to response status method to set the matching fixture status code", async () => { - await server.start(); - mocksMocks.stubs.instance.behaviors.current = { - get: { - "foo-route": { - route: { - match: () => true - }, - response: { - status: 200 - } - } - } - }; - server._fixturesMiddleware(fooRequest, resMock, nextSpy); - await wait(200); - expect(resMock.status.getCall(0).args[0]).toEqual(200); - }); - - it("should call to response send method passing the matching fixture body", async () => { - const fooBody = { - foo: "foo-data" - }; - await server.start(); - mocksMocks.stubs.instance.behaviors.current = { - get: { - "foo-route": { - route: { - match: () => true - }, - response: { - status: 200, - body: fooBody - } - } - } - }; - server._fixturesMiddleware(fooRequest, resMock, nextSpy); - await wait(200); - expect(resMock.send.getCall(0).args[0]).toEqual(fooBody); - }); - - it("should call to fixture response method passing all request data if it is a function", async () => { - const responseSpy = sandbox.spy(); - await server.start(); - mocksMocks.stubs.instance.behaviors.current = { - get: { - "foo-route": { - route: { - match: () => true - }, - response: responseSpy - } - } - }; - server._fixturesMiddleware(fooRequest, resMock, nextSpy); - await wait(200); - expect(responseSpy.calledWith(fooRequest, resMock, nextSpy)).toEqual(true); - }); - }); -}); diff --git a/test/unit/core/server/middlewares.spec.js b/test/unit/core/server/middlewares.spec.js deleted file mode 100644 index ddafe95..0000000 --- a/test/unit/core/server/middlewares.spec.js +++ /dev/null @@ -1,189 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); -const Boom = require("boom"); - -const tracer = require("../../../../lib/core/tracer"); -const middlewares = require("../../../../lib/core/server/middlewares"); - -describe("middlewares", () => { - let sandbox; - let statusSpy; - let sendSpy; - let resMock; - let nextSpy; - let headerSpy; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - statusSpy = sandbox.spy(); - sendSpy = sandbox.spy(); - headerSpy = sandbox.spy(); - resMock = { - status: statusSpy, - header: headerSpy, - send: sendSpy - }; - nextSpy = sandbox.spy(); - }); - - afterEach(() => { - sandbox.restore(); - }); - - describe("addCommonHeaders", () => { - it("should call to set encoding header", () => { - middlewares.addCommonHeaders({}, resMock, nextSpy); - expect(headerSpy.getCall(0).args[0]).toEqual("Accept-Encoding"); - }); - - it("should call to set language header", () => { - middlewares.addCommonHeaders({}, resMock, nextSpy); - expect(headerSpy.getCall(1).args[0]).toEqual("Accept-Language"); - }); - - it("should call to next callback", () => { - middlewares.addCommonHeaders({}, resMock, nextSpy); - expect(nextSpy.callCount).toEqual(1); - }); - }); - - describe("traceRequest", () => { - const fooRequest = { - method: "foo-method", - url: "foo-url", - id: "foo-id" - }; - let tracerStub; - - beforeEach(() => { - tracerStub = sandbox.stub(tracer, "verbose"); - }); - - it("should call to tracer verbose method, printing the request method", () => { - middlewares.traceRequest(fooRequest, resMock, nextSpy); - expect(tracerStub.getCall(0).args[0]).toEqual(expect.stringContaining("foo-method")); - }); - - it("should call to tracer verbose method, printing the request url", () => { - middlewares.traceRequest(fooRequest, resMock, nextSpy); - expect(tracerStub.getCall(0).args[0]).toEqual(expect.stringContaining("foo-url")); - }); - - it("should call to tracer verbose method, printing the request id", () => { - middlewares.traceRequest(fooRequest, resMock, nextSpy); - expect(tracerStub.getCall(0).args[0]).toEqual(expect.stringContaining("foo-id")); - }); - - it("should call to next callback", () => { - middlewares.traceRequest(fooRequest, resMock, nextSpy); - expect(nextSpy.callCount).toEqual(1); - }); - }); - - describe("notFound", () => { - const fooNotFoundError = new Error("foo"); - const fooRequest = { - id: "foo-id" - }; - let tracerStub; - - beforeEach(() => { - tracerStub = sandbox.stub(tracer, "debug"); - sandbox.stub(Boom, "notFound").returns(fooNotFoundError); - }); - - it("should call to tracer debug method, printing the request id", () => { - middlewares.notFound(fooRequest, resMock, nextSpy); - expect(tracerStub.getCall(0).args[0]).toEqual(expect.stringContaining("foo-id")); - }); - - it("should call to next callback, passing a not found error", () => { - middlewares.notFound(fooRequest, resMock, nextSpy); - expect(nextSpy.getCall(0).args[0]).toEqual(fooNotFoundError); - }); - }); - - describe("errorHandler", () => { - const fooError = new Error("foo error message"); - const fooBadImplementationError = new Error("foo bad implementation error message"); - const fooRequest = { - id: "foo-id" - }; - - beforeEach(() => { - fooError.output = { - statusCode: "foo-status-code", - payload: "foo-payload" - }; - fooBadImplementationError.output = { - statusCode: "foo-bad-implementation-status-code", - payload: "foo-bad-implementation-payload" - }; - sandbox.stub(tracer, "error"); - sandbox.stub(tracer, "silly"); - sandbox.stub(Boom, "isBoom").returns(false); - sandbox.stub(Boom, "badImplementation").returns(fooBadImplementationError); - }); - - it("should call to next callback if no error is received", () => { - middlewares.errorHandler(null, fooRequest, resMock, nextSpy); - expect(nextSpy.callCount).toEqual(1); - }); - - it("should trace the received error with the request id", () => { - middlewares.errorHandler(fooError, fooRequest, resMock, nextSpy); - expect(tracer.error.getCall(0).args[0]).toEqual(expect.stringContaining("foo-id")); - }); - - it("should convert the received error to a bad implementation error if it is not a Boom error", () => { - middlewares.errorHandler(fooError, fooRequest, resMock, nextSpy); - expect(Boom.badImplementation.getCall(0).args[0]).toEqual(fooError); - }); - - it("should trace the received error message", () => { - middlewares.errorHandler(fooError, fooRequest, resMock, nextSpy); - expect(tracer.error.getCall(0).args[0]).toEqual( - expect.stringContaining("foo bad implementation error message") - ); - }); - - it("should trace the received error stack", () => { - middlewares.errorHandler(fooError, fooRequest, resMock, nextSpy); - expect(tracer.silly.getCall(0).args[0]).toEqual(fooError.stack.toString()); - }); - - it("should call to set response status as error statusCode", () => { - fooError.stack = null; - middlewares.errorHandler(fooError, fooRequest, resMock, nextSpy); - expect(resMock.status.getCall(0).args[0]).toEqual("foo-bad-implementation-status-code"); - }); - - it("should call to send response with error payload", () => { - fooError.stack = null; - middlewares.errorHandler(fooError, fooRequest, resMock, nextSpy); - expect(resMock.send.getCall(0).args[0]).toEqual("foo-bad-implementation-payload"); - }); - - it("should not trace error stack if error is controlled", () => { - Boom.isBoom.returns(true); - middlewares.errorHandler(fooError, fooRequest, resMock, nextSpy); - expect(tracer.silly.callCount).toEqual(0); - }); - - it("should not convert the received error if it is controlled", () => { - Boom.isBoom.returns(true); - middlewares.errorHandler(fooError, fooRequest, resMock, nextSpy); - expect(Boom.badImplementation.callCount).toEqual(0); - }); - }); -}); diff --git a/test/unit/core/settings/CommandLineArguments.mocks.js b/test/unit/core/settings/CommandLineArguments.mocks.js deleted file mode 100644 index edb4675..0000000 --- a/test/unit/core/settings/CommandLineArguments.mocks.js +++ /dev/null @@ -1,43 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../../lib/core/settings/CommandLineArguments"); - -const CommandLineArguments = require("../../../../lib/core/settings/CommandLineArguments"); - -class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - init: this._sandbox.stub(), - addCustom: this._sandbox.stub(), - options: {} - }; - - CommandLineArguments.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: CommandLineArguments, - instance: this._stubs - }; - } - - restore() { - this._sandbox.restore(); - } -} - -module.exports = Mock; diff --git a/test/unit/core/settings/CommandLineArguments.spec.js b/test/unit/core/settings/CommandLineArguments.spec.js deleted file mode 100644 index caf4e36..0000000 --- a/test/unit/core/settings/CommandLineArguments.spec.js +++ /dev/null @@ -1,378 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); -const commander = require("commander"); - -const CommandLineArguments = require("../../../../lib/core/settings/CommandLineArguments"); - -describe("options", () => { - const DEFAULT_OPTIONS = { - behavior: null, - behaviors: null, - delay: 0, - host: "0.0.0.0", - port: 3100, - watch: true, - log: "info", - // TODO, remove deprecated options - feature: null, - features: null - }; - let sandbox; - let optionStub; - let parseStub; - let commandLineArguments; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - optionStub = sandbox.stub(); - parseStub = sandbox.stub().returns({}); - sandbox.spy(console, "warn"); - - optionStub.returns({ - option: optionStub, - parse: parseStub - }); - - sandbox.stub(commander, "option").returns({ - option: optionStub - }); - - commandLineArguments = new CommandLineArguments(DEFAULT_OPTIONS); - }); - - afterEach(() => { - sandbox.restore(); - }); - - describe("init method", () => { - it("should call to commander to get user options from command line", async () => { - await commandLineArguments.init(); - expect(optionStub.callCount).toEqual(8); - }); - - it("should call to convert to number received value in --port option", async () => { - expect.assertions(1); - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--port")) { - expect(parser("5")).toEqual(5); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments = new CommandLineArguments({}); - await commandLineArguments.init(); - }); - - it("should omit undefined values", async () => { - const options = { - behavior: "foo-behavior", - behaviors: undefined - }; - parseStub.returns(options); - await commandLineArguments.init(); - expect(commandLineArguments.options).toEqual({ - behavior: "foo-behavior" - }); - }); - }); - - describe("stringBoolean options", () => { - it("should return true if value is 'true'", async () => { - expect.assertions(1); - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--watch")) { - expect(parser("true")).toEqual(true); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments = new CommandLineArguments({}); - await commandLineArguments.init(); - }); - - it("should return true if value is 'undefined'", async () => { - expect.assertions(1); - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--watch")) { - expect(parser()).toEqual(true); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments = new CommandLineArguments({}); - await commandLineArguments.init(); - }); - - it("should return false if value is 'false'", async () => { - expect.assertions(1); - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--watch")) { - expect(parser("false")).toEqual(false); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments = new CommandLineArguments({}); - await commandLineArguments.init(); - }); - - it("should throw an error if value is not true nor false", async () => { - expect.assertions(1); - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--watch")) { - try { - parser("foo"); - } catch (error) { - expect(error.message).toEqual(expect.stringContaining("Invalid boolean value")); - } - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments = new CommandLineArguments({}); - await commandLineArguments.init(); - }); - }); - - describe("when adding custom option", () => { - describe("when it is string type", () => { - it("should add commander option with mandatory value", async () => { - expect.assertions(2); - const option = { - name: "foo", - description: "foo description", - type: "string" - }; - optionStub.callsFake((commandName, description) => { - if (commandName.includes("--foo")) { - expect(commandName).toEqual("--foo "); - expect(description).toEqual(option.description); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - - it("should use provided custom parser", async () => { - expect.assertions(1); - const option = { - name: "foo", - type: "string", - parse: () => {} - }; - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--foo")) { - expect(parser).toEqual(option.parse); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - }); - - describe("when it is booleanString type", () => { - it("should add commander option with mandatory value", async () => { - expect.assertions(2); - const option = { - name: "foo", - description: "foo description", - type: "booleanString" - }; - optionStub.callsFake((commandName, description) => { - if (commandName.includes("--foo")) { - expect(commandName).toEqual("--foo "); - expect(description).toEqual(option.description); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - - it("should convert string to boolean when parsed", async () => { - expect.assertions(1); - const option = { - name: "foo", - description: "foo description", - type: "booleanString" - }; - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--foo")) { - expect(parser("false")).toEqual(false); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - - it("should use custom parser if provided to get value", async () => { - expect.assertions(2); - const option = { - name: "foo", - description: "foo description", - type: "booleanString", - parse: val => val - }; - sandbox.spy(option, "parse"); - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--foo")) { - expect(parser("false")).toEqual("false"); - expect(option.parse.callCount).toEqual(1); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - }); - - describe("when type is boolean", () => { - it("should not add commander option with mandatory value", async () => { - expect.assertions(2); - const option = { - name: "foo", - description: "foo description", - type: "boolean" - }; - optionStub.callsFake((commandName, description) => { - if (commandName.includes("--foo")) { - expect(commandName).toEqual("--foo"); - expect(description).toEqual(option.description); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - - it("should add commander --no prefix if default value is true", async () => { - expect.assertions(2); - const option = { - name: "foo", - description: "foo description", - type: "boolean", - default: true - }; - optionStub.callsFake((commandName, description) => { - if (commandName.includes("-foo")) { - expect(commandName).toEqual("--no-foo"); - expect(description).toEqual(option.description); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - }); - - describe("when type is number", () => { - it("should add commander option with mandatory value", async () => { - expect.assertions(2); - const option = { - name: "foo", - description: "foo description", - type: "number" - }; - optionStub.callsFake((commandName, description) => { - if (commandName.includes("--foo")) { - expect(commandName).toEqual("--foo "); - expect(description).toEqual(option.description); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - - it("should convert string to number when parsed", async () => { - expect.assertions(1); - const option = { - name: "foo", - description: "foo description", - type: "number" - }; - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--foo")) { - expect(parser("4")).toEqual(4); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - - it("should use custom parser if provided to get value", async () => { - expect.assertions(2); - const option = { - name: "foo", - description: "foo description", - type: "number", - parse: val => val - }; - sandbox.spy(option, "parse"); - optionStub.callsFake((commandName, description, parser) => { - if (commandName.includes("--foo")) { - expect(parser("5")).toEqual("5"); - expect(option.parse.callCount).toEqual(1); - } - return { - option: optionStub, - parse: parseStub - }; - }); - commandLineArguments.addCustom(option); - await commandLineArguments.init(); - }); - }); - }); -}); diff --git a/test/unit/core/settings/Options.mocks.js b/test/unit/core/settings/Options.mocks.js deleted file mode 100644 index 35844dc..0000000 --- a/test/unit/core/settings/Options.mocks.js +++ /dev/null @@ -1,47 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../../lib/core/settings/Options"); - -const Options = require("../../../../lib/core/settings/Options"); - -class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - init: this._sandbox.stub(), - addCustom: this._sandbox.stub(), - getValidOptionName: this._sandbox.stub(), - options: { - log: "foo-log-level", - behavior: "foo-behavior" - } - }; - - Options.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: Options, - instance: this._stubs - }; - } - - restore() { - this._sandbox.restore(); - } -} - -module.exports = Mock; diff --git a/test/unit/core/settings/Options.spec.js b/test/unit/core/settings/Options.spec.js deleted file mode 100644 index 9b9ad0c..0000000 --- a/test/unit/core/settings/Options.spec.js +++ /dev/null @@ -1,476 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -const CommandLineArgumentsMocks = require("./CommandLineArguments.mocks.js"); - -const Options = require("../../../../lib/core/settings/Options"); -const tracer = require("../../../../lib/core/tracer"); - -describe("options", () => { - let sandbox; - let options; - let commandLineArgumentsMocks; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - sandbox.spy(tracer, "warn"); - sandbox.stub(tracer, "error"); - commandLineArgumentsMocks = new CommandLineArgumentsMocks(); - options = new Options(); - }); - - afterEach(() => { - sandbox.restore(); - commandLineArgumentsMocks.restore(); - }); - - describe("init method", () => { - it("should call to get command line arguments", async () => { - await options.init(); - expect(commandLineArgumentsMocks.stubs.instance.init.callCount).toEqual(1); - }); - - it("should call only once to get command line arguments", async () => { - await options.init(); - await options.init(); - await options.init(); - expect(commandLineArgumentsMocks.stubs.instance.init.callCount).toEqual(1); - }); - - it("should print a warning if --feature option is received", async () => { - commandLineArgumentsMocks.stubs.instance.options = { - feature: "foo-feature", - cli: true, - behaviors: "foo/features/path" - }; - await options.init(); - expect(tracer.warn.getCall(0).args[0]).toEqual( - expect.stringContaining("Deprecation warning: --feature") - ); - }); - - it("should print a warning if --features option is received", async () => { - commandLineArgumentsMocks.stubs.instance.options = { - cli: true, - features: "foo/features/path" - }; - await options.init(); - expect(tracer.warn.getCall(0).args[0]).toEqual( - expect.stringContaining("Deprecation warning: --features") - ); - }); - }); - - describe("init method when using programmatic options", () => { - it("should not call to get command line arguments", async () => { - options = new Options({ - onlyProgrammaticOptions: true - }); - await options.init(); - expect(commandLineArgumentsMocks.stubs.instance.init.callCount).toEqual(0); - }); - }); - - describe("when adding custom option", () => { - it("should trow an error if options have been already initialized", async () => { - expect.assertions(2); - await options.init(); - try { - options.addCustom(); - } catch (error) { - const errorMessageContains = "already initializated"; - expect(tracer.error.getCall(0).args[0]).toEqual( - expect.stringContaining(errorMessageContains) - ); - expect(error.message).toEqual(expect.stringContaining(errorMessageContains)); - } - }); - - it("should trow an error if no option is provided", () => { - expect.assertions(2); - try { - options.addCustom(); - } catch (error) { - const errorMessageContains = "provide option details"; - expect(tracer.error.getCall(0).args[0]).toEqual( - expect.stringContaining(errorMessageContains) - ); - expect(error.message).toEqual(expect.stringContaining(errorMessageContains)); - } - }); - - it("should trow an error if option name is not provided", () => { - expect.assertions(2); - try { - options.addCustom({ - description: "foo" - }); - } catch (error) { - const errorMessageContains = "provide option name"; - expect(tracer.error.getCall(0).args[0]).toEqual( - expect.stringContaining(errorMessageContains) - ); - expect(error.message).toEqual(expect.stringContaining(errorMessageContains)); - } - }); - - it("should trow an error if option was already declared", () => { - expect.assertions(2); - try { - options.addCustom({ - name: "behaviors" - }); - } catch (error) { - const errorMessageContains = "already registered"; - expect(tracer.error.getCall(0).args[0]).toEqual( - expect.stringContaining(errorMessageContains) - ); - expect(error.message).toEqual(expect.stringContaining(errorMessageContains)); - } - }); - - it("should trow an error if option type is unknown", () => { - expect.assertions(2); - try { - options.addCustom({ - name: "foo", - type: "foo" - }); - } catch (error) { - const errorMessageContains = "provide a valid option type"; - expect(tracer.error.getCall(0).args[0]).toEqual( - expect.stringContaining(errorMessageContains) - ); - expect(error.message).toEqual(expect.stringContaining(errorMessageContains)); - } - }); - - it("should print a warning if option description is not provided", () => { - expect.assertions(1); - options.addCustom({ - name: "foo", - type: "string" - }); - const errorMessageContains = "provide option description"; - expect(tracer.warn.getCall(0).args[0]).toEqual( - expect.stringContaining(errorMessageContains) - ); - }); - - it("should not print a warning if option description is not provided", () => { - expect.assertions(1); - options.addCustom({ - name: "foo", - type: "string", - description: "foo-description" - }); - expect(tracer.warn.callCount).toEqual(0); - }); - }); - - describe("options getter", () => { - it("should only get values from keys defined in default values", async () => { - commandLineArgumentsMocks.stubs.instance.options = { - behavior: "foo-behavior", - cli: true, - behaviors: "foo/behaviors/path", - foo: undefined, - foo2: "foooo" - }; - await options.init(); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - - it("should remove deprecated options", async () => { - commandLineArgumentsMocks.stubs.instance.options = { - behavior: "foo-behavior", - cli: true, - behaviors: "foo/behaviors/path", - foo: undefined, - foo2: "foooo", - recursive: false - }; - await options.init(); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - - it("should get values from keys defined in new options", async () => { - commandLineArgumentsMocks.stubs.instance.options = { - behavior: "foo-behavior", - cli: true, - behaviors: "foo/behaviors/path", - foo: "foo" - }; - options.addCustom({ - name: "cli", - type: "boolean" - }); - options.addCustom({ - name: "foo", - type: "string" - }); - await options.init(); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - cli: true, - foo: "foo", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - - it("should extend default options with user options, ommiting undefined values", async () => { - commandLineArgumentsMocks.stubs.instance.options = { - behavior: "foo-behavior", - cli: true, - behaviors: "foo/behaviors/path", - foo: undefined - }; - await options.init(); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - - it("should convert feature and features options to behavior and behaviors", async () => { - commandLineArgumentsMocks.stubs.instance.options = { - feature: "foo-feature", - cli: true, - features: "foo/features/path" - }; - await options.init(); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-feature", - behaviors: "foo/features/path" - }); - }); - - it("should apply behavior and behavior options if feature and features options are received too", async () => { - commandLineArgumentsMocks.stubs.instance.options = { - behavior: "foo-behavior", - feature: "foo-feature", - cli: true, - behaviors: "foo/behaviors/path", - features: "foo-feature" - }; - await options.init(); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - }); - - describe("options getter when using programmatic options", () => { - beforeEach(() => { - options = new Options({ - onlyProgrammaticOptions: true - }); - }); - - it("should only get values from keys defined in default values", async () => { - await options.init({ - behavior: "foo-behavior", - cli: true, - behaviors: "foo/behaviors/path", - foo: undefined, - foo2: "foooo" - }); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - - it("should remove deprecated options", async () => { - await options.init({ - behavior: "foo-behavior", - cli: true, - behaviors: "foo/behaviors/path", - foo: undefined, - foo2: "foooo", - recursive: false - }); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - - it("should get values from keys defined in new options", async () => { - options.addCustom({ - name: "cli", - type: "boolean" - }); - options.addCustom({ - name: "foo", - type: "string" - }); - await options.init({ - behavior: "foo-behavior", - cli: true, - behaviors: "foo/behaviors/path", - foo: "foo" - }); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - cli: true, - foo: "foo", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - - it("should extend default options with user options, ommiting undefined values", async () => { - await options.init({ - behavior: "foo-behavior", - cli: true, - behaviors: "foo/behaviors/path", - foo: undefined - }); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - - it("should convert feature and features options to behavior and behaviors", async () => { - await options.init({ - feature: "foo-feature", - cli: true, - features: "foo/features/path" - }); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-feature", - behaviors: "foo/features/path" - }); - }); - - it("should apply behavior and behavior options if feature and features options are received too", async () => { - await options.init({ - behavior: "foo-behavior", - feature: "foo-feature", - cli: true, - behaviors: "foo/behaviors/path", - features: "foo-feature" - }); - expect(options.options).toEqual({ - port: 3100, - host: "0.0.0.0", - log: "info", - delay: 0, - watch: true, - behavior: "foo-behavior", - behaviors: "foo/behaviors/path" - }); - }); - }); - - describe("getValidOptionName method", () => { - it("should throw an error if option is not valid", async () => { - expect.assertions(1); - await options.init(); - try { - options.getValidOptionName("foo"); - } catch (error) { - expect(error.message).toEqual(expect.stringContaining("Not valid option")); - } - }); - - it("should return option name if option is valid", async () => { - await options.init(); - expect(options.getValidOptionName("behavior")).toEqual("behavior"); - }); - - it("should return new option name if option is deprecated", async () => { - expect.assertions(2); - await options.init(); - const option = options.getValidOptionName("feature"); - expect( - tracer.warn.calledWith( - "Deprecation warning: feature option will be deprecated. Use behavior instead" - ) - ).toEqual(true); - expect(option).toEqual("behavior"); - }); - - it("should return true if option is custom option", async () => { - options.addCustom({ - name: "foo", - type: "boolean" - }); - await options.init(); - expect(options.getValidOptionName("foo")).toEqual("foo"); - }); - }); -}); diff --git a/test/unit/core/settings/Settings.mocks.js b/test/unit/core/settings/Settings.mocks.js deleted file mode 100644 index 93c7649..0000000 --- a/test/unit/core/settings/Settings.mocks.js +++ /dev/null @@ -1,44 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -jest.mock("../../../../lib/core/settings/Settings"); - -const Settings = require("../../../../lib/core/settings/Settings"); - -class Mock { - constructor() { - this._sandbox = sinon.createSandbox(); - - this._stubs = { - get: this._sandbox.stub(), - set: this._sandbox.stub(), - init: this._sandbox.stub().resolves(), - addCustom: this._sandbox.stub() - }; - - Settings.mockImplementation(() => this._stubs); - } - - get stubs() { - return { - Constructor: Settings, - instance: this._stubs - }; - } - - restore() { - this._sandbox.restore(); - } -} - -module.exports = Mock; diff --git a/test/unit/core/settings/Settings.spec.js b/test/unit/core/settings/Settings.spec.js deleted file mode 100644 index 487b963..0000000 --- a/test/unit/core/settings/Settings.spec.js +++ /dev/null @@ -1,114 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -const OptionsMocks = require("./Options.mocks.js"); -const CoreMocks = require("../Core.mocks.js"); - -const Settings = require("../../../../lib/core/settings/Settings"); -const tracer = require("../../../../lib/core/tracer"); - -describe("Settings", () => { - let optionsMocks; - let optionsInstance; - let coreMocks; - let coreInstance; - let sandbox; - let settings; - - beforeEach(async () => { - sandbox = sinon.createSandbox(); - optionsMocks = new OptionsMocks(); - optionsInstance = optionsMocks.stubs.instance; - optionsInstance.getValidOptionName.callsFake(name => name); - coreMocks = new CoreMocks(); - coreInstance = coreMocks.stubs.instance; - sandbox.stub(tracer, "set"); - sandbox.stub(tracer, "info"); - settings = new Settings({}, coreInstance._eventEmitter); - await settings.init(); - }); - - afterEach(() => { - sandbox.restore(); - optionsMocks.restore(); - coreMocks.restore(); - }); - - describe("when initializated", () => { - it("should init options", () => { - expect(optionsInstance.init.callCount).toEqual(1); - }); - - it("should set current tracer level", () => { - expect(tracer.set.calledWith("console", "foo-log-level")).toEqual(true); - }); - }); - - describe("get method", () => { - it("should return current option value", () => { - expect(settings.get("log")).toEqual("foo-log-level"); - }); - - it("should return current deprecated option value", () => { - optionsInstance.getValidOptionName.returns("behavior"); - expect(settings.get("log")).toEqual("foo-behavior"); - }); - - it("should return new value if set is called", () => { - settings.set("log", "foo-new-value"); - expect(settings.get("log")).toEqual("foo-new-value"); - }); - }); - - describe("set method", () => { - it("should set log level if setting is log", () => { - settings.set("log", "foo-new-value"); - expect(tracer.set.calledWith("console", "foo-new-value")).toEqual(true); - }); - - it("should set new option if provided one is deprecated", () => { - optionsInstance.getValidOptionName.returns("behavior"); - settings.set("log", "foo"); - expect(settings.get("behavior")).toEqual("foo"); - }); - - it("should emit change if setting has changed value", () => { - settings.set("foo", "foo-new-value"); - expect( - coreInstance._eventEmitter.emit.calledWith("change:settings", { - foo: "foo-new-value" - }) - ).toEqual(true); - }); - - it("should not emit change if setting maintains value", () => { - const setFoo = () => { - settings.set("foo", "foo-new-value"); - }; - setFoo(); - setFoo(); - setFoo(); - expect(coreInstance._eventEmitter.emit.callCount).toEqual(1); - }); - }); - - describe("addCustom method", () => { - it("should pass custom option to options Class", () => { - const fooOption = { - foo: "foo" - }; - settings.addCustom(fooOption); - expect(optionsInstance.addCustom.calledWith(fooOption)).toEqual(true); - }); - }); -}); diff --git a/test/unit/core/tracer.spec.js b/test/unit/core/tracer.spec.js deleted file mode 100644 index a1f332f..0000000 --- a/test/unit/core/tracer.spec.js +++ /dev/null @@ -1,42 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -const tracer = require("../../../lib/core/tracer"); - -describe("tracer", () => { - let sandbox; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - sandbox.stub(tracer, "debug"); - sandbox.spy(console, "log"); - }); - - afterEach(() => { - sandbox.restore(); - }); - - describe("set method", () => { - it("should call to set log level", () => { - tracer.set("console", "error"); - tracer.debug("foo debug"); - expect(console.log.callCount).toEqual(0); - }); - - it("should deactivate logs if called with level silent", () => { - tracer.set("console", "silent"); - tracer.error("foo error"); - expect(console.log.callCount).toEqual(0); - }); - }); -}); diff --git a/test/unit/index.spec.js b/test/unit/index.spec.js index 7142acc..dc84679 100644 --- a/test/unit/index.spec.js +++ b/test/unit/index.spec.js @@ -10,21 +10,10 @@ Unless required by applicable law or agreed to in writing, software distributed */ const index = require("../../index"); +const Api = require("../../src/Api"); describe("index", () => { - it("should export a Cli constructor", () => { - expect(index.Cli).toBeDefined(); - }); - - it("should export a Server constructor", () => { - expect(typeof index.Server).toEqual("function"); - }); - - it("should export a Behavior constructor", () => { - expect(typeof index.Behavior).toEqual("function"); - }); - - it("should export a deprecated Feature constructor", () => { - expect(index.Feature).toBe(index.Behavior); + it("should export the Api constructor", () => { + expect(index).toEqual(Api); }); }); diff --git a/test/unit/api/Api.spec.js b/test/unit/src/Api.spec.js similarity index 97% rename from test/unit/api/Api.spec.js rename to test/unit/src/Api.spec.js index 8553884..6651f7f 100644 --- a/test/unit/api/Api.spec.js +++ b/test/unit/src/Api.spec.js @@ -12,11 +12,11 @@ Unless required by applicable law or agreed to in writing, software distributed const express = require("express"); const sinon = require("sinon"); -const CoreMocks = require("../core/Core.mocks.js"); +const CoreMocks = require("../Core.mocks.js"); const BehaviorsMocks = require("./Behaviors.mocks.js"); const SettingsMocks = require("./Settings.mocks.js"); -const Api = require("../../../lib/api/Api"); +const Api = require("../../../src/Api"); describe("Api", () => { let sandbox; diff --git a/test/unit/api/Behaviors.mocks.js b/test/unit/src/Behaviors.mocks.js similarity index 91% rename from test/unit/api/Behaviors.mocks.js rename to test/unit/src/Behaviors.mocks.js index 16d463f..9cfeda2 100644 --- a/test/unit/api/Behaviors.mocks.js +++ b/test/unit/src/Behaviors.mocks.js @@ -11,9 +11,9 @@ Unless required by applicable law or agreed to in writing, software distributed const sinon = require("sinon"); -jest.mock("../../../lib/api/Behaviors"); +jest.mock("../../../src/Behaviors"); -const Behaviors = require("../../../lib/api/Behaviors"); +const Behaviors = require("../../../src/Behaviors"); const Mock = class Mock { constructor() { diff --git a/test/unit/api/Behaviors.spec.js b/test/unit/src/Behaviors.spec.js similarity index 96% rename from test/unit/api/Behaviors.spec.js rename to test/unit/src/Behaviors.spec.js index 02a8933..5a71ec9 100644 --- a/test/unit/api/Behaviors.spec.js +++ b/test/unit/src/Behaviors.spec.js @@ -12,9 +12,9 @@ Unless required by applicable law or agreed to in writing, software distributed const express = require("express"); const sinon = require("sinon"); -const CoreMocks = require("../core/Core.mocks.js"); +const CoreMocks = require("../Core.mocks.js"); -const Behaviors = require("../../../lib/api/Behaviors"); +const Behaviors = require("../../../src/Behaviors"); describe("Behaviors Api", () => { let sandbox; diff --git a/test/unit/api/Settings.mocks.js b/test/unit/src/Settings.mocks.js similarity index 91% rename from test/unit/api/Settings.mocks.js rename to test/unit/src/Settings.mocks.js index 5d36914..6dc81bc 100644 --- a/test/unit/api/Settings.mocks.js +++ b/test/unit/src/Settings.mocks.js @@ -11,9 +11,9 @@ Unless required by applicable law or agreed to in writing, software distributed const sinon = require("sinon"); -jest.mock("../../../lib/api/Settings"); +jest.mock("../../../src/Settings"); -const Settings = require("../../../lib/api/Settings"); +const Settings = require("../../../src/Settings"); const Mock = class Mock { constructor() { diff --git a/test/unit/api/Settings.spec.js b/test/unit/src/Settings.spec.js similarity index 96% rename from test/unit/api/Settings.spec.js rename to test/unit/src/Settings.spec.js index 4336a4a..8c47ba9 100644 --- a/test/unit/api/Settings.spec.js +++ b/test/unit/src/Settings.spec.js @@ -12,9 +12,9 @@ Unless required by applicable law or agreed to in writing, software distributed const express = require("express"); const sinon = require("sinon"); -const CoreMocks = require("../core/Core.mocks.js"); +const CoreMocks = require("../Core.mocks.js"); -const Settings = require("../../../lib/api/Settings"); +const Settings = require("../../../src/Settings"); describe("Settings Api", () => { let sandbox; diff --git a/test/unit/start.spec.js b/test/unit/start.spec.js deleted file mode 100644 index e5e4e22..0000000 --- a/test/unit/start.spec.js +++ /dev/null @@ -1,59 +0,0 @@ -/* -Copyright 2019 Javier Brea -Copyright 2019 XbyOrange - -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. -*/ - -const sinon = require("sinon"); - -const CoreMocks = require("./core/Core.mocks.js"); -const AdminApi = require("../../lib/api/Api"); -const InquirerCli = require("../../lib/cli/Cli"); - -const { start } = require("../../lib/start"); - -describe("start method", () => { - let sandbox; - let coreMocks; - - beforeEach(() => { - sandbox = sinon.createSandbox(); - coreMocks = new CoreMocks(); - expect.assertions(1); - }); - - afterEach(() => { - sandbox.restore(); - coreMocks.restore(); - }); - - it("should create a new Core, passing to it AdminApi and CLI plugins", async () => { - await start(); - expect(coreMocks.stubs.Constructor.mock.calls[0][0]).toEqual({ - plugins: [AdminApi, InquirerCli] - }); - }); - - it("should catch and trace errors while creating Core", async () => { - const errorMessage = "Foo error"; - sandbox.stub(console, "error"); - coreMocks.stubs.Constructor.mockImplementationOnce(() => { - throw new Error(errorMessage); - }); - await start(); - expect(console.error.getCall(0).args[0]).toEqual(`Error: ${errorMessage}`); - }); - - it("should catch and trace start method errors", async () => { - const errorMessage = "Foo error"; - sandbox.stub(console, "error"); - coreMocks.stubs.instance.start.rejects(new Error(errorMessage)); - await start(); - expect(console.error.getCall(0).args[0]).toEqual(`Error: ${errorMessage}`); - }); -}); From 4c7ba71e68ba68d06357a974a58092221f8190eb Mon Sep 17 00:00:00 2001 From: javierbrea Date: Fri, 6 Dec 2019 12:09:36 +0100 Subject: [PATCH 05/10] Fix acceptance tests --- .gitignore | 2 +- README.md | 2 +- jest.acceptance.config.js | 1 - package-lock.json | 23 ++++ package.json | 8 +- test/acceptance/CliRunner.js | 92 ++++++++++++++ .../{main => }/change-behavior.spec.js | 2 +- ...iles-watch.spec.js => core-events.spec.js} | 112 +++--------------- .../files-modification/fixtures/users.js | 0 .../files-modification/new-fixtures/users.js | 0 .../fixtures/files-modification/standard.js | 2 +- test/acceptance/fixtures/start-files-watch.js | 6 + .../fixtures/web-tutorial/fixtures/users.js | 0 .../fixtures/web-tutorial/standard.js | 2 +- test/acceptance/{main => }/utils.js | 10 +- 15 files changed, 157 insertions(+), 105 deletions(-) create mode 100644 test/acceptance/CliRunner.js rename test/acceptance/{main => }/change-behavior.spec.js (98%) rename test/acceptance/{main/files-watch.spec.js => core-events.spec.js} (69%) rename test/acceptance/{main => }/fixtures/files-modification/fixtures/users.js (100%) rename test/acceptance/{main => }/fixtures/files-modification/new-fixtures/users.js (100%) rename test/acceptance/{main => }/fixtures/files-modification/standard.js (95%) create mode 100644 test/acceptance/fixtures/start-files-watch.js rename test/acceptance/{main => }/fixtures/web-tutorial/fixtures/users.js (100%) rename test/acceptance/{main => }/fixtures/web-tutorial/standard.js (94%) rename test/acceptance/{main => }/utils.js (93%) diff --git a/.gitignore b/.gitignore index e58d414..23ebca0 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ # tests /coverage /mocks -/test/acceptance/main/fixtures/files-watch +/test/acceptance/fixtures/files-watch # misc .DS_Store diff --git a/README.md b/README.md index 8161e5a..71cd435 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Please refer to the [project documentation website][website-url]: * [Get started](https://www.mocks-server.org/docs/get-started-intro) * [Tutorials](https://www.mocks-server.org/docs/tutorials-static) -* [Configuration](https://www.mocks-server.org/docs/configuration-command-line-arguments) +* [Configuration](https://www.mocks-server.org/docs/configuration-options) ## Why a mocks server? diff --git a/jest.acceptance.config.js b/jest.acceptance.config.js index 3f31d80..c1029d2 100644 --- a/jest.acceptance.config.js +++ b/jest.acceptance.config.js @@ -6,7 +6,6 @@ module.exports = { clearMocks: true, testMatch: ["**/test/acceptance/**/?(*.)+(spec|test).js?(x)"], - //testMatch: ["**/test/acceptance/main/programmatic-cli.spec.js"], // Indicates whether the coverage information should be collected while executing the test collectCoverage: false, diff --git a/package-lock.json b/package-lock.json index 2aaa6cf..6dd9ba4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7177,6 +7177,23 @@ "is-regexp": "^1.0.0" } }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + } + } + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -7395,6 +7412,12 @@ "punycode": "^2.1.0" } }, + "tree-kill-sync": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tree-kill-sync/-/tree-kill-sync-1.0.0.tgz", + "integrity": "sha1-1LrZklYR55KXmjrcFetgBMHVqa0=", + "dev": true + }, "triple-beam": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", diff --git a/package.json b/package.json index 98fc34a..4f42438 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ ], "main": "index.js", "scripts": { - "lint": "eslint index.js lib test jest.config.js jest.acceptance.config.js", + "lint": "eslint index.js src test jest.config.js jest.acceptance.config.js", "lint-staged": "lint-staged", "test": "jest", "test-acceptance": "jest --config=jest.acceptance.config.js --runInBand", @@ -54,10 +54,12 @@ "prettier": "^1.19.1", "request": "^2.88.0", "request-promise": "^4.2.5", - "sinon": "^7.5.0" + "sinon": "^7.5.0", + "strip-ansi": "6.0.0", + "tree-kill-sync": "^1.0.0" }, "lint-staged": { - "lib/**/*.js": "eslint", + "src/**/*.js": "eslint", "test/**/*.js": "eslint", "index.js": "eslint", "jest.config.js": "eslint", diff --git a/test/acceptance/CliRunner.js b/test/acceptance/CliRunner.js new file mode 100644 index 0000000..0c1e5a7 --- /dev/null +++ b/test/acceptance/CliRunner.js @@ -0,0 +1,92 @@ +/* +Copyright 2019 Javier Brea +Copyright 2019 XbyOrange + +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. +*/ + +"use strict"; + +const childProcess = require("child_process"); + +const treeKillSync = require("tree-kill-sync"); +const stripAnsi = require("strip-ansi"); + +const ENCODING_TYPE = "utf8"; + +module.exports = class CliRunner { + constructor(commandToExecute, options = {}) { + this._command = this.getCommandToExecute(commandToExecute); + this._cwd = options.cwd || process.cwd(); + this._logs = []; + + this._exitPromise = new Promise(resolve => { + this._resolveExitPromise = resolve; + }); + + this.logData = this.logData.bind(this); + + this.run(); + } + + getCommandToExecute(command) { + return { + name: command[0], + params: command.splice(1, command.length - 1) + }; + } + + logData(data) { + const cleanData = stripAnsi(data.replace(/\x1Bc/, "")); + if (cleanData.length) { + this._logs.push(cleanData); + } + } + + run() { + if (this._cliProcess) { + throw new Error("Cli is already running"); + } else { + this._cliProcess = childProcess.spawn(this._command.name, this._command.params, { + cwd: this._cwd + }); + this._cliProcess.stdin.setEncoding(ENCODING_TYPE); + + this._cliProcess.stdout.setEncoding(ENCODING_TYPE); + this._cliProcess.stderr.setEncoding(ENCODING_TYPE); + + this._cliProcess.stdout.on("data", this.logData); + this._cliProcess.stderr.on("data", this.logData); + + this._cliProcess.on("close", code => { + this._exitCode = code; + this._resolveExitPromise(true); + }); + } + } + + async kill() { + treeKillSync(this._cliProcess.pid); + return this._exitPromise; + } + + async hasExit() { + return this._exitPromise; + } + + flush() { + this._logs = []; + } + + get logs() { + return this._logs.join(""); + } + + get exitCode() { + return this._exitCode; + } +}; diff --git a/test/acceptance/main/change-behavior.spec.js b/test/acceptance/change-behavior.spec.js similarity index 98% rename from test/acceptance/main/change-behavior.spec.js rename to test/acceptance/change-behavior.spec.js index d3c6597..e3c1324 100644 --- a/test/acceptance/main/change-behavior.spec.js +++ b/test/acceptance/change-behavior.spec.js @@ -10,7 +10,7 @@ Unless required by applicable law or agreed to in writing, software distributed const { startServer, stopServer, request, changeBehavior, getBehaviors } = require("./utils"); -describe("web tutorial", () => { +describe("API for changing current behavior", () => { let server; beforeAll(async () => { diff --git a/test/acceptance/main/files-watch.spec.js b/test/acceptance/core-events.spec.js similarity index 69% rename from test/acceptance/main/files-watch.spec.js rename to test/acceptance/core-events.spec.js index f7588ff..b900ccf 100644 --- a/test/acceptance/main/files-watch.spec.js +++ b/test/acceptance/core-events.spec.js @@ -11,34 +11,36 @@ Unless required by applicable law or agreed to in writing, software distributed const path = require("path"); const fsExtra = require("fs-extra"); const { - CliRunner, request, changeBehavior, getBehaviors, fixturesFolder, - wait + wait, + CliRunner } = require("./utils"); -const InteractiveCliRunner = require("./InteractiveCliRunner"); -const runTests = interactiveCli => { - describe("When started", () => { +describe("Plugin listening to core events", () => { + let cli; + + beforeAll(async () => { + fsExtra.removeSync(fixturesFolder("files-watch")); + fsExtra.copySync(fixturesFolder("web-tutorial"), fixturesFolder("files-watch")); + cli = new CliRunner(["node", "start-files-watch.js"], { + cwd: path.resolve(__dirname, "fixtures") + }); + await wait(1000); + }); + + afterAll(async () => { + await cli.kill(); + }); + + describe("When server is started", () => { it("should have 3 behaviors available", async () => { const behaviors = await getBehaviors(); expect(behaviors.length).toEqual(3); }); - if (interactiveCli) { - it("should display available behaviors in CLI", async () => { - await wait(500); - expect(interactiveCli.cli.logs).toEqual(expect.stringContaining("Behaviors: 3")); - }); - it("should display current behavior in CLI", async () => { - expect(interactiveCli.cli.logs).toEqual( - expect.stringContaining("Current behavior: standard") - ); - }); - } - it("should serve users collection mock under the /api/users path", async () => { const users = await request("/api/users"); expect(users).toEqual([ @@ -70,12 +72,6 @@ const runTests = interactiveCli => { expect(behaviors.length).toEqual(4); }); - if (interactiveCli) { - it("should display available behaviors in CLI", async () => { - expect(interactiveCli.cli.logs).toEqual(expect.stringContaining("Behaviors: 4")); - }); - } - it("should serve users collection mock under the /api/users path", async () => { const users = await request("/api/users"); expect(users).toEqual([ @@ -100,15 +96,6 @@ const runTests = interactiveCli => { await changeBehavior("user2"); }); - if (interactiveCli) { - it("should display current behavior in CLI", async () => { - await wait(500); - expect(interactiveCli.cli.logs).toEqual( - expect.stringContaining("Current behavior: user2") - ); - }); - } - it("should serve users collection mock under the /api/users path", async () => { const users = await request("/api/users"); expect(users).toEqual([ @@ -133,15 +120,6 @@ const runTests = interactiveCli => { await changeBehavior("dynamic"); }); - if (interactiveCli) { - it("should display current behavior in CLI", async () => { - await wait(500); - expect(interactiveCli.cli.logs).toEqual( - expect.stringContaining("Current behavior: dynamic") - ); - }); - } - it("should serve users collection mock under the /api/users path", async () => { const users = await request("/api/users"); expect(users).toEqual([ @@ -166,15 +144,6 @@ const runTests = interactiveCli => { await changeBehavior("newOne"); }); - if (interactiveCli) { - it("should display current behavior in CLI", async () => { - await wait(500); - expect(interactiveCli.cli.logs).toEqual( - expect.stringContaining("Current behavior: newOne") - ); - }); - } - it("should serve users collection mock under the /api/users path", async () => { const users = await request("/api/new-users"); expect(users).toEqual([ @@ -194,47 +163,4 @@ const runTests = interactiveCli => { }); }); }); -}; - -describe("files watcher", () => { - const binaryPath = "../../../../bin/mocks-server"; - const cwdPath = path.resolve(__dirname, "fixtures"); - const interactiveCli = { - cli: null - }; - - beforeAll(async () => { - fsExtra.removeSync(fixturesFolder("files-watch")); - fsExtra.copySync(fixturesFolder("web-tutorial"), fixturesFolder("files-watch")); - interactiveCli.cli = new InteractiveCliRunner([binaryPath, "--behaviors=files-watch"], { - cwd: cwdPath - }); - await wait(); - }); - - afterAll(async () => { - await interactiveCli.cli.kill(); - }); - - runTests(interactiveCli); -}); - -describe("files watcher started using Server", () => { - const cwdPath = fixturesFolder("programmatic-server"); - let cli; - - beforeAll(async () => { - fsExtra.removeSync(fixturesFolder("files-watch")); - fsExtra.copySync(fixturesFolder("web-tutorial"), fixturesFolder("files-watch")); - cli = new CliRunner("start-watch.js", { - cwd: cwdPath - }); - await wait(); - }); - - afterAll(async () => { - await cli.kill(); - }); - - runTests(); }); diff --git a/test/acceptance/main/fixtures/files-modification/fixtures/users.js b/test/acceptance/fixtures/files-modification/fixtures/users.js similarity index 100% rename from test/acceptance/main/fixtures/files-modification/fixtures/users.js rename to test/acceptance/fixtures/files-modification/fixtures/users.js diff --git a/test/acceptance/main/fixtures/files-modification/new-fixtures/users.js b/test/acceptance/fixtures/files-modification/new-fixtures/users.js similarity index 100% rename from test/acceptance/main/fixtures/files-modification/new-fixtures/users.js rename to test/acceptance/fixtures/files-modification/new-fixtures/users.js diff --git a/test/acceptance/main/fixtures/files-modification/standard.js b/test/acceptance/fixtures/files-modification/standard.js similarity index 95% rename from test/acceptance/main/fixtures/files-modification/standard.js rename to test/acceptance/fixtures/files-modification/standard.js index fd98237..383ecc2 100644 --- a/test/acceptance/main/fixtures/files-modification/standard.js +++ b/test/acceptance/fixtures/files-modification/standard.js @@ -10,7 +10,7 @@ Unless required by applicable law or agreed to in writing, software distributed // /mocks/behaviors.js -const { Behavior } = require("../../../../../index"); +const { Behavior } = require("@mocks-server/core"); const { getUsers, getUser, getUser2, getRealUser } = require("./fixtures/users"); const { getNewUsers, getNewUser } = require("./new-fixtures/users"); diff --git a/test/acceptance/fixtures/start-files-watch.js b/test/acceptance/fixtures/start-files-watch.js new file mode 100644 index 0000000..2b7faa4 --- /dev/null +++ b/test/acceptance/fixtures/start-files-watch.js @@ -0,0 +1,6 @@ +const path = require("path"); +const { startServer } = require("../utils"); + +startServer(path.resolve(__dirname, "files-watch"), { + watch: true +}); diff --git a/test/acceptance/main/fixtures/web-tutorial/fixtures/users.js b/test/acceptance/fixtures/web-tutorial/fixtures/users.js similarity index 100% rename from test/acceptance/main/fixtures/web-tutorial/fixtures/users.js rename to test/acceptance/fixtures/web-tutorial/fixtures/users.js diff --git a/test/acceptance/main/fixtures/web-tutorial/standard.js b/test/acceptance/fixtures/web-tutorial/standard.js similarity index 94% rename from test/acceptance/main/fixtures/web-tutorial/standard.js rename to test/acceptance/fixtures/web-tutorial/standard.js index c2703a0..9035692 100644 --- a/test/acceptance/main/fixtures/web-tutorial/standard.js +++ b/test/acceptance/fixtures/web-tutorial/standard.js @@ -10,7 +10,7 @@ Unless required by applicable law or agreed to in writing, software distributed // /mocks/behaviors.js -const { Behavior } = require("../../../../../index"); +const { Behavior } = require("@mocks-server/core"); const { getUsers, getUser, getUser2, getRealUser } = require("./fixtures/users"); diff --git a/test/acceptance/main/utils.js b/test/acceptance/utils.js similarity index 93% rename from test/acceptance/main/utils.js rename to test/acceptance/utils.js index cff0b75..7b66800 100644 --- a/test/acceptance/main/utils.js +++ b/test/acceptance/utils.js @@ -10,15 +10,17 @@ Unless required by applicable law or agreed to in writing, software distributed const path = require("path"); const { Core } = require("@mocks-server/core"); -const PluginAdminApi = require("../../../index"); const requestPromise = require("request-promise"); +const CliRunner = require("./CliRunner"); + +const PluginAdminApi = require("../../index"); const SERVER_PORT = 3100; const defaultOptions = { port: SERVER_PORT, - log: "debug", + log: "silly", watch: false }; @@ -38,6 +40,7 @@ const startServer = (mocksPath, opts = {}) => { ...opts }; const server = new Core({ + onlyProgrammaticOptions: true, plugins: [PluginAdminApi] }); return server.init(options).then(() => { @@ -122,5 +125,6 @@ module.exports = { changeDelay, TimeCounter, wait, - fixturesFolder + fixturesFolder, + CliRunner }; From 5afebee82aa948f920177e6b12a42dade56c26cf Mon Sep 17 00:00:00 2001 From: javierbrea Date: Fri, 6 Dec 2019 12:13:34 +0100 Subject: [PATCH 06/10] Execute unit tests --- jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jest.config.js b/jest.config.js index e71e637..077d9f7 100644 --- a/jest.config.js +++ b/jest.config.js @@ -9,7 +9,7 @@ module.exports = { collectCoverage: true, // An array of glob patterns indicating a set of files for which coverage information should be collected - collectCoverageFrom: ["index.js", "lib/**"], + collectCoverageFrom: ["index.js", "src/**"], // The directory where Jest should output its coverage files coverageDirectory: "coverage", From d78b1a891e11e1a5ebc0b2dc68cfe3cb131ad891 Mon Sep 17 00:00:00 2001 From: javierbrea Date: Fri, 6 Dec 2019 12:30:25 +0100 Subject: [PATCH 07/10] Add plugin documentation --- README.md | 64 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 71cd435..85074de 100644 --- a/README.md +++ b/README.md @@ -5,25 +5,27 @@ [![NPM downloads][npm-downloads-image]][npm-downloads-url] [![License][license-image]][license-url] -# [![Mocks Server][logo-url]][website-url] Mocks Server +# [![Mocks Server][logo-url]][website-url] Plugin for administrating Mocks Server through a REST API. -This package provides a server that simulates API behaviors. It can be added as a dependency of your project, and started simply running an NPM command. +Plugin for [Mocks Server][[website-url]] providing an API REST that allows to change dinamically the current behavior, change delay time, and another [Mocks Server options][options-url] -## Documentation +This is __very useful when running acceptance tests, as you can change the behavior of the api__ simply with a request in your tests `before` method, for example. -Please refer to the [project documentation website][website-url]: +## Usage -* [Get started](https://www.mocks-server.org/docs/get-started-intro) -* [Tutorials](https://www.mocks-server.org/docs/tutorials-static) -* [Configuration](https://www.mocks-server.org/docs/configuration-options) +This plugin is included in the [main distribution of the Mocks Server project][main-distribution-url], so you can refer to the [official documentation website][website-url]. -## Why a mocks server? +## API Resources -Controlling the responses of the api will improve the front-end development workflow, avoiding early dependencies with back-end. It also improves the testing and development of error cases or another cases that are commonly hard to reproduce in the real api. +Available api resources are: -Defining the api responses during the earliest phases of development will improve the communication among team members and align their expectations. - -Working with Node.js, it integrates better in front-end projects as any other NPM dependency, and it will be easier for front-end developers to maintain the mocks. +* `GET` `/mocks/behaviors/current` Returns current behavior. +* `PUT` `/mocks/behaviors/current` Set current behavior. + * Request body example: `{ "name": "behavior-name" }` +* `GET` `/mocks/settings` Return current server settings. + * Response body example: `{ "delay": 0 }` +* `PUT` `/mocks/settings` Change current server settings. + * Request body example: `{ "delay": 3000 }` ## Contributing @@ -31,23 +33,23 @@ Contributors are welcome. Please read the [contributing guidelines](.github/CONTRIBUTING.md) and [code of conduct](.github/CODE_OF_CONDUCT.md). [website-url]: https://www.mocks-server.org +[main-distribution-url]: https://www.npmjs.com/package/@mocks-server/main +[options-url]: https://www.mocks-server.org/docs/configuration-options [logo-url]: https://www.mocks-server.org/img/logo_120.png -[inquirer-url]: https://www.npmjs.com/package/inquirer#support-os-terminals -[inquirer-support]: https://www.npmjs.com/package/inquirer#support-os-terminals - -[coveralls-image]: https://coveralls.io/repos/github/mocks-server/main/badge.svg -[coveralls-url]: https://coveralls.io/github/mocks-server/main -[travisci-image]: https://travis-ci.com/mocks-server/main.svg?branch=master -[travisci-url]: https://travis-ci.com/mocks-server/main -[last-commit-image]: https://img.shields.io/github/last-commit/mocks-server/main.svg -[last-commit-url]: https://github.com/mocks-server/main/commits -[license-image]: https://img.shields.io/npm/l/@mocks-server/main.svg -[license-url]: https://github.com/mocks-server/main/blob/master/LICENSE -[npm-downloads-image]: https://img.shields.io/npm/dm/@mocks-server/main.svg -[npm-downloads-url]: https://www.npmjs.com/package/@mocks-server/main -[npm-dependencies-image]: https://img.shields.io/david/mocks-server/main.svg -[npm-dependencies-url]: https://david-dm.org/mocks-server/main -[quality-gate-image]: https://sonarcloud.io/api/project_badges/measure?project=mocks-server-main&metric=alert_status -[quality-gate-url]: https://sonarcloud.io/dashboard?id=mocks-server-main -[release-image]: https://img.shields.io/github/release-date/mocks-server/main.svg -[release-url]: https://github.com/mocks-server/main/releases + +[coveralls-image]: https://coveralls.io/repos/github/mocks-server/plugin-admin-api/badge.svg +[coveralls-url]: https://coveralls.io/github/mocks-server/plugin-admin-api +[travisci-image]: https://travis-ci.com/mocks-server/plugin-admin-api.svg?branch=master +[travisci-url]: https://travis-ci.com/mocks-server/plugin-admin-api +[last-commit-image]: https://img.shields.io/github/last-commit/mocks-server/plugin-admin-api.svg +[last-commit-url]: https://github.com/mocks-server/plugin-admin-api/commits +[license-image]: https://img.shields.io/npm/l/@mocks-server/plugin-admin-api.svg +[license-url]: https://github.com/mocks-server/plugin-admin-api/blob/master/LICENSE +[npm-downloads-image]: https://img.shields.io/npm/dm/@mocks-server/plugin-admin-api.svg +[npm-downloads-url]: https://www.npmjs.com/package/@mocks-server/plugin-admin-api +[npm-dependencies-image]: https://img.shields.io/david/mocks-server/plugin-admin-api.svg +[npm-dependencies-url]: https://david-dm.org/mocks-server/plugin-admin-api +[quality-gate-image]: https://sonarcloud.io/api/project_badges/measure?project=mocks-server-plugin-admin-api&metric=alert_status +[quality-gate-url]: https://sonarcloud.io/dashboard?id=mocks-server-plugin-admin-api +[release-image]: https://img.shields.io/github/release-date/mocks-server/plugin-admin-api.svg +[release-url]: https://github.com/mocks-server/plugin-admin-api/releases From ab01719e943681eee5d102a9c984eb2f62eb1556 Mon Sep 17 00:00:00 2001 From: javierbrea Date: Fri, 6 Dec 2019 12:31:25 +0100 Subject: [PATCH 08/10] Add date to changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2dddf0..5f762c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed ### Removed -## [1.0.0] - +## [1.0.0] - 2019-12-06 - Migrate administration api from [@mocks-server/main, v1.3.0](https://github.com/mocks-server/main/releases/tag/v1.3.0). For further info read the [previous repository CHANGELOG.md](https://github.com/mocks-server/main/blob/v1.3.0/CHANGELOG.md#130---2019-11-17) - Export Plugin, which can be used only programmatically. (Binary is still distributed in the [@mocks-server/main](https://github.com/mocks-server/main) package). - Remove core and inquirer-cli. Both have now their own repositories. From 0cb2f81246f93075008bee83246ab5b4185a25c6 Mon Sep 17 00:00:00 2001 From: javierbrea Date: Fri, 6 Dec 2019 12:40:06 +0100 Subject: [PATCH 09/10] Improve docs --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 85074de..d91c946 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ [![NPM downloads][npm-downloads-image]][npm-downloads-url] [![License][license-image]][license-url] -# [![Mocks Server][logo-url]][website-url] Plugin for administrating Mocks Server through a REST API. +# [![Mocks Server][logo-url]][website-url] Mocks Server Plugin Admin Api -Plugin for [Mocks Server][[website-url]] providing an API REST that allows to change dinamically the current behavior, change delay time, and another [Mocks Server options][options-url] +Plugin for [Mocks Server][website-url] that provides an API REST that allows to change dinamically the current behavior, change delay time, and another [Mocks Server options][options-url]. -This is __very useful when running acceptance tests, as you can change the behavior of the api__ simply with a request in your tests `before` method, for example. +This is __very useful when running acceptance tests, as you can change the behavior of the api__ simply making an HTTP request in your tests `before` method, for example. ## Usage @@ -22,9 +22,9 @@ Available api resources are: * `GET` `/mocks/behaviors/current` Returns current behavior. * `PUT` `/mocks/behaviors/current` Set current behavior. * Request body example: `{ "name": "behavior-name" }` -* `GET` `/mocks/settings` Return current server settings. +* `GET` `/mocks/settings` Returns current server settings. * Response body example: `{ "delay": 0 }` -* `PUT` `/mocks/settings` Change current server settings. +* `PUT` `/mocks/settings` Changes current server settings. * Request body example: `{ "delay": 3000 }` ## Contributing From b0ad3571217a1d4d77f7b4d6ebe4d1253f1801c7 Mon Sep 17 00:00:00 2001 From: javierbrea Date: Fri, 6 Dec 2019 12:44:10 +0100 Subject: [PATCH 10/10] Run sonar only when token is available --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b434a85..6633dfd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,7 +19,7 @@ script: - npm run lint - npm run test-ci - npm run coveralls - - sonar-scanner -Dsonar.login=${SONAR_TOKEN} + - 'if [ -n "$SONAR_TOKEN" ]; then sonar-scanner -Dsonar.login=${SONAR_TOKEN}; fi' deploy: provider: npm

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 z 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