1 // Copyright 2018 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.base; 6 7 import static org.junit.Assert.assertEquals; 8 9 import org.junit.Test; 10 import org.junit.runner.RunWith; 11 import org.robolectric.annotation.Config; 12 13 import org.chromium.base.test.BaseRobolectricTestRunner; 14 15 /** junit tests for {@link PiiElider}. */ 16 @RunWith(BaseRobolectricTestRunner.class) 17 @Config(manifest = Config.NONE) 18 public class PiiEliderTest { 19 private static final int MAX_LINES = 5; 20 21 @Test testElideEmail()22 public void testElideEmail() { 23 String original = "email me at someguy@mailservice.com"; 24 String expected = "email me at XXX@EMAIL.ELIDED"; 25 assertEquals(expected, PiiElider.elideEmail(original)); 26 } 27 28 @Test testElideUrl()29 public void testElideUrl() { 30 String original = "file bugs at crbug.com"; 31 String expected = "file bugs at HTTP://WEBADDRESS.ELIDED"; 32 assertEquals(expected, PiiElider.elideUrl(original)); 33 } 34 35 @Test testElideUrl2()36 public void testElideUrl2() { 37 String original = "exception at org.chromium.base.PiiEliderTest"; 38 assertEquals(original, PiiElider.elideUrl(original)); 39 } 40 41 @Test testElideUrl3()42 public void testElideUrl3() { 43 String original = "file bugs at crbug.com or code.google.com"; 44 String expected = "file bugs at HTTP://WEBADDRESS.ELIDED or HTTP://WEBADDRESS.ELIDED"; 45 assertEquals(expected, PiiElider.elideUrl(original)); 46 } 47 48 @Test testElideUrl4()49 public void testElideUrl4() { 50 String original = "test shorturl.com !!!"; 51 String expected = "test HTTP://WEBADDRESS.ELIDED !!!"; 52 assertEquals(expected, PiiElider.elideUrl(original)); 53 } 54 55 @Test testElideUrl5()56 public void testElideUrl5() { 57 String original = "test just.the.perfect.len.url !!!"; 58 String expected = "test HTTP://WEBADDRESS.ELIDED !!!"; 59 assertEquals(expected, PiiElider.elideUrl(original)); 60 } 61 62 @Test testElideUrl6()63 public void testElideUrl6() { 64 String original = "test a.very.very.very.very.very.long.url !!!"; 65 String expected = "test HTTP://WEBADDRESS.ELIDED !!!"; 66 assertEquals(expected, PiiElider.elideUrl(original)); 67 } 68 69 @Test testElideUrl7()70 public void testElideUrl7() { 71 String original = " at android.content.Intent \n at java.util.ArrayList"; 72 assertEquals(original, PiiElider.elideUrl(original)); 73 } 74 75 @Test testElideUrl8()76 public void testElideUrl8() { 77 String original = 78 "exception at org.chromium.chrome.browser.compositor.scene_layer." 79 + "TabListSceneLayer.nativeUpdateLayer(Native Method)"; 80 assertEquals(original, PiiElider.elideUrl(original)); 81 } 82 83 @Test testElideUrl9()84 public void testElideUrl9() { 85 String original = 86 "I/dalvikvm( 5083): at org.chromium.chrome.browser.compositor." 87 + "scene_layer.TabListSceneLayer.nativeUpdateLayer(Native Method)"; 88 assertEquals(original, PiiElider.elideUrl(original)); 89 } 90 91 @Test testElideUrl10()92 public void testElideUrl10() { 93 String original = 94 "Caused by: java.lang.ClassNotFoundException: Didn't find class " 95 + "\"org.chromium.components.browser_ui.widget.SurfaceColorOvalView\""; 96 assertEquals(original, PiiElider.elideUrl(original)); 97 } 98 99 @Test testElideUrl11()100 public void testElideUrl11() { 101 String original = 102 """ 103 java.lang.RuntimeException: Unable to start activity 104 ComponentInfo{com.chrome.dev/org.chromium.chrome.browser.ChromeTabbedActivity}: 105 android.view.InflateException: Binary XML file line #20 in 106 com.chrome.dev:layout/0_resource_name_obfuscated: 107 """ 108 .replaceAll("\n", " "); 109 assertEquals(original, PiiElider.elideUrl(original)); 110 } 111 112 @Test testElideUrl12()113 public void testElideUrl12() { 114 String original = 115 "System.err: at kH.onAnimationEnd" 116 + "(chromium-TrichromeChromeGoogle6432.aab-canary-530200034:42)"; 117 assertEquals(original, PiiElider.elideUrl(original)); 118 } 119 120 @Test testElideNonHttpUrl()121 public void testElideNonHttpUrl() { 122 String original = "test some-other-scheme://address/01010?param=33&other_param=AAA !!!"; 123 String expected = "test HTTP://WEBADDRESS.ELIDED !!!"; 124 assertEquals(expected, PiiElider.elideUrl(original)); 125 } 126 127 @Test testDontElideFileSuffixes()128 public void testDontElideFileSuffixes() { 129 String original = "chromium_android_linker.so"; 130 assertEquals(original, PiiElider.elideUrl(original)); 131 } 132 133 @Test testDontElideAndroidPermission()134 public void testDontElideAndroidPermission() { 135 String original = 136 "java.lang.SecurityException: get package info: Neither user 1210041 nor current" 137 + " process has android.permission.READ_LOGS"; 138 assertEquals(original, PiiElider.elideUrl(original)); 139 } 140 141 @Test testElideIp()142 public void testElideIp() { 143 String original = "traceroute 127.0.0.1"; 144 String expected = "traceroute 1.2.3.4"; 145 assertEquals(expected, PiiElider.elideIp(original)); 146 } 147 148 @Test testElideMac1()149 public void testElideMac1() { 150 String original = "MAC: AB-AB-AB-AB-AB-AB"; 151 String expected = "MAC: 01:23:45:67:89:AB"; 152 assertEquals(expected, PiiElider.elideMac(original)); 153 } 154 155 @Test testElideMac2()156 public void testElideMac2() { 157 String original = "MAC: AB:AB:AB:AB:AB:AB"; 158 String expected = "MAC: 01:23:45:67:89:AB"; 159 assertEquals(expected, PiiElider.elideMac(original)); 160 } 161 162 @Test testElideConsole()163 public void testElideConsole() { 164 String original = "I/chromium(123): [INFO:CONSOLE(2)] hello!"; 165 String expected = "I/chromium(123): [ELIDED:CONSOLE(0)] ELIDED CONSOLE MESSAGE"; 166 assertEquals(expected, PiiElider.elideConsole(original)); 167 } 168 169 @Test testElideUrlInStacktrace()170 public void testElideUrlInStacktrace() { 171 String original = 172 "java.lang.RuntimeException: Outer Exception crbug.com/12345\n" 173 + " at org.chromium.base.PiiElider.sanitizeStacktrace (PiiElider.java:120)\n" 174 + "Caused by: java.lang.NullPointerException: Inner Exception" 175 + " shorturl.com/bxyj5"; 176 String expected = 177 "java.lang.RuntimeException: Outer Exception HTTP://WEBADDRESS.ELIDED\n" 178 + " at org.chromium.base.PiiElider.sanitizeStacktrace (PiiElider.java:120)\n" 179 + "Caused by: java.lang.NullPointerException: Inner Exception " 180 + "HTTP://WEBADDRESS.ELIDED"; 181 assertEquals(expected, PiiElider.sanitizeStacktrace(original)); 182 } 183 184 @Test testDoesNotElideMethodNameInStacktrace()185 public void testDoesNotElideMethodNameInStacktrace() { 186 String original = 187 "java.lang.NullPointerException: Attempt to invoke virtual method 'int" 188 + " org.robolectric.internal.AndroidSandbox.getBackStackEntryCount()' on a null" 189 + " object reference"; 190 assertEquals(original, PiiElider.sanitizeStacktrace(original)); 191 } 192 } 193