0

Grails 1.3.5 で、selenium-rc、easyb、および spring-security-core プラグインがインストールされています。私が遭遇したこの1つのケースを除いて、すべてがうまく機能しているようです。次のマークアップを持つテスト中のページがあります。

<sec:ifAnyGranted roles='ROLE_ADMIN'>
    <span class="menuButton">
      <g:link mapping="adminPage">
        <g:message code="default.admin.label" default="--Admin--"/>
      </g:link>
    </span>
</sec:ifAnyGranted>

アプリケーションを正常に実行すると、すべて正常に動作します。通常のユーザーとしてログインしている場合、管理者リンクは表示されません。管理者としてログインすると、リンクが表示されます。テストを実行すると、誰がログインしてもチェックが失敗するため、管理者リンクが表示されません。

scenario "An Admin User logs into the system", {
   when "the user completes the login form with proper credentials", {

   grailsApplication = ApplicationHolder.application
   springSecurityService = ApplicationHolder.application.mainContext.getBean("springSecurityService")

   def userAdmin = new User(username: 'testAdmin', firstName: 'Test', lastName: 'Admin', enabled: true, password: springSecurityService.encodePassword("password")).save(flush: true)
   def roleAdmin = new Role(authority: 'ROLE_ADMIN').save(flush: true)
   UserRole.create(userAdmin, roleAdmin)

   selenium.openAndWait("/platform/login/auth")
   selenium.type('j_username', 'testAdmin')
   selenium.type('j_password', 'password')
   selenium.clickAndWait('signInBtn')

 }
 then "the user should be logged in and viewing their My Account page, as an admin", {
   selenium.isTextPresent("Welcome Test").shouldBe true
   selenium.isElementPresent('link=Admin').shouldBe true

 }
}

ifLoggedIn や ifNotLoggedIn などの他のタグは正常に機能します。これが既知の問題なのか、それとも他の情報なのか、誰でも知っていますか? ありがとう。

4

1 に答える 1

1

フラッシュを追加してみてください

 UserRole.create(userAdmin, roleAdmin, true)

http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/guide/4%20Required%20and%20Optional%20Domain%20Classes.html#4.2%20Authority%20Class

于 2010-10-15T21:09:33.173 に答える