package gov.samhsa.acs.audit; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import java.util.HashMap; import java.util.Map; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.runners.MockitoJUnitRunner; import ch.qos.logback.audit.AuditException; import ch.qos.logback.audit.client.AuditorFacade; @RunWith(MockitoJUnitRunner.class) public class AuditServiceImplTest { @Rule public ExpectedException thrown = ExpectedException.none(); @InjectMocks private AuditServiceImpl sut; @Test public void testAudit() throws AuditException { // Arrange AuditServiceImpl spy = spy(sut); Object auditingObjectMock = this; String subjectMock = "subjectMock"; AuditVerb auditVerbMock = AcsAuditVerb.DEPLOY_POLICY; String objectMock = "objectMock"; Map<PredicateKey, String> predicateMapMock = new HashMap<PredicateKey, String>(); AuditorFacade afMock = mock(AuditorFacade.class); doReturn(afMock).when(spy).createAuditorFacade(subjectMock, auditVerbMock, objectMock); // Act spy.audit(auditingObjectMock, subjectMock, auditVerbMock, objectMock, predicateMapMock); // Assert verify(afMock, times(1)).audit(); } }