Как можно протестировать AuthController, сгенерированный плагином Shiro Grails?
Я очень разочарован плагином Shiro для Grails. Во-первых, я пытаюсь настроить SecurityManager на основе ini, как предлагает учебник для начинающих для Shiro, и в документации нет ничего, что говорило бы мне о том, как все настраивается. Итак, после попыток выяснить это и, в конечном итоге, потерпеть неудачу, я просто признаю, что я должен идти с DbRealm
это было сгенерировано с помощью команды быстрого запуска. Теперь я пытаюсь выяснить, как все работает, создав модульный тест для сгенерированного AuthController
, Вот мой тестовый код:
void "registered user logs in with valid credentials"() {
given: "user 'root' is registered"
def username = "root"
def password = "secret"
new User(username: username, password: password).save();
when: "user logs in with correct credentials"
params.username = username
params.password = password
controller.signIn();
then: "user should be authenticated"
assertTrue SecurityUtils.subject.authenticated
}
Я все еще не уверен, как проверить, действительно ли пользователь вошел в систему, поэтому я подумал, что код в then
блок должен быть в порядке на данный момент. Тем не менее, каждый раз, когда я пытаюсь протестировать приложение с grails test-app
Я всегда получаю:
org.apache.shiro.UnavailableSecurityManagerException: No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton. This is an invalid application configuration.
at org.apache.shiro.SecurityUtils.getSecurityManager(SecurityUtils.java:123)
Я не совсем новичок в Grails, но с тех пор, как я последний раз пользовался им, прошло очень много времени, и у меня никогда не было такого большого знакомства с фреймворком. Тем не менее, я знаю, что это должно сделать вещи менее сложными в настройке, но плагин Shiro доставляет мне трудные времена.
Итак, как мне сконфигурировать свое приложение и / или протестировать сгенерированный AuthController
?