/** * Return log level filter for logs coming from this SDK. * * @return log level as defined by {@link android.util.Log}. */ @IntRange(from = VERBOSE, to = NONE) public static int getLogLevel() { return AppCenterLog.getLogLevel(); }
@Override public void onBeforeCalling(URL url, Map<String, String> headers) { if (AppCenterLog.getLogLevel() <= VERBOSE) { /* Log url. */ AppCenterLog.verbose(LOG_TAG, "Calling " + url + "..."); /* Log headers. */ Map<String, String> logHeaders = new HashMap<>(headers); String appSecret = logHeaders.get(APP_SECRET); if (appSecret != null) { logHeaders.put(APP_SECRET, HttpUtils.hideSecret(appSecret)); } AppCenterLog.verbose(LOG_TAG, "Headers: " + logHeaders); } } }
@Override public void onBeforeCalling(URL url, Map<String, String> headers) { if (AppCenterLog.getLogLevel() <= VERBOSE) { /* Log url. */ String urlString = url.toString().replaceAll(mAppSecret, HttpUtils.hideSecret(mAppSecret)); AppCenterLog.verbose(LOG_TAG, "Calling " + urlString + "..."); /* Log headers. */ Map<String, String> logHeaders = new HashMap<>(headers); String apiToken = logHeaders.get(HEADER_API_TOKEN); if (apiToken != null) { logHeaders.put(HEADER_API_TOKEN, HttpUtils.hideSecret(apiToken)); } AppCenterLog.verbose(LOG_TAG, "Headers: " + logHeaders); } } }, new ServiceCallback() {
@Override public void onBeforeCalling(URL url, Map<String, String> headers) { if (AppCenterLog.getLogLevel() <= VERBOSE) { /* Log url. */ AppCenterLog.verbose(LOG_TAG, "Calling " + url + "..."); /* Log headers. */ Map<String, String> logHeaders = new HashMap<>(headers); String apiKeys = logHeaders.get(API_KEY); if (apiKeys != null) { logHeaders.put(API_KEY, HttpUtils.hideApiKeys(apiKeys)); } String tickets = logHeaders.get(TICKETS); if (tickets != null) { logHeaders.put(TICKETS, HttpUtils.hideTickets(tickets)); } AppCenterLog.verbose(LOG_TAG, "Headers: " + logHeaders); } } }
if (AppCenterLog.getLogLevel() <= Log.DEBUG) { StringBuilder message = new StringBuilder("Received push intent="); message.append(pushIntent);
@Test @SuppressWarnings("unchecked") public void onBeforeCallingWithAnotherLogLevel() throws Exception { /* Mock instances. */ String appSecret = UUID.randomUUID().toString(); String apiToken = UUID.randomUUID().toString(); HttpClient.CallTemplate callTemplate = getCallTemplate(appSecret, apiToken); /* Change log level. */ when(AppCenterLog.getLogLevel()).thenReturn(Log.WARN); /* Call onBeforeCalling with parameters. */ callTemplate.onBeforeCalling(mock(URL.class), mock(Map.class)); /* Verify. */ verifyStatic(never()); AppCenterLog.verbose(anyString(), anyString()); }
@Test public void onBeforeCallingWithoutToken() throws Exception { /* Mock instances. */ String urlFormat = "http://mock/path/%s/path/file"; String appSecret = UUID.randomUUID().toString(); String obfuscatedSecret = HttpUtils.hideSecret(appSecret); URL url = new URL(String.format(urlFormat, appSecret)); String obfuscatedUrlString = String.format(urlFormat, obfuscatedSecret); Map<String, String> headers = new HashMap<>(); HttpClient.CallTemplate callTemplate = getCallTemplate(appSecret, null); when(AppCenterLog.getLogLevel()).thenReturn(Log.VERBOSE); mockStatic(AppCenterLog.class); /* Call onBeforeCalling with parameters. */ callTemplate.onBeforeCalling(url, headers); /* Verify url log. */ verifyStatic(); AppCenterLog.verbose(anyString(), contains(obfuscatedUrlString)); /* Verify header log. */ for (Map.Entry<String, String> header : headers.entrySet()) { verifyStatic(); AppCenterLog.verbose(anyString(), contains(header.getValue())); } }
@Test public void info() { AppCenter.setLogLevel(Log.INFO); assertEquals(AppCenter.getLogLevel(), AppCenterLog.getLogLevel()); callLogs(); verifyVerbose(never()); verifyDebug(never()); verifyInfo(times(1)); verifyWarn(times(1)); verifyError(times(1)); verifyAssert(times(1)); }
@Test public void error() { AppCenter.setLogLevel(Log.ERROR); assertEquals(AppCenter.getLogLevel(), AppCenterLog.getLogLevel()); callLogs(); verifyVerbose(never()); verifyDebug(never()); verifyInfo(never()); verifyWarn(never()); verifyError(times(1)); verifyAssert(times(1)); }
@Test public void warn() { AppCenter.setLogLevel(Log.WARN); assertEquals(AppCenter.getLogLevel(), AppCenterLog.getLogLevel()); callLogs(); verifyVerbose(never()); verifyDebug(never()); verifyInfo(never()); verifyWarn(times(1)); verifyError(times(1)); verifyAssert(times(1)); }
@Test public void debug() { AppCenter.setLogLevel(Log.DEBUG); assertEquals(AppCenter.getLogLevel(), AppCenterLog.getLogLevel()); callLogs(); verifyVerbose(never()); verifyDebug(times(1)); verifyInfo(times(1)); verifyWarn(times(1)); verifyError(times(1)); verifyAssert(times(1)); }
@Test public void none() { AppCenter.setLogLevel(AppCenterLog.NONE); assertEquals(AppCenter.getLogLevel(), AppCenterLog.getLogLevel()); callLogs(); verifyVerbose(never()); verifyDebug(never()); verifyInfo(never()); verifyWarn(never()); verifyError(never()); verifyAssert(never()); }
@Test public void assertLevel() { AppCenter.setLogLevel(Log.ASSERT); assertEquals(AppCenter.getLogLevel(), AppCenterLog.getLogLevel()); callLogs(); verifyVerbose(never()); verifyDebug(never()); verifyInfo(never()); verifyWarn(never()); verifyError(never()); verifyAssert(times(1)); }
@Test public void verbose() { AppCenter.setLogLevel(Log.VERBOSE); assertEquals(AppCenter.getLogLevel(), AppCenterLog.getLogLevel()); callLogs(); verifyVerbose(times(1)); verifyDebug(times(1)); verifyInfo(times(1)); verifyWarn(times(1)); verifyError(times(1)); verifyAssert(times(1)); } }
headers.put("Another-Header", "Another-Value"); HttpClient.CallTemplate callTemplate = getCallTemplate(appSecret, apiToken); when(AppCenterLog.getLogLevel()).thenReturn(Log.VERBOSE); mockStatic(AppCenterLog.class);
when(AppCenterLog.getLogLevel()).thenReturn(Log.VERBOSE);
@Test public void receivedPushInBackgroundWithoutFirebaseWithoutDebugLog() { when(AppCenterLog.getLogLevel()).thenReturn(Log.INFO); IllegalStateException exception = new IllegalStateException(); when(FirebaseInstanceId.getInstance()).thenThrow(exception); Intent pushIntent = mock(Intent.class); Bundle extras = mock(Bundle.class); when(pushIntent.getExtras()).thenReturn(extras); when(extras.keySet()).thenReturn(Sets.newSet("key1")); when(extras.get("key1")).thenReturn("val1"); Push.getInstance().onMessageReceived(mContext, pushIntent); verifyStatic(); PushNotifier.handleNotification(any(Context.class), same(pushIntent)); verifyStatic(never()); AppCenterLog.debug(eq(Push.LOG_TAG), argThat(new ArgumentMatcher<String>() { @Override public boolean matches(Object argument) { return argument.toString().contains("key1=val1"); } })); }
when(AppCenterLog.getLogLevel()).thenReturn(Log.VERBOSE);
when(AppCenterLog.getLogLevel()).thenReturn(Log.VERBOSE);
@BeforeClass public static void setUpBeforeClass() { /* Default initial state can be tested only once in the entire test suite... */ assertEquals(Log.ASSERT, AppCenter.getLogLevel()); assertEquals(AppCenter.getLogLevel(), AppCenterLog.getLogLevel()); }