summaryrefslogtreecommitdiffstats
path: root/comm/mail/test/browser/folder-display/browser_mailTelemetry.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/test/browser/folder-display/browser_mailTelemetry.js')
-rw-r--r--comm/mail/test/browser/folder-display/browser_mailTelemetry.js135
1 files changed, 135 insertions, 0 deletions
diff --git a/comm/mail/test/browser/folder-display/browser_mailTelemetry.js b/comm/mail/test/browser/folder-display/browser_mailTelemetry.js
new file mode 100644
index 0000000000..d2d73627bb
--- /dev/null
+++ b/comm/mail/test/browser/folder-display/browser_mailTelemetry.js
@@ -0,0 +1,135 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Test telemetry related to secure mails read.
+ */
+
+let {
+ create_folder,
+ be_in_folder,
+ create_message,
+ create_encrypted_smime_message,
+ create_encrypted_openpgp_message,
+ add_message_to_folder,
+ select_click_row,
+ assert_selected_and_displayed,
+} = ChromeUtils.import(
+ "resource://testing-common/mozmill/FolderDisplayHelpers.jsm"
+);
+let { SmimeUtils } = ChromeUtils.import(
+ "resource://testing-common/mailnews/smimeUtils.jsm"
+);
+let { TelemetryTestUtils } = ChromeUtils.importESModule(
+ "resource://testing-common/TelemetryTestUtils.sys.mjs"
+);
+
+add_setup(function () {
+ SmimeUtils.ensureNSS();
+ SmimeUtils.loadCertificateAndKey(
+ new FileUtils.File(getTestFilePath("../openpgp/data/smime/Bob.p12")),
+ "nss"
+ );
+});
+
+/**
+ * Check that we're counting secure mails read.
+ */
+add_task(async function test_secure_mails_read() {
+ Services.telemetry.clearScalars();
+
+ const NUM_PLAIN_MAILS = 4;
+ const NUM_SMIME_MAILS = 2;
+ const NUM_OPENPGP_MAILS = 3;
+ let headers = { from: "alice@t1.example.com", to: "bob@t2.example.net" };
+ let folder = await create_folder("secure-mail");
+
+ // normal message should not be counted
+ for (let i = 0; i < NUM_PLAIN_MAILS; i++) {
+ await add_message_to_folder(
+ [folder],
+ create_message({
+ clobberHeaders: headers,
+ })
+ );
+ }
+ for (let i = 0; i < NUM_SMIME_MAILS; i++) {
+ await add_message_to_folder(
+ [folder],
+ create_encrypted_smime_message({
+ to: "Bob@example.com",
+ body: {
+ body: smimeMessage,
+ },
+ })
+ );
+ }
+ for (let i = 0; i < NUM_OPENPGP_MAILS; i++) {
+ await add_message_to_folder(
+ [folder],
+ create_encrypted_openpgp_message({
+ clobberHeaders: headers,
+ })
+ );
+ }
+
+ // Select (read) all added mails.
+ await be_in_folder(folder);
+ for (
+ let i = 0;
+ i < NUM_PLAIN_MAILS + NUM_SMIME_MAILS + NUM_OPENPGP_MAILS;
+ i++
+ ) {
+ select_click_row(i);
+ }
+
+ let scalars = TelemetryTestUtils.getProcessScalars("parent", true);
+ Assert.equal(
+ scalars["tb.mails.read_secure"]["encrypted-smime"],
+ NUM_SMIME_MAILS,
+ "Count of smime encrypted mails read must be correct."
+ );
+ Assert.equal(
+ scalars["tb.mails.read_secure"]["encrypted-openpgp"],
+ NUM_OPENPGP_MAILS,
+ "Count of openpgp encrypted mails read must be correct."
+ );
+
+ // Select all added mails again should not change read statistics.
+ for (
+ let i = 0;
+ i < NUM_PLAIN_MAILS + NUM_SMIME_MAILS + NUM_OPENPGP_MAILS;
+ i++
+ ) {
+ select_click_row(i);
+ }
+
+ scalars = TelemetryTestUtils.getProcessScalars("parent", true);
+ Assert.equal(
+ scalars["tb.mails.read_secure"]["encrypted-smime"],
+ NUM_SMIME_MAILS,
+ "Count of smime encrypted mails read must still be correct."
+ );
+ Assert.equal(
+ scalars["tb.mails.read_secure"]["encrypted-openpgp"],
+ NUM_OPENPGP_MAILS,
+ "Count of openpgp encrypted mails read must still be correct."
+ );
+});
+
+var smimeMessage = [
+ "MIAGCSqGSIb3DQEHA6CAMIACAQAxggGFMIIBgQIBADBpMGQxCzAJBgNVBAYTAlVT",
+ "MRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRIw",
+ "EAYDVQQKEwlCT0dVUyBOU1MxFDASBgNVBAMTC05TUyBUZXN0IENBAgEoMA0GCSqG",
+ "SIb3DQEBAQUABIIBAByaXGnoQAgRiPjvcpotJWBQwXjAxYldgMaT/hEX0Hlnas6m",
+ "OcBIOJLB9CHhmBOSo/yryDOnRcl9l1cQYzSEpExYSGoVzPCpPOLKw5C/A+6NFzpe",
+ "44EUX5/gVbVeQ4fl2dOB3NbW5Cnx3Js7O1MFr8UPFOh31TBhvWjOMl+3CkMWndUi",
+ "G4C/srgdeuQRdKJcWoROtBjQuibVHfn0TcA7olIj8ysmJoTT3Irx625Sh5mDDVbJ",
+ "UyR2WWqw6wPAaCS2urUXtYrEuxsr7EmdcZc0P6oikzf/KoMvzBWBmWJXad1QSdeO",
+ "s5Bk2MYKXoM9Iqddr/n9mvg4jJNnFMzG0cFKCAgwgAYJKoZIhvcNAQcBMB0GCWCG",
+ "SAFlAwQBAgQQ2QrTbolonzr0vAfmGH2nJ6CABIGQKA2mKyOQShspbeDIf/QlYHg+",
+ "YbiqdhlENHHM5V5rICjM5LFzLME0TERDJGi8tATlqp3rFOswFDGiymK6XZrpQZiW",
+ "TBTEa2E519Mw86NEJ1d/iy4aLpPjATH2rhZLm3dix42mFI5ToszGNu9VuDWDiV4S",
+ "sA798v71TaSlFwh9C3VwODQ8lWwyci4aD3wdxevGBBC3fYMuEns+NIQhqpzlUADX",
+ "AAAAAAAAAAAAAA==",
+].join("\n");