summaryrefslogtreecommitdiffstats
path: root/dom/credentialmanagement/identity/tests/browser
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /dom/credentialmanagement/identity/tests/browser
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
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.toml21
-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, 167 insertions, 0 deletions
diff --git a/dom/credentialmanagement/identity/tests/browser/browser.toml b/dom/credentialmanagement/identity/tests/browser/browser.toml
new file mode 100644
index 0000000000..431d5a8a01
--- /dev/null
+++ b/dom/credentialmanagement/identity/tests/browser/browser.toml
@@ -0,0 +1,21 @@
+[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: *