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.

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