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.

238 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 org.mockito.Mockito;
  5. import java.io.ByteArrayInputStream;
  6. import java.io.ByteArrayOutputStream;
  7. import java.nio.charset.StandardCharsets;
  8. import java.util.NoSuchElementException;
  9. import static org.junit.jupiter.api.Assertions.*;
  10. public class VaultTest {
  11. //Vault vlt = new Vault();
  12. static Vault vlt;
  13. @BeforeAll
  14. static void init() {
  15. vlt = new Vault();
  16. }
  17. @BeforeEach
  18. void reset() {
  19. vlt.outputS = System.out;
  20. vlt.inputS = System.in;
  21. }
  22. @Test
  23. void openCredentialMenu() {
  24. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  25. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  26. vlt.outputS = outputStream;
  27. vlt.credentialMenu();
  28. assertTrue(vlt.credentialM);
  29. assertTrue(outputStream.toString().startsWith("Configure"));
  30. }
  31. @Test
  32. void exitConfigureMenu(){
  33. vlt.inputS = new ByteArrayInputStream("e".getBytes(StandardCharsets.UTF_8));
  34. vlt.credentialMenu();
  35. assertFalse(vlt.credentialM);
  36. }
  37. @Test
  38. void openAddCredentialMenuItem() {
  39. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  40. vlt.inputS = new ByteArrayInputStream("a\npeter\npassword".getBytes(StandardCharsets.UTF_8));
  41. vlt.outputS = outputStream;
  42. vlt.credentialMenu();
  43. assertTrue(outputStream.toString().contains("username"));
  44. assertEquals("peter", vlt.userName);
  45. assertTrue(outputStream.toString().contains("password"));
  46. assertEquals("password",vlt.password);
  47. }
  48. @Test
  49. void openShowCredentialMenuItem() {
  50. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  51. vlt.inputS = new ByteArrayInputStream("c\n1".getBytes(StandardCharsets.UTF_8));
  52. vlt.outputS = outputStream;
  53. vlt.credentialMenu();
  54. assertTrue(outputStream.toString().contains("Type"));
  55. }
  56. @Test
  57. void openEditCredentialMenuItem() {
  58. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  59. vlt.inputS = new ByteArrayInputStream("l".getBytes(StandardCharsets.UTF_8));
  60. vlt.outputS = outputStream;
  61. vlt.credentialMenu();
  62. assertTrue(outputStream.toString().contains("Type"));
  63. }
  64. /*@Test
  65. void addCredentialTest() {
  66. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  67. vlt.outputS = outputStream;
  68. vlt.inputS = new ByteArrayInputStream("peter\npassword".getBytes(StandardCharsets.UTF_8));
  69. vlt.addCredential();
  70. assertTrue(outputStream.toString().contains("username"));
  71. assertEquals("peter", vlt.userName);
  72. assertTrue(outputStream.toString().contains("password"));
  73. assertEquals("password",vlt.password);
  74. }*/
  75. /*@Test
  76. void showCredentialTest() {
  77. vlt.inputS = new ByteArrayInputStream("l\n1".getBytes(StandardCharsets.UTF_8));
  78. vlt.credentialMenu();
  79. assertTrue(vlt.isInt);
  80. vlt.inputS = new ByteArrayInputStream("l\npeter".getBytes(StandardCharsets.UTF_8));
  81. vlt.credentialMenu();
  82. assertFalse(vlt.isInt);
  83. }*/
  84. @Test
  85. void getAsJson() {vlt.getAsJson();}
  86. @Test
  87. void loadFromJson() {vlt.loadFromJson();}
  88. @Test
  89. void openConfigureMenu() {
  90. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  91. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  92. vlt.outputS = outputStream;
  93. vlt.configure();
  94. assertTrue(outputStream.toString().startsWith("Configure:"));
  95. }
  96. @Test
  97. void exitConfigurationMenu(){
  98. vlt.inputS = new ByteArrayInputStream("e".getBytes(StandardCharsets.UTF_8));
  99. vlt.configure();
  100. assertFalse(vlt.config);
  101. }
  102. @Test
  103. void doNotExitConfigAfterWrongInput() {
  104. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  105. vlt.configure();
  106. assertTrue(vlt.config);
  107. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  108. vlt.inputS = getEmptyStringInputStream();
  109. vlt.outputS = outputStream;
  110. assertThrowsExactly(NoSuchElementException.class, () -> vlt.configure());
  111. assertTrue(outputStream.toString().startsWith("Configure:"));
  112. }
  113. @Test
  114. void openSetPWLengthMenuItem() {
  115. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  116. vlt.inputS = new ByteArrayInputStream("l\n7".getBytes(StandardCharsets.UTF_8));
  117. vlt.outputS = outputStream;
  118. vlt.configure();
  119. assertEquals(7, vlt.PWLength);
  120. assertTrue(outputStream.toString().contains("Set"));
  121. }
  122. @Test
  123. void setPWLength() {
  124. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  125. vlt.outputS = outputStream;
  126. vlt.setPWLength("7");
  127. assertEquals(7, vlt.PWLength);
  128. assertTrue(outputStream.toString().contains("now:"));
  129. }
  130. @Test
  131. void openSetCapitalsMenuItem() {
  132. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  133. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  134. vlt.outputS = outputStream;
  135. vlt.configure();
  136. assertTrue(vlt.haveCapitals = true);
  137. }
  138. @Test
  139. void setCapitals() {
  140. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  141. vlt.outputS = outputStream;
  142. vlt.setCapital("yes");
  143. assertTrue(vlt.haveCapitals = true);
  144. assertTrue(outputStream.toString().contains("contain"));
  145. vlt.outputS = outputStream;
  146. vlt.setCapital("no");
  147. assertFalse(vlt.haveCapitals = false);
  148. assertTrue(outputStream.toString().contains("don´t"));
  149. }
  150. @Test
  151. void openSetSpecialCharsMenuItem() {
  152. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  153. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  154. vlt.outputS = outputStream;
  155. vlt.configure();
  156. assertTrue(vlt.hasSpecialChars = true);
  157. }
  158. @Test
  159. void setSpecialCharTest() {
  160. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  161. vlt.outputS = outputStream;
  162. vlt.setSpecialChar("yes");
  163. assertTrue(vlt.hasSpecialChars = true);
  164. vlt.outputS = outputStream;
  165. vlt.setSpecialChar("no");
  166. assertFalse(vlt.hasSpecialChars = false);
  167. assertTrue(outputStream.toString().contains("don´t"));
  168. }
  169. @Test
  170. void openSetNumbersMenuItem() {
  171. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  172. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  173. vlt.outputS = outputStream;
  174. vlt.configure();
  175. assertTrue(vlt.hasNumbers = true);
  176. }
  177. @Test
  178. void setNumbersTest() {
  179. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  180. vlt.outputS = outputStream;
  181. vlt.setNumbers("yes");
  182. assertTrue(vlt.hasNumbers = true);
  183. assertTrue(outputStream.toString().contains("contain"));
  184. vlt.outputS = outputStream;
  185. vlt.setNumbers("no");
  186. assertFalse(vlt.hasNumbers = false);
  187. assertTrue(outputStream.toString().contains("don´t"));
  188. }
  189. private ByteArrayInputStream getEmptyStringInputStream() {
  190. return new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
  191. }
  192. }