package com.getsentry.raven.log4j; import mockit.Expectations; import mockit.Injectable; import mockit.Mocked; import mockit.Tested; import com.getsentry.raven.Raven; import com.getsentry.raven.RavenFactory; import com.getsentry.raven.dsn.Dsn; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; public class SentryAppenderDsnTest { @Tested private SentryAppender sentryAppender = null; private MockUpErrorHandler mockUpErrorHandler; @Injectable private Raven mockRaven = null; @SuppressWarnings("unused") @Mocked("ravenInstance") private RavenFactory mockRavenFactory = null; @SuppressWarnings("unused") @Mocked("dsnLookup") private Dsn mockDsn = null; @BeforeMethod public void setUp() throws Exception { sentryAppender = new SentryAppender(); mockUpErrorHandler = new MockUpErrorHandler(); sentryAppender.setErrorHandler(mockUpErrorHandler.getMockInstance()); } private void assertNoErrorsInErrorHandler() throws Exception { assertThat(mockUpErrorHandler.getErrorCount(), is(0)); } @Test public void testDsnDetected() throws Exception { final String dsnUri = "protocol://public:private@host/1"; new Expectations() {{ Dsn.dsnLookup(); result = dsnUri; RavenFactory.ravenInstance(withEqual(new Dsn(dsnUri)), anyString); result = mockRaven; }}; sentryAppender.initRaven(); assertNoErrorsInErrorHandler(); } @Test public void testDsnProvided() throws Exception { final String dsnUri = "protocol://public:private@host/2"; sentryAppender.setDsn(dsnUri); new Expectations() {{ RavenFactory.ravenInstance(withEqual(new Dsn(dsnUri)), anyString); result = mockRaven; }}; sentryAppender.initRaven(); assertNoErrorsInErrorHandler(); } }