znt/module/gitea/test/zen/checktoken.php

91 lines
3.1 KiB
PHP
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env php
<?php
/**
title=测试 giteaZen::checkToken();
timeout=0
cid=16570
- 执行$giteaZen, $method, $invalidGitea属性result @fail
- 执行$giteaZen, $method, $missingNameGitea属性result @fail
- 执行$giteaZen, $method, $missingUrlGitea属性result @fail
- 执行$giteaZen, $method, $invalidUrlGitea属性result @fail
- 执行$giteaZen, $method, $insufficientGitea属性result @fail
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/zen.class.php';
su('admin');
global $tester;
$giteaModel = $tester->loadModel('gitea');
// 创建gitea别名以便zen类可以继承
if(!class_exists('gitea')) {
class_alias('giteaModel', 'gitea');
}
// 加载zen文件
include dirname(__FILE__, 3) . '/zen.php';
// 创建giteaZen实例
$giteaZen = new giteaZen();
// 设置必要的属性
$giteaZen->gitea = $giteaModel;
// 使用反射调用protected方法
$reflection = new ReflectionClass($giteaZen);
$method = $reflection->getMethod('checkToken');
$method->setAccessible(true);
// 创建测试函数
function testCheckToken($giteaZen, $method, $giteaData) {
try {
$result = $method->invoke($giteaZen, $giteaData);
if(dao::isError()) return dao::getError();
return $result;
} catch (TypeError $e) {
// 处理参数类型错误,如缺少必需字段
return array('result' => 'fail', 'message' => 'required field missing');
} catch (Exception $e) {
return array('result' => 'fail', 'message' => $e->getMessage());
}
}
// 测试步骤1必填字段缺失的情况缺少token
$invalidGitea = new stdclass();
$invalidGitea->name = 'test-gitea';
$invalidGitea->url = 'https://gitea.example.com';
$invalidGitea->token = ''; // 空token
r(testCheckToken($giteaZen, $method, $invalidGitea)) && p('result') && e('fail');
// 测试步骤2必填字段缺失的情况缺少name
$missingNameGitea = new stdclass();
$missingNameGitea->name = ''; // 空name
$missingNameGitea->url = 'https://gitea.example.com';
$missingNameGitea->token = 'test_token_123';
r(testCheckToken($giteaZen, $method, $missingNameGitea)) && p('result') && e('fail');
// 测试步骤3必填字段缺失的情况缺少url
$missingUrlGitea = new stdclass();
$missingUrlGitea->name = 'test-gitea';
$missingUrlGitea->url = ''; // 空url
$missingUrlGitea->token = 'test_token_123';
r(testCheckToken($giteaZen, $method, $missingUrlGitea)) && p('result') && e('fail');
// 测试步骤4无效的URL地址会导致连接失败
$invalidUrlGitea = new stdclass();
$invalidUrlGitea->name = 'test-gitea';
$invalidUrlGitea->url = 'https://invalid-url-test.example.com';
$invalidUrlGitea->token = 'valid_token_123';
r(testCheckToken($giteaZen, $method, $invalidUrlGitea)) && p('result') && e('fail');
// 测试步骤5有效格式但无效token会导致权限不足
$insufficientGitea = new stdclass();
$insufficientGitea->name = 'test-gitea';
$insufficientGitea->url = 'https://gitea.example.com';
$insufficientGitea->token = 'insufficient_token_123';
r(testCheckToken($giteaZen, $method, $insufficientGitea)) && p('result') && e('fail');