Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/credentialmanager/passwordcredential-fetch.html

Issue 1844053003: CREDENTIAL: Rework the integration with Fetch (1/2) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: PHP Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <title>Credential Manager: PasswordCredential basics.</title> 2 <title>Credential Manager: PasswordCredential basics.</title>
3 <script src="../resources/testharness.js"></script> 3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script> 4 <script src="../resources/testharnessreport.js"></script>
5 <script src="/serviceworker/resources/interfaces.js"></script> 5 <script src="/serviceworker/resources/interfaces.js"></script>
6 <script> 6 <script>
7 var c = new PasswordCredential({
8 id: 'id',
9 password: 'pencil',
10 name: 'name',
11 iconURL: 'https://example.com/icon.png'
12 });
13
14 promise_test(_ => {
15 var r = new Request('/', { credentials: c, method: 'POST' });
16 var clone = r.clone();
17 assert_equals(r.credentials, "password");
18 assert_equals(clone.credentials, "password");
19 r.text().then(t => assert_equals(t, ""));
horo 2016/04/06 03:39:48 Line 19 20 must be: return Promise.all([
Mike West 2016/04/06 05:43:13 Thanks!
20 clone.text().then(t => assert_equals(t, ""));
21 }, "Creating/cloning a 'Request' does not expose the credential.");
22
23 promise_test(_ => {
24 assert_throws(new TypeError(), _ => new Request("https://cross-origin.exampl e.test/", { credentials: c, method: 'POST' }));
25 assert_throws(new TypeError(), _ => new Request("/", { credentials: c, metho d: 'GET' }));
26 assert_throws(new TypeError(), _ => new Request("/", { credentials: c, metho d: 'HEAD' }));
27 assert_throws(new TypeError(), _ => new Request("/", { credentials: 'passwor d', method: 'POST' }));
28 assert_throws(new TypeError(), _ => new Request("/", { credentials: 'passwor d', method: 'GET' }));
29 assert_throws(new TypeError(), _ => new Request("/", { credentials: 'passwor d', body: "Body", method: 'GET' }));
30 }, "Creating a 'Request' throws in various ways.");
31
7 promise_test(function() { 32 promise_test(function() {
8 var credential = new PasswordCredential({ 33 return fetch("./resources/echo-post.php", { credentials: c, method: "POST" } )
9 id: 'id', 34 .then(resp => resp.json())
10 password: 'pencil', 35 .then(j => {
11 name: 'name',
12 iconURL: 'https://example.com/icon.png'
13 });
14
15 return fetch("./resources/echo-post.php", { body: credential, method: "POST" })
16 .then(function (r) {
17 return r.json();
18 })
19 .then(function (j) {
20 assert_equals(j.username, 'id'); 36 assert_equals(j.username, 'id');
21 assert_equals(j.password, 'pencil'); 37 assert_equals(j.password, 'pencil');
22 }); 38 });
23 }, "Simple Fetch"); 39 }, "Simple Fetch");
24 40
25 promise_test(function() { 41 promise_test(function() {
42 var r1 = new Request('./resources/echo-post.php', { credentials: c, method: "POST" });
43 var r2 = r1.clone();
44 return fetch(r1)
45 .then(resp => resp.json())
46 .then(j => {
47 assert_equals(j.username, 'id');
48 assert_equals(j.password, 'pencil');
49 })
50 .then(_ => {
horo 2016/04/06 03:39:48 Line 50-57: .then(_ => fetch(r2))
Mike West 2016/04/06 05:43:13 Done.
51 fetch(r2)
52 .then(resp => resp.json())
53 .then(j => {
54 assert_equals(j.username, 'id');
55 assert_equals(j.password, 'pencil');
56 })
57 });
58 }, "Fetch with cloned Request");
59
60 promise_test(function() {
61 var r1 = new Request('./resources/echo-post.php', { credentials: c, method: "POST" });
62 var r2 = new Request(r1);
63 return fetch(r1)
64 .then(resp => resp.json())
65 .then(j => {
66 assert_equals(j.username, 'id');
67 assert_equals(j.password, 'pencil');
68 })
69 .then(_ => {
horo 2016/04/06 03:39:48 ditto.
Mike West 2016/04/06 05:43:13 Done.
70 fetch(r2)
71 .then(resp => resp.json())
72 .then(j => {
73 assert_equals(j.username, 'id');
74 assert_equals(j.password, 'pencil');
75 })
76 });
77 }, "Fetch with copied Request");
78
79 promise_test(function() {
26 var credential = new PasswordCredential({ 80 var credential = new PasswordCredential({
27 id: 'id', 81 id: 'id',
28 password: 'pencil', 82 password: 'pencil',
29 name: 'name', 83 name: 'name',
30 iconURL: 'https://example.com/icon.png' 84 iconURL: 'https://example.com/icon.png'
31 }); 85 });
32 86
33 credential.idName = "notUsername"; 87 credential.idName = "notUsername";
34 credential.passwordName = "notPassword"; 88 credential.passwordName = "notPassword";
35 89
36 return fetch("./resources/echo-post.php", { body: credential, method: "POST" }) 90 return fetch("./resources/echo-post.php", { credentials: credential, method: "POST" })
37 .then(function (r) { 91 .then(function (r) {
38 return r.json() 92 return r.json()
39 }) 93 })
40 .then(function (j) { 94 .then(function (j) {
41 assert_equals(j.username, undefined); 95 assert_equals(j.username, undefined);
42 assert_equals(j.password, undefined); 96 assert_equals(j.password, undefined);
43 assert_equals(j.notUsername, 'id'); 97 assert_equals(j.notUsername, 'id');
44 assert_equals(j.notPassword, 'pencil'); 98 assert_equals(j.notPassword, 'pencil');
45 }); 99 });
46 }, "'idName' and 'passwordName'"); 100 }, "'idName' and 'passwordName'");
47 101
48 promise_test(function() { 102 promise_test(function() {
49 var credential = new PasswordCredential({ 103 var credential = new PasswordCredential({
50 id: 'id', 104 id: 'id',
51 password: 'pencil', 105 password: 'pencil',
52 name: 'name', 106 name: 'name',
53 iconURL: 'https://example.com/icon.png' 107 iconURL: 'https://example.com/icon.png'
54 }); 108 });
55 109
56 var fd = new FormData(); 110 var fd = new FormData();
57 credential.additionalData = fd; 111 credential.additionalData = fd;
58 112
59 return fetch("./resources/echo-post.php", { body: credential, method: "POST" }) 113 return fetch("./resources/echo-post.php", { credentials: credential, method: "POST" })
60 .then(function (r) { 114 .then(function (r) {
61 return r.json(); 115 return r.json();
62 }) 116 })
63 .then(function (j) { 117 .then(function (j) {
64 assert_equals(j.username, 'id'); 118 assert_equals(j.username, 'id');
65 assert_equals(j.password, 'pencil'); 119 assert_equals(j.password, 'pencil');
66 }); 120 });
67 }, "'additionalData': Empty FormData has no effect."); 121 }, "'additionalData': Empty FormData has no effect.");
68 122
69 promise_test(function() { 123 promise_test(function() {
70 var credential = new PasswordCredential({ 124 var credential = new PasswordCredential({
71 id: 'id', 125 id: 'id',
72 password: 'pencil', 126 password: 'pencil',
73 name: 'name', 127 name: 'name',
74 iconURL: 'https://example.com/icon.png' 128 iconURL: 'https://example.com/icon.png'
75 }); 129 });
76 130
77 var fd = new FormData(); 131 var fd = new FormData();
78 fd.append("excitingData", "exciting value"); 132 fd.append("excitingData", "exciting value");
79 fd.append("csrf", "[randomness]"); 133 fd.append("csrf", "[randomness]");
80 credential.additionalData = fd; 134 credential.additionalData = fd;
81 135
82 return fetch("./resources/echo-post.php", { body: credential, method: "POST" }) 136 return fetch("./resources/echo-post.php", { credentials: credential, method: "POST" })
83 .then(function (r) { 137 .then(function (r) {
84 return r.json(); 138 return r.json();
85 }) 139 })
86 .then(function (j) { 140 .then(function (j) {
87 assert_equals(j.username, 'id'); 141 assert_equals(j.username, 'id');
88 assert_equals(j.password, 'pencil'); 142 assert_equals(j.password, 'pencil');
89 assert_equals(j.excitingData, 'exciting value'); 143 assert_equals(j.excitingData, 'exciting value');
90 assert_equals(j.csrf, '[randomness]'); 144 assert_equals(j.csrf, '[randomness]');
91 }); 145 });
92 }, "'additionalData': FormData properties are properly injected."); 146 }, "'additionalData': FormData properties are properly injected.");
93 147
94 promise_test(function() { 148 promise_test(function() {
95 var credential = new PasswordCredential({ 149 var credential = new PasswordCredential({
96 id: 'id', 150 id: 'id',
97 password: 'pencil', 151 password: 'pencil',
98 name: 'name', 152 name: 'name',
99 iconURL: 'https://example.com/icon.png' 153 iconURL: 'https://example.com/icon.png'
100 }); 154 });
101 155
102 var fd = new FormData(); 156 var fd = new FormData();
103 fd.append("username", "foo"); 157 fd.append("username", "foo");
104 fd.append("password", "bar"); 158 fd.append("password", "bar");
105 credential.additionalData = fd; 159 credential.additionalData = fd;
106 160
107 // Use post-echo.cgi since PHP doesn't give us the raw data of a POST's 161 // Use post-echo.cgi since PHP doesn't give us the raw data of a POST's
108 // body if it's multipart/form-data. 162 // body if it's multipart/form-data.
109 return fetch("/xmlhttprequest/resources/post-echo.cgi", { body: credential, method: "POST" }) 163 return fetch("/xmlhttprequest/resources/post-echo.cgi", { credentials: crede ntial, method: "POST" })
110 .then(function (r) { 164 .then(function (r) {
111 return r.text(); 165 return r.text();
112 }) 166 })
113 .then(function (t) { 167 .then(function (t) {
114 // Match "CRLF *OCTET CRLF". See RFC 2046 for the multipart 168 // Match "CRLF *OCTET CRLF". See RFC 2046 for the multipart
115 // grammar. 169 // grammar.
116 assert_false( 170 assert_false(
117 /\r\nfoo\r\n/.test(t), 171 /\r\nfoo\r\n/.test(t),
118 "POST data should not contain the overridden value foo."); 172 "POST data should not contain the overridden value foo.");
119 assert_false( 173 assert_false(
120 /\r\nbar\r\n/.test(t), 174 /\r\nbar\r\n/.test(t),
121 "POST data should not contain the overridden value bar."); 175 "POST data should not contain the overridden value bar.");
122 }); 176 });
123 }, "'additionalData': FormData properties are properly overridden."); 177 }, "'additionalData': FormData properties are properly overridden.");
124 178
125 promise_test(function() { 179 promise_test(function() {
126 var credential = new PasswordCredential({ 180 var credential = new PasswordCredential({
127 id: 'id', 181 id: 'id',
128 password: 'pencil', 182 password: 'pencil',
129 name: 'name', 183 name: 'name',
130 iconURL: 'https://example.com/icon.png' 184 iconURL: 'https://example.com/icon.png'
131 }); 185 });
132 186
133 var params = new URLSearchParams(); 187 var params = new URLSearchParams();
134 credential.additionalData = params; 188 credential.additionalData = params;
135 189
136 return fetch("./resources/echo-post.php", { body: credential, method: "POST" }) 190 return fetch("./resources/echo-post.php", { credentials: credential, method: "POST" })
137 .then(function (r) { 191 .then(function (r) {
138 return r.json(); 192 return r.json();
139 }) 193 })
140 .then(function (j) { 194 .then(function (j) {
141 assert_equals(j.username, 'id'); 195 assert_equals(j.username, 'id');
142 assert_equals(j.password, 'pencil'); 196 assert_equals(j.password, 'pencil');
143 }); 197 });
144 }, "'additionalData': Empty URLSearchParams has no effect."); 198 }, "'additionalData': Empty URLSearchParams has no effect.");
145 199
146 promise_test(function() { 200 promise_test(function() {
147 var credential = new PasswordCredential({ 201 var credential = new PasswordCredential({
148 id: 'id', 202 id: 'id',
149 password: 'pencil', 203 password: 'pencil',
150 name: 'name', 204 name: 'name',
151 iconURL: 'https://example.com/icon.png' 205 iconURL: 'https://example.com/icon.png'
152 }); 206 });
153 207
154 var params = new URLSearchParams(); 208 var params = new URLSearchParams();
155 params.append("excitingData", "exciting value"); 209 params.append("excitingData", "exciting value");
156 params.append("csrf", "[randomness]"); 210 params.append("csrf", "[randomness]");
157 credential.additionalData = params; 211 credential.additionalData = params;
158 212
159 return fetch("./resources/echo-post.php", { body: credential, method: "POST" }) 213 return fetch("./resources/echo-post.php", { credentials: credential, method: "POST" })
160 .then(function (r) { 214 .then(function (r) {
161 return r.json(); 215 return r.json();
162 }) 216 })
163 .then(function (j) { 217 .then(function (j) {
164 assert_equals(j.username, 'id'); 218 assert_equals(j.username, 'id');
165 assert_equals(j.password, 'pencil'); 219 assert_equals(j.password, 'pencil');
166 assert_equals(j.excitingData, 'exciting value'); 220 assert_equals(j.excitingData, 'exciting value');
167 assert_equals(j.csrf, '[randomness]'); 221 assert_equals(j.csrf, '[randomness]');
168 }); 222 });
169 }, "'additionalData': URLSearchParams properties are properly injected."); 223 }, "'additionalData': URLSearchParams properties are properly injected.");
170 224
171 promise_test(function() { 225 promise_test(function() {
172 var credential = new PasswordCredential({ 226 var credential = new PasswordCredential({
173 id: 'id', 227 id: 'id',
174 password: 'pencil', 228 password: 'pencil',
175 name: 'name', 229 name: 'name',
176 iconURL: 'https://example.com/icon.png' 230 iconURL: 'https://example.com/icon.png'
177 }); 231 });
178 232
179 var params = new URLSearchParams(); 233 var params = new URLSearchParams();
180 params.append("username", "foo"); 234 params.append("username", "foo");
181 params.append("password", "bar"); 235 params.append("password", "bar");
182 credential.additionalData = params; 236 credential.additionalData = params;
183 237
184 return fetch("./resources/echo-raw-post.php", { body: credential, method: "P OST" }) 238 return fetch("./resources/echo-raw-post.php", { credentials: credential, met hod: "POST" })
185 .then(function (r) { 239 .then(function (r) {
186 return r.text(); 240 return r.text();
187 }) 241 })
188 .then(function (t) { 242 .then(function (t) {
189 assert_equals(t, 'username=id&password=pencil'); 243 assert_equals(t, 'username=id&password=pencil');
190 }); 244 });
191 }, "'additionalData': URLSearchParams properties are properly overridden."); 245 }, "'additionalData': URLSearchParams properties are properly overridden.");
192 246
193 promise_test(function() { 247 promise_test(function() {
194 var credential = new PasswordCredential({ 248 var credential = new PasswordCredential({
195 id: 'id', 249 id: 'id',
196 password: 'pencil', 250 password: 'pencil',
197 name: 'name', 251 name: 'name',
198 iconURL: 'https://example.com/icon.png' 252 iconURL: 'https://example.com/icon.png'
199 }); 253 });
200 254
201 var params = new URLSearchParams(); 255 var params = new URLSearchParams();
202 params.append("a", "1"); 256 params.append("a", "1");
203 params.append("a", "2"); 257 params.append("a", "2");
204 params.append("a", "3"); 258 params.append("a", "3");
205 credential.additionalData = params; 259 credential.additionalData = params;
206 260
207 return fetch("./resources/echo-raw-post.php", { body: credential, method: "P OST" }) 261 return fetch("./resources/echo-raw-post.php", { credentials: credential, met hod: "POST" })
208 .then(function (r) { 262 .then(function (r) {
209 return r.text(); 263 return r.text();
210 }) 264 })
211 .then(function (t) { 265 .then(function (t) {
212 assert_equals(t, 'a=1&a=2&a=3&username=id&password=pencil'); 266 assert_equals(t, 'a=1&a=2&a=3&username=id&password=pencil');
213 }); 267 });
214 }, "'additionalData': URLSearchParams properties are properly injected (ordering matters)."); 268 }, "'additionalData': URLSearchParams properties are properly injected (ordering matters).");
215 </script> 269 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698