1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
content / public / android / javatests / src / org / chromium / content_public / browser / ClientDataJsonTest.java [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.content_public.browser;
import static org.junit.Assert.assertThat;
import static org.chromium.base.test.util.Matchers.containsString;
import androidx.test.filters.SmallTest;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.chromium.base.test.BaseJUnit4ClassRunner;
import org.chromium.base.test.util.Batch;
import org.chromium.blink.mojom.PaymentCredentialInstrument;
import org.chromium.blink.mojom.PaymentOptions;
import org.chromium.content_public.browser.test.NativeLibraryTestUtils;
import org.chromium.payments.mojom.PaymentCurrencyAmount;
import org.chromium.url.GURL;
import org.chromium.url.Origin;
import org.chromium.url.mojom.Url;
/** Unit tests for ClientDataJson */
@RunWith(BaseJUnit4ClassRunner.class)
@Batch(Batch.UNIT_TESTS)
public class ClientDataJsonTest {
@Before
public void setUp() {
NativeLibraryTestUtils.loadNativeLibraryNoBrowserProcess();
}
@Test
@SmallTest
public void testBuildClientDataJson() {
PaymentOptions payment = new PaymentOptions();
payment.total = new PaymentCurrencyAmount();
payment.total.currency = "USD";
payment.total.value = "123";
payment.instrument = new PaymentCredentialInstrument();
payment.instrument.displayName = "TestPay";
payment.instrument.icon = new Url();
payment.instrument.icon.url = "https://www.example.test/icon.png";
payment.payeeOrigin = new org.chromium.url.internal.mojom.Origin();
payment.payeeOrigin.scheme = "https";
payment.payeeOrigin.host = "test.example";
payment.payeeOrigin.port = 443;
byte[] challenge = new byte[3];
String relyingPartyId = "subdomain.example.test";
String origin = "https://example.test";
Origin topOrigin = Origin.create(new GURL("https://www.chromium.test/pay"));
String output =
ClientDataJson.buildClientDataJson(
ClientDataRequestType.PAYMENT_GET,
origin,
challenge,
/* isCrossOrigin= */ false,
payment,
relyingPartyId,
topOrigin);
// Test that the output has the expected fields.
assertThat(output, containsString("\"type\":\"payment.get\""));
assertThat(output, containsString("\"challenge\":\"AAAA\""));
assertThat(output, containsString(String.format("\"origin\":\"%s\"", origin)));
assertThat(output, containsString("\"crossOrigin\":false"));
assertThat(output, containsString(String.format("\"rpId\":\"%s\"", relyingPartyId)));
// The topOrigin is formatted with no trailing slash.
assertThat(output, containsString("\"topOrigin\":\"https://www.chromium.test\""));
assertThat(output, containsString("\"payeeOrigin\":\"https://test.example\""));
assertThat(output, containsString(String.format("\"value\":\"%s\"", payment.total.value)));
assertThat(
output,
containsString(String.format("\"currency\":\"%s\"", payment.total.currency)));
assertThat(
output,
containsString(String.format("\"icon\":\"%s\"", payment.instrument.icon.url)));
assertThat(
output,
containsString(
String.format("\"displayName\":\"%s\"", payment.instrument.displayName)));
}
}