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.

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