Как проверить, называется ли метод быстрого обслуживания
У меня есть правило безопасности, согласно которому вновь зарегистрированный пользователь имеет полные права доступа к своей собственной сущности пользователя. Я использую 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 в сервисный уровень по двум причинам:
- Это делало модульное тестирование настоящей PITA, и, потратив пару часов, ударившись головой о кирпичную стену, этот подход позволил мне намного проще издеваться над этим слоем.
- Я начал чувствовать, что Rhino Security очень тесно связан с моим контроллером (мое приложение использует MVC). Заключение вызовов в другом слое позволило мне ослабить связь с конкретной реализацией безопасности и позволит мне легко поменять его с другим - если я так выберу - в будущем.
Очевидно, что это только один подход. Но это сделало мою жизнь намного проще...