Skip to content
Snippets Groups Projects
Commit 9b9be8aa authored by Igor Markin's avatar Igor Markin
Browse files

Strip qr code from gmail plain and html

parent 1ad28051
No related branches found
No related tags found
1 merge request!8rosenInitialTest
Showing with 199 additions and 18 deletions
<div dir="ltr"><br>Forwarding an email with history.<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">---------- Forwarded message ---------<br>From: <strong class="gmail_sendername" dir="auto">Rosen Georgiev</strong> <span dir="auto">&lt;<a href="mailto:rosenkirchev@gmail.com">rosenkirchev@gmail.com</a>&gt;</span><br>Date: Fri, Dec 11, 2020 at 11:48 AM<br>Subject: test 123<br>To: &lt;<a href="mailto:rosenvereign@gmail.com">rosenvereign@gmail.com</a>&gt;<br></div><br><br><div dir="ltr"><br>test 123<br><a href="https://gmail.test.vereign.com/?q=CiCmv1km3XHq88gSQqKAJks6cjqJT9REU6092ANxbXdWFRIg41MUcRa9szrNE_Uzk2mg0oaERcNsEyt2zbELns2nyuQ=&amp;timestamp=1607680132583" id="m_-6319369610188194273vereignWrapperLink" target="_blank"><img src="cid:ii_kik38q6m0" alt="qrcode.png" width="153" height="230"></a></div>
</div><br><a href="https://gmail.test.vereign.com/?q=CiD_af1bRp3Lr0VN7XCjr21NhG_sBlsJvujutgLw-NVlGRIgV_8SkcSyAOg15y3-_XauPmzF-mbK48azNaiRmfnpvtk=&amp;timestamp=1607680317560" id="vereignWrapperLink"><img src="cid:ii_kik3coos1" alt="qrcode.png" width="153" height="230"></a></div>
<div dir="ltr">
<br />Forwarding an email with history.<br /><br />
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">
---------- Forwarded message ---------<br />From:
<strong class="gmail_sendername" dir="auto">Rosen Georgiev</strong>
<span dir="auto"
>&lt;<a href="mailto:rosenkirchev@gmail.com">rosenkirchev@gmail.com</a
>&gt;</span
><br />Date: Fri, Dec 11, 2020 at 11:48 AM<br />Subject: test 123<br />To:
&lt;<a href="mailto:rosenvereign@gmail.com">rosenvereign@gmail.com</a
>&gt;<br />
</div>
<br /><br />
<div dir="ltr">
<br />test 123<br /><a
href="https://gmail.test.vereign.com/?q=CiCmv1km3XHq88gSQqKAJks6cjqJT9REU6092ANxbXdWFRIg41MUcRa9szrNE_Uzk2mg0oaERcNsEyt2zbELns2nyuQ=&amp;timestamp=1607680132583"
id="m_-6319369610188194273vereignWrapperLink"
target="_blank"
><img src="cid:ii_kik38q6m0" alt="qrcode.png" width="153" height="230"
/></a>
</div>
</div>
<br /><a
href="https://gmail.test.vereign.com/?q=CiD_af1bRp3Lr0VN7XCjr21NhG_sBlsJvujutgLw-NVlGRIgV_8SkcSyAOg15y3-_XauPmzF-mbK48azNaiRmfnpvtk=&amp;timestamp=1607680317560"
id="vereignWrapperLink"
><img src="cid:ii_kik3coos1" alt="qrcode.png" width="153" height="230"
/></a>
</div>
<div dir="ltr">Forwarding an email with history.<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">---------- Forwarded message ---------<br>From: <strong class="gmail_sendername" dir="auto">Rosen Georgiev</strong><span dir="auto">&lt;<a href="mailto:rosenkirchev@gmail.com">rosenkirchev@gmail.com</a>&gt;</span><br>Date: Fri, Dec 11, 2020 at 11:48 AM<br>Subject: test 123<br>To: &lt;<a href="mailto:rosenvereign@gmail.com">rosenvereign@gmail.com</a>&gt;<br></div><br><br><div dir="ltr"><br>test 123<br><a href="https://gmail.test.vereign.com/?q=CiCmv1km3XHq88gSQqKAJks6cjqJT9REU6092ANxbXdWFRIg41MUcRa9szrNE_Uzk2mg0oaERcNsEyt2zbELns2nyuQ=&amp;timestamp=1607680132583" id="m_-6319369610188194273vereignWrapperLink" target="_blank"><img src="cid:ii_kik38q6m0" alt="qrcode.png" width="153" height="230" data-surl="cid:ii_kik38q6m0"></a></div></div></div>
<div dir="ltr">
Forwarding an email with history.<br /><br />
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">
---------- Forwarded message ---------<br />From:
<strong class="gmail_sendername" dir="auto">Rosen Georgiev</strong
><span dir="auto"
>&lt;<a href="mailto:rosenkirchev@gmail.com">rosenkirchev@gmail.com</a
>&gt;</span
><br />Date: Fri, Dec 11, 2020 at 11:48 AM<br />Subject: test 123<br />To:
&lt;<a href="mailto:rosenvereign@gmail.com">rosenvereign@gmail.com</a
>&gt;<br />
</div>
<br /><br />
<div dir="ltr">
<br />test 123<br /><a
href="https://gmail.test.vereign.com/?q=CiCmv1km3XHq88gSQqKAJks6cjqJT9REU6092ANxbXdWFRIg41MUcRa9szrNE_Uzk2mg0oaERcNsEyt2zbELns2nyuQ=&amp;timestamp=1607680132583"
id="m_-6319369610188194273vereignWrapperLink"
target="_blank"
><img
src="cid:ii_kik38q6m0"
alt="qrcode.png"
width="153"
height="230"
data-surl="cid:ii_kik38q6m0"
/></a>
</div>
</div>
</div>
<div dir="ltr"><br>reply second email to all<br><a href="https://gmail.test.vereign.com/?q=CiA9KpFulwecbra-Vzakr6t3kGPTJ2uK4JQ91KlzUGJRRhIgK4-brXpuJcszaNGljeunMlWUv5IYmujPBaBRyB3zWL8=&amp;timestamp=1607695422416" id="vereignWrapperLink"><img src="cid:ii_kikccfmt1" alt="qrcode.png" width="153" height="230"></a></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 11, 2020 at 3:55 PM Rosen Georgiev &lt;<a href="mailto:rosenkirchev@gmail.com">rosenkirchev@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br>multiple recipients<br><a href="https://gmail.test.vereign.com/?q=CiDvUAtuwEqSqs8bzF92OF4rTkJG3jt19AV3vGsh12aGfBIg_N4I9OD2jbSdQJGC8ATfPfemwfxcQyE66gUtrCECppk=&amp;timestamp=1607694903364" id="gmail-m_5893169313940791883vereignWrapperLink" target="_blank"><img src="cid:ii_kikc1b5f0" alt="qrcode.png" width="153" height="230"></a></div>
</blockquote></div>
\ No newline at end of file
<div dir="ltr">
<br />reply second email to all<br /><a
href="https://gmail.test.vereign.com/?q=CiA9KpFulwecbra-Vzakr6t3kGPTJ2uK4JQ91KlzUGJRRhIgK4-brXpuJcszaNGljeunMlWUv5IYmujPBaBRyB3zWL8=&amp;timestamp=1607695422416"
id="vereignWrapperLink"
><img src="cid:ii_kikccfmt1" alt="qrcode.png" width="153" height="230"
/></a>
</div>
<br />
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">
On Fri, Dec 11, 2020 at 3:55 PM Rosen Georgiev &lt;<a
href="mailto:rosenkirchev@gmail.com"
>rosenkirchev@gmail.com</a
>&gt; wrote:<br />
</div>
<blockquote
class="gmail_quote"
style="
margin: 0px 0px 0px 0.8ex;
border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;
"
>
<div dir="ltr">
<br />multiple recipients<br /><a
href="https://gmail.test.vereign.com/?q=CiDvUAtuwEqSqs8bzF92OF4rTkJG3jt19AV3vGsh12aGfBIg_N4I9OD2jbSdQJGC8ATfPfemwfxcQyE66gUtrCECppk=&amp;timestamp=1607694903364"
id="gmail-m_5893169313940791883vereignWrapperLink"
target="_blank"
><img src="cid:ii_kikc1b5f0" alt="qrcode.png" width="153" height="230"
/></a>
</div>
</blockquote>
</div>
<div dir="ltr">reply second email to all</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 11, 2020 at 3:55 PM Rosen Georgiev &lt;<a href="mailto:rosenkirchev@gmail.com">rosenkirchev@gmail.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br>multiple recipients<br><a href="https://gmail.test.vereign.com/?q=CiDvUAtuwEqSqs8bzF92OF4rTkJG3jt19AV3vGsh12aGfBIg_N4I9OD2jbSdQJGC8ATfPfemwfxcQyE66gUtrCECppk=&amp;timestamp=1607694903364" id="gmail-m_5893169313940791883vereignWrapperLink" target="_blank"><img src="cid:ii_kikc1b5f0" alt="qrcode.png" width="153" height="230" data-surl="cid:ii_kikc1b5f0"></a></div></blockquote></div>
\ No newline at end of file
<div dir="ltr">reply second email to all</div>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">
On Fri, Dec 11, 2020 at 3:55 PM Rosen Georgiev &lt;<a
href="mailto:rosenkirchev@gmail.com"
>rosenkirchev@gmail.com</a
>&gt; wrote:<br />
</div>
<blockquote
class="gmail_quote"
style="
margin: 0px 0px 0px 0.8ex;
border-left: 1px solid rgb(204, 204, 204);
padding-left: 1ex;
"
>
<div dir="ltr">
<br />multiple recipients<br /><a
href="https://gmail.test.vereign.com/?q=CiDvUAtuwEqSqs8bzF92OF4rTkJG3jt19AV3vGsh12aGfBIg_N4I9OD2jbSdQJGC8ATfPfemwfxcQyE66gUtrCECppk=&amp;timestamp=1607694903364"
id="gmail-m_5893169313940791883vereignWrapperLink"
target="_blank"
><img
src="cid:ii_kikc1b5f0"
alt="qrcode.png"
width="153"
height="230"
data-surl="cid:ii_kikc1b5f0"
/></a>
</div>
</blockquote>
</div>
......@@ -13,5 +13,5 @@ describe("[HTML] GMail-GMail", () => {
EMAIL_VENDORS.GMAIL
);
describe("One", describeFunction("one", [""]));
describe("One", describeFunction("one", ["sssas"]));
});
......@@ -8,7 +8,23 @@ const RECEIVED_PLAIN_NAME = "r_plainContent.data";
import { PlainNormalizer, HTMLNormalizer } from "../src";
import { expect, test } from "@jest/globals";
import { DOM } from "@vereign/dom";
//import { diffStringsUnified } from "jest-diff";
import { diffStringsUnified } from "jest-diff";
expect.extend({
toContainWithDiff(target, source) {
let pass = true;
try {
expect(target).toContain(source);
} catch (e) {
pass = false;
}
return {
pass,
message: pass ? () => "Pass" : () => diffStringsUnified(source, target),
};
},
});
export const getNormalizedPlain = (
testCasePath: string
......@@ -106,7 +122,10 @@ export const createDescribeHtmlTestCases = (
// expect(receivedHtml.length).toBeGreaterThan(0);
// expect(sentHtml.length).toBeGreaterThan(0);
expect(receivedHtml).toContain(sentHtml);
// eslint-disable-next-line
// @ts-ignore
expect(receivedHtml).toContainWithDiff(sentHtml);
});
};
......@@ -136,9 +155,10 @@ export const createDescribePlainTestCases = (testsPath: string) => (
// expect(sentPlain.length).toBeGreaterThan(0);
// expect(receivedPlain.length).toBeGreaterThan(0);
expect(receivedPlain).toContain(sentPlain);
// const diff = diffStringsUnified(sentPlain, receivedPlain);
// console.log(diff);
// eslint-disable-next-line
// @ts-ignore
expect(receivedPlain).toContainWithDiff(sentPlain);
});
};
......
......@@ -3,16 +3,54 @@ import {
cloneAnchorFromPane,
pruneElement,
} from "./common";
import { ELEMENT_NODE } from "../../constants";
export const pruneGmailElement = (element: HTMLElement): boolean => {
return pruneElement(element);
};
const qrCodeContainerIds = { vereignWrapperLink: 1 };
const removeQrCodeNodes = (document: HTMLDocument) => {
const remove = (node: Element) => {
let toRemove = [];
let child = node.firstChild;
while (child) {
if (child.nodeType == ELEMENT_NODE) {
toRemove = [...toRemove, ...remove(child as Element)];
const childElement = child as Element;
const id = childElement.getAttribute("id");
if (
id &&
Object.keys(qrCodeContainerIds).find((possibleId) =>
id.includes(possibleId)
)
) {
toRemove.push(childElement);
}
}
child = child.nextSibling;
}
return toRemove;
};
const elementsToRemove = remove(document.body);
elementsToRemove.forEach((element) =>
element.parentNode.removeChild(element)
);
};
export const amendGmailNodes = (document: HTMLDocument): void => {
// unwindTags(document, "span");
removeQrCodeNodes(document);
/**
* Look for attachments panes and remove everything but liks
* Look for attachments panes and remove everything but links
*/
const attachmentsPanes = Array.from(
......
......@@ -28,7 +28,9 @@ export const pruneOutlookElement = (element: HTMLElement): boolean => {
return !!element.nodeName.toLowerCase().startsWith("o:");
};
const qrCodeContainerId = "test-for-us";
const qrCodeContainerIds = {
"test-for-us": 1,
};
const removeQrCodeNodes = (document: HTMLDocument) => {
const remove = (node: Element) => {
let toRemove = [];
......@@ -41,7 +43,12 @@ const removeQrCodeNodes = (document: HTMLDocument) => {
const childElement = child as Element;
const id = childElement.getAttribute("id");
if (id && id.includes(qrCodeContainerId)) {
if (
id &&
Object.keys(qrCodeContainerIds).find((possibleId) =>
id.includes(possibleId)
)
) {
toRemove.push(childElement.parentNode);
}
}
......
......@@ -8,8 +8,8 @@ export const normalizePlainPart = (text: string): string => {
const removeQRCodes = (s: string): string => {
return s
.replace(/\[qrcode.png]\s*<https:\/\/[\w./?=\-&]+>/g, "")
.replace(/<https:\/\/[\w./?=\-&]+>\s*\[qrcode.png]/g, "");
.replace(/\[(image:)*qrcode.png]\s*<https:\/\/[\w./?=\-&]+>/g, "")
.replace(/<https:\/\/[\w./?=\-&]+>\s*\[(image: )*qrcode.png]/g, "");
};
const removeListBullets = (s: string): string => {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment