1b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu/* 2b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Copyright (C) 2016 The Android Open Source Project 3b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 4b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Licensed under the Apache License, Version 2.0 (the "License"); 5b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * you may not use this file except in compliance with the License. 6b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * You may obtain a copy of the License at 7b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 8b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * http://www.apache.org/licenses/LICENSE-2.0 9b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 10b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Unless required by applicable law or agreed to in writing, software 11b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * distributed under the License is distributed on an "AS IS" BASIS, 12b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * See the License for the specific language governing permissions and 14b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * limitations under the License. 15b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 16b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 17b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiupackage com.android.server.wifi.hotspot2; 18b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 19b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiuimport static org.junit.Assert.assertEquals; 20b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiuimport static org.junit.Assert.assertFalse; 21b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiuimport static org.junit.Assert.assertTrue; 22b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 23b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiuimport android.test.suitebuilder.annotation.SmallTest; 24b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiuimport android.util.Pair; 25b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 26b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiuimport org.junit.Test; 27b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 28b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiuimport java.util.Arrays; 29b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiuimport java.util.HashMap; 30b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiuimport java.util.Map; 31b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 32b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu/** 33b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Unit tests for {@link com.android.server.wifi.hotspot2.DomainMatcher}. 34b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 35b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu@SmallTest 36b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiupublic class DomainMatcherTest { 37b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu private static final String PRIMARY_DOMAIN = "google.com"; 38b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu private static final String SECONDARY_DOMAIN1 = "android.com"; 39b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu private static final String SECONDARY_DOMAIN2 = "testing.test.com"; 40b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 41b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 42b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Test data for isSubDomain function. 43b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 44b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu private static final Map<String, Integer> TEST_DOMAIN_MAP = new HashMap<>(); 45b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu static { 46b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_DOMAIN_MAP.put("", DomainMatcher.MATCH_NONE); 47b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_DOMAIN_MAP.put("com", DomainMatcher.MATCH_NONE); 48b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_DOMAIN_MAP.put("test.com", DomainMatcher.MATCH_NONE); 49b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_DOMAIN_MAP.put("google.com", DomainMatcher.MATCH_PRIMARY); 50b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_DOMAIN_MAP.put("test.google.com", DomainMatcher.MATCH_PRIMARY); 51b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_DOMAIN_MAP.put("android.com", DomainMatcher.MATCH_SECONDARY); 52b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_DOMAIN_MAP.put("test.android.com", DomainMatcher.MATCH_SECONDARY); 53b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_DOMAIN_MAP.put("testing.test.com", DomainMatcher.MATCH_SECONDARY); 54b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_DOMAIN_MAP.put("adbcd.testing.test.com", DomainMatcher.MATCH_SECONDARY); 55b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 56b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 57b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 58b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Test data for arg2SubdomainOfArg1 function. 59b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 60b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu private static final Map<Pair<String, String>, Boolean> TEST_ARG_DOMAIN_MAP = new HashMap<>(); 61b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu static { 62b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_ARG_DOMAIN_MAP.put(new Pair<String, String>("test.com", "abc.test.com"), true); 63b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_ARG_DOMAIN_MAP.put(new Pair<String, String>("test.com", "ad.abc.test.com"), true); 64b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_ARG_DOMAIN_MAP.put(new Pair<String, String>("com", "test.com"), true); 65b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_ARG_DOMAIN_MAP.put(new Pair<String, String>("abc.test.com", "test.com"), false); 66b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_ARG_DOMAIN_MAP.put(new Pair<String, String>("test1.com", "test.com"), false); 67b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu TEST_ARG_DOMAIN_MAP.put(new Pair<String, String>("test.com", "com"), false); 68b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 69b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 70b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 71b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify that creating a matcher with empty domains doesn't cause any exceptions. 72b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 73b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 74b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 75b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 76b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void createMatcherWithEmptyDomains() throws Exception { 77b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu DomainMatcher domainMatcher = new DomainMatcher(null, null); 78b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_NONE, domainMatcher.isSubDomain("google.com")); 79b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 80b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 81b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 82b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify that matching a null domain doesn't cause any exceptions. 83b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 84b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 85b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 86b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 87b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void matchNullDomain() throws Exception { 88b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu DomainMatcher domainMatcher = new DomainMatcher(PRIMARY_DOMAIN, 89b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu Arrays.asList(SECONDARY_DOMAIN1, SECONDARY_DOMAIN2)); 90b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_NONE, domainMatcher.isSubDomain(null)); 91b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 92b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 93b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 94b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify the domain matching expectations based on the predefined {@link #TEST_DOMAIN_MAP}. 95b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 96b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 97b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 98b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 99b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void matchTestDomains() throws Exception { 100b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu DomainMatcher domainMatcher = new DomainMatcher(PRIMARY_DOMAIN, 101b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu Arrays.asList(SECONDARY_DOMAIN1, SECONDARY_DOMAIN2)); 102b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu for (Map.Entry<String, Integer> entry : TEST_DOMAIN_MAP.entrySet()) { 103b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(entry.getValue().intValue(), domainMatcher.isSubDomain(entry.getKey())); 104b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 105b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 106b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 107b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 108b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify that the correct match status is returned when a domain matches both primary 109b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * and secondary domain (primary domain have precedence over secondary). 110b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 111b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 112b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 113b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 114b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void matchDomainWithBothPrimaryAndSecondary() throws Exception { 115b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu DomainMatcher domainMatcher = new DomainMatcher(PRIMARY_DOMAIN, 116b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu Arrays.asList(PRIMARY_DOMAIN)); 117b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_PRIMARY, domainMatcher.isSubDomain(PRIMARY_DOMAIN)); 118b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 119b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 120b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 121b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify domain matching expectation when the secondary domain is a sub-domain of the 122b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * primary domain. 123b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 124b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 125b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 126b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 127b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void matchDomainWhenSecondaryIsSubdomainOfPrimary() throws Exception { 128b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu DomainMatcher domainMatcher = new DomainMatcher("google.com", 129b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu Arrays.asList("test.google.com")); 130b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_PRIMARY, domainMatcher.isSubDomain("google.com")); 131b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_PRIMARY, domainMatcher.isSubDomain("test.google.com")); 132b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_PRIMARY, 133b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu domainMatcher.isSubDomain("abcd.test.google.com")); 134b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 135b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 136b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 137b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify domain matching expectations when the secondary domain is a sub-domain of the 138b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * primary domain. 139b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 140b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 141b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 142b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 143b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void matchDomainWhenPrimaryIsSubdomainOfSecondary() throws Exception { 144b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu DomainMatcher domainMatcher = new DomainMatcher("test.google.com", 145b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu Arrays.asList("google.com")); 146b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_SECONDARY, domainMatcher.isSubDomain("google.com")); 147b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_SECONDARY, domainMatcher.isSubDomain("test2.google.com")); 148b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_PRIMARY, domainMatcher.isSubDomain("test.google.com")); 149b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_PRIMARY, 150b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu domainMatcher.isSubDomain("adcd.test.google.com")); 151b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 152b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 153b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 154b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify domain matching expectations when the domain names contained empty label (domain 155b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * name that contained ".."). 156b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 157b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 158b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 159b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 160b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void matchDomainWithEmptyLabel() throws Exception { 161b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu DomainMatcher domainMatcher = new DomainMatcher("test.google..com", 162b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu Arrays.asList("google..com")); 163b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_PRIMARY, domainMatcher.isSubDomain("test.google..com")); 164b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(DomainMatcher.MATCH_SECONDARY, domainMatcher.isSubDomain("google..com")); 165b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 166b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 167b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 168b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify domain matching expectation for arg2SubdomainOfArg1 based on predefined 169b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * {@link #TEST_ARG_DOMAIN_MAP}. 170b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 171b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 172b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 173b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 174b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void verifyArg2SubdomainOfArg1() throws Exception { 175b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu for (Map.Entry<Pair<String, String>, Boolean> entry : TEST_ARG_DOMAIN_MAP.entrySet()) { 176b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertEquals(entry.getValue().booleanValue(), 177b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu DomainMatcher.arg2SubdomainOfArg1(entry.getKey().first, entry.getKey().second)); 178b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 179b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 180b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 181b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 182b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify that arg2SubdomainOfArg1 works as expected when pass in null domains. 183b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 184b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 185b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 186b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 187b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void arg2SubdomainOfArg1WithNullDomain() throws Exception { 188b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertFalse(DomainMatcher.arg2SubdomainOfArg1(null, "test.com")); 189b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertFalse(DomainMatcher.arg2SubdomainOfArg1("test.com", null)); 190b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertFalse(DomainMatcher.arg2SubdomainOfArg1(null, null)); 191b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 192b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 193b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu /** 194b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * Verify that arg2SubdomainOfArg1 works as expected when domain contains empty label. 195b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * 196b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu * @throws Exception 197b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu */ 198b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu @Test 199b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu public void arg2SubdomainOfArg1WithEmptyLabel() throws Exception { 200b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu assertTrue(DomainMatcher.arg2SubdomainOfArg1("test..com", "adsf.test..com")); 201b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu } 202b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu 203b40ba9e6ef82ac6c82869d1b562701483b8f1fc2Peter Qiu} 204