// Modified or written by Luca Marrocco for inclusion with hoptoad.
// Copyright (c) 2009 Luca Marrocco.
// Licensed under the Apache License, Version 2.0 (the "License")
package hoptoad;
import ch.qos.logback.classic.spi.ThrowableProxy;
import org.junit.Test;
import static hoptoad.ApiKeys.TEST_API_KEY;
import static hoptoad.Exceptions.ERROR_MESSAGE;
import static hoptoad.Exceptions.newException;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;
public class HoptoadAppenderTest {
@Test
public void testNewAppenderWithApiKey() {
final HoptoadAppender appender = new HoptoadAppender(TEST_API_KEY);
final HoptoadNotice notice = appender.newNoticeFor(new ThrowableProxy(newException(ERROR_MESSAGE)));
assertThat(notice, is(notNullValue()));
}
@Test
public void testNewAppenderWithApiKeyAndBacktrace() {
final HoptoadAppender appender = new HoptoadAppender(TEST_API_KEY, new Backtrace());
final HoptoadNotice notice = appender.newNoticeFor(new ThrowableProxy(newException(ERROR_MESSAGE)));
assertThat(notice, is(notNullValue()));
}
@Test
public void testNotyfyThrowable() {
final HoptoadAppender appender = new HoptoadAppender(TEST_API_KEY);
final HoptoadNotice notice = appender.newNoticeFor(new ThrowableProxy(newException(ERROR_MESSAGE)));
assertThat(notice.backtrace(), hasItem("at hoptoad.Exceptions.java:15:in `newException'"));
assertThat(notice.backtrace(), hasItem("Caused by java.lang.NullPointerException"));
assertThat(notice.backtrace(), hasItem("at hoptoad.Exceptions.java:13:in `newException'"));
}
@Test
public void testNotyfyThrowable$UseBacktrace() {
final HoptoadAppender appender = new HoptoadAppender(TEST_API_KEY, new Backtrace());
final HoptoadNotice notice = appender.newNoticeFor(new ThrowableProxy(newException(ERROR_MESSAGE)));
assertThat(notice.backtrace(), hasItem("at hoptoad.Exceptions.newException(Exceptions.java:15)"));
assertThat(notice.backtrace(), hasItem("Caused by java.lang.NullPointerException"));
assertThat(notice.backtrace(), hasItem("at hoptoad.Exceptions.newException(Exceptions.java:13)"));
assertThat(notice.backtrace(), hasItem("at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java-2)"));
assertThat(notice.backtrace(), hasItem("at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)"));
}
@Test
public void testNotyfyThrowable$UseQuiteBacktrace() {
final HoptoadAppender appender = new HoptoadAppender(TEST_API_KEY, new QuietRubyBacktrace());
final HoptoadNotice notice = appender.newNoticeFor(new ThrowableProxy(newException(ERROR_MESSAGE)));
assertThat(notice.backtrace(), hasItem("at hoptoad.Exceptions.java:15:in `newException'"));
assertThat(notice.backtrace(), hasItem("Caused by java.lang.NullPointerException"));
assertThat(notice.backtrace(), hasItem("at hoptoad.Exceptions.java:13:in `newException'"));
}
@Test
public void testNotyfyThrowable$UseRubyBacktrace() {
final HoptoadAppender appender = new HoptoadAppender(TEST_API_KEY, new RubyBacktrace());
final HoptoadNotice notice = appender.newNoticeFor(new ThrowableProxy(newException(ERROR_MESSAGE)));
assertThat(notice.backtrace(), hasItem("at hoptoad.Exceptions.java:15:in `newException'"));
assertThat(notice.backtrace(), hasItem("Caused by java.lang.NullPointerException"));
assertThat(notice.backtrace(), hasItem("at hoptoad.Exceptions.java:13:in `newException'"));
}
@Test
public void testNotyfyThrowable$UseSwitchBacktrace() {
final SwitchBacktrace switchBacktrace = new SwitchBacktrace();
final HoptoadAppender appender = new HoptoadAppender(TEST_API_KEY, switchBacktrace);
switchBacktrace.quiet();
final HoptoadNotice quietNotice = appender.newNoticeFor(new ThrowableProxy(newException(ERROR_MESSAGE)));
assertThat(quietNotice.backtrace(), not(hasItem("at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java-2)")));
switchBacktrace.verbose();
final HoptoadNotice verboseNotice = appender.newNoticeFor(new ThrowableProxy(newException(ERROR_MESSAGE)));
assertThat(verboseNotice.backtrace(), hasItem("at sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java-2)"));
}
}