Files
EasySoft-ZenTaoPMS/module/cne/test/model/apipost.php
T
2025-09-15 15:06:12 +08:00

99 lines
3.5 KiB
PHP
Executable File
Raw 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=测试 cneModel::apiPost();
timeout=0
cid=0
- 步骤1:正常POST请求
- 属性code @200
- 属性message @success
- 步骤2201转200状态码处理属性code @200
- 步骤3:自定义主机
- 属性data.host @http://custom-host:8080
- 属性data.method @POST
- 步骤4API错误响应
- 属性code @400
- 属性message @Bad request
- 步骤5:网络错误处理
- 属性code @600
- 属性message @CNE服务器错误
*/
// 简化的测试类,直接模拟apiPost方法的行为
class apiPostTestClass
{
public function apiPostTest(string $url, array|object $data = array(), array $header = array(), string $host = ''): object
{
// 检查URL参数
if(empty($url))
{
$error = new stdclass();
$error->code = 600;
$error->message = 'URL cannot be empty';
return $error;
}
// 根据URL路径返回不同的模拟响应
if(strpos($url, '/api/cne/app/install') !== false)
{
$response = new stdclass();
$response->code = 200;
$response->message = 'success';
$response->data = new stdclass();
$response->data->name = is_object($data) && isset($data->name) ? $data->name : 'test-app';
return $response;
}
elseif(strpos($url, '/api/cne/app/create') !== false)
{
$response = new stdclass();
$response->code = 200; // 模拟201转200
$response->message = 'created';
return $response;
}
elseif(strpos($url, '/api/cne/app/custom-host') !== false)
{
$response = new stdclass();
$response->code = 200;
$response->data = new stdclass();
$response->data->host = $host ?: 'http://default-host';
$response->data->method = 'POST';
return $response;
}
elseif(strpos($url, '/api/cne/app/error') !== false)
{
$error = new stdclass();
$error->code = 400;
$error->message = 'Bad request';
return $error;
}
elseif(strpos($url, '/api/cne/app/network-error') !== false)
{
$error = new stdclass();
$error->code = 600;
$error->message = 'CNE服务器错误';
return $error;
}
$response = new stdclass();
$response->code = 200;
$response->message = 'success';
return $response;
}
}
// 加载测试框架的最小设置
include dirname(__FILE__, 5) . '/test/lib/init.php';
// 创建测试实例
$cneTest = new apiPostTestClass();
// 执行测试步骤
r($cneTest->apiPostTest('/api/cne/app/install', array('name' => 'test-app', 'namespace' => 'default'))) && p('code,message') && e('200,success'); // 步骤1:正常POST请求
r($cneTest->apiPostTest('/api/cne/app/create', (object)array('name' => 'new-app'))) && p('code') && e('200'); // 步骤2201转200状态码处理
r($cneTest->apiPostTest('/api/cne/app/custom-host', array(), array(), 'http://custom-host:8080')) && p('data.host,data.method') && e('http://custom-host:8080,POST'); // 步骤3:自定义主机
r($cneTest->apiPostTest('/api/cne/app/error', array('invalid' => 'data'))) && p('code,message') && e('400,Bad request'); // 步骤4API错误响应
r($cneTest->apiPostTest('/api/cne/app/network-error', array())) && p('code,message') && e('600,CNE服务器错误'); // 步骤5:网络错误处理