From b972ff4d008d79caf2dc73057b97a09b62d03a0f Mon Sep 17 00:00:00 2001 From: Francesco Bianchi Date: Wed, 19 Feb 2025 12:23:24 +0100 Subject: [PATCH] PF e PG: regex e test --- .../public/js/config.js | 2 +- .../src/__test__/config.test.js | 54 +++++++++++++++++++ .../public/js/config.js | 2 +- .../src/__test__/config.test.js | 54 +++++++++++++++++++ 4 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 packages/pn-personafisica-webapp/src/__test__/config.test.js create mode 100644 packages/pn-personagiuridica-webapp/src/__test__/config.test.js diff --git a/packages/pn-personafisica-webapp/public/js/config.js b/packages/pn-personafisica-webapp/public/js/config.js index 346edc5237..dadc6e6142 100644 --- a/packages/pn-personafisica-webapp/public/js/config.js +++ b/packages/pn-personafisica-webapp/public/js/config.js @@ -1,4 +1,4 @@ -const regex = new RegExp('https://cittadini.((dev|test|uat|hotfix).?)notifichedigitali.it'); +const regex = new RegExp('https://cittadini(.(dev|test|uat|hotfix))?.notifichedigitali.it'); const origin = window.origin; if (regex.test(origin)) { document.write(``); diff --git a/packages/pn-personafisica-webapp/src/__test__/config.test.js b/packages/pn-personafisica-webapp/src/__test__/config.test.js new file mode 100644 index 0000000000..6bf08774ac --- /dev/null +++ b/packages/pn-personafisica-webapp/src/__test__/config.test.js @@ -0,0 +1,54 @@ +import fs from 'fs'; +import { JSDOM } from 'jsdom'; +import path from 'path'; +import { vi } from 'vitest'; + +const emptyHTML = ''; +const scriptContent = fs.readFileSync(path.resolve(__dirname, '../../public/js/config.js'), 'utf8'); + +describe('config.js behavior', () => { + let dom; + let document; + + beforeAll(() => { + dom = new JSDOM(emptyHTML, { + runScripts: 'dangerously', + resources: 'usable', + }); + + document = dom.window.document; + vi.spyOn(document, 'write').mockImplementation(() => {}); + }); + + test('should add noindex meta tag when URL matches regex', async () => { + const origins = [ + 'https://cittadini.notifichedigitali.it', + 'https://cittadini.dev.notifichedigitali.it/', + 'https://cittadini.test.notifichedigitali.it/', + 'https://cittadini.uat.notifichedigitali.it/', + 'https://cittadini.hotfix.notifichedigitali.it/', + ]; + + for (const origin of origins) { + document.write.mockClear(); + dom.window.origin = origin; + dom.window.eval(scriptContent); + expect(document.write).toHaveBeenCalledWith(``); + } + }); + + test('should not add noindex meta tag when URL does not match regex', async () => { + const origins = [ + 'https://cittadini.testnotifichedigitali.it', + 'https://cittadini.prod.notifichedigitali.it', + 'https://otherapp.dev.notifichedigitali.it', + ]; + + for (const origin of origins) { + document.write.mockClear(); + dom.window.origin = origin; + dom.window.eval(scriptContent); + expect(document.write).not.toHaveBeenCalled(); + } + }); +}); diff --git a/packages/pn-personagiuridica-webapp/public/js/config.js b/packages/pn-personagiuridica-webapp/public/js/config.js index 4746905bf9..dd0b6c9ed4 100644 --- a/packages/pn-personagiuridica-webapp/public/js/config.js +++ b/packages/pn-personagiuridica-webapp/public/js/config.js @@ -1,4 +1,4 @@ -const regex = new RegExp('https://imprese.((dev|test|uat|hotfix).?)notifichedigitali.it'); +const regex = new RegExp('https://imprese(.(dev|test|uat|hotfix))?.notifichedigitali.it'); const origin = window.origin; if (regex.test(origin)) { document.write(``); diff --git a/packages/pn-personagiuridica-webapp/src/__test__/config.test.js b/packages/pn-personagiuridica-webapp/src/__test__/config.test.js new file mode 100644 index 0000000000..07519f937c --- /dev/null +++ b/packages/pn-personagiuridica-webapp/src/__test__/config.test.js @@ -0,0 +1,54 @@ +import fs from 'fs'; +import { JSDOM } from 'jsdom'; +import path from 'path'; +import { vi } from 'vitest'; + +const emptyHTML = ''; +const scriptContent = fs.readFileSync(path.resolve(__dirname, '../../public/js/config.js'), 'utf8'); + +describe('config.js behavior', () => { + let dom; + let document; + + beforeAll(() => { + dom = new JSDOM(emptyHTML, { + runScripts: 'dangerously', + resources: 'usable', + }); + + document = dom.window.document; + vi.spyOn(document, 'write').mockImplementation(() => {}); + }); + + test('should add noindex meta tag when URL matches regex', async () => { + const origins = [ + 'https://imprese.notifichedigitali.it', + 'https://imprese.dev.notifichedigitali.it/', + 'https://imprese.test.notifichedigitali.it/', + 'https://imprese.uat.notifichedigitali.it/', + 'https://imprese.hotfix.notifichedigitali.it/', + ]; + + for (const origin of origins) { + document.write.mockClear(); + dom.window.origin = origin; + dom.window.eval(scriptContent); + expect(document.write).toHaveBeenCalledWith(``); + } + }); + + test('should not add noindex meta tag when URL does not match regex', async () => { + const origins = [ + 'https://imprese.testnotifichedigitali.it', + 'https://imprese.prod.notifichedigitali.it', + 'https://otherapp.dev.notifichedigitali.it', + ]; + + for (const origin of origins) { + document.write.mockClear(); + dom.window.origin = origin; + dom.window.eval(scriptContent); + expect(document.write).not.toHaveBeenCalled(); + } + }); +});