tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

otpcredential-get-basics.https.html (2576B)


      1 <!DOCTYPE html>
      2 <link rel="help" href="https://github.com/WICG/WebOTP">
      3 <title>Tests OTPCredential</title>
      4 <script src="/resources/testharness.js"></script>
      5 <script src="/resources/testharnessreport.js"></script>
      6 <script type="module">
      7 import {Status, expectOTPRequest} from './support/otpcredential-helper.js';
      8 
      9 promise_test(async t => {
     10  await expectOTPRequest().andReturn(
     11      () => ({status: Status.SUCCESS, otp: "ABC"}));
     12 
     13  let cred = await navigator.credentials.get({otp: {transport: ["sms"]}});
     14 
     15  assert_equals(cred.code, "ABC");
     16 }, 'Basic usage');
     17 
     18 promise_test(async t => {
     19  await expectOTPRequest().andReturn(
     20      () => ({status: Status.SUCCESS, otp: "ABC"}));
     21  await expectOTPRequest().andReturn(
     22      () => ({status: Status.SUCCESS, otp: "ABC2"}));
     23 
     24  let sms1 = navigator.credentials.get({otp: {transport: ["sms"]}});
     25  let sms2 = navigator.credentials.get({otp: {transport: ["sms"]}});
     26 
     27  let cred2 = await sms2;
     28  let cred1 = await sms1;
     29 
     30  assert_equals(cred1.code, "ABC");
     31  assert_equals(cred2.code, "ABC2");
     32 }, 'Handle multiple requests in different order.');
     33 
     34 promise_test(async t => {
     35  await expectOTPRequest().andReturn(() => ({status: Status.CANCELLED}));
     36  await expectOTPRequest().andReturn(
     37      () => ({status: Status.SUCCESS, otp: "success"}));
     38 
     39  let cancelledRequest = navigator.credentials.get({otp: {transport: ["sms"]}});
     40  let successfulCred =
     41      await navigator.credentials.get({otp: {transport: ["sms"]}});
     42 
     43  assert_equals(successfulCred.code, "success");
     44 
     45  try {
     46    await cancelledRequest;
     47    assert_unreached('Expected AbortError to be thrown.');
     48  } catch (error) {
     49    assert_equals(error.name, "AbortError");
     50  }
     51 }, 'Handle multiple requests with success and error.');
     52 
     53 promise_test(async t => {
     54  await expectOTPRequest().andReturn(() => ({status: Status.CANCELLED}));
     55 
     56  await promise_rejects_dom(t, 'AbortError', navigator.credentials.get(
     57    {otp: {transport: ["sms"]}}));
     58 }, 'Deal with cancelled requests');
     59 
     60 promise_test(async t => {
     61  const controller = new AbortController();
     62  const signal = controller.signal;
     63 
     64  controller.abort();
     65  await promise_rejects_dom(t, 'AbortError', navigator.credentials.get(
     66    {otp: {transport: ["sms"]}, signal: signal}));
     67 }, 'Should abort request');
     68 
     69 promise_test(async t => {
     70  const controller = new AbortController();
     71  const signal = controller.signal;
     72 
     73  controller.abort('CustomError');
     74  await promise_rejects_exactly(t, 'CustomError', navigator.credentials.get(
     75    {otp: {transport: ["sms"]}, signal: signal}));
     76 }, 'Should abort request with reason');
     77 </script>