uebung4/Test_Passwort_Check_Gesamt....

105 lines
3.8 KiB
Java

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"));
}
}