8c1ddb6cb2
**Backend:** - Vervollständigen Sie alle Repository-Implementierungen - Implementieren Sie die Authentifizierung und Autorisierung - Fügen Sie Validierung für alle API-Endpunkte hinzu
127 lines
5.1 KiB
Kotlin
127 lines
5.1 KiB
Kotlin
#!/usr/bin/env kotlin
|
|
|
|
/**
|
|
* Simple test script to verify API validation is working correctly.
|
|
* This script tests the validation implementation added to all API endpoints.
|
|
*/
|
|
|
|
import at.mocode.validation.ApiValidationUtils
|
|
import at.mocode.validation.ValidationError
|
|
|
|
fun main() {
|
|
println("=== API Validation Test ===")
|
|
println()
|
|
|
|
// Test 1: Query Parameter Validation
|
|
println("Test 1: Query Parameter Validation")
|
|
testQueryParameterValidation()
|
|
println()
|
|
|
|
// Test 2: Login Request Validation
|
|
println("Test 2: Login Request Validation")
|
|
testLoginRequestValidation()
|
|
println()
|
|
|
|
// Test 3: Country Request Validation
|
|
println("Test 3: Country Request Validation")
|
|
testCountryRequestValidation()
|
|
println()
|
|
|
|
// Test 4: Horse Request Validation
|
|
println("Test 4: Horse Request Validation")
|
|
testHorseRequestValidation()
|
|
println()
|
|
|
|
// Test 5: Event Request Validation
|
|
println("Test 5: Event Request Validation")
|
|
testEventRequestValidation()
|
|
println()
|
|
|
|
println("=== All Validation Tests Completed ===")
|
|
}
|
|
|
|
fun testQueryParameterValidation() {
|
|
// Test valid parameters
|
|
val validErrors = ApiValidationUtils.validateQueryParameters(
|
|
limit = "50",
|
|
offset = "0",
|
|
search = "test"
|
|
)
|
|
println("Valid query parameters: ${if (ApiValidationUtils.isValid(validErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test invalid limit
|
|
val invalidLimitErrors = ApiValidationUtils.validateQueryParameters(
|
|
limit = "invalid"
|
|
)
|
|
println("Invalid limit parameter: ${if (!ApiValidationUtils.isValid(invalidLimitErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test limit out of range
|
|
val outOfRangeLimitErrors = ApiValidationUtils.validateQueryParameters(
|
|
limit = "2000"
|
|
)
|
|
println("Out of range limit: ${if (!ApiValidationUtils.isValid(outOfRangeLimitErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test invalid offset
|
|
val invalidOffsetErrors = ApiValidationUtils.validateQueryParameters(
|
|
offset = "-1"
|
|
)
|
|
println("Invalid offset parameter: ${if (!ApiValidationUtils.isValid(invalidOffsetErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
}
|
|
|
|
fun testLoginRequestValidation() {
|
|
// Test valid login
|
|
val validErrors = ApiValidationUtils.validateLoginRequest("user@example.com", "password123")
|
|
println("Valid login request: ${if (ApiValidationUtils.isValid(validErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test missing username
|
|
val missingUsernameErrors = ApiValidationUtils.validateLoginRequest(null, "password123")
|
|
println("Missing username: ${if (!ApiValidationUtils.isValid(missingUsernameErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test missing password
|
|
val missingPasswordErrors = ApiValidationUtils.validateLoginRequest("user@example.com", null)
|
|
println("Missing password: ${if (!ApiValidationUtils.isValid(missingPasswordErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
}
|
|
|
|
fun testCountryRequestValidation() {
|
|
// Test valid country request
|
|
val validErrors = ApiValidationUtils.validateCountryRequest("AT", "AUT", "Österreich", "Austria")
|
|
println("Valid country request: ${if (ApiValidationUtils.isValid(validErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test missing required fields
|
|
val missingFieldsErrors = ApiValidationUtils.validateCountryRequest(null, null, null, null)
|
|
println("Missing required fields: ${if (!ApiValidationUtils.isValid(missingFieldsErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test invalid ISO codes
|
|
val invalidIsoErrors = ApiValidationUtils.validateCountryRequest("INVALID", "INVALID", "Test", "Test")
|
|
println("Invalid ISO codes: ${if (!ApiValidationUtils.isValid(invalidIsoErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
}
|
|
|
|
fun testHorseRequestValidation() {
|
|
// Test valid horse request
|
|
val validErrors = ApiValidationUtils.validateHorseRequest("Thunder", "123456789", "987654321", "OEPS123", "FEI456")
|
|
println("Valid horse request: ${if (ApiValidationUtils.isValid(validErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test missing horse name
|
|
val missingNameErrors = ApiValidationUtils.validateHorseRequest(null, "123456789", "987654321", "OEPS123", "FEI456")
|
|
println("Missing horse name: ${if (!ApiValidationUtils.isValid(missingNameErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
}
|
|
|
|
fun testEventRequestValidation() {
|
|
import kotlinx.datetime.LocalDate
|
|
|
|
val startDate = LocalDate(2024, 6, 1)
|
|
val endDate = LocalDate(2024, 6, 3)
|
|
|
|
// Test valid event request
|
|
val validErrors = ApiValidationUtils.validateEventRequest("Test Event", "Vienna", startDate, endDate, 100)
|
|
println("Valid event request: ${if (ApiValidationUtils.isValid(validErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test missing event name
|
|
val missingNameErrors = ApiValidationUtils.validateEventRequest(null, "Vienna", startDate, endDate, 100)
|
|
println("Missing event name: ${if (!ApiValidationUtils.isValid(missingNameErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
|
|
// Test invalid date range (end before start)
|
|
val invalidDateErrors = ApiValidationUtils.validateEventRequest("Test Event", "Vienna", endDate, startDate, 100)
|
|
println("Invalid date range: ${if (!ApiValidationUtils.isValid(invalidDateErrors)) "✓ PASS" else "✗ FAIL"}")
|
|
}
|