OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Tests for PaymentRequest::OnPaymentResponse(). | 5 // Tests for PaymentRequest::OnPaymentResponse(). |
6 | 6 |
7 #include "bindings/core/v8/ScriptFunction.h" | 7 #include "bindings/core/v8/ScriptFunction.h" |
8 #include "bindings/core/v8/V8BindingForTesting.h" | 8 #include "bindings/core/v8/V8BindingForTesting.h" |
9 #include "bindings/modules/v8/V8PaymentResponse.h" | 9 #include "bindings/modules/v8/V8PaymentResponse.h" |
10 #include "modules/payments/PaymentAddress.h" | 10 #include "modules/payments/PaymentAddress.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
50 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | 50 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); |
51 ASSERT_FALSE(scope.getExceptionState().hadException()); | 51 ASSERT_FALSE(scope.getExceptionState().hadException()); |
52 mojom::blink::PaymentResponsePtr response = buildPaymentResponseForTest(); | 52 mojom::blink::PaymentResponsePtr response = buildPaymentResponseForTest(); |
53 response->shipping_option = "standardShipping"; | 53 response->shipping_option = "standardShipping"; |
54 | 54 |
55 request->show(scope.getScriptState()).then(funcs.expectNoCall(), funcs.expec tCall()); | 55 request->show(scope.getScriptState()).then(funcs.expectNoCall(), funcs.expec tCall()); |
56 | 56 |
57 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | 57 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); |
58 } | 58 } |
59 | 59 |
60 // If the merchant requests a payer name, but the browser does not provide it, | |
61 // reject the show() promise. | |
62 TEST(OnPaymentResponseTest, RejectMissingName) | |
63 { | |
64 V8TestingScope scope; | |
65 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | |
66 makePaymentRequestOriginSecure(scope.document()); | |
67 PaymentOptions options; | |
68 options.setRequestPayerName(true); | |
69 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | |
70 EXPECT_FALSE(scope.getExceptionState().hadException()); | |
71 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); | |
72 | |
73 request->show(scope.getScriptState()).then(funcs.expectNoCall(), funcs.expec tCall()); | |
74 | |
75 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | |
76 } | |
77 | |
60 // If the merchant requests an email address, but the browser does not provide | 78 // If the merchant requests an email address, but the browser does not provide |
61 // it, reject the show() promise. | 79 // it, reject the show() promise. |
62 TEST(OnPaymentResponseTest, RejectMissingEmail) | 80 TEST(OnPaymentResponseTest, RejectMissingEmail) |
63 { | 81 { |
64 V8TestingScope scope; | 82 V8TestingScope scope; |
65 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | 83 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); |
66 makePaymentRequestOriginSecure(scope.document()); | 84 makePaymentRequestOriginSecure(scope.document()); |
67 PaymentOptions options; | 85 PaymentOptions options; |
68 options.setRequestPayerEmail(true); | 86 options.setRequestPayerEmail(true); |
69 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | 87 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
129 ASSERT_FALSE(scope.getExceptionState().hadException()); | 147 ASSERT_FALSE(scope.getExceptionState().hadException()); |
130 mojom::blink::PaymentResponsePtr response = buildPaymentResponseForTest(); | 148 mojom::blink::PaymentResponsePtr response = buildPaymentResponseForTest(); |
131 response->shipping_option = "standardShipping"; | 149 response->shipping_option = "standardShipping"; |
132 response->shipping_address = mojom::blink::PaymentAddress::New(); | 150 response->shipping_address = mojom::blink::PaymentAddress::New(); |
133 | 151 |
134 request->show(scope.getScriptState()).then(funcs.expectNoCall(), funcs.expec tCall()); | 152 request->show(scope.getScriptState()).then(funcs.expectNoCall(), funcs.expec tCall()); |
135 | 153 |
136 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | 154 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); |
137 } | 155 } |
138 | 156 |
157 // If the merchant requests a payer name, but the browser provides an empty | |
158 // string for name, reject the show() promise. | |
159 TEST(OnPaymentResponseTest, RejectEmptyName) | |
160 { | |
161 V8TestingScope scope; | |
162 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | |
163 makePaymentRequestOriginSecure(scope.document()); | |
164 PaymentOptions options; | |
165 options.setRequestPayerName(true); | |
166 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | |
167 EXPECT_FALSE(scope.getExceptionState().hadException()); | |
168 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); | |
169 response->payer_name = ""; | |
170 | |
171 request->show(scope.getScriptState()).then(funcs.expectNoCall(), funcs.expec tCall()); | |
172 | |
173 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | |
174 } | |
175 | |
139 // If the merchant requests an email, but the browser provides an empty string | 176 // If the merchant requests an email, but the browser provides an empty string |
140 // for email, reject the show() promise. | 177 // for email, reject the show() promise. |
141 TEST(OnPaymentResponseTest, RejectEmptyEmail) | 178 TEST(OnPaymentResponseTest, RejectEmptyEmail) |
142 { | 179 { |
143 V8TestingScope scope; | 180 V8TestingScope scope; |
144 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | 181 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); |
145 makePaymentRequestOriginSecure(scope.document()); | 182 makePaymentRequestOriginSecure(scope.document()); |
146 PaymentOptions options; | 183 PaymentOptions options; |
147 options.setRequestPayerEmail(true); | 184 options.setRequestPayerEmail(true); |
148 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | 185 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
208 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | 245 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); |
209 ASSERT_FALSE(scope.getExceptionState().hadException()); | 246 ASSERT_FALSE(scope.getExceptionState().hadException()); |
210 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); | 247 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); |
211 response->shipping_option = ""; | 248 response->shipping_option = ""; |
212 | 249 |
213 request->show(scope.getScriptState()).then(funcs.expectNoCall(), funcs.expec tCall()); | 250 request->show(scope.getScriptState()).then(funcs.expectNoCall(), funcs.expec tCall()); |
214 | 251 |
215 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | 252 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); |
216 } | 253 } |
217 | 254 |
255 // If the merchant does not request a payer name, but the browser provides it, | |
256 // reject the show() promise. | |
257 TEST(OnPaymentResponseTest, RejectNotRequestedName) | |
258 { | |
259 V8TestingScope scope; | |
260 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | |
261 makePaymentRequestOriginSecure(scope.document()); | |
262 PaymentOptions options; | |
263 options.setRequestPayerName(false); | |
264 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | |
265 EXPECT_FALSE(scope.getExceptionState().hadException()); | |
266 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); | |
267 response->payer_name = ""; | |
268 | |
269 request->show(scope.getScriptState()).then(funcs.expectNoCall(), funcs.expec tCall()); | |
270 | |
271 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | |
272 } | |
273 | |
218 // If the merchant does not request an email, but the browser provides it, | 274 // If the merchant does not request an email, but the browser provides it, |
219 // reject the show() promise. | 275 // reject the show() promise. |
220 TEST(OnPaymentResponseTest, RejectNotRequestedEmail) | 276 TEST(OnPaymentResponseTest, RejectNotRequestedEmail) |
221 { | 277 { |
222 V8TestingScope scope; | 278 V8TestingScope scope; |
223 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | 279 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); |
224 makePaymentRequestOriginSecure(scope.document()); | 280 makePaymentRequestOriginSecure(scope.document()); |
225 PaymentOptions options; | 281 PaymentOptions options; |
226 options.setRequestPayerEmail(false); | 282 options.setRequestPayerEmail(false); |
227 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | 283 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
322 | 378 |
323 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | 379 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); |
324 | 380 |
325 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); | 381 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); |
326 PaymentResponse* resp = V8PaymentResponse::toImplWithTypeCheck(scope.isolate (), outValue.v8Value()); | 382 PaymentResponse* resp = V8PaymentResponse::toImplWithTypeCheck(scope.isolate (), outValue.v8Value()); |
327 EXPECT_EQ("standardShipping", resp->shippingOption()); | 383 EXPECT_EQ("standardShipping", resp->shippingOption()); |
328 EXPECT_EQ("US", resp->shippingAddress()->country()); | 384 EXPECT_EQ("US", resp->shippingAddress()->country()); |
329 EXPECT_EQ("en-Latn", resp->shippingAddress()->languageCode()); | 385 EXPECT_EQ("en-Latn", resp->shippingAddress()->languageCode()); |
330 } | 386 } |
331 | 387 |
388 // If the merchant requests a payer name, the resolved show() promise should | |
389 // contain a payer name. | |
390 TEST(OnPaymentResponseTest, CanRequestName) | |
391 { | |
392 V8TestingScope scope; | |
393 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | |
394 makePaymentRequestOriginSecure(scope.document()); | |
395 PaymentOptions options; | |
396 options.setRequestPayerName(true); | |
397 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | |
398 EXPECT_FALSE(scope.getExceptionState().hadException()); | |
399 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); | |
400 response->payer_name = "Torvalds"; | |
please use gerrit instead
2016/09/19 08:06:31
We prefer to use made up names like "Jon Doe" in c
zino
2016/09/19 13:26:08
Done.
| |
401 ScriptValue outValue; | |
402 request->show(scope.getScriptState()).then(PaymentResponseFunction::create(s cope.getScriptState(), &outValue), funcs.expectNoCall()); | |
403 | |
404 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | |
405 | |
406 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); | |
407 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(scope.isolate() , outValue.v8Value()); | |
408 EXPECT_EQ("Torvalds", pr->payerName()); | |
409 } | |
410 | |
332 // If the merchant requests an email address, the resolved show() promise should | 411 // If the merchant requests an email address, the resolved show() promise should |
333 // contain an email address. | 412 // contain an email address. |
334 TEST(OnPaymentResponseTest, CanRequestEmail) | 413 TEST(OnPaymentResponseTest, CanRequestEmail) |
335 { | 414 { |
336 V8TestingScope scope; | 415 V8TestingScope scope; |
337 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | 416 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); |
338 makePaymentRequestOriginSecure(scope.document()); | 417 makePaymentRequestOriginSecure(scope.document()); |
339 PaymentOptions options; | 418 PaymentOptions options; |
340 options.setRequestPayerEmail(true); | 419 options.setRequestPayerEmail(true); |
341 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | 420 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
414 ScriptValue outValue; | 493 ScriptValue outValue; |
415 request->show(scope.getScriptState()).then(PaymentResponseFunction::create(s cope.getScriptState(), &outValue), funcs.expectNoCall()); | 494 request->show(scope.getScriptState()).then(PaymentResponseFunction::create(s cope.getScriptState(), &outValue), funcs.expectNoCall()); |
416 | 495 |
417 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | 496 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); |
418 | 497 |
419 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); | 498 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); |
420 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(scope.isolate() , outValue.v8Value()); | 499 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(scope.isolate() , outValue.v8Value()); |
421 EXPECT_TRUE(pr->payerPhone().isNull()); | 500 EXPECT_TRUE(pr->payerPhone().isNull()); |
422 } | 501 } |
423 | 502 |
503 // If the merchant does not request a payer name, the resolved show() promise | |
504 // should contain null payer name. | |
505 TEST(OnPaymentResponseTest, NameNotRequired) | |
506 { | |
507 V8TestingScope scope; | |
508 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | |
509 makePaymentRequestOriginSecure(scope.document()); | |
510 PaymentOptions options; | |
511 options.setRequestPayerName(false); | |
512 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | |
513 EXPECT_FALSE(scope.getExceptionState().hadException()); | |
514 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); | |
515 response->payer_name = String(); | |
516 ScriptValue outValue; | |
517 request->show(scope.getScriptState()).then(PaymentResponseFunction::create(s cope.getScriptState(), &outValue), funcs.expectNoCall()); | |
518 | |
519 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | |
520 | |
521 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); | |
522 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(scope.isolate() , outValue.v8Value()); | |
523 EXPECT_TRUE(pr->payerName().isNull()); | |
524 } | |
525 | |
424 // If the merchant does not request an email address, the resolved show() | 526 // If the merchant does not request an email address, the resolved show() |
425 // promise should contain null email address. | 527 // promise should contain null email address. |
426 TEST(OnPaymentResponseTest, EmailNotRequired) | 528 TEST(OnPaymentResponseTest, EmailNotRequired) |
427 { | 529 { |
428 V8TestingScope scope; | 530 V8TestingScope scope; |
429 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); | 531 PaymentRequestMockFunctionScope funcs(scope.getScriptState()); |
430 makePaymentRequestOriginSecure(scope.document()); | 532 makePaymentRequestOriginSecure(scope.document()); |
431 PaymentOptions options; | 533 PaymentOptions options; |
432 options.setRequestPayerEmail(false); | 534 options.setRequestPayerEmail(false); |
433 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); | 535 PaymentRequest* request = PaymentRequest::create(scope.getScriptState(), bui ldPaymentMethodDataForTest(), buildPaymentDetailsForTest(), options, scope.getEx ceptionState()); |
434 EXPECT_FALSE(scope.getExceptionState().hadException()); | 536 EXPECT_FALSE(scope.getExceptionState().hadException()); |
435 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); | 537 mojom::blink::PaymentResponsePtr response = mojom::blink::PaymentResponse::N ew(); |
436 response->payer_email = String(); | 538 response->payer_email = String(); |
437 ScriptValue outValue; | 539 ScriptValue outValue; |
438 request->show(scope.getScriptState()).then(PaymentResponseFunction::create(s cope.getScriptState(), &outValue), funcs.expectNoCall()); | 540 request->show(scope.getScriptState()).then(PaymentResponseFunction::create(s cope.getScriptState(), &outValue), funcs.expectNoCall()); |
439 | 541 |
440 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); | 542 static_cast<mojom::blink::PaymentRequestClient*>(request)->OnPaymentResponse (std::move(response)); |
441 | 543 |
442 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); | 544 v8::MicrotasksScope::PerformCheckpoint(scope.isolate()); |
443 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(scope.isolate() , outValue.v8Value()); | 545 PaymentResponse* pr = V8PaymentResponse::toImplWithTypeCheck(scope.isolate() , outValue.v8Value()); |
444 EXPECT_TRUE(pr->payerEmail().isNull()); | 546 EXPECT_TRUE(pr->payerEmail().isNull()); |
445 } | 547 } |
446 | 548 |
447 } // namespace | 549 } // namespace |
448 } // namespace blink | 550 } // namespace blink |
OLD | NEW |