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

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

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

Спасибо, Дэн

1 Ответ

0 голосов
/ 22 июля 2011

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

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

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

...