summaryrefslogtreecommitdiffstats
path: root/dom/credentialmanagement/identity/tests/browser
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
commit0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch)
treea31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /dom/credentialmanagement/identity/tests/browser
parentInitial commit. (diff)
downloadfirefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz
firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/credentialmanagement/identity/tests/browser')
-rw-r--r--dom/credentialmanagement/identity/tests/browser/browser.ini19
-rw-r--r--dom/credentialmanagement/identity/tests/browser/browser_close_prompt_on_timeout.js63
-rw-r--r--dom/credentialmanagement/identity/tests/browser/browser_single_concurrent_identity_request.js51
-rw-r--r--dom/credentialmanagement/identity/tests/browser/server_accounts.json12
-rw-r--r--dom/credentialmanagement/identity/tests/browser/server_accounts.json^headers^3
-rw-r--r--dom/credentialmanagement/identity/tests/browser/server_idtoken.json1
-rw-r--r--dom/credentialmanagement/identity/tests/browser/server_idtoken.json^headers^3
-rw-r--r--dom/credentialmanagement/identity/tests/browser/server_manifest.json5
-rw-r--r--dom/credentialmanagement/identity/tests/browser/server_manifest.json^headers^2
-rw-r--r--dom/credentialmanagement/identity/tests/browser/server_metadata.json4
-rw-r--r--dom/credentialmanagement/identity/tests/browser/server_metadata.json^headers^2
11 files changed, 165 insertions, 0 deletions
diff --git a/dom/credentialmanagement/identity/tests/browser/browser.ini b/dom/credentialmanagement/identity/tests/browser/browser.ini
new file mode 100644
index 0000000000..50a6628808
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/browser.ini
@@ -0,0 +1,19 @@
+[DEFAULT]
+prefs =
+ dom.security.credentialmanagement.identity.enabled=true
+ dom.security.credentialmanagement.identity.ignore_well_known=true
+ privacy.antitracking.enableWebcompat=false # disables opener heuristic
+scheme = https
+
+support-files =
+ server_accounts.json
+ server_accounts.json^headers^
+ server_idtoken.json
+ server_idtoken.json^headers^
+ server_manifest.json
+ server_manifest.json^headers^
+ server_metadata.json
+ server_metadata.json^headers^
+
+[browser_close_prompt_on_timeout.js]
+[browser_single_concurrent_identity_request.js]
diff --git a/dom/credentialmanagement/identity/tests/browser/browser_close_prompt_on_timeout.js b/dom/credentialmanagement/identity/tests/browser/browser_close_prompt_on_timeout.js
new file mode 100644
index 0000000000..a71747e842
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/browser_close_prompt_on_timeout.js
@@ -0,0 +1,63 @@
+/* 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/. */
+
+"use strict";
+
+const TEST_URL = "https://example.com/";
+
+add_task(async function test_close_prompt_on_timeout() {
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ [
+ "dom.security.credentialmanagement.identity.reject_delay.duration_ms",
+ 1000,
+ ],
+ ],
+ });
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_URL);
+
+ let requestCredential = async function () {
+ let promise = content.navigator.credentials.get({
+ identity: {
+ providers: [
+ {
+ configURL:
+ "https://example.net/tests/dom/credentialmanagement/identity/tests/browser/server_manifest.json",
+ clientId: "browser",
+ nonce: "nonce",
+ },
+ ],
+ },
+ });
+ try {
+ return await promise;
+ } catch (err) {
+ return err;
+ }
+ };
+
+ let popupShown = BrowserTestUtils.waitForEvent(
+ PopupNotifications.panel,
+ "popupshown"
+ );
+
+ let request = ContentTask.spawn(tab.linkedBrowser, null, requestCredential);
+
+ await popupShown;
+ await request;
+
+ let notification = PopupNotifications.getNotification(
+ "identity-credential",
+ tab.linkedBrowser
+ );
+ ok(
+ !notification,
+ "Identity Credential notification must not be present after timeout."
+ );
+
+ // Close tabs.
+ await BrowserTestUtils.removeTab(tab);
+ await SpecialPowers.popPrefEnv();
+});
diff --git a/dom/credentialmanagement/identity/tests/browser/browser_single_concurrent_identity_request.js b/dom/credentialmanagement/identity/tests/browser/browser_single_concurrent_identity_request.js
new file mode 100644
index 0000000000..2c3d91e521
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/browser_single_concurrent_identity_request.js
@@ -0,0 +1,51 @@
+/* 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/. */
+
+"use strict";
+
+const TEST_URL = "https://example.com/";
+
+add_task(async function test_concurrent_identity_credential() {
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_URL);
+
+ let requestCredential = async function () {
+ let promise = content.navigator.credentials.get({
+ identity: {
+ providers: [
+ {
+ configURL:
+ "https://example.net/tests/dom/credentialmanagement/identity/tests/browser/server_manifest.json",
+ clientId: "browser",
+ nonce: "nonce",
+ },
+ ],
+ },
+ });
+ try {
+ return await promise;
+ } catch (err) {
+ return err;
+ }
+ };
+
+ ContentTask.spawn(tab.linkedBrowser, null, requestCredential);
+
+ let secondRequest = ContentTask.spawn(
+ tab.linkedBrowser,
+ null,
+ requestCredential
+ );
+
+ let concurrentResponse = await secondRequest;
+ ok(concurrentResponse, "expect a result from the second request.");
+ ok(concurrentResponse.name, "expect a DOMException which must have a name.");
+ is(
+ concurrentResponse.name,
+ "InvalidStateError",
+ "Expected 'InvalidStateError', but got '" + concurrentResponse.name + "'"
+ );
+
+ // Close tabs.
+ await BrowserTestUtils.removeTab(tab);
+});
diff --git a/dom/credentialmanagement/identity/tests/browser/server_accounts.json b/dom/credentialmanagement/identity/tests/browser/server_accounts.json
new file mode 100644
index 0000000000..90e463584f
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/server_accounts.json
@@ -0,0 +1,12 @@
+{
+ "accounts": [
+ {
+ "id": "1234",
+ "given_name": "John",
+ "name": "John Doe",
+ "email": "john_doe@idp.example",
+ "picture": "https://idp.example/profile/123",
+ "approved_clients": ["123", "456", "789"]
+ }
+ ]
+}
diff --git a/dom/credentialmanagement/identity/tests/browser/server_accounts.json^headers^ b/dom/credentialmanagement/identity/tests/browser/server_accounts.json^headers^
new file mode 100644
index 0000000000..313fe12921
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/server_accounts.json^headers^
@@ -0,0 +1,3 @@
+Content-Type: application/json
+Access-Control-Allow-Origin: *
+Access-Control-Allow-Credentials: true \ No newline at end of file
diff --git a/dom/credentialmanagement/identity/tests/browser/server_idtoken.json b/dom/credentialmanagement/identity/tests/browser/server_idtoken.json
new file mode 100644
index 0000000000..cd1840b349
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/server_idtoken.json
@@ -0,0 +1 @@
+{ "token": "result" }
diff --git a/dom/credentialmanagement/identity/tests/browser/server_idtoken.json^headers^ b/dom/credentialmanagement/identity/tests/browser/server_idtoken.json^headers^
new file mode 100644
index 0000000000..0b4f8505f2
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/server_idtoken.json^headers^
@@ -0,0 +1,3 @@
+Content-Type: application/json
+Access-Control-Allow-Origin: https://example.com
+Access-Control-Allow-Credentials: true
diff --git a/dom/credentialmanagement/identity/tests/browser/server_manifest.json b/dom/credentialmanagement/identity/tests/browser/server_manifest.json
new file mode 100644
index 0000000000..349ae5787b
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/server_manifest.json
@@ -0,0 +1,5 @@
+{
+ "accounts_endpoint": "https://example.net/tests/dom/credentialmanagement/identity/tests/mochitest/server_accounts.json",
+ "client_metadata_endpoint": "https://example.net/tests/dom/credentialmanagement/identity/tests/mochitest/server_metadata.json",
+ "id_assertion_endpoint": "https://example.net/tests/dom/credentialmanagement/identity/tests/mochitest/server_idtoken.json"
+}
diff --git a/dom/credentialmanagement/identity/tests/browser/server_manifest.json^headers^ b/dom/credentialmanagement/identity/tests/browser/server_manifest.json^headers^
new file mode 100644
index 0000000000..75875a7cf3
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/server_manifest.json^headers^
@@ -0,0 +1,2 @@
+Content-Type: application/json
+Access-Control-Allow-Origin: *
diff --git a/dom/credentialmanagement/identity/tests/browser/server_metadata.json b/dom/credentialmanagement/identity/tests/browser/server_metadata.json
new file mode 100644
index 0000000000..1e16c942b5
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/server_metadata.json
@@ -0,0 +1,4 @@
+{
+ "privacy_policy_url": "https://example.net/tests/dom/credentialmanagement/identity/tests/mochitest/null.txt",
+ "terms_of_service_url": "https://example.net/tests/dom/credentialmanagement/identity/tests/mochitest/null.txt"
+}
diff --git a/dom/credentialmanagement/identity/tests/browser/server_metadata.json^headers^ b/dom/credentialmanagement/identity/tests/browser/server_metadata.json^headers^
new file mode 100644
index 0000000000..75875a7cf3
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/server_metadata.json^headers^
@@ -0,0 +1,2 @@
+Content-Type: application/json
+Access-Control-Allow-Origin: *