diff --git a/.$Unbenanntes Diagramm.drawio.bkp b/.$Unbenanntes Diagramm.drawio.bkp new file mode 100644 index 0000000..c0d8706 --- /dev/null +++ b/.$Unbenanntes Diagramm.drawio.bkp @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/Passwort_Check.java b/Passwort_Check.java index a49053b..05bc04a 100644 --- a/Passwort_Check.java +++ b/Passwort_Check.java @@ -3,27 +3,34 @@ import java.util.Scanner; public class Passwort_Check { public static boolean checkLaenge(String passwort) { + // Abfrage mind. Anzahl return passwort.length() >= 20; } public static boolean checkKleinBuchstaben(String passwort) { - + // Abfrage der Kleinbuchstaben return passwort.matches(".*[a-z].*[a-z].*[a-z].*"); } public static boolean checkGrossBuchstaben(String passwort) { - + // Abfrage der Grossbuchstaben return passwort.matches(".*[A-Z].*[A-Z].*[A-Z].*"); } public static boolean checkZiffer(String passwort) { + // Abfrage der Ziffern return passwort.matches(".*[0-9].*[0-9].*[0-9].*"); } public static boolean checkSonderZeichen(String passwort) { - - return passwort.matches(".*[!\\?\\$%&#@*+\\-=_.].*[!\\?\\$%&#@*+\\-=_.].*[!\\?\\$%&#@*+\\-=_.].*"); + // Überprüfung mit Regex durch Ausschluss + // [^A-Za-z0-9] Schließt alle ziffern und Buchstaben aus + // Ausschlus der Steuerzeichen: + // [^/t] schließt Tab aus + // [^/r] schließt Carriage Return aus + // [^/n] schließt Line Feed aus + return passwort.matches(".*[^A-Za-z0-9\t\r\n].*[^A-Za-z0-9\t\r\n].*[^A-Za-z0-9\t\r\n].*"); } public static void main(String[] args) { diff --git a/Test_Passwort_Check.java b/Test_Passwort_Check.java new file mode 100644 index 0000000..948b947 --- /dev/null +++ b/Test_Passwort_Check.java @@ -0,0 +1,76 @@ +import org.junit.jupiter.api.Test; +// import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.*; + +public class Test_Passwort_Check { + + @Test + public void testCheckLaenge() { + // Länge ist zu kurz + assertFalse(Passwort_Check.checkLaenge("KurzesPasswort123!")); + assertFalse(Passwort_Check.checkLaenge("Hello Wolrd")); + assertFalse(Passwort_Check.checkLaenge("qwertzuiopasdfghjkl")); + assertFalse(Passwort_Check.checkLaenge("1234567890qwertzuio")); + // richtige Länge + assertTrue(Passwort_Check.checkLaenge("LangesPasswortMit123!@#")); + } + + @Test + public void testCheckKleinBuchstaben() { + // zu wenig Kleinbuchstaben + assertFalse(Passwort_Check.checkKleinBuchstaben("ABCDEF123!@#")); // keine Kleinbuchstaben + assertFalse(Passwort_Check.checkKleinBuchstaben("aB123")); // nur 1 Kleinbuchstaben + assertFalse(Passwort_Check.checkKleinBuchstaben("HELLO!WorLD!ICHLIEBEJAVA")); // nur 2 Kleinbuchstaben + + // genügend Kleinbuchstaben + assertTrue(Passwort_Check.checkKleinBuchstaben("abc DEF 123!@#")); + + } + + @Test + public void testCheckGrossBuchstaben() { + // zu wenig Großbuchstaben + assertFalse(Passwort_Check.checkGrossBuchstaben("abcdef123!@#")); // keine Grossbuchstaben + assertFalse(Passwort_Check.checkGrossBuchstaben("aB123")); // nur 1 Grossbuchstaben + assertFalse(Passwort_Check.checkGrossBuchstaben("aAB123")); // nur 2 Grossbuchstaben + // mind. 3 Großbuchstaben + assertTrue(Passwort_Check.checkGrossBuchstaben("ABCdef123!@#")); + assertTrue(Passwort_Check.checkKleinBuchstaben("HelloWorldichliebejava")); + } + + @Test + public void testCheckZiffer() { + // zu wenig Ziffern + assertFalse(Passwort_Check.checkZiffer("abcdefABC!@#")); // keine Ziffern + assertFalse(Passwort_Check.checkZiffer("aB1")); // nur 1 Ziffer + assertFalse(Passwort_Check.checkZiffer("a2 B1")); // nur 2 Ziffer + // mid. 3 Ziffern + assertTrue(Passwort_Check.checkZiffer("abcABC123!@#")); // 3 Ziffern + } + + @Test + public void testCheckSonderZeichen() { + // zu wenig Sonderzeichen + assertFalse(Passwort_Check.checkSonderZeichen("abcABC123")); // keine Sonderzeichen + assertFalse(Passwort_Check.checkSonderZeichen("abcABC123!")); // nur 1 Sonderzeichen + assertFalse(Passwort_Check.checkSonderZeichen("abcABC123!@")); // nur 2 Sonderzeichen + // mind. 3 Sonderzeichen + assertTrue(Passwort_Check.checkSonderZeichen("abcABC123!@#")); // 3 Sonderzeichen + // Überprüfung der speziellen Sonderzeichen + assertTrue(Passwort_Check.checkSonderZeichen("a b c d")); // Leerzeichen als Sonderzeichen + assertTrue(Passwort_Check.checkSonderZeichen("a b c d")); + + assertFalse(Passwort_Check.checkSonderZeichen("\t\t\t")); // Tab als Sonderzeichen + assertFalse(Passwort_Check.checkSonderZeichen("\r\r\r")); // Carriage Return als Sonderzeichen + assertFalse(Passwort_Check.checkSonderZeichen("\n\n\n")); // Line Feed als Sonderzeichen + + // Prüfe einzeln alle ASCII-Sonderzeichen (33–47, 58–64, 91–96, 123–126) + String asciiSonderzeichen = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"; + for (int i = 0; i < asciiSonderzeichen.length(); i++) { + String c = "" + asciiSonderzeichen.charAt(i); + assertFalse(Passwort_Check.checkSonderZeichen("abcABC123" + c + c)); // nur 2 Sonderzeichen + assertTrue(Passwort_Check.checkSonderZeichen("abcABC123" + c + c + c)); // 3 identische Sonderzeichen + } + + } +} diff --git a/Test_Passwort_Check_Gesamt.java b/Test_Passwort_Check_Gesamt.java deleted file mode 100644 index f13d1d1..0000000 --- a/Test_Passwort_Check_Gesamt.java +++ /dev/null @@ -1,104 +0,0 @@ -import org.junit.jupiter.api.Test; -// import static org.junit.Assert.assertNull; -import static org.junit.jupiter.api.Assertions.*; - -import java.io.*; - -public class Test_Passwort_Check_Gesamt { - @Test - public void testPasswortZuKurz() { - assertFalse(Passwort_Check.checkLaenge("Hello Wolrd")); - assertFalse(Passwort_Check.checkLaenge("qwertzuiopasdfghjkl")); - assertFalse(Passwort_Check.checkLaenge("1234567890qwertzuio")); - - } - @Test - public void testPasswortKleinBuchstaben() { - assertFalse(Passwort_Check.checkKleinBuchstaben("HELLO!WorLD!ICHLIEBEJAVA")); - assertFalse(Passwort_Check.checkKleinBuchstaben("QWERTZUoPlYXCVBNMLKJHGFDS")); - assertFalse(Passwort_Check.checkKleinBuchstaben("1234567890QWERTZUIOP")); - - } - @Test - public void testPasswortGrossBuchstaben(){ - assertTrue(Passwort_Check.checkKleinBuchstaben("HelloWorldichliebejava")); - } - - - - @Test - public void testCheckLaenge() { - assertFalse(Passwort_Check.checkLaenge("KurzesPasswort123!")); // < 20 - assertTrue(Passwort_Check.checkLaenge("LangesPasswortMit123!@#")); // >= 20 - } - - @Test - public void testCheckKleinBuchstaben() { - assertFalse(Passwort_Check.checkKleinBuchstaben("ABCDEF123!@#")); // keine Kleinbuchstaben - assertFalse(Passwort_Check.checkKleinBuchstaben("aB123")); // nur 1 Kleinbuchstabe - assertTrue(Passwort_Check.checkKleinBuchstaben("abcDEF123!@#")); // 3 Kleinbuchstaben - } - - @Test - public void testCheckGrossBuchstaben() { - assertFalse(Passwort_Check.checkGrossBuchstaben("abcdef123!@#")); // keine Großbuchstaben - assertFalse(Passwort_Check.checkGrossBuchstaben("aB123")); // nur 1 Großbuchstabe - assertTrue(Passwort_Check.checkGrossBuchstaben("ABCdef123!@#")); // 3 Großbuchstaben - } - - @Test - public void testCheckZiffer() { - assertFalse(Passwort_Check.checkZiffer("abcdefABC!@#")); // keine Ziffern - assertFalse(Passwort_Check.checkZiffer("aB1")); // nur 1 Ziffer - assertTrue(Passwort_Check.checkZiffer("abcABC123!@#")); // 3 Ziffern - } - - @Test - public void testCheckSonderZeichen() { - assertFalse(Passwort_Check.checkSonderZeichen("abcABC123")); // keine Sonderzeichen - assertFalse(Passwort_Check.checkSonderZeichen("abcABC123!@")); // nur 2 Sonderzeichen - assertTrue(Passwort_Check.checkSonderZeichen("abcABC123!@#")); // 3 Sonderzeichen - } - - - - - - - @Test - public void testMainMitUnsicheremUndSicheremPasswort() { - // Simulierte Benutzereingaben (1. Versuch unsicher, 2. Versuch sicher) - String simulatedInput = String.join("\n", - "kurz123", // zu kurz - "PasswortMit2BUCHSTABEN", // kein Sonderzeichen, keine Ziffern - "AbcAbcAbc123!@#", // zu kurz - "abcABC123!@#abcABC123!@#", // gültiges Passwort - "" - ); - - // Eingabe simulieren - ByteArrayInputStream in = new ByteArrayInputStream(simulatedInput.getBytes()); - System.setIn(in); - - // Ausgabe abfangen - ByteArrayOutputStream outContent = new ByteArrayOutputStream(); - PrintStream originalOut = System.out; - System.setOut(new PrintStream(outContent)); - - // Main-Methode ausführen - Passwort_Check.main(new String[]{}); - - // Wiederherstellen der Originalstreams - System.setOut(originalOut); - System.setIn(System.in); - - String output = outContent.toString(); - - // Wichtige Ausgaben überprüfen - assertTrue(output.contains("Passwort ist zu kurz!")); - assertTrue(output.contains("Es fehlen Ziffern!") || output.contains("Es fehlen Sonderzeichen!")); - assertTrue(output.contains("Passwort ist sicher.")); - assertTrue(output.contains("...und Tschüss")); - } -} - diff --git a/Unbenanntes Diagramm.drawio b/Unbenanntes Diagramm.drawio new file mode 100644 index 0000000..08b4f01 --- /dev/null +++ b/Unbenanntes Diagramm.drawio @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +