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.

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