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.

243 lines
7.6 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 openAddCredentialMenuItem() {
  37. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  38. vlt.inputS = new ByteArrayInputStream("a\npeter\npassword".getBytes(StandardCharsets.UTF_8));
  39. vlt.outputS = outputStream;
  40. vlt.credentialMenu();
  41. assertTrue(outputStream.toString().contains("username"));
  42. assertEquals("peter", vlt.userName);
  43. assertTrue(outputStream.toString().contains("password"));
  44. assertEquals("password",vlt.password);
  45. }
  46. @Test
  47. void openShowCredentialMenuItem() {
  48. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  49. vlt.inputS = new ByteArrayInputStream("c\n1".getBytes(StandardCharsets.UTF_8));
  50. vlt.outputS = outputStream;
  51. vlt.credentialMenu();
  52. assertTrue(outputStream.toString().contains("Type"));
  53. }
  54. @Test
  55. void openEditCredentialMenuItem() {
  56. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  57. vlt.inputS = new ByteArrayInputStream("l\n1\nu\npeter".getBytes(StandardCharsets.UTF_8));
  58. vlt.outputS = outputStream;
  59. vlt.credentialMenu();
  60. assertTrue(outputStream.toString().contains("Type"));
  61. assertEquals(1,vlt.newID);
  62. assertTrue(vlt.decision);
  63. assertEquals("peter",vlt.newString);
  64. }
  65. /*@Test
  66. void editCredentialTest() {
  67. }*/
  68. /*@Test
  69. void addCredentialTest() {
  70. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  71. vlt.outputS = outputStream;
  72. vlt.inputS = new ByteArrayInputStream("peter\npassword".getBytes(StandardCharsets.UTF_8));
  73. vlt.addCredential();
  74. assertTrue(outputStream.toString().contains("username"));
  75. assertEquals("peter", vlt.userName);
  76. assertTrue(outputStream.toString().contains("password"));
  77. assertEquals("password",vlt.password);
  78. }
  79. @Test
  80. void showCredentialTest() {
  81. vlt.inputS = new ByteArrayInputStream("l\n1".getBytes(StandardCharsets.UTF_8));
  82. vlt.credentialMenu();
  83. assertTrue(vlt.isInt);
  84. vlt.inputS = new ByteArrayInputStream("l\npeter".getBytes(StandardCharsets.UTF_8));
  85. vlt.credentialMenu();
  86. assertFalse(vlt.isInt);
  87. }*/
  88. @Test
  89. void getAsJson() {vlt.getAsJson();}
  90. @Test
  91. void loadFromJson() {vlt.loadFromJson();}
  92. @Test
  93. void openConfigureMenu() {
  94. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  95. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  96. vlt.outputS = outputStream;
  97. vlt.configure();
  98. assertTrue(outputStream.toString().startsWith("Configure:"));
  99. }
  100. @Test
  101. void exitConfigurationMenu(){
  102. vlt.inputS = new ByteArrayInputStream("e".getBytes(StandardCharsets.UTF_8));
  103. vlt.configure();
  104. assertFalse(vlt.config);
  105. }
  106. @Test
  107. void doNotExitConfigAfterWrongInput() {
  108. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  109. vlt.configure();
  110. assertTrue(vlt.config);
  111. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  112. vlt.inputS = getEmptyStringInputStream();
  113. vlt.outputS = outputStream;
  114. assertThrowsExactly(NoSuchElementException.class, () -> vlt.configure());
  115. assertTrue(outputStream.toString().startsWith("Configure:"));
  116. }
  117. @Test
  118. void openSetPWLengthMenuItem() {
  119. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  120. vlt.inputS = new ByteArrayInputStream("l\n7".getBytes(StandardCharsets.UTF_8));
  121. vlt.outputS = outputStream;
  122. vlt.configure();
  123. assertEquals(7, vlt.PWLength);
  124. assertTrue(outputStream.toString().contains("Set"));
  125. }
  126. @Test
  127. void setPWLength() {
  128. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  129. vlt.outputS = outputStream;
  130. vlt.setPWLength("7");
  131. assertEquals(7, vlt.PWLength);
  132. assertTrue(outputStream.toString().contains("now:"));
  133. }
  134. @Test
  135. void openSetCapitalsMenuItem() {
  136. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  137. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  138. vlt.outputS = outputStream;
  139. vlt.configure();
  140. assertTrue(vlt.haveCapitals = true);
  141. }
  142. @Test
  143. void setCapitals() {
  144. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  145. vlt.outputS = outputStream;
  146. vlt.setCapital("yes");
  147. assertTrue(vlt.haveCapitals = true);
  148. assertTrue(outputStream.toString().contains("contain"));
  149. vlt.outputS = outputStream;
  150. vlt.setCapital("no");
  151. assertFalse(vlt.haveCapitals = false);
  152. assertTrue(outputStream.toString().contains("don´t"));
  153. }
  154. @Test
  155. void openSetSpecialCharsMenuItem() {
  156. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  157. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  158. vlt.outputS = outputStream;
  159. vlt.configure();
  160. assertTrue(vlt.hasSpecialChars = true);
  161. }
  162. @Test
  163. void setSpecialCharTest() {
  164. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  165. vlt.outputS = outputStream;
  166. vlt.setSpecialChar("yes");
  167. assertTrue(vlt.hasSpecialChars = true);
  168. vlt.outputS = outputStream;
  169. vlt.setSpecialChar("no");
  170. assertFalse(vlt.hasSpecialChars = false);
  171. assertTrue(outputStream.toString().contains("don´t"));
  172. }
  173. @Test
  174. void openSetNumbersMenuItem() {
  175. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  176. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  177. vlt.outputS = outputStream;
  178. vlt.configure();
  179. assertTrue(vlt.hasNumbers = true);
  180. }
  181. @Test
  182. void setNumbersTest() {
  183. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  184. vlt.outputS = outputStream;
  185. vlt.setNumbers("yes");
  186. assertTrue(vlt.hasNumbers = true);
  187. assertTrue(outputStream.toString().contains("contain"));
  188. vlt.outputS = outputStream;
  189. vlt.setNumbers("no");
  190. assertFalse(vlt.hasNumbers = false);
  191. assertTrue(outputStream.toString().contains("don´t"));
  192. }
  193. private ByteArrayInputStream getEmptyStringInputStream() {
  194. return new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
  195. }
  196. }