You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.6 KiB
107 lines
3.6 KiB
<?php
|
|
/**
|
|
* 测试用户注册功能
|
|
* 用法: php scripts/test_register.php
|
|
*/
|
|
|
|
require_once __DIR__ . '/../config/database.php';
|
|
require_once __DIR__ . '/../src/storage/Database.php';
|
|
require_once __DIR__ . '/../src/storage/UserRepository.php';
|
|
require_once __DIR__ . '/../src/utils/Validator.php';
|
|
require_once __DIR__ . '/../src/utils/Security.php';
|
|
|
|
echo "=== 用户注册功能测试 ===\n\n";
|
|
|
|
try {
|
|
$userRepo = new UserRepository();
|
|
|
|
// 测试1: 验证邮箱格式
|
|
echo "测试1: 验证邮箱格式\n";
|
|
$testEmails = [
|
|
'valid@test.com' => true,
|
|
'invalid-email' => false,
|
|
'test@test.com' => true,
|
|
'user@wrong.com' => false,
|
|
];
|
|
|
|
foreach ($testEmails as $email => $expected) {
|
|
$isValid = Validator::validateEmail($email);
|
|
$domainValid = Validator::validateEmailDomain($email, 'test.com');
|
|
$result = $isValid && ($expected ? $domainValid : !$domainValid);
|
|
echo " {$email}: " . ($result ? "✓" : "✗") . "\n";
|
|
}
|
|
|
|
// 测试2: 验证密码强度
|
|
echo "\n测试2: 验证密码强度\n";
|
|
$testPasswords = [
|
|
'12345' => false, // 太短
|
|
'123456' => true, // 符合最小长度
|
|
'password123' => true,
|
|
];
|
|
|
|
foreach ($testPasswords as $password => $expected) {
|
|
$validation = Validator::validatePassword($password, 6);
|
|
$result = $validation['valid'] === $expected;
|
|
echo " '{$password}': " . ($result ? "✓" : "✗") . "\n";
|
|
if (!$validation['valid']) {
|
|
echo " 错误: " . implode(', ', $validation['errors']) . "\n";
|
|
}
|
|
}
|
|
|
|
// 测试3: 检查用户名是否存在
|
|
echo "\n测试3: 检查用户名是否存在\n";
|
|
$existingUser = $userRepo->findByUsername('admin@test.com');
|
|
if ($existingUser) {
|
|
echo " admin@test.com 存在: ✓\n";
|
|
} else {
|
|
echo " admin@test.com 不存在: ✗\n";
|
|
}
|
|
|
|
// 测试4: 创建测试用户(如果不存在)
|
|
echo "\n测试4: 创建测试用户\n";
|
|
$testUsername = 'testuser@test.com';
|
|
|
|
if ($userRepo->usernameExists($testUsername)) {
|
|
echo " 测试用户已存在,跳过创建\n";
|
|
} else {
|
|
try {
|
|
$newUser = $userRepo->create($testUsername, 'test123456', false, true);
|
|
echo " 创建用户成功: ✓\n";
|
|
echo " 用户ID: {$newUser['id']}\n";
|
|
echo " 用户名: {$newUser['username']}\n";
|
|
echo " 是否管理员: " . ($newUser['is_admin'] ? '是' : '否') . "\n";
|
|
} catch (Exception $e) {
|
|
echo " 创建用户失败: ✗ - " . $e->getMessage() . "\n";
|
|
}
|
|
}
|
|
|
|
// 测试5: 验证密码
|
|
echo "\n测试5: 验证密码\n";
|
|
$testUser = $userRepo->findByUsername($testUsername);
|
|
if ($testUser) {
|
|
$verified = $userRepo->verifyPassword($testUsername, 'test123456');
|
|
if ($verified) {
|
|
echo " 密码验证成功: ✓\n";
|
|
} else {
|
|
echo " 密码验证失败: ✗\n";
|
|
}
|
|
}
|
|
|
|
// 测试6: 获取所有用户
|
|
echo "\n测试6: 获取用户列表\n";
|
|
$users = $userRepo->getAll(10);
|
|
echo " 用户总数: " . count($users) . "\n";
|
|
foreach ($users as $user) {
|
|
echo " - {$user['username']} (ID: {$user['id']}, " .
|
|
($user['is_admin'] ? '管理员' : '普通用户') . ", " .
|
|
($user['is_active'] ? '激活' : '禁用') . ")\n";
|
|
}
|
|
|
|
echo "\n=== 测试完成 ===\n";
|
|
|
|
} catch (Exception $e) {
|
|
echo "错误: " . $e->getMessage() . "\n";
|
|
echo "堆栈跟踪:\n" . $e->getTraceAsString() . "\n";
|
|
}
|
|
|