From b723dd40d0e71a28ed6fa033c11550b9394e5f10 Mon Sep 17 00:00:00 2001 From: wgroeneveld Date: Sun, 7 Mar 2021 20:41:54 +0100 Subject: [PATCH] =?UTF-8?q?first=20tests=20=F0=9F=8D=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webmention/receive.js | 8 +-- test/webmention/receive.test.js | 97 +++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 test/webmention/receive.test.js diff --git a/src/webmention/receive.js b/src/webmention/receive.js index 0489687..8f85918 100644 --- a/src/webmention/receive.js +++ b/src/webmention/receive.js @@ -1,6 +1,6 @@ function isValidUrl(url) { - return url && + return url !== undefined && (url.startsWith("http://") || url.startsWith("https://")) } @@ -19,9 +19,9 @@ function isValidUrl(url) { */ function validate(request) { return request.type === "application/x-www-form-urlencoded" && - request.body && - isValidUrl(request.body.source) && - isValidUrl(request.body.target) + request.body !== undefined && + isValidUrl(request?.body.source) && + isValidUrl(request?.body.target) } async function receive(body) { diff --git a/test/webmention/receive.test.js b/test/webmention/receive.test.js new file mode 100644 index 0000000..b7f2040 --- /dev/null +++ b/test/webmention/receive.test.js @@ -0,0 +1,97 @@ + +const { receive, validate } = require('../../src/webmention/receive') + +describe("validate tests", () => { + + const validhttpurl = "http://localhost/bla" + const validhttpsurl = "https://localhost/blie" + const invalidurl = "lolzw" + + test("is valid if source and target https urls", () => { + const result = validate({ + type: "application/x-www-form-urlencoded", + body: { + source: validhttpsurl, + target: validhttpsurl + } + }) + + expect(result).toBe(true) + }) + test("is valid if source and target http urls", () => { + const result = validate({ + type: "application/x-www-form-urlencoded", + body: { + source: validhttpurl, + target: validhttpurl + } + }) + + expect(result).toBe(true) + }) + test("is NOT valid if source is not a valid url", () => { + const result = validate({ + type: "application/x-www-form-urlencoded", + body: { + source: invalidurl, + target: validhttpurl + } + }) + + expect(result).toBe(false) + }) + test("is NOT valid if target is not a valid url", () => { + const result = validate({ + type: "application/x-www-form-urlencoded", + body: { + source: validhttpurl, + target: invalidurl + } + }) + + expect(result).toBe(false) + }) + test("is NOT valid if source is missing", () => { + const result = validate({ + type: "application/x-www-form-urlencoded", + body: { + target: validhttpurl + } + }) + + expect(result).toBe(false) + }) + test("is NOT valid if target is missing", () => { + const result = validate({ + type: "application/x-www-form-urlencoded", + body: { + source: validhttpurl + } + }) + + expect(result).toBe(false) + }) + test("is NOT valid if no valid encoded form", () => { + const result = validate({ + type: "ow-mai-got", + body: { + source: validhttpurl, + target: validhttpurl + } + }) + + expect(result).toBe(false) + }) + test("is NOT valid if body is missing", () => { + const result = validate({ + type: "application/x-www-form-urlencoded" + }) + + expect(result).toBe(false) + }) + +}) + +describe("receive webmention process tests", () => { + +}) \ No newline at end of file