package co.codewizards.cloudstore.core.otp; import static co.codewizards.cloudstore.core.oio.OioFileFactory.*; import static org.assertj.core.api.Assertions.*; import java.util.UUID; import org.junit.After; import org.junit.Before; import org.junit.Test; import co.codewizards.cloudstore.core.config.ConfigDir; import co.codewizards.cloudstore.core.util.IOUtil; public class OneTimePadRegistryTest { private String fileName = UUID.randomUUID().toString(); private OneTimePadRegistry registry; @Before public void setUp() throws Exception { registry = new OneTimePadRegistry(fileName); } @After public void tearDown() throws Exception { IOUtil.deleteOrFail(createFile(ConfigDir.getInstance().getFile(), fileName + OneTimePadRegistry.PASSWORD_FILE_SUFFIX)); IOUtil.deleteOrFail(createFile(ConfigDir.getInstance().getFile(), fileName + OneTimePadRegistry.RANDOM_KEY_FILE_SUFFIX)); } @Test public void when_there_is_no_password_then_store_it_properly(){ String password = "testPassword1234*_+&"; registry.encryptAndStorePassword(password.toCharArray()); char[] result = registry.readFromFileAndDecrypt(); assertThat(new String(result)).isEqualTo(password); } @Test public void when_there_is_already_stored_password_then_replace_it(){ String password = "testPassword1234*_+&"; registry.encryptAndStorePassword(password.toCharArray()); char[] result = registry.readFromFileAndDecrypt(); assertThat(new String(result)).isEqualTo(password); String differentPassword = "differentPassword0988./$"; registry.encryptAndStorePassword(differentPassword.toCharArray()); char[] secondResult = registry.readFromFileAndDecrypt(); assertThat(new String(secondResult)).isEqualTo(differentPassword); } }