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.

170 lines
5.3 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 addCredentialTest() {
  24. String expected = "user";
  25. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  26. vlt.inputS = new ByteArrayInputStream(expected.getBytes(StandardCharsets.UTF_8));
  27. vlt.outputS = outputStream;
  28. vlt.addCredential();
  29. assertTrue(outputStream.toString().startsWith("Add"));
  30. assertEquals(expected, vlt.userName);
  31. }
  32. @Test
  33. void showCredential() {vlt.showCredential();}
  34. @Test
  35. void getAsJson() {vlt.getAsJson();}
  36. @Test
  37. void loadFromJson() {vlt.loadFromJson();}
  38. @Test
  39. void openConfigureMenu() {
  40. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  41. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  42. vlt.outputS = outputStream;
  43. vlt.configure();
  44. assertTrue(outputStream.toString().startsWith("Configure:"));
  45. }
  46. @Test
  47. void exitConfigurationMenu(){
  48. vlt.inputS = new ByteArrayInputStream("e".getBytes(StandardCharsets.UTF_8));
  49. vlt.configure();
  50. assertFalse(vlt.config);
  51. }
  52. @Test
  53. void doNotExitConfigAfterWrongInput() {
  54. vlt.inputS = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  55. vlt.configure();
  56. assertTrue(vlt.config);
  57. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  58. vlt.inputS = getEmptyStringInputStream();
  59. vlt.outputS = outputStream;
  60. assertThrowsExactly(NoSuchElementException.class, () -> vlt.configure());
  61. assertTrue(outputStream.toString().startsWith("Configure:"));
  62. }
  63. @Test
  64. void openSetPWLengthMenuItem() {
  65. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  66. vlt.inputS = new ByteArrayInputStream("l\n7".getBytes(StandardCharsets.UTF_8));
  67. vlt.outputS = outputStream;
  68. vlt.configure();
  69. assertEquals(7, vlt.PWLength);
  70. assertTrue(outputStream.toString().contains("Set"));
  71. }
  72. @Test
  73. void setPWLength() {
  74. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  75. vlt.outputS = outputStream;
  76. vlt.setPWLength("7");
  77. assertEquals(7, vlt.PWLength);
  78. assertTrue(outputStream.toString().contains("now:"));
  79. }
  80. @Test
  81. void openSetCapitalsMenuItem() {
  82. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  83. vlt.inputS = new ByteArrayInputStream("h\nyes".getBytes(StandardCharsets.UTF_8));
  84. vlt.outputS = outputStream;
  85. vlt.configure();
  86. assertTrue(vlt.haveCapitals = true);
  87. }
  88. @Test
  89. void setCapitals() {
  90. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  91. vlt.outputS = outputStream;
  92. vlt.setCapital("yes");
  93. assertTrue(vlt.haveCapitals = true);
  94. assertTrue(outputStream.toString().contains("contain"));
  95. vlt.outputS = outputStream;
  96. vlt.setCapital("no");
  97. assertFalse(vlt.haveCapitals = false);
  98. assertTrue(outputStream.toString().contains("don´t"));
  99. }
  100. @Test
  101. void setSpecialCharTest() {
  102. vlt.inputS = new ByteArrayInputStream("yes\n".getBytes(StandardCharsets.UTF_8));
  103. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  104. vlt.outputS = outputStream;
  105. vlt.setSpecialChar();
  106. assertTrue(outputStream.toString().startsWith("Should"));
  107. assertTrue(vlt.hasSpecialChars = true);
  108. assertTrue(outputStream.toString().contains("contain"));
  109. vlt.inputS = new ByteArrayInputStream("no\n".getBytes(StandardCharsets.UTF_8));
  110. vlt.outputS = outputStream;
  111. vlt.setSpecialChar();
  112. assertTrue(outputStream.toString().startsWith("Should"));
  113. assertFalse(vlt.hasSpecialChars = false);
  114. assertTrue(outputStream.toString().contains("don´t"));
  115. }
  116. @Test
  117. void setNumbersTest() {
  118. vlt.inputS = new ByteArrayInputStream("yes\n".getBytes(StandardCharsets.UTF_8));
  119. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  120. vlt.outputS = outputStream;
  121. vlt.SetNumbers();
  122. assertTrue(outputStream.toString().startsWith("Should"));
  123. assertTrue(vlt.hasNumbers = true);
  124. assertTrue(outputStream.toString().contains("contain"));
  125. vlt.inputS = new ByteArrayInputStream("no\n".getBytes(StandardCharsets.UTF_8));
  126. vlt.outputS = outputStream;
  127. vlt.SetNumbers();
  128. assertTrue(outputStream.toString().startsWith("Should"));
  129. assertFalse(vlt.hasNumbers = false);
  130. assertTrue(outputStream.toString().contains("don´t"));
  131. }
  132. private ByteArrayInputStream getEmptyStringInputStream() {
  133. return new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
  134. }
  135. }