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.

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