package dbfit.util.crypto;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InOrder;
import static org.mockito.Mockito.*;
public class CryptoAppTest extends CryptoAppTestBase {
@Before
public void setMockedFactories() throws Exception {
setupMocks();
}
@Override
protected CryptoApp createCryptoApp() {
return new CryptoApp(mockedKSFactory, mockedCryptoServiceFactory);
}
@Test
public void createKeyStoreInDefaultLocationTest() throws Exception {
execApp("dummy");
verify(mockedKSFactory).newInstance();
verify(mockedKS).createKeyStore();
}
@Test
public void createKeyStoreInCustomLocationTest() throws Exception {
execApp("dummy", "-keyStoreLocation", getTempKeyStore2Path());
verify(mockedKSFactory).newInstance(tempKeyStoreFolder2.getRoot());
verify(mockedKS).createKeyStore();
}
@Test
public void encryptPasswordTest() throws Exception {
when(mockedKS.keyStoreExists()).thenReturn(true);
String password = "Demo Password CLI";
execApp(password);
verify(mockedCryptoService).encrypt(password);
}
@Test
public void shouldCreateKeyStoreBeforeGettingKeyService() throws Exception {
when(mockedKS.keyStoreExists()).thenReturn(false);
String password = "Demo Password CLI 2";
execApp(password);
InOrder inOrder = inOrder(
mockedKSFactory, mockedKS,
mockedCryptoServiceFactory, mockedCryptoService);
inOrder.verify(mockedKSFactory).newInstance();
inOrder.verify(mockedKS).createKeyStore();
inOrder.verify(mockedCryptoServiceFactory).getCryptoService(any(CryptoKeyAccessor.class));
inOrder.verify(mockedCryptoService).encrypt(password);
}
}