complex.https.html (2976B)
1 <!DOCTYPE html> 2 <title>FedCM Flexible Token Formats - Complex Types</title> 3 <meta name="timeout" content="long"> 4 <link rel="help" href="https://fedidcg.github.io/FedCM"> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="/resources/testdriver.js"></script> 8 <script src="/resources/testdriver-vendor.js"></script> 9 10 <script type="module"> 11 import {fedcm_test, 12 fedcm_get_flexible_tokens_credential} from '../support/fedcm-helper.sub.js'; 13 14 fedcm_test(async t => { 15 const credential = await fedcm_get_flexible_tokens_credential(t, 'array'); 16 assert_true(credential instanceof IdentityCredential); 17 assert_true(Array.isArray(credential.token)); 18 assert_array_equals(credential.token, ['token1', 'token2', 'token3']); 19 }, 'FedCM should accept array tokens'); 20 21 fedcm_test(async t => { 22 const credential = await fedcm_get_flexible_tokens_credential(t, 'empty-array'); 23 assert_true(credential instanceof IdentityCredential); 24 assert_true(Array.isArray(credential.token)); 25 assert_equals(credential.token.length, 0); 26 }, 'FedCM should accept empty array tokens'); 27 28 fedcm_test(async t => { 29 const credential = await fedcm_get_flexible_tokens_credential(t, 'mixed-array'); 30 assert_true(credential instanceof IdentityCredential); 31 assert_true(Array.isArray(credential.token)); 32 assert_equals(credential.token.length, 5); 33 assert_equals(credential.token[0], 'string'); 34 assert_equals(credential.token[1], 123); 35 assert_equals(credential.token[2], true); 36 assert_equals(credential.token[3], null); 37 assert_equals(typeof credential.token[4], 'object'); 38 }, 'FedCM should accept mixed-type array tokens'); 39 40 fedcm_test(async t => { 41 const credential = await fedcm_get_flexible_tokens_credential(t, 'object'); 42 assert_true(credential instanceof IdentityCredential); 43 assert_equals(typeof credential.token, 'object'); 44 assert_not_equals(credential.token, null); 45 assert_equals(credential.token.access_token, 'abc123'); 46 assert_equals(credential.token.token_type, 'Bearer'); 47 assert_equals(credential.token.expires_in, 3600); 48 }, 'FedCM should accept object tokens'); 49 50 fedcm_test(async t => { 51 const credential = await fedcm_get_flexible_tokens_credential(t, 'empty-object'); 52 assert_true(credential instanceof IdentityCredential); 53 assert_equals(typeof credential.token, 'object'); 54 assert_not_equals(credential.token, null); 55 assert_array_equals(Object.keys(credential.token), []); 56 }, 'FedCM should accept empty object tokens'); 57 58 fedcm_test(async t => { 59 const credential = await fedcm_get_flexible_tokens_credential(t, 'nested-object'); 60 assert_true(credential instanceof IdentityCredential); 61 assert_equals(typeof credential.token, 'object'); 62 assert_equals(credential.token.user.id, '123'); 63 assert_equals(credential.token.user.profile.name, 'Test User'); 64 assert_equals(credential.token.user.profile.preferences.theme, 'dark'); 65 }, 'FedCM should accept nested object tokens'); 66 67 </script>