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.

94 lines
2.7 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. class PasswordManagerTest {
  10. static PasswordManager pm;
  11. @BeforeAll
  12. static void init() {
  13. pm = new PasswordManager();
  14. }
  15. @BeforeEach
  16. void reset() {
  17. pm.outputStream = System.out;
  18. pm.inputStream = System.in;
  19. }
  20. @Test
  21. void constructor() {
  22. assertInstanceOf(PasswordManager.class, pm);
  23. }
  24. @Test
  25. void listVaults() {
  26. pm.listVaults();
  27. }
  28. @Test
  29. void openVault() {
  30. pm.openVault();
  31. }
  32. @Test
  33. void menuNavigationListVaults() {
  34. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  35. pm.inputStream = new ByteArrayInputStream("l\n".getBytes(StandardCharsets.UTF_8));
  36. pm.outputStream = outputStream;
  37. pm.showMenu();
  38. assertTrue(outputStream.toString().endsWith("Vaults:\n"));
  39. }
  40. @Test
  41. void menuNavigationOpenVault() {
  42. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  43. pm.inputStream = new ByteArrayInputStream("v 0\n".getBytes(StandardCharsets.UTF_8));
  44. pm.outputStream = outputStream;
  45. pm.showMenu();
  46. assertTrue(outputStream.toString().endsWith("-- vaults not implemented yet\n"));
  47. }
  48. @Test
  49. void showMenu() {
  50. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  51. pm.inputStream = getEmptyStringInputStream();
  52. pm.outputStream = outputStream;
  53. assertThrowsExactly(NoSuchElementException.class, () -> pm.showMenu());
  54. assertTrue(outputStream.toString().startsWith("\nciip Gruppe 8"));
  55. }
  56. @Test
  57. void exitMenu() {
  58. pm.inputStream = new ByteArrayInputStream("e\n".getBytes(StandardCharsets.UTF_8));
  59. pm.showMenu();
  60. assertFalse(pm.running);
  61. }
  62. @Test
  63. void doNotExitMenuAfterWrongInput() {
  64. pm.inputStream = new ByteArrayInputStream("__\n".getBytes(StandardCharsets.UTF_8));
  65. pm.showMenu();
  66. assertTrue(pm.running);
  67. ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  68. pm.inputStream = getEmptyStringInputStream();
  69. pm.outputStream = outputStream;
  70. assertThrowsExactly(NoSuchElementException.class, () -> pm.showMenu());
  71. assertTrue(outputStream.toString().startsWith("\nciip Gruppe 8"));
  72. }
  73. private ByteArrayInputStream getEmptyStringInputStream() {
  74. return new ByteArrayInputStream("".getBytes(StandardCharsets.UTF_8));
  75. }
  76. }