【发布时间】:2011-06-02 21:06:35
【问题描述】:
我正在尝试通过 ClickOnce 安装应用程序 - 具有某些最低权限。我想进行单元测试以断言我的应用程序没有使用所需安全策略不允许的任何附加功能。
我可以在我的单元测试中指定我想使用指定的清单来管理权限,调用我的库,然后断言没有引发安全异常吗?
如果有,怎么做?
谢谢!
【问题讨论】:
标签: .net security unit-testing clickonce
我正在尝试通过 ClickOnce 安装应用程序 - 具有某些最低权限。我想进行单元测试以断言我的应用程序没有使用所需安全策略不允许的任何附加功能。
我可以在我的单元测试中指定我想使用指定的清单来管理权限,调用我的库,然后断言没有引发安全异常吗?
如果有,怎么做?
谢谢!
【问题讨论】:
标签: .net security unit-testing clickonce
如果你想进行单元测试(单独测试),你必须
测试 SecurityManager 的权限逻辑
您可以使用方法将permissionLogic 提取到自己的类中
public class SecurityManager
{
bool IsAllowedToPrint(User user);
bool IsAllowedToAdminister(User user);
}
然后你编写单元测试
User user = CreateAdimistrator();
Assert.AreEqual(true, securityManager.IsAllowedToAdminister(user));
Contrologic(即 MVVM)使用权限逻辑
创建一个始终允许/禁止功能的模拟SecurityManager。 如果控制器按预期做出反应,则为控制器编写单元测试。
var allowEverythingMock = CreateSecurityManagerMockThatAllowsEverything();
var mvvm = CreateMvvm(allowEverythingMock );
Assert.IsNotNull(mvvm.GetAdminGui());
我不确定是否有一种简单的方法来创建集成测试,其中 Click-Once-App 实际使用真正的 SecurityManager 并且结果得到验证。
在获得有关目标的更多信息后更新
如果控制器按预期反应,则为控制器编写单元测试。
var controller = CreateCreate(Permission.Low);
try
{
// File io is not allowed with low permissions
controller.SaveTextAsFile("HellowWorld", @"c:\temp\UnittestResult.txt");
Assert.Fail("The Controller should have forbidden this");
} catch(PermissionException pex) {
// everything is ok. This specific exception was expected.
}
【讨论】: