You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

224 lines
6.9 KiB

  1. import org.junit.jupiter.api.BeforeAll;
  2. import org.junit.jupiter.api.BeforeEach;
  3. import org.junit.jupiter.api.Test;
  4. import java.io.ByteArrayInputStream;
  5. import java.io.ByteArrayOutputStream;
  6. import java.nio.charset.StandardCharsets;
  7. import java.util.NoSuchElementException;
  8. import static org.junit.jupiter.api.Assertions.*;
  9. public class VaultTest {
  10. static Vault vlt;
  11. @BeforeAll
  12. static void init() {
  13. vlt = new Vault();
  14. }
  15. @BeforeEach
  16. void reset() {
  17. vlt.outputS = System.out;
  18. vlt.inputS = getEmptyStringInputStream();
  19. }
  20. @Test
  21. void openCredentialMenu() {
  22. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  23. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  24. vlt.outputS = outputStream;
  25. vlt.credentialMenu();
  26. assertTrue(vlt.credentialM);
  27. assertTrue(outputStream.toString().startsWith("Configure"));
  28. }
  29. @Test
  30. void exitConfigureMenu(){
  31. vlt.inputS = new ByteArrayInputStream("e".getBytes(StandardCharsets.UTF_8));
  32. vlt.credentialMenu();
  33. assertFalse(vlt.credentialM);
  34. }
  35. @Test
  36. void editCredentialTest() {
  37. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  38. vlt.outputS = outputStream;
  39. vlt.inputS = new ByteArrayInputStream("1\np\npassword".getBytes(StandardCharsets.UTF_8));
  40. vlt.editCredential();
  41. assertEquals(1, vlt.newID);
  42. assertEquals("password", vlt.newString);
  43. vlt.inputS = new ByteArrayInputStream("1\nu\npeter".getBytes(StandardCharsets.UTF_8));
  44. vlt.editCredential();
  45. assertEquals(1, vlt.newID);
  46. assertEquals("peter", vlt.newString);
  47. }
  48. @Test
  49. void addCredentialTest() {
  50. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  51. vlt.outputS = outputStream;
  52. vlt.inputS = new ByteArrayInputStream("peter\npassword".getBytes(StandardCharsets.UTF_8));
  53. vlt.addCredential();
  54. assertTrue(outputStream.toString().contains("username"));
  55. assertEquals("peter", vlt.userName);
  56. assertTrue(outputStream.toString().contains("password"));
  57. assertEquals("password",vlt.password);
  58. }
  59. @Test
  60. void showCredentialTest() {
  61. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  62. vlt.outputS = outputStream;
  63. vlt.inputS = new ByteArrayInputStream("1".getBytes(StandardCharsets.UTF_8));
  64. vlt.showCredential();
  65. assertTrue(outputStream.toString().contains("ID"));
  66. vlt.inputS = new ByteArrayInputStream("peter".getBytes(StandardCharsets.UTF_8));
  67. vlt.credentialMenu();
  68. assertTrue(outputStream.toString().contains("name"));
  69. }
  70. @Test
  71. void getAsJson() {vlt.getAsJson();}
  72. @Test
  73. void loadFromJson() {vlt.loadFromJson();}
  74. @Test
  75. void openConfigureMenu() {
  76. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  77. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  78. vlt.outputS = outputStream;
  79. vlt.configure();
  80. assertTrue(outputStream.toString().startsWith("Configure:"));
  81. }
  82. @Test
  83. void exitConfigurationMenu(){
  84. vlt.inputS = new ByteArrayInputStream("e".getBytes(StandardCharsets.UTF_8));
  85. vlt.configure();
  86. assertFalse(vlt.config);
  87. }
  88. @Test
  89. void doNotExitConfigAfterWrongInput() {
  90. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  91. vlt.configure();
  92. assertTrue(vlt.config);
  93. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  94. vlt.inputS = getEmptyStringInputStream();
  95. vlt.outputS = outputStream;
  96. assertThrowsExactly(NoSuchElementException.class, () -> vlt.configure());
  97. assertTrue(outputStream.toString().startsWith("Configure:"));
  98. }
  99. @Test
  100. void openSetPWLengthMenuItem() {
  101. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  102. vlt.inputS = new ByteArrayInputStream("l\n7".getBytes(StandardCharsets.UTF_8));
  103. vlt.outputS = outputStream;
  104. vlt.configure();
  105. assertEquals(7, vlt.PWLength);
  106. assertTrue(outputStream.toString().contains("Set"));
  107. }
  108. @Test
  109. void setPWLength() {
  110. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  111. vlt.outputS = outputStream;
  112. vlt.setPWLength("7");
  113. assertEquals(7, vlt.PWLength);
  114. assertTrue(outputStream.toString().contains("now:"));
  115. }
  116. @Test
  117. void openSetCapitalsMenuItem() {
  118. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  119. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  120. vlt.outputS = outputStream;
  121. vlt.configure();
  122. assertTrue(vlt.haveCapitals = true);
  123. }
  124. @Test
  125. void setCapitals() {
  126. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  127. vlt.outputS = outputStream;
  128. vlt.setCapital("yes");
  129. assertTrue(vlt.haveCapitals = true);
  130. assertTrue(outputStream.toString().contains("contain"));
  131. vlt.outputS = outputStream;
  132. vlt.setCapital("no");
  133. assertFalse(vlt.haveCapitals = false);
  134. assertTrue(outputStream.toString().contains("anymore"));
  135. }
  136. @Test
  137. void openSetSpecialCharsMenuItem() {
  138. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  139. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  140. vlt.outputS = outputStream;
  141. vlt.configure();
  142. assertTrue(vlt.hasSpecialChars = true);
  143. }
  144. @Test
  145. void setSpecialCharTest() {
  146. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  147. vlt.outputS = outputStream;
  148. vlt.setSpecialChar("yes");
  149. assertTrue(vlt.hasSpecialChars = true);
  150. vlt.outputS = outputStream;
  151. vlt.setSpecialChar("no");
  152. assertFalse(vlt.hasSpecialChars = false);
  153. assertTrue(outputStream.toString().contains("anymore"));
  154. }
  155. @Test
  156. void openSetNumbersMenuItem() {
  157. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  158. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  159. vlt.outputS = outputStream;
  160. vlt.configure();
  161. assertTrue(vlt.hasNumbers = true);
  162. }
  163. @Test
  164. void setNumbersTest() {
  165. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  166. vlt.outputS = outputStream;
  167. vlt.setNumbers("yes");
  168. assertTrue(vlt.hasNumbers = true);
  169. assertTrue(outputStream.toString().contains("contain"));
  170. vlt.outputS = outputStream;
  171. vlt.setNumbers("no");
  172. assertFalse(vlt.hasNumbers = false);
  173. assertTrue(outputStream.toString().contains("anymore"));
  174. }
  175. private ByteArrayInputStream getEmptyStringInputStream() {
  176. return new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
  177. }
  178. }