From d1a162ec30ad1ef61d785d2ccc54104d279defc6 Mon Sep 17 00:00:00 2001 From: slorber Date: Mon, 25 May 2020 16:27:36 +0200 Subject: [PATCH] createRedirectPageContent: use eta template + encode URI for meta refresh header + tests --- .../package.json | 1 + .../createRedirectPageContent.test.ts.snap | 27 +++++++++++++++++++ .../createRedirectPageContent.test.ts | 26 ++++++++++++++++++ .../src/createRedirectPageContent.ts | 26 +++++------------- .../template/redirectPage.html.template.js | 19 +++++++++++++ 5 files changed, 79 insertions(+), 20 deletions(-) create mode 100644 packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/createRedirectPageContent.test.ts.snap create mode 100644 packages/docusaurus-plugin-client-redirects/src/__tests__/createRedirectPageContent.test.ts create mode 100644 packages/docusaurus-plugin-client-redirects/src/template/redirectPage.html.template.js diff --git a/packages/docusaurus-plugin-client-redirects/package.json b/packages/docusaurus-plugin-client-redirects/package.json index a3041d5e6b..54a40a92ca 100644 --- a/packages/docusaurus-plugin-client-redirects/package.json +++ b/packages/docusaurus-plugin-client-redirects/package.json @@ -13,6 +13,7 @@ "dependencies": { "@docusaurus/types": "^2.0.0-alpha.55", "@docusaurus/utils": "^2.0.0-alpha.55", + "eta": "^1.1.1", "globby": "^10.0.1" }, "peerDependencies": { diff --git a/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/createRedirectPageContent.test.ts.snap b/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/createRedirectPageContent.test.ts.snap new file mode 100644 index 0000000000..5a011ab162 --- /dev/null +++ b/packages/docusaurus-plugin-client-redirects/src/__tests__/__snapshots__/createRedirectPageContent.test.ts.snap @@ -0,0 +1,27 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`createRedirectPageContent should encode uri special chars 1`] = ` +" + + + + + + +" +`; + +exports[`createRedirectPageContent should match snapshot 1`] = ` +" + + + + + + +" +`; diff --git a/packages/docusaurus-plugin-client-redirects/src/__tests__/createRedirectPageContent.test.ts b/packages/docusaurus-plugin-client-redirects/src/__tests__/createRedirectPageContent.test.ts new file mode 100644 index 0000000000..b9aea1ef34 --- /dev/null +++ b/packages/docusaurus-plugin-client-redirects/src/__tests__/createRedirectPageContent.test.ts @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import createRedirectPageContent from '../createRedirectPageContent'; + +describe('createRedirectPageContent', () => { + test('should match snapshot', () => { + expect( + createRedirectPageContent({toUrl: 'https://docusaurus.io/'}), + ).toMatchSnapshot(); + }); + + test('should encode uri special chars', () => { + const result = createRedirectPageContent({ + toUrl: 'https://docusaurus.io/gr/σελιδας/', + }); + expect(result).toContain( + 'https://docusaurus.io/gr/%CF%83%CE%B5%CE%BB%CE%B9%CE%B4%CE%B1%CF%82/', + ); + expect(result).toMatchSnapshot(); + }); +}); diff --git a/packages/docusaurus-plugin-client-redirects/src/createRedirectPageContent.ts b/packages/docusaurus-plugin-client-redirects/src/createRedirectPageContent.ts index 140a098569..d7b9452328 100644 --- a/packages/docusaurus-plugin-client-redirects/src/createRedirectPageContent.ts +++ b/packages/docusaurus-plugin-client-redirects/src/createRedirectPageContent.ts @@ -5,6 +5,9 @@ * LICENSE file in the root directory of this source tree. */ +const eta = require('eta'); +const redirectPageTemplate = require('./template/redirectPage.html.template'); + type CreateRedirectPageOptions = { toUrl: string; }; @@ -12,24 +15,7 @@ type CreateRedirectPageOptions = { export default function createRedirectPageContent({ toUrl, }: CreateRedirectPageOptions) { - return ` - - - - - - - -`; + return eta.render(redirectPageTemplate.trim(), { + toUrl: encodeURI(toUrl), + }); } diff --git a/packages/docusaurus-plugin-client-redirects/src/template/redirectPage.html.template.js b/packages/docusaurus-plugin-client-redirects/src/template/redirectPage.html.template.js new file mode 100644 index 0000000000..e36d306bb8 --- /dev/null +++ b/packages/docusaurus-plugin-client-redirects/src/template/redirectPage.html.template.js @@ -0,0 +1,19 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +module.exports = ` + + + + + + + + +`;