znt/module/zanode/test/model/create.php

87 lines
2.9 KiB
PHP
Raw Permalink Normal View History

#!/usr/bin/env php
<?php
declare(strict_types=1);
/**
title=测试 zanodeModel::create();
timeout=0
cid=19821
- 执行zanodeTest模块的createTest方法参数是$normalData
- 属性name @test-node-1
- 属性type @node
- 属性status @running
- 执行zanodeTest模块的createTest方法参数是$minimalData
- 属性name @minimal-node
- 属性type @node
- 属性status @created
- 执行zanodeTest模块的createTest方法参数是$completeData
- 属性name @complete-node
- 属性hostType @physics
- 属性cpuCores @8
- 属性memory @16
- 执行zanodeTest模块的createTest方法参数是$filteredData
- 属性name @filtered-node
- 属性osName @Ubuntu 22.04
- 执行zanodeTest模块的createTestWithAction方法参数是$actionData 属性hasAction @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/model.class.php';
// 准备测试数据 - 直接使用简化的host表结构
zenData('host')->gen(0);
zenData('action')->gen(0);
zenData('user')->gen(5);
su('admin');
$zanodeTest = new zanodeModelTest();
// 测试步骤1正常创建执行节点
$normalData = new stdclass();
$normalData->name = 'test-node-1';
$normalData->type = 'node';
$normalData->status = 'running';
r($zanodeTest->createTest($normalData)) && p('name,type,status') && e('test-node-1,node,running');
// 测试步骤2创建具有最小必填字段的节点
$minimalData = new stdclass();
$minimalData->name = 'minimal-node';
$minimalData->type = 'node';
$minimalData->status = 'created';
r($zanodeTest->createTest($minimalData)) && p('name,type,status') && e('minimal-node,node,created');
// 测试步骤3创建包含完整字段的节点
$completeData = new stdclass();
$completeData->hostType = 'physics';
$completeData->parent = 0;
$completeData->name = 'complete-node';
$completeData->extranet = '192.168.1.100';
$completeData->image = 2;
$completeData->cpuCores = 8;
$completeData->memory = 16;
$completeData->diskSize = 100;
$completeData->osName = 'CentOS 7';
$completeData->desc = '包含完整字段的测试节点';
$completeData->type = 'node';
$completeData->status = 'ready';
r($zanodeTest->createTest($completeData)) && p('name,hostType,cpuCores,memory') && e('complete-node,physics,8,16');
// 测试步骤4创建包含过滤字段的节点osNamePhysics和osNamePre应被过滤
$filteredData = new stdclass();
$filteredData->name = 'filtered-node';
$filteredData->type = 'node';
$filteredData->status = 'running';
$filteredData->osNamePhysics = 'should-be-filtered';
$filteredData->osNamePre = 'should-be-filtered';
$filteredData->osName = 'Ubuntu 22.04';
r($zanodeTest->createTest($filteredData)) && p('name,osName') && e('filtered-node,Ubuntu 22.04');
// 测试步骤5验证创建节点时自动生成Action记录
$actionData = new stdclass();
$actionData->name = 'action-test-node';
$actionData->type = 'node';
$actionData->status = 'launch';
r($zanodeTest->createTestWithAction($actionData)) && p('hasAction') && e('1');