Как можно протестировать 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?

0 ответов

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