Bug 1846847 [wpt PR 41301] - [FedCM] Don't omit schemes when formatting URLs, a=testonly
[gecko.git] / testing / web-platform / tests / credential-management / credentialscontainer-create-basics.https.html
blobea2326c4ae48d987f233f057a42fcf08eec6dd01
1 <!DOCTYPE html>
2 <title>Credential Management API: create() basics.</title>
3 <script src="/resources/testharness.js"></script>
4 <script src="/resources/testharnessreport.js"></script>
5 <script>
6 promise_test(function(t) {
7 return promise_rejects_dom(t, "NotSupportedError",
8 navigator.credentials.create());
9 }, "navigator.credentials.create() with no argument.");
11 promise_test(function(t) {
12 return promise_rejects_dom(t, "NotSupportedError",
13 navigator.credentials.create({}));
14 }, "navigator.credentials.create() with empty argument.");
16 promise_test(function(t) {
17 var credential_data = {
18 id: 'id',
19 password: 'pencil',
22 return navigator.credentials.create({password: credential_data})
23 .then(function(credential) {
24 assert_equals(credential.id, 'id');
25 assert_equals(credential.name, '');
26 assert_equals(credential.iconURL, '');
27 assert_equals(credential.type, 'password');
28 assert_equals(credential.password, 'pencil');
29 });
30 }, "navigator.credentials.create() with valid PasswordCredentialData");
32 promise_test(function(t) {
33 var f = document.createElement('form');
34 f.innerHTML = "<input type='text' name='theId' value='musterman' autocomplete='username'>"
35 + "<input type='text' name='thePassword' value='sekrit' autocomplete='current-password'>"
36 + "<input type='text' name='theIcon' value='https://example.com/photo' autocomplete='photo'>"
37 + "<input type='text' name='theExtraField' value='extra'>"
38 + "<input type='text' name='theName' value='friendly name' autocomplete='name'>";
40 return navigator.credentials.create({password: f})
41 .then(function(credential) {
42 assert_equals(credential.id, 'musterman');
43 assert_equals(credential.name, 'friendly name');
44 assert_equals(credential.iconURL, 'https://example.com/photo');
45 assert_equals(credential.type, 'password');
46 assert_equals(credential.password, 'sekrit');
47 });
48 }, "navigator.credentials.create() with valid HTMLFormElement");
50 promise_test(function(t) {
51 return promise_rejects_js(t, TypeError,
52 navigator.credentials.create({password: "bogus password data"}));
53 }, "navigator.credentials.create() with bogus password data");
55 promise_test(function(t) {
56 var federated_data = {
57 id: 'id',
58 provider: 'https://example.com/',
61 return navigator.credentials.create({federated: federated_data})
62 .then(function(credential) {
63 assert_equals(credential.id, 'id');
64 assert_equals(credential.name, '');
65 assert_equals(credential.iconURL, '');
66 assert_equals(credential.type, 'federated');
67 });
68 }, "navigator.credentials.create() with valid FederatedCredentialData");
70 promise_test(function(t) {
71 return promise_rejects_js(t, TypeError,
72 navigator.credentials.create({federated: "bogus federated data"}));
73 }, "navigator.credentials.create() with bogus federated data");
75 promise_test(function(t) {
76 return promise_rejects_js(t, TypeError,
77 navigator.credentials.create({publicKey: "bogus publicKey data"}));
78 }, "navigator.credentials.create() with bogus publicKey data");
80 promise_test(function(t) {
81 var credential_data = {
82 id: 'id',
83 password: 'pencil',
86 var federated_data = {
87 id: 'id',
88 provider: 'https://example.com/',
91 return promise_rejects_dom(t, "NotSupportedError",
92 navigator.credentials.create({
93 password: credential_data,
94 federated: federated_data,
95 }));
96 }, "navigator.credentials.create() with both PasswordCredentialData and FederatedCredentialData");
98 promise_test(function(t) {
99 return promise_rejects_js(t, TypeError,
100 navigator.credentials.create({
101 password: "bogus password data",
102 federated: "bogus federated data",
103 }));
104 }, "navigator.credentials.create() with bogus password and federated data");
106 promise_test(function(t) {
107 return promise_rejects_js(t, TypeError,
108 navigator.credentials.create({
109 federated: "bogus federated data",
110 publicKey: "bogus publicKey data",
111 }));
112 }, "navigator.credentials.create() with bogus federated and publicKey data");
114 promise_test(function(t) {
115 return promise_rejects_js(t, TypeError,
116 navigator.credentials.create({
117 password: "bogus password data",
118 publicKey: "bogus publicKey data",
119 }));
120 }, "navigator.credentials.create() with bogus password and publicKey data");
122 promise_test(function(t) {
123 return promise_rejects_js(t, TypeError,
124 navigator.credentials.create({
125 password: "bogus password data",
126 federated: "bogus federated data",
127 publicKey: "bogus publicKey data",
128 }));
129 }, "navigator.credentials.create() with bogus password, federated, and publicKey data");
131 promise_test(function(t) {
132 return promise_rejects_dom(t, "NotSupportedError",
133 navigator.credentials.create({bogus_key: "bogus data"}));
134 }, "navigator.credentials.create() with bogus data");
135 </script>