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