testing with JAZZER
This commit is contained in:
16
testing/AufgabeUserRegistration/EmailMatcher.java
Normal file
16
testing/AufgabeUserRegistration/EmailMatcher.java
Normal file
@@ -0,0 +1,16 @@
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class EmailMatcher {
|
||||
|
||||
// Regex für Emailadressen
|
||||
static String emailRegex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,63}$";
|
||||
|
||||
static Pattern pattern = Pattern.compile(emailRegex);
|
||||
|
||||
static boolean isValidEmail(String email) {
|
||||
Matcher matcher = pattern.matcher(email);
|
||||
return matcher.matches();
|
||||
}
|
||||
|
||||
}
|
26
testing/AufgabeUserRegistration/ExampleUserRegistration.java
Normal file
26
testing/AufgabeUserRegistration/ExampleUserRegistration.java
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
public class ExampleUserRegistration {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
if (args.length<3) {
|
||||
System.out.println("Please provide username, password and email as command line arguments");
|
||||
} else {
|
||||
|
||||
String user = args[0];
|
||||
String password = args[1];
|
||||
String email = args[2];
|
||||
try {
|
||||
if (UserRegistration.registerUser(user, password, email))
|
||||
System.out.println("User successfully registered!");
|
||||
} catch (RegistrationException e) {
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
28
testing/AufgabeUserRegistration/UserRegistration.java
Normal file
28
testing/AufgabeUserRegistration/UserRegistration.java
Normal file
@@ -0,0 +1,28 @@
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class UserRegistration {
|
||||
|
||||
// Regex für Benutzernamen, nur Buchstaben und Zahlen
|
||||
private static final Pattern USERNAME_PATTERN = Pattern.compile("^[A-Za-z0-9]{3,15}$");
|
||||
|
||||
public static boolean registerUser(String username, String password, String email) throws RegistrationException {
|
||||
if (!USERNAME_PATTERN.matcher(username).matches()) {
|
||||
throw new RegistrationException("Invalid username. Only letters and numbers allowed, 3-15 characters.");
|
||||
}
|
||||
|
||||
if (password.length() < 8 || password.length() > 20) {
|
||||
throw new RegistrationException("Invalid password length. Password must be 8-20 characters.");
|
||||
}
|
||||
|
||||
if (!EmailMatcher.isValidEmail(email)) {
|
||||
throw new RegistrationException("Invalid email format.");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class RegistrationException extends Exception {
|
||||
RegistrationException(String msg) { super(msg); }
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
import com.code_intelligence.jazzer.api.FuzzedDataProvider;
|
||||
import com.code_intelligence.jazzer.junit.FuzzTest;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
|
||||
public class UserRegistrationFuzzTest {
|
||||
@FuzzTest
|
||||
public static void fuzzerTestOneInput(FuzzedDataProvider data) {
|
||||
String email = data.consumeString(100);
|
||||
if(EmailMatcher.isValidEmail(email)) {
|
||||
String user = data.consumeString(100);
|
||||
String password = data.consumeString(100);
|
||||
try {
|
||||
UserRegistration.registerUser(user, password, email);
|
||||
System.out.println("User: " + user + ", Password: " + password + ", Email: " + email);
|
||||
throw new InvalidParameterException("This registration is valid!");
|
||||
} catch (RegistrationException e) { }
|
||||
}
|
||||
}
|
||||
}
|
13
testing/AufgabeUserRegistration/fuzz.bat
Normal file
13
testing/AufgabeUserRegistration/fuzz.bat
Normal file
@@ -0,0 +1,13 @@
|
||||
set CLASSPATH=.\;%JAVA_HOME%\lib;..\jars\jazzer_standalone.jar;..\jars\jazzer-junit-0.22.1.jar;..\jars\junit5-4.6.14.jar
|
||||
|
||||
javac UserRegistration.java
|
||||
javac EmailMatcher.java
|
||||
javac UserRegistrationFuzzTest.java
|
||||
|
||||
java com.code_intelligence.jazzer.Jazzer --target_class=UserRegistrationFuzzTest
|
||||
|
||||
@rem ALTERNATIV Klassenpfad im Befehl angeben:
|
||||
@rem javac -cp .\;%JAVA_HOME%\lib;..\jars\jazzer_standalone.jar UserRegistration.java
|
||||
@rem javac -cp .\;%JAVA_HOME%\lib;..\jars\jazzer_standalone.jar;..\jars\jazzer-junit-0.22.1.jar;..\jars\junit5-4.6.14.jar UserRegistrationFuzzTest.java
|
||||
|
||||
@rem java -cp .\;%JAVA_HOME%\lib;..\jars\jazzer_standalone.jar;..\jars\jazzer-junit-0.22.1.jar;..\jars\junit5-4.6.14.jar com.code_intelligence.jazzer.Jazzer --target_class=UserRegistrationFuzzTest
|
Reference in New Issue
Block a user