【问题标题】:Unit testing security model ClickOnce单元测试安全模型 ClickOnce
【发布时间】:2011-06-02 21:06:35
【问题描述】:

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

我可以在我的单元测试中指定我想使用指定的清单来管理权限,调用我的库,然后断言没有引发安全异常吗?

如果有,怎么做?

谢谢!

【问题讨论】:

    标签: .net security unit-testing clickonce


    【解决方案1】:

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

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

    测试 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.
    }
    

    【讨论】:

    • 我不确定我是否关注你...我的应用程序没有用户的概念,事实很简单,它将在低许可上下文中运行,因此无法写入/随机读取文件等。我想通过单元测试确保我可以使用应用程序清单中描述的低权限运行我的程序......
    • 我已经更新了我的示例。 “我想通过单元测试确保我可以使用应用程序清单中描述的低权限运行我的程序”。由于您正在引用文件系统/清单,因此您正在寻找集成测试而不是单元测试。抱歉,我没有编写基于清单的 Click-Once-Integrationtests 的经验
    • 不完全是我想要的,但足够接近我会接受答案!希望得到一个答案,告诉我如何在实际的低权限环境中运行我的测试。那会让我运行我的代码,如果没有抛出异常,那么一切都很好。不过会有问题。
    猜你喜欢
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 2015-06-24
    • 2017-12-19
    • 2010-12-26
    • 1970-01-01
    相关资源
    最近更新 更多