testing with JAZZER

This commit is contained in:
2024-10-30 19:29:50 +01:00
commit 51f58d19bc
27 changed files with 401 additions and 0 deletions

View 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();
}
}

View 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());
}
}
}
}

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

View File

@@ -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) { }
}
}
}

View 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