2017-01-24 12 views
1

リクエストマップを使用して春のセキュリティで保護されたAPIをテストしたいと思います。 APIは主に認証されたユーザーによって使用されるため、ログインしたユーザーでAPIをテストする必要があります。私は、ユーザーが認証されなければならないAPIを呼び出す前に統合テストで休憩クライアントと春のセキュリティセッションを共有する方法

testCompile "org.grails:grails-datastore-rest-client:6.0.5.RELEASE" 

を使用し、残りのクライアントのための試験で

。私は、セットアップ中に、次の試してみました:

springSecurityService.reauthenticate "admin" 

再認証の呼び出しにもかかわらず、残りのクライアントを検出することができたセッションが存在しない、したがって、ステータスコードが302である - >ログインページにリダイレクトします。

void "test fetching execution statistic"() { 
    given: 
    RestBuilder rest = new RestBuilder() 
    when: 
    //requestHeaders.add("Cookie", "JSESSIONID=" + session.getValue()); 

    RestResponse response = rest.post("http://localhost:8080/correctionStatistic/executionStatistic") { 
     json([ 
       reportingPeriod_year: 2008, 
       reportingPeriod_month: 01 
     ]) 
    } 
    then: 
    response.status == 200 
} 

セッションは残りのクライアントとどのように共有できますか?コメント行でわかるように、リクエストヘッダにセッションIDを追加する方法がありますが、統合テストでセッションIDを要求する方法もあります。

答えて

0

Spring Security Core Pluginをそのまま使用し、保護されたURL(エンドポイント)に従来のステートフルチェーンを実装する場合は、Gebを使用して機能テストケースを作成できます。

しかし、あなたはSpring Security Rest Pluginを使用して、URLのステートレスチェーンを実装している場合は、あなたの必要性は、最初のapi/loginエンドポイントをヒットし、あなたのアクセストークンを取得し、その後のリクエストでAuthorizationヘッダとfutherの要求をします。

詳細ガイドhereがあります。

こちらがお役に立てば幸いです。

関連する問題