2 <title>Credential Management API: create() basics.
</title>
3 <script src=
"/resources/testharness.js"></script>
4 <script src=
"/resources/testharnessreport.js"></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
= {
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');
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');
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
= {
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');
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
= {
86 var federated_data
= {
88 provider
: 'https://example.com/',
91 return promise_rejects_dom(t
, "NotSupportedError",
92 navigator
.credentials
.create({
93 password
: credential_data
,
94 federated
: federated_data
,
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",
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",
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",
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",
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");