我正在尝试通过 ClickOnce 安装应用程序 - 具有某些最低权限。我想进行单元测试以断言我的应用程序不使用所需安全策略不允许的任何附加功能。
我可以在我的单元测试中指定我想使用指定的 list 来调节权限,调用我的库,然后断言没有抛出安全异常吗?
如果是这样,如何?
谢谢!
最佳答案
如果你想进行单元测试(隔离测试),你必须
测试SecurityManager 的permissionLogic
您可以将permissionLogic 提取到它自己的类有方法
public class SecurityManager
{
bool IsAllowedToPrint(User user);
bool IsAllowedToAdminister(User user);
}
然后你编写单元测试
User user = CreateAdimistrator();
Assert.AreEqual(true, securityManager.IsAllowedToAdminister(user));
Contrologic(即 MVVM)使用权限逻辑
创建一个始终允许/禁止功能的模拟 SecurityManager。
并为 Controller 编写单元测试,如果它按预期使用react。
var allowEverythingMock = CreateSecurityManagerMockThatAllowsEverything();
var mvvm = CreateMvvm(allowEverythingMock );
Assert.IsNotNull(mvvm.GetAdminGui());
我不确定是否有一种简单的方法来创建一个集成测试,其中 Click-Once-App 实际使用真正的 SecurityManager 并且结果得到验证。
获取有关目标的更多信息后更新
如果 Controller 按预期 react ,则为 Controller 编写单元测试。
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.
}
关于.net - 单元测试安全模型 ClickOnce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4585174/