2011-01-03 10 views
4

ClickOnce経由でアプリケーションをインストールしようとしています。私は、私のアプリケーションが望むセキュリティポリシーによって許可されていない追加の機能を使用しないことを主張するユニットテストをしたいと思います。ユニットテストのセキュリティモデルClickOnce

私のユニットテストでは、指定したマニフェストを使用してアクセス許可を調整し、自分のライブラリを呼び出し、セキュリティ例外がスローされないことを宣言できますか?

もしそうなら、どうですか?

ありがとうございます!

答えて

0

あなたはユニットテスト(アイソレーションでテスト)にしたい場合は、

  • テストpermissionLogicに持っているとあなたが持っている
  • テストにごcontrologic(すなわちMVVM)が許可ロジックを使用していること。あなたはそして、あなたはユニットが

    User user = CreateAdimistrator(); 
    Assert.AreEqual(true, securityManager.IsAllowedToAdminister(user)); 
    

    をテストする書き込み方法

    public class SecurityManager 
    { 
    bool IsAllowedToPrint(User user); 
    bool IsAllowedToAdminister(User user); 
    } 
    

    、独自のクラスにpermissionLogicを抽出することができます

permissionLogic

ためテストのSecurityManager Contrologic(すなわち、 MVVM)は、許可ロジックを使用します。

機能を常に許可/禁止するmock-SecurityManagerを作成します。 コントローラが期待どおりに反応する場合は、コントローラの書き込みテストを行います。

var allowEverythingMock = CreateSecurityManagerMockThatAllowsEverything(); 
var mvvm = CreateMvvm(allowEverythingMock); 
Assert.IsNotNull(mvvm.GetAdminGui()); 

クリックワンスアプリは、実際に本物のセキュリティマネージャを使用して、結果が検証されます統合テストを作成する簡単な方法があれば、私はSHUREておりません。期待通りに反応した場合の目標は、コントローラの

書き込みユニットテストが何であるかについてもっとに関する情報を取得した後、

を更新。

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. 
} 
+0

私のアプリにはユーザーの概念がありません。実際には低許容のコンテキストで実行されるため、ファイルの書き込みや読み取りはできません私は私のプログラムをアプリケーションマニフェストに記述されている低い権限で実行できることをユニットテストで確かめたいと思っています。 – Max

+0

私の事例を更新しました。 「ユニットマニフェストを介して、アプリケーションマニフェストに記述されている低い権限でプログラムを実行できることを確認したい」あなたがファイルシステム/マニフェストを再検討しているので、あなたはユニットテストではない統合テストを探しています。申し訳ありませんが、マニフェストベースのClick-Once-Integrationテストを作成する経験はありません – k3b

+0

[testing-clickonce-applications?](http://stackoverflow.com/questions/730090/testing-clickonce-applications?) – k3b