summaryrefslogtreecommitdiffstats
path: root/services/fxaccounts/tests/xpcshell/test_rust_fxaccount.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /services/fxaccounts/tests/xpcshell/test_rust_fxaccount.js
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'services/fxaccounts/tests/xpcshell/test_rust_fxaccount.js')
-rw-r--r--services/fxaccounts/tests/xpcshell/test_rust_fxaccount.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/services/fxaccounts/tests/xpcshell/test_rust_fxaccount.js b/services/fxaccounts/tests/xpcshell/test_rust_fxaccount.js
new file mode 100644
index 0000000000..41dc06e5f0
--- /dev/null
+++ b/services/fxaccounts/tests/xpcshell/test_rust_fxaccount.js
@@ -0,0 +1,65 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Tests for the RustFxAccounts bridging class.
+// Note that we do not test everything, as this
+// "should" be covered by the Rust tests.
+// We are simply assessing that the Rust XPCOM
+// and the Viaduct plumbing work!
+
+const { AppConstants } = ChromeUtils.import(
+ "resource://gre/modules/AppConstants.jsm"
+);
+const { RustFxAccount } = ChromeUtils.import(
+ "resource://gre/modules/RustFxAccount.js"
+);
+
+add_task(
+ {
+ skip_if: () => !AppConstants.MOZ_RUST_FXA_CLIENT,
+ },
+ async function test_authenticated_get_request() {
+ let serverCalls = 0;
+ const server = httpd_setup({
+ "/.well-known/openid-configuration": function(request, response) {
+ response.setStatusLine(request.httpVersion, 200, "OK");
+ const body = JSON.stringify({
+ authorization_endpoint: "https://foo.bar/authorization",
+ introspection_endpoint: "https://oauth.foo.bar/v1/introspect",
+ issuer: "https://foo.bar",
+ jwks_uri: "https://oauth.foo.bar/v1/jwks",
+ revocation_endpoint: "https://oauth.foo.bar/v1/destroy",
+ token_endpoint: "https://oauth.foo.bar/v1/token",
+ userinfo_endpoint: "https://profile.foo.bar/v1/profile",
+ });
+ response.bodyOutputStream.write(body, body.length);
+ serverCalls++;
+ },
+ "/.well-known/fxa-client-configuration": function(request, response) {
+ response.setStatusLine(request.httpVersion, 200, "OK");
+ const body = JSON.stringify({
+ auth_server_base_url: "https://api.foo.bar",
+ oauth_server_base_url: "https://oauth.foo.bar",
+ pairing_server_base_uri: "wss://channelserver.services.mozilla.com",
+ profile_server_base_url: "https://profile.foo.bar",
+ sync_tokenserver_base_url: "https://token.services.mozilla.com",
+ });
+ response.bodyOutputStream.write(body, body.length);
+ serverCalls++;
+ },
+ });
+
+ const fxa = new RustFxAccount({
+ fxaServer: server.baseURI,
+ clientId: "abcd",
+ redirectUri: "https://foo.bar/1234",
+ });
+ const oauthFlowUrl = await fxa.beginOAuthFlow(["profile"]);
+ Assert.equal(2, serverCalls);
+ Assert.ok(oauthFlowUrl.startsWith("https://foo.bar/authorization"));
+
+ await promiseStopServer(server);
+ }
+);