Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test runs only with pattern: os != 'android'
- Manifest: browser/components/ipprotection/tests/xpcshell/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
"use strict";
const { IPPNimbusHelper } = ChromeUtils.importESModule(
"moz-src:///browser/components/ipprotection/IPPNimbusHelper.sys.mjs"
);
const { IPPEnrollAndEntitleManager } = ChromeUtils.importESModule(
"moz-src:///browser/components/ipprotection/IPPEnrollAndEntitleManager.sys.mjs"
);
do_get_profile();
add_setup(async function () {
await putServerInRemoteSettings();
IPProtectionService.uninit();
registerCleanupFunction(async () => {
await IPProtectionService.init();
});
});
/**
* Tests the uninitialized state.
*/
add_task(async function test_IPProtectionStates_uninitialized() {
Assert.equal(
IPProtectionService.state,
IPProtectionStates.UNINITIALIZED,
"IP Protection service should not be initialized yet"
);
await IPProtectionService.init();
Assert.notEqual(
IPProtectionService.state,
IPProtectionStates.UNINITIALIZED,
"IP Protection service should be initialized"
);
IPProtectionService.uninit();
Assert.equal(
IPProtectionService.state,
IPProtectionStates.UNINITIALIZED,
"IP Protection service should not be uninitialized"
);
});
/**
* Tests the unavailable state.
*/
add_task(async function test_IPProtectionStates_uninitialized() {
let sandbox = sinon.createSandbox();
sandbox.stub(IPPSignInWatcher, "isSignedIn").get(() => false);
sandbox
.stub(IPProtectionService.guardian, "isLinkedToGuardian")
.resolves(false);
sandbox.stub(IPPNimbusHelper, "isEligible").get(() => false);
await IPProtectionService.init();
Assert.equal(
IPProtectionService.state,
IPProtectionStates.UNAVAILABLE,
"IP Protection service should be unavailable"
);
sandbox.stub(IPPNimbusHelper, "isEligible").get(() => true);
IPProtectionService.updateState();
Assert.notStrictEqual(
IPProtectionService.state,
IPProtectionStates.UNAVAILABLE,
"IP Protection service should be available"
);
IPProtectionService.uninit();
sandbox.restore();
});
/**
* Tests the unauthenticated state.
*/
add_task(async function test_IPProtectionStates_unauthenticated() {
let sandbox = sinon.createSandbox();
sandbox.stub(IPPSignInWatcher, "isSignedIn").get(() => true);
sandbox
.stub(IPProtectionService.guardian, "isLinkedToGuardian")
.resolves(false);
sandbox.stub(IPProtectionService.guardian, "enroll").resolves({ ok: true });
sandbox.stub(IPPNimbusHelper, "isEligible").get(() => false);
await IPProtectionService.init();
Assert.equal(
IPProtectionService.state,
IPProtectionStates.UNAVAILABLE,
"IP Protection service should be unavailable"
);
sandbox.stub(IPPNimbusHelper, "isEligible").get(() => true);
sandbox
.stub(IPPEnrollAndEntitleManager, "isEnrolledAndEntitled")
.get(() => true);
IPProtectionService.updateState();
Assert.equal(
IPProtectionService.state,
IPProtectionStates.READY,
"IP Protection service should no longer be unauthenticated"
);
sandbox.stub(IPPSignInWatcher, "isSignedIn").get(() => false);
IPProtectionService.updateState();
Assert.equal(
IPProtectionService.state,
IPProtectionStates.UNAUTHENTICATED,
"IP Protection service should be unauthenticated"
);
IPProtectionService.uninit();
sandbox.restore();
});
/**
* Tests the enrolling state.
*/
add_task(async function test_IPProtectionStates_enrolling() {
let sandbox = sinon.createSandbox();
sandbox.stub(IPPSignInWatcher, "isSignedIn").get(() => true);
sandbox
.stub(IPProtectionService.guardian, "isLinkedToGuardian")
.resolves(false);
sandbox.stub(IPPNimbusHelper, "isEligible").get(() => true);
sandbox.stub(IPProtectionService.guardian, "enroll").resolves({ ok: true });
sandbox.stub(IPProtectionService.guardian, "fetchUserInfo").resolves({
status: 200,
error: null,
entitlement: createTestEntitlement(),
});
await IPProtectionService.init();
Assert.equal(
IPProtectionService.state,
IPProtectionStates.UNAUTHENTICATED,
"IP Protection service should be unauthenticated"
);
IPProtectionService.guardian.isLinkedToGuardian.resolves(true);
const enrollData = await IPPEnrollAndEntitleManager.maybeEnrollAndEntitle();
Assert.ok(enrollData.isEnrolledAndEntitled, "Fully enrolled and entitled");
Assert.equal(
IPProtectionService.state,
IPProtectionStates.READY,
"IP Protection service should have enrolled and be ready"
);
IPProtectionService.uninit();
sandbox.restore();
});
/**
* Tests the ready state.
*/
add_task(async function test_IPProtectionStates_ready() {
let sandbox = sinon.createSandbox();
sandbox.stub(IPPSignInWatcher, "isSignedIn").get(() => true);
sandbox
.stub(IPProtectionService.guardian, "isLinkedToGuardian")
.resolves(true);
sandbox.stub(IPProtectionService.guardian, "fetchUserInfo").resolves({
status: 200,
error: null,
entitlement: createTestEntitlement(),
});
await IPProtectionService.init();
Assert.equal(
IPProtectionService.state,
IPProtectionStates.READY,
"IP Protection service should be ready"
);
sandbox.stub(IPPSignInWatcher, "isSignedIn").get(() => false);
IPProtectionService.updateState();
Assert.notStrictEqual(
IPProtectionService.state,
IPProtectionStates.READY,
"IP Protection service should not be ready"
);
IPProtectionService.uninit();
sandbox.restore();
});