Как проверить, называется ли метод быстрого обслуживания

У меня есть правило безопасности, согласно которому вновь зарегистрированный пользователь имеет полные права доступа к своей собственной сущности пользователя. Я использую 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 и allowBuilderService, но свободный интерфейс для accessBuilderService требует, чтобы разные объекты возвращались из каждого вызова метода в цепочке (т.е..Allow (...). For (...). On (...) так далее). Но я не могу найти способ издеваться над каждым из объектов в цепочке.

Есть ли способ проверить, вызывается ли метод AllowmissionBuilderService, но игнорируется остальная часть цепочки?

Спасибо Дэн

1 ответ

Решение

Я также столкнулся с этим и в итоге обернул функциональность Rhino Security в сервисный уровень по двум причинам:

  1. Это делало модульное тестирование настоящей PITA, и, потратив пару часов, ударившись головой о кирпичную стену, этот подход позволил мне намного проще издеваться над этим слоем.
  2. Я начал чувствовать, что Rhino Security очень тесно связан с моим контроллером (мое приложение использует MVC). Заключение вызовов в другом слое позволило мне ослабить связь с конкретной реализацией безопасности и позволит мне легко поменять его с другим - если я так выберу - в будущем.

Очевидно, что это только один подход. Но это сделало мою жизнь намного проще...

Другие вопросы по тегам