です。Grails Spring Security CoreとGrails Spring Security REST pluginを使用しています。私はUser
クラスとAuthority
クラス(デフォルト)でプラグインを初期化し、guide I found on the Grails websiteの後に統合テストを書くようになりました。grails統合テストで作成された保護されたユーザーは無許可ですが、ブートストラップされたユーザーは
これは、統合テストに次のように置くことを言った:
def "test a user with the role ROLE_BOSS is able to access /api/announcements url"() {
when: 'login with the sherlock'
RestBuilder rest = new RestBuilder()
def resp = rest.post("http://localhost:${serverPort}/api/login") {
accept('application/json')
contentType('application/json')
json {
username = 'sherlock'
password = 'elementary'
}
}
then:
resp.status == 200
resp.json.roles.find { it == 'ROLE_BOSS' }
}
私は先に行って、類似した何かをしたし、それがブートストラップUser
で働いていたが、私はUser
とまったく同じテストを行うことをしようとしたときテストメソッド自体で作成された場合、401
HTTP応答コードで失敗します。
私が実行しようとしているコード:
void "check get access token"() {
given:
RestBuilder rest = new RestBuilder()
new User(username: "securitySpecTestUserName", password: "securitySpecTestPassword").save(flush: true)
assert User.count == 2
when:
def resp = rest.post("http://localhost:${serverPort}/api/login") {
accept('application/json')
contentType('application/json')
json {
username = "securitySpecTestUserName"
password = "securitySpecTestPassword"
}
}
then:
resp.status == 200
}
ノートが1 User
がBootstrap.groovy
であり、もう1つは試験方法で作成しますので、User.count == 2
主張が通ること。
ブートストラップされたUser
を使用すると、この方法で作成されたものの問題は発生しません。このようにしてgrails-spring-security-rest
プラグインに含まれている/api/login
エンドポイントをテストできるように、この統合テストを書く方法はありますか?
あなたがチェックすることができ、accountLocked、accountExpiredがtrueに設定されていますか? – dynamo
@dynamo残念なことに 'enabled = true'、' accountExpired = false'、 'accountLocked = false'、' passwordExpired = false'は、ブートストラップされたユーザーと同じです。 –