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.

236 lines
7.4 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\nyes\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. vlt.inputS = new ByteArrayInputStream("peter\nno".getBytes(StandardCharsets.UTF_8));
  59. vlt.addCredential();
  60. assertTrue(outputStream.toString().contains("username"));
  61. assertEquals("peter", vlt.userName);
  62. assertTrue(outputStream.toString().contains("password"));
  63. assertNotEquals(0, vlt.password.length());
  64. }
  65. @Test
  66. void showCredentialTest() {
  67. addCredentialTest();
  68. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  69. vlt.outputS = outputStream;
  70. vlt.inputS = new ByteArrayInputStream("1".getBytes(StandardCharsets.UTF_8));
  71. vlt.showCredential();
  72. assertTrue(outputStream.toString().contains("ID"));
  73. vlt.inputS = new ByteArrayInputStream("peter".getBytes(StandardCharsets.UTF_8));
  74. vlt.credentialMenu();
  75. assertTrue(outputStream.toString().contains("name"));
  76. assertTrue(outputStream.toString().contains("peter: " + vlt.password));
  77. }
  78. @Test
  79. void getAsJson() {vlt.getAsJson();}
  80. @Test
  81. void loadFromJson() {vlt.loadFromJson();}
  82. @Test
  83. void openConfigureMenu() {
  84. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  85. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  86. vlt.outputS = outputStream;
  87. vlt.configure();
  88. assertTrue(outputStream.toString().startsWith("Configure:"));
  89. }
  90. @Test
  91. void exitConfigurationMenu(){
  92. vlt.inputS = new ByteArrayInputStream("e".getBytes(StandardCharsets.UTF_8));
  93. vlt.configure();
  94. assertFalse(vlt.config);
  95. }
  96. @Test
  97. void doNotExitConfigAfterWrongInput() {
  98. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  99. vlt.configure();
  100. assertTrue(vlt.config);
  101. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  102. vlt.inputS = getEmptyStringInputStream();
  103. vlt.outputS = outputStream;
  104. assertThrowsExactly(NoSuchElementException.class, () -> vlt.configure());
  105. assertTrue(outputStream.toString().startsWith("Configure:"));
  106. }
  107. @Test
  108. void openSetPWLengthMenuItem() {
  109. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  110. vlt.inputS = new ByteArrayInputStream("l\n7".getBytes(StandardCharsets.UTF_8));
  111. vlt.outputS = outputStream;
  112. vlt.configure();
  113. assertEquals(7, vlt.PWLength);
  114. assertTrue(outputStream.toString().contains("Set"));
  115. }
  116. @Test
  117. void setPWLength() {
  118. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  119. vlt.outputS = outputStream;
  120. vlt.setPWLength("7");
  121. assertEquals(7, vlt.PWLength);
  122. assertTrue(outputStream.toString().contains("now:"));
  123. }
  124. @Test
  125. void openSetCapitalsMenuItem() {
  126. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  127. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  128. vlt.outputS = outputStream;
  129. vlt.configure();
  130. assertTrue(vlt.haveCapitals = true);
  131. }
  132. @Test
  133. void setCapitals() {
  134. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  135. vlt.outputS = outputStream;
  136. vlt.setCapital("yes");
  137. assertTrue(vlt.haveCapitals = true);
  138. assertTrue(outputStream.toString().contains("contain"));
  139. vlt.outputS = outputStream;
  140. vlt.setCapital("no");
  141. assertFalse(vlt.haveCapitals = false);
  142. assertTrue(outputStream.toString().contains("anymore"));
  143. }
  144. @Test
  145. void openSetSpecialCharsMenuItem() {
  146. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  147. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  148. vlt.outputS = outputStream;
  149. vlt.configure();
  150. assertTrue(vlt.hasSpecialChars = true);
  151. }
  152. @Test
  153. void setSpecialCharTest() {
  154. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  155. vlt.outputS = outputStream;
  156. vlt.setSpecialChar("yes");
  157. assertTrue(vlt.hasSpecialChars = true);
  158. vlt.outputS = outputStream;
  159. vlt.setSpecialChar("no");
  160. assertFalse(vlt.hasSpecialChars = false);
  161. assertTrue(outputStream.toString().contains("anymore"));
  162. }
  163. @Test
  164. void openSetNumbersMenuItem() {
  165. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  166. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  167. vlt.outputS = outputStream;
  168. vlt.configure();
  169. assertTrue(vlt.hasNumbers = true);
  170. }
  171. @Test
  172. void setNumbersTest() {
  173. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  174. vlt.outputS = outputStream;
  175. vlt.setNumbers("yes");
  176. assertTrue(vlt.hasNumbers = true);
  177. assertTrue(outputStream.toString().contains("contain"));
  178. vlt.outputS = outputStream;
  179. vlt.setNumbers("no");
  180. assertFalse(vlt.hasNumbers = false);
  181. assertTrue(outputStream.toString().contains("anymore"));
  182. }
  183. private ByteArrayInputStream getEmptyStringInputStream() {
  184. return new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
  185. }
  186. }