package gov.samhsa.consent2share.infrastructure; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Matchers.isNull; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.runners.MockitoJUnitRunner; import echosign.api.clientv20.dto.SenderInfo; import echosign.api.clientv20.dto16.EmbeddedWidgetCreationResult; import echosign.api.clientv20.dto8.GetFormDataResult; import echosign.api.clientv20.dto8.WidgetCreationInfo; import echosign.api.clientv20.dto8.WidgetPersonalizationInfo; import echosign.api.clientv20.service.EchoSignDocumentService20PortType; /** * The Class EchoSignSignatureServiceImplTest. */ @RunWith(MockitoJUnitRunner.class) public class EchoSignSignatureServiceImplTest { /** The document bytes. */ byte[] DOCUMENT_BYTES="text".getBytes(); /** The document file name. */ String DOCUMENT_FILE_NAME="documentFileName"; /** The document name. */ String DOCUMENT_NAME="documentName"; /** The signed document url. */ String SIGNED_DOCUMENT_URL="signedDocumentUrl"; /** The email. */ String EMAIL="consent2shar@gmail.com"; /** The echosign api key. */ String ECHOSIGN_API_KEY="echoSignApiKey"; /** The echosign service url. */ String ECHOSIGN_SERVICE_URL="echoSignServiceUrl"; /** The sut. */ @InjectMocks EchoSignSignatureServiceImpl sut=spy(new EchoSignSignatureServiceImpl("echoSignServiceUrl","echoSignApiKey")); private EchoSignDocumentService20PortType service; private String mockDocumentKey; private String mockEchoSignApiKey; /** * Test create embedded widget. */ @Before public void setUp() { service = mock(EchoSignDocumentService20PortType.class); EmbeddedWidgetCreationResult widgetResult=mock(EmbeddedWidgetCreationResult.class); doReturn(widgetResult).when(service).createPersonalEmbeddedWidget(eq("echoSignApiKey"), isNull(SenderInfo.class), any(WidgetCreationInfo.class), any(WidgetPersonalizationInfo.class)); doReturn(service).when(sut).getCachedService(); mockDocumentKey = "mockDocumentKey"; mockEchoSignApiKey = "echoSignApiKey"; } @After public void tearDown() { service = null; mockDocumentKey = null; mockEchoSignApiKey = null; } @Test public void testCreateEmbeddedWidget() { sut.createEmbeddedWidget(DOCUMENT_BYTES, DOCUMENT_FILE_NAME, DOCUMENT_NAME, SIGNED_DOCUMENT_URL, EMAIL); verify(service).createPersonalEmbeddedWidget(eq("echoSignApiKey"), isNull(SenderInfo.class), any(WidgetCreationInfo.class), any(WidgetPersonalizationInfo.class)); } /** * Test create embedded widget_when_file_name_is_null. */ @Test(expected=IllegalArgumentException.class) public void testCreateEmbeddedWidget_when_file_name_is_null() { sut.createEmbeddedWidget(DOCUMENT_BYTES, null, DOCUMENT_NAME, SIGNED_DOCUMENT_URL, EMAIL); } /** * Test create embedded widget_when_file_document_byte_is_null. */ @Test(expected=IllegalArgumentException.class) public void testCreateEmbeddedWidget_when_file_document_byte_is_null() { sut.createEmbeddedWidget(null, DOCUMENT_FILE_NAME, DOCUMENT_NAME, SIGNED_DOCUMENT_URL, EMAIL); } @Test public void testGetChildDocumentKey_ScnearioOne() { String mockFormDataCsv = "\"completed\",\"email\",\"role\",\"first\",\"last\",\"title\",\"company\",\"Transaction Number\""; GetFormDataResult mockGetFormDataResult=mock(GetFormDataResult.class); doReturn(mockFormDataCsv).when(mockGetFormDataResult).getFormDataCsv(); doReturn(mockGetFormDataResult).when(service).getFormData(mockEchoSignApiKey, mockDocumentKey); Assert.assertNull(sut.getChildDocumentKey(mockDocumentKey)); } @Test public void testGetChildDocumentKey_ScnearioTwo() { String mockFormDataCsv = "\"completed\",\"email\",\"role\",\"first\",\"last\",\"title\",\"company\",\"Document Key\",\"Transaction Number\"\n" + "\"2015-04-08 11:31:20\",\"sadhana.chandravanka@feisystems.com\",\"SIGNER\",\"testConsent2\",\"Share\",\"\",\"\",\"XLS4XIRNXN6S3V6\",\"XLS4XIR84U26J58\""; String expected = "XLS4XIRNXN6S3V6"; GetFormDataResult mockGetFormDataResult=mock(GetFormDataResult.class); doReturn(mockFormDataCsv).when(mockGetFormDataResult).getFormDataCsv(); doReturn(mockGetFormDataResult).when(service).getFormData(mockEchoSignApiKey, mockDocumentKey); String actual = sut.getChildDocumentKey(mockDocumentKey); Assert.assertNotNull(actual); Assert.assertEquals(expected, actual); } @Test public void testGetChildDocumentKey_ScnearioThree() { String mockFormDataCsv = "\"completed\",\"email\",\"role\",\"first\",\"last\",\"title\",\"company\",\"Transaction Number\"" + "\"2015-04-16 12:16:04\",\"cindy.li@feisystems.com\",\"SIGNER\",\"cindy\",\"li\",\"software developer\",\"fei systems\",\"XM6WKHU3JXV5X7D\""; GetFormDataResult mockGetFormDataResult=mock(GetFormDataResult.class); doReturn(mockFormDataCsv).when(mockGetFormDataResult).getFormDataCsv(); doReturn(mockGetFormDataResult).when(service).getFormData(mockEchoSignApiKey, mockDocumentKey); Assert.assertNull(sut.getChildDocumentKey(mockDocumentKey)); } @Test public void testGetChildDocumentKey_ScnearioFour() { String mockFormDataCsv = "\"completed\",\"email\",\"role\",\"first\",\"last\",\"title\",\"company\",\"Document1 Key\",\"Transaction Number\"\n" + "\"2015-04-08 11:31:20\",\"sadhana.chandravanka@feisystems.com\",\"SIGNER\",\"testConsent2\",\"Share\",\"\",\"\",\"XLS4XIRNXN6S3V6\",\"XLS4XIR84U26J58\""; GetFormDataResult mockGetFormDataResult=mock(GetFormDataResult.class); doReturn(mockFormDataCsv).when(mockGetFormDataResult).getFormDataCsv(); doReturn(mockGetFormDataResult).when(service).getFormData(mockEchoSignApiKey, mockDocumentKey); Assert.assertNull(sut.getChildDocumentKey(mockDocumentKey)); } }