summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/compose/test/unit/test_mailTelemetry.js
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/compose/test/unit/test_mailTelemetry.js')
-rw-r--r--comm/mailnews/compose/test/unit/test_mailTelemetry.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/comm/mailnews/compose/test/unit/test_mailTelemetry.js b/comm/mailnews/compose/test/unit/test_mailTelemetry.js
new file mode 100644
index 0000000000..28959d508f
--- /dev/null
+++ b/comm/mailnews/compose/test/unit/test_mailTelemetry.js
@@ -0,0 +1,79 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+/**
+ * Test telemetry related to mails sent.
+ */
+
+let { TelemetryTestUtils } = ChromeUtils.importESModule(
+ "resource://testing-common/TelemetryTestUtils.sys.mjs"
+);
+
+let server;
+
+let kIdentityMail = "identity@foo.invalid";
+let kSender = "from@foo.invalid";
+let kTo = "to@foo.invalid";
+
+const NUM_MAILS = 3;
+
+let deliveryListener = {
+ count: 0,
+ OnStartRunningUrl() {},
+ OnStopRunningUrl() {
+ if (++this.count == NUM_MAILS) {
+ let scalars = TelemetryTestUtils.getProcessScalars("parent");
+ Assert.equal(
+ scalars["tb.mails.sent"],
+ NUM_MAILS,
+ "Count of mails sent must be correct."
+ );
+ }
+ },
+};
+
+/**
+ * Check that we're counting mails sent.
+ */
+add_task(async function test_mails_sent() {
+ Services.telemetry.clearScalars();
+
+ server = setupServerDaemon();
+ registerCleanupFunction(() => {
+ server.stop();
+ });
+
+ // Test file
+ let testFile = do_get_file("data/message1.eml");
+
+ // Ensure we have at least one mail account
+ localAccountUtils.loadLocalMailAccount();
+
+ // Handle the server in a try/catch/finally loop so that we always will stop
+ // the server if something fails.
+ try {
+ // Start the fake SMTP server
+ server.start();
+ let smtpServer = getBasicSmtpServer(server.port);
+ let identity = getSmtpIdentity(kIdentityMail, smtpServer);
+
+ for (let i = 0; i < NUM_MAILS; i++) {
+ MailServices.smtp.sendMailMessage(
+ testFile,
+ kTo,
+ identity,
+ kSender,
+ null,
+ deliveryListener,
+ null,
+ null,
+ false,
+ "",
+ {},
+ {}
+ );
+ }
+ } catch (e) {
+ do_throw(e);
+ }
+});