From a9b996c28428b1092b6589c13b558076d1783a12 Mon Sep 17 00:00:00 2001 From: Kiko Beats Date: Fri, 21 Jul 2023 12:12:57 +0200 Subject: [PATCH] fix: ensure domain is not falsy --- src/html.js | 14 +++++++------ test/html.js | 40 ++++++++++++++++++++++++------------ test/snapshots/html.js.md | 27 +++++++++++++++++++++++- test/snapshots/html.js.snap | Bin 3712 -> 3755 bytes 4 files changed, 61 insertions(+), 20 deletions(-) diff --git a/src/html.js b/src/html.js index 4098fb8..1bc0094 100644 --- a/src/html.js +++ b/src/html.js @@ -28,16 +28,18 @@ const addHead = ({ $, url, headers }) => { const charset = nth(split(contentType, 'charset='), 1) const timestamp = get(headers, 'last-modified') || get(headers, 'date') const date = timestamp && toDate(timestamp) - + const { domain } = parseUrl(url) const head = $('head') upsert(head.find('title'), tags, `${path.basename(url)}`) - upsert( - head.find('meta[property="og:site_name"]'), - tags, - `` - ) + if (domain) { + upsert( + head.find('meta[property="og:site_name"]'), + tags, + `` + ) + } if (date) { upsert( diff --git a/test/html.js b/test/html.js index 6367883..4e5c699 100644 --- a/test/html.js +++ b/test/html.js @@ -2,6 +2,7 @@ 'use strict' +const cheerio = require('cheerio') const execall = require('execall') const path = require('path') const test = require('ava') @@ -52,8 +53,7 @@ test('add doctype', t => { test('add json markup', t => { const output = html({ - html: - '{"origin":"83.46.149.83","city":"Madrid","alpha2":"ES","alpha3":"ESP","callingCodes":["+34"],"currencies":{"EUR":{"name":"Euro","symbol":"€"}},"eeaMember":true,"euMember":true,"flag":"🇪🇸","languages":{"spa":"Spanish"},"numeric":724,"tld":[".es"],"region":"MD","latitude":"40.4163","longitude":"-3.6934","timezone":"Europe/Madrid","headers":{"accept":"*/*","accept-encoding":"gzip","cdn-loop":"cloudflare","cf-connecting-ip":"83.46.149.83","cf-ipcountry":"ES","cf-ray":"73a29be38cdf37c7-MAD","cf-visitor":"{"scheme":"https"}","connection":"Keep-Alive","host":"geolocation.microlink.io","user-agent":"curl/7.79.1","x-forwarded-for":"172.70.57.171","x-forwarded-host":"geolocation.microlink.io","x-forwarded-proto":"https","x-real-ip":"172.70.57.171","x-vercel-edge-region":"dev","x-vercel-id":"cdg1::x96k9-1660405852783-a0083d276cde","x-vercel-ip-city":"Madrid","x-vercel-ip-country":"ES","x-vercel-ip-country-region":"MD","x-vercel-ip-latitude":"40.4163","x-vercel-ip-longitude":"-3.6934","x-vercel-ip-timezone":"Europe/Madrid","x-vercel-proxied-for":"172.70.57.171"}}', + html: '{"origin":"83.46.149.83","city":"Madrid","alpha2":"ES","alpha3":"ESP","callingCodes":["+34"],"currencies":{"EUR":{"name":"Euro","symbol":"€"}},"eeaMember":true,"euMember":true,"flag":"🇪🇸","languages":{"spa":"Spanish"},"numeric":724,"tld":[".es"],"region":"MD","latitude":"40.4163","longitude":"-3.6934","timezone":"Europe/Madrid","headers":{"accept":"*/*","accept-encoding":"gzip","cdn-loop":"cloudflare","cf-connecting-ip":"83.46.149.83","cf-ipcountry":"ES","cf-ray":"73a29be38cdf37c7-MAD","cf-visitor":"{"scheme":"https"}","connection":"Keep-Alive","host":"geolocation.microlink.io","user-agent":"curl/7.79.1","x-forwarded-for":"172.70.57.171","x-forwarded-host":"geolocation.microlink.io","x-forwarded-proto":"https","x-real-ip":"172.70.57.171","x-vercel-edge-region":"dev","x-vercel-id":"cdg1::x96k9-1660405852783-a0083d276cde","x-vercel-ip-city":"Madrid","x-vercel-ip-country":"ES","x-vercel-ip-country-region":"MD","x-vercel-ip-latitude":"40.4163","x-vercel-ip-longitude":"-3.6934","x-vercel-ip-timezone":"Europe/Madrid","x-vercel-proxied-for":"172.70.57.171"}}', url: 'https://geolocation.microlink.io/', headers: { 'content-type': 'application/json' } }) @@ -72,8 +72,7 @@ test('add image markup', t => { test('add audio markup', t => { const output = html({ - url: - 'http://websrvr90va.audiovideoweb.com/va90web25003/companions/Foundations%20of%20Rock/13.01.mp3', + url: 'http://websrvr90va.audiovideoweb.com/va90web25003/companions/Foundations%20of%20Rock/13.01.mp3', headers: { 'content-type': 'audio/mp3' } }) @@ -82,8 +81,7 @@ test('add audio markup', t => { test('add video markup', t => { const output = html({ - url: - 'https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4', + url: 'https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4', headers: { 'content-type': 'video/mp4' } }) @@ -93,8 +91,7 @@ test('add video markup', t => { test("'`rewriteCssUrls` don't modify html markup", t => { const output = html({ rewriteUrls: true, - url: - 'https://www.rubiomonocoatusa.com/blogs/blog/how-to-apply-oil-plus-2c-to-furniture', + url: 'https://www.rubiomonocoatusa.com/blogs/blog/how-to-apply-oil-plus-2c-to-furniture', html: ` @@ -192,8 +189,7 @@ test('`rewriteHtmlUrls` rewrites relative URLs inside stylesheet', t => { test("`rewriteHtmlUrls` don't modify inline javascript", t => { const output = html({ rewriteUrls: true, - url: - 'https://www.latimes.com/opinion/story/2020-06-07/column-muralist-honors-african-americans-killed-by-police', + url: 'https://www.latimes.com/opinion/story/2020-06-07/column-muralist-honors-african-americans-killed-by-police', html: ` @@ -222,8 +218,7 @@ test("`rewriteHtmlUrls` don't modify inline javascript", t => { test("`rewriteHtmlUrls` don't modify non http protocols", t => { const output = html({ rewriteUrls: true, - url: - 'https://www.latimes.com/opinion/story/2020-06-07/column-muralist-honors-african-americans-killed-by-police', + url: 'https://www.latimes.com/opinion/story/2020-06-07/column-muralist-honors-african-americans-killed-by-police', html: ` @@ -284,7 +279,7 @@ test("`rewriteHtmlUrls` don't modify data URIs", t => { t.snapshot(prettyHtml(output)) }) -test("`rewriteHtmlUrls` don't modify udnefined attributes", t => { +test("`rewriteHtmlUrls` don't modify undefined attributes", t => { const output = html({ rewriteUrls: true, url: 'https://moovility.me', @@ -439,3 +434,22 @@ test('remove elements', t => { t.true(output.includes('#banner { display: none !important; }')) t.snapshot(prettyHtml(output)) }) + +test('add `og:site_name` when is possible', t => { + t.is( + cheerio + .load(html({ url: 'https://1.1.1.1', html: '', headers: {} }))( + 'meta[property="og:site_name"]' + ) + .attr('content'), + undefined + ) + t.is( + cheerio + .load(html({ url: 'https://kikobeats.com', html: '', headers: {} }))( + 'meta[property="og:site_name"]' + ) + .attr('content'), + 'kikobeats.com' + ) +}) diff --git a/test/snapshots/html.js.md b/test/snapshots/html.js.md index 408059b..9f2631c 100644 --- a/test/snapshots/html.js.md +++ b/test/snapshots/html.js.md @@ -286,7 +286,7 @@ Generated by [AVA](https://avajs.dev). ␊ ` -## `rewriteHtmlUrls` don't modify udnefined attributes +## `rewriteHtmlUrls` don't modify undefined attributes > Snapshot 1 @@ -414,6 +414,31 @@ Generated by [AVA](https://avajs.dev). ␊ ` +## ensure domain is valid + +> Snapshot 1 + + undefined + +## `rewriteHtmlUrls` don't modify udnefined attributes + +> Snapshot 1 + + `␊ + ␊ + ␊ + Document␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ␊ + ` + ## add markup for json payload > Snapshot 1 diff --git a/test/snapshots/html.js.snap b/test/snapshots/html.js.snap index 1acd13e6fd700996f744ae20886ccf5e92ef061f..f31bf0bcb48577ef059122bae9fa543cc2e632ab 100644 GIT binary patch literal 3755 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 V^p^z`UrGVR{{yi4pB~Fw001(iOJM*2 literal 3712 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 e=QY*e;F@Y{3iRjo)L%