znt/module/user/test/model/checkprogrampriv.php

68 lines
3.6 KiB
PHP
Raw Permalink Normal View History

#!/usr/bin/env php
<?php
/**
title=测试 userModel::checkProgramPriv();
timeout=0
cid=19590
- 步骤1管理员访问任何项目集 @1
- 步骤2项目集PM访问自己管理的项目集当前测试数据中user1不是系统管理员 @0
- 步骤3项目集创建者访问自己创建的项目集 @1
- 步骤4普通用户访问公开项目集 @1
- 步骤5干系人访问项目集 @1
- 步骤6白名单用户访问项目集 @1
- 步骤7项目集管理员访问项目集 @1
- 步骤8普通用户访问私有项目集创建者有权限 @1
- 步骤9子项目集访问测试当前数据条件下预期为0 @0
*/
// 1. 导入依赖
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/model.class.php';
// 2. zendata数据准备
$projectTable = zenData('project');
$projectTable->loadYaml('project_checkprogrampriv', false, 2)->gen(10);
$userTable = zenData('user');
$userTable->loadYaml('user_checkprogrampriv', false, 2)->gen(10);
// 3. 用户登录
su('admin');
// 4. 创建测试实例
$userTest = new userModelTest();
// 5. 准备测试数据
global $tester;
$projectModel = $tester->loadModel('project');
// 获取测试项目集
$openProgram = $projectModel->getByID(1); // 开放项目集 (acl: open, PM: admin, openedBy: admin)
$privateProgram = $projectModel->getByID(4); // 私有项目集 (acl: private, PM: admin, openedBy: user1)
$pmProgram = $projectModel->getByID(5); // PM项目集 (acl: private, PM: testpm, openedBy: user2)
$creatorProgram = $projectModel->getByID(6); // 创建者项目集 (acl: private, PM: testcreator, openedBy: testcreator)
$childProgram = $projectModel->getByID(9); // 子级项目集 (parent: 1)
// 模拟当前公司管理员设置通过testpm为PM的项目测试PM权限
$userModel = $tester->loadModel('user');
$user2Program = $projectModel->getByID(2); // PM为user1的项目集
// 准备权限数组
$stakeholders = array('stakeholder1' => 'stakeholder1', 'stakeholder2' => 'stakeholder2');
$whiteList = array('whitelist1' => 'whitelist1', 'whitelist2' => 'whitelist2');
$admins = array('testadmin' => 'testadmin');
// 6. 执行测试步骤
r($userTest->checkProgramPrivTest($openProgram, 'admin', array(), array(), array())) && p() && e('1'); // 步骤1管理员访问任何项目集
r($userTest->checkProgramPrivTest($user2Program, 'user1', array(), array(), array())) && p() && e('0'); // 步骤2项目集PM访问自己管理的项目集当前测试数据中user1不是系统管理员
r($userTest->checkProgramPrivTest($privateProgram, 'user1', array(), array(), array())) && p() && e('1'); // 步骤3项目集创建者访问自己创建的项目集
r($userTest->checkProgramPrivTest($openProgram, 'user1', array(), array(), array())) && p() && e('1'); // 步骤4普通用户访问公开项目集
r($userTest->checkProgramPrivTest($privateProgram, 'stakeholder1', $stakeholders, array(), array())) && p() && e('1'); // 步骤5干系人访问项目集
r($userTest->checkProgramPrivTest($privateProgram, 'whitelist1', array(), $whiteList, array())) && p() && e('1'); // 步骤6白名单用户访问项目集
r($userTest->checkProgramPrivTest($privateProgram, 'testadmin', array(), array(), $admins)) && p() && e('1'); // 步骤7项目集管理员访问项目集
r($userTest->checkProgramPrivTest($privateProgram, 'guest', array(), array(), array())) && p() && e('1'); // 步骤8普通用户访问私有项目集创建者有权限
r($userTest->checkProgramPrivTest($childProgram, 'admin', array(), array(), array())) && p() && e('0'); // 步骤9子项目集访问测试当前数据条件下预期为0