# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. import textwrap from telemetry_harness.fog_ping_filters import FOG_DELETION_REQUEST_PING from telemetry_harness.fog_testcase import FOGTestCase class TestDeletionRequestPing(FOGTestCase): """Tests for FOG deletion-request ping.""" def test_deletion_request_ping_across_sessions(self): """Test the "deletion-request" ping behaviour across sessions.""" self.navigate_in_new_tab("about:glean") ping1 = self.wait_for_ping( self.disable_telemetry, FOG_DELETION_REQUEST_PING, ping_server=self.fog_ping_server, ) self.assertIn("ping_info", ping1["payload"]) self.assertIn("client_info", ping1["payload"]) self.assertIn("client_id", ping1["payload"]["client_info"]) client_id1 = ping1["payload"]["client_info"]["client_id"] self.assertIsValidUUID(client_id1) self.restart_browser() # We'd like to assert that a "deletion-request" is the last ping we # ever receive, but it's possible there's another ping on another # thread that gets sent after the sync-sent "deletion-request". # (This is fine, it'll be deleted within 28 days on the server.) # self.assertEqual(self.fog_ping_server.pings[-1], ping1) self.enable_telemetry() self.restart_browser() debug_tag = "my-test-tag" tagging_script = f"""\ Services.fog.setTagPings("{debug_tag}"); """ with self.marionette.using_context(self.marionette.CONTEXT_CHROME): self.marionette.execute_script(textwrap.dedent(tagging_script)) self.navigate_in_new_tab("about:glean") ping2 = self.wait_for_ping( self.disable_telemetry, FOG_DELETION_REQUEST_PING, ping_server=self.fog_ping_server, ) self.assertEqual(ping2["debug_tag"].decode("utf-8"), debug_tag) self.assertIn("client_id", ping2["payload"]["client_info"]) client_id2 = ping2["payload"]["client_info"]["client_id"] self.assertIsValidUUID(client_id2) # Verify that FOG creates a new client ID when a user # opts out of sending technical and interaction data. self.assertNotEqual(client_id2, client_id1)