1 // Copyright 2022 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.url; 6 7 import androidx.test.filters.SmallTest; 8 9 import org.junit.Assert; 10 import org.junit.Before; 11 import org.junit.Test; 12 import org.junit.runner.RunWith; 13 14 import org.chromium.base.test.BaseJUnit4ClassRunner; 15 import org.chromium.base.test.util.Batch; 16 import org.chromium.content_public.browser.test.NativeLibraryTestUtils; 17 import org.chromium.mojo_base.mojom.UnguessableToken; 18 19 /** 20 * Tests for {@link Origin}. Origin relies heavily on the native implementation, and the lion's 21 * share of the logic is tested there. This test is primarily to make sure everything is plumbed 22 * through correctly. 23 */ 24 @RunWith(BaseJUnit4ClassRunner.class) 25 @Batch(Batch.UNIT_TESTS) 26 public class OriginJavaTest { 27 @Before setUp()28 public void setUp() { 29 NativeLibraryTestUtils.loadNativeLibraryNoBrowserProcess(); 30 } 31 32 @SmallTest 33 @Test testOriginEquivalence()34 public void testOriginEquivalence() { 35 OriginJavaTestHelper.testOriginEquivalence(); 36 } 37 38 @SmallTest 39 @Test testCreateOpaqueOrigin()40 public void testCreateOpaqueOrigin() { 41 Origin opaque = Origin.createOpaqueOrigin(); 42 Assert.assertTrue(opaque.isOpaque()); 43 Assert.assertEquals("", opaque.getScheme()); 44 Assert.assertEquals("", opaque.getHost()); 45 Assert.assertEquals(0, opaque.getPort()); 46 } 47 48 @SmallTest 49 @Test testNonOpaqueMojomConstructor()50 public void testNonOpaqueMojomConstructor() { 51 String scheme = "http"; 52 String host = "host.name"; 53 short port = 42; 54 org.chromium.url.internal.mojom.Origin mojom = new org.chromium.url.internal.mojom.Origin(); 55 mojom.scheme = scheme; 56 mojom.host = host; 57 mojom.port = port; 58 Origin origin = new Origin(mojom); 59 60 Assert.assertEquals(scheme, origin.getScheme()); 61 Assert.assertEquals(host, origin.getHost()); 62 Assert.assertEquals(port, origin.getPort()); 63 Assert.assertFalse(origin.isOpaque()); 64 } 65 66 @SmallTest 67 @Test testOpaqueMojomConstructor()68 public void testOpaqueMojomConstructor() { 69 String scheme = "http"; 70 String host = "host.name"; 71 short port = 42; 72 org.chromium.url.internal.mojom.Origin mojom = new org.chromium.url.internal.mojom.Origin(); 73 mojom.scheme = scheme; 74 mojom.host = host; 75 mojom.port = port; 76 UnguessableToken token = new UnguessableToken(); 77 token.high = 3; 78 token.low = 4; 79 mojom.nonceIfOpaque = token; 80 81 Origin origin = new Origin(mojom); 82 83 Assert.assertEquals("", origin.getScheme()); 84 Assert.assertEquals("", origin.getHost()); 85 Assert.assertEquals(0, origin.getPort()); 86 Assert.assertTrue(origin.isOpaque()); 87 } 88 89 @SmallTest 90 @Test testCreateFromGURL()91 public void testCreateFromGURL() { 92 GURL gurl = new GURL("https://host.name:61234/path"); 93 Origin opaque = Origin.create(gurl); 94 Assert.assertFalse(opaque.isOpaque()); 95 Assert.assertEquals("https", opaque.getScheme()); 96 Assert.assertEquals("host.name", opaque.getHost()); 97 Assert.assertEquals(61234, opaque.getPort()); 98 } 99 } 100