2016-07-25 10 views
1

私は@WithMockUserを使用して、単純なスプリングブートWebサービスで基本認証で保護されたコントローラメソッドをテストしています。アノテーションは次のようになります。@WithMockUserはユーザー名、パスワードフィールドを無視しますか?

@WithMockUser(username = 'admin', password = 'mypassword', roles = ['ADMIN']) 

ユーザー名とパスワードのフィールドは無視されているようです。間違ったユーザー名やパスワードを指定しても、テストに合格します。ただし、役割フィールドは使用されているように見え、無効な​​役割でテストが失敗します。

おそらく私はこの注釈の役割を誤解していますが、セキュリティで保護されたメソッドに不正な資格情報が供給されていることを検証するために使用できるはずですか?

ありがとうございます!

--john

+0

いいえ、すべきではありません。これは、与えられたユーザで 'SecurityContext'を再投入します。それは他の何かをテストすることを許可しません。必要に応じて、セキュリティ設定を手動で登録するなど、Springs Mock MVCテストのサポートを使用してシステムテストまたは完全統合テストを行う必要があります。 –

答えて

0

あなたはSpring MVCのテスト(すなわち、MockMvc)を使用している場合は、次のような何かをするだろう:

mvc.perform(get("/").with(httpBasic("user","password"))) // ... 

これはのTesting HTTP Basic Authenticationセクションに記載されていSpring Securityリファレンスマニュアル。

埋め込みサーブレットコンテナを使用してSpringブートを起動するようにテストを設定した場合は、「基本HTTP認証(ユーザ名とパスワードを使用)」をサポートするSpring BootのTestRestTemplateを使用できます。

関連する問題