From cd876c0026bf59831c0322946f0d73a8328c1b3f Mon Sep 17 00:00:00 2001 From: jsteuer <jan.niklas.steuer@gmail.com> Date: Sat, 21 Dec 2019 13:27:11 +0100 Subject: [PATCH] fix argument validation --- package-lock.json | 2 +- package.json | 4 ++-- test/Helpers.spec.ts | 4 ++++ src/Helpers.ts | 13 ++++++++----- CHANGELOG.md | 5 +++++ README.md | 3 ++- 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a30c7d8..4a19755 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,11 @@ ### Removed +## [2.0.1] - 2019-12-21 +### Fixed +- Fehlerhafte Validierung von Argumenten bei API Aufrufen gegenüber der + Offline-Implementierung (z.B. `Helpers.enableOfflineUsageIfNecessary`) + verbessert ## [2.0.0] - 2019-12-18 diff --git a/README.md b/README.md index 60cdc37..4d2b5cc 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# MathCoach IDE API +# MathCoach IDE API <small>`Version 2.0.1`</small> In diesem Paket ([Das Gitblit Repository findet sich hier](https://newton.htwsaar.de/gitblit/summary/mathcoach!mathcoach-ide-api.git)) ist die öffentliche Schnittstelle zur MathCoach Entwicklungsumgebung (IDE) definiert. Mithilfe @@ -320,6 +320,7 @@ #### Release einer neuen Version - Version der API in der `package.json` eintragen +- Version in der Überschrift der `README.md` eintragen - Beispiele und Changelog aktualisieren - IDE-Projekt prüfen: `package.json`, `ide-lib.js`, ... - Final: Release Tag setzen `git tag -a VERSION -m '...'` und pushen diff --git a/package-lock.json b/package-lock.json index fd15ae7..940d366 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@mathcoach/ide-api", - "version": "1.1.0", + "version": "2.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d40d7ae..caba57b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@mathcoach/ide-api", - "version": "2.0.0", + "version": "2.0.1", "description": "API zur MathCoach IDE", "main": "./src/index.ts", "directories": { @@ -54,4 +54,4 @@ "instrument": true, "all": true } -} \ No newline at end of file +} diff --git a/src/Helpers.ts b/src/Helpers.ts index e0dccb0..83fc07f 100644 --- a/src/Helpers.ts +++ b/src/Helpers.ts @@ -65,13 +65,16 @@ const traceMethod = (method: string, args?: any[]) => console.log(["[MC MOCK API]", " ", method, "(", (args ? args : [""]).join(","), ")"].join("")); const runtimeCheck = (errorMessage: string, isInvalid: (param: any) => boolean) => { return (paramName: string, value: any, optional: boolean = false) => { - if (!optional && (value === null || value === undefined)) { - throw new Error(`parameter '${paramName}' is null or undefined`); - } else { - if (isInvalid(value)) { - throw new Error(`parameter '${paramName}' is invalid: ${errorMessage}`); + if (value === undefined) { + if (optional) { + return; + } else { + throw new Error(`missing parameter '${paramName}'`); } } + if (isInvalid(value)) { + throw new Error(`parameter '${paramName}' is invalid: ${errorMessage}`); + } } } const runtimeCheckString = runtimeCheck("not a string", v => typeof v !== "string"); diff --git a/test/Helpers.spec.ts b/test/Helpers.spec.ts index 46872b4..a194c39 100644 --- a/test/Helpers.spec.ts +++ b/test/Helpers.spec.ts @@ -108,8 +108,12 @@ const contextFile = await MC.ide.getContextFile(); const exerciseFile = Helpers.contextFileToExerciseFile(contextFile); + MC.ide.navigator.navigateTo("www.google.de"); + MC.ide.navigator.navigateToExercise(exerciseFile); MC.ide.navigator.navigateTo("www.google.de", true); MC.ide.navigator.navigateToExercise(exerciseFile, true); + MC.ide.navigator.navigateTo("www.google.de", false); + MC.ide.navigator.navigateToExercise(exerciseFile, false); expectThrows(t, () => MC.ide.navigator.navigateTo(null as any)); expectThrows(t, () => MC.ide.navigator.navigateTo(42 as any)); -- Gitblit v1.10.0-SNAPSHOT