0

新しく登録されたユーザーが自分のユーザーエンティティに対する完全なアクセス許可を持つというセキュリティルールがあります。Rhino.Securityを使用していて、コードは正常に機能しますが、単体テストを作成して、アクセス許可を設定するための適切な呼び出しが行われることを確認したいと思います。コードの簡略化されたバージョンは次のとおりです。

public User Register(UserRegisterTask userRegistrationTask) {
   User user = User.Create(userRegistrationTask);
   this.userRepository.Save(user);

   // Give this user permission to do operations on itself
   this.permissionsBuilderService.Allow("Domain/User")
       .For(user)
       .On(user)
       .DefaultLevel()
       .Save();

   return user;
}

userRepositoryとpermissionBuilderServiceをモックしましたが、permissionBuilderServiceの流暢なインターフェイスでは、チェーン内の各メソッド呼び出しから異なるオブジェクトを返す必要があります(つまり、.Allow(...)。For(...)。On(。。 。)など)。しかし、チェーン内の各オブジェクトをモックする方法が見つかりません。

permitBuilderServiceのAllowメソッドが呼び出されているが、チェーンの残りの部分を無視しているかどうかをテストする方法はありますか?

ありがとうダン

4

1 に答える 1

0

また、これに遭遇し、2つの理由でRhinoセキュリティ機能をサービスレイヤーにラップすることになりました。

  1. それはユニットテストを実際のPITAにし、レンガの壁に頭をぶつけて数時間過ごした後、このアプローチにより、このレイヤーをはるかに簡単にモックすることができました。
  2. Rhino Securityがコントローラーに非常に緊密に結合されていると感じ始めました(私のアプリケーションはMVCを使用しています)。呼び出しを別のレイヤーでラップすることで、特定のセキュリティ実装への結合を緩めることができ、将来、別のレイヤーと簡単に交換できるようになります。

明らかに、これは1つのアプローチにすぎません。しかし、それは私の人生をはるかに楽にしてくれました...

于 2011-07-21T20:27:47.530 に答える