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>