.net - 单元测试安全模型 ClickOnce

标签 .net security unit-testing clickonce

我正在尝试通过 ClickOnce 安装应用程序 - 具有某些最低权限。我想进行单元测试以断言我的应用程序不使用所需安全策略不允许的任何附加功能。

我可以在我的单元测试中指定我想使用指定的 list 来调节权限,调用我的库,然后断言没有抛出安全异常吗?

如果是这样,如何?

谢谢!

最佳答案

如果你想进行单元测试(隔离测试),你必须

  • 测试permissionLogic,你必须
  • 测试您的控制逻辑(即 MVVM)是否使用权限逻辑。

  • 测试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/

    相关文章:

    c# - 错误设置断点,但仅在调试时在某些行上设置断点

    .net - C++/命令行界面 : linker gives "unresolved token" for win32 function

    security - Heroku + SSL 端点 + 来自 goDaddy 的 SSL 证书。安全吗

    oracle - 在oracle中创建密码字段

    c# - BinaryWriter Endian 问题

    c# - 如何使用 C# 获取打印作业状态

    security - JWT(Json 网络 token )与自定义 token

    javascript - Jasmine ,AngularJS : Unit test a function which returns a value after timeout

    unit-testing - 对象模拟是否被广泛使用?

    c# - 禁用 FakeItEasy 的 AutoMocking