2012-05-01 15 views
0

私はジャージの休憩サービスで春のWebアプリケーションを持っています。しかし、安心は春のセキュリティで保証され、ログインプロセスはユニットテストコードから実行するのが非常に難しいです。私は、春のセキュリティを無効にして休憩サービスをテストしたいと思います。それも可能ですか?春のセキュリティで春のアプリケーションでRESTをテストする方法

答えて

0

注釈ベースのWebサービスの利点の1つは、それらを簡単にユニットテストできることです。

class WebServiceEndpoint { 

    @Path("/foo/{fooId}") 
    @POST 
    @Produces({ MediaType.APPLICATION_XML }) 
    public Response doFoo(@PathParam("fooId") Integer fooId) { 
     /// ... web service endpoint implementation 
    } 

} 

あなたはセキュリティのためにSpringのサーブレットフィルタを使用している場合は、あなただけの新しいWebServiceEndpointクラスを作成し、メソッドを呼び出すことができますので、その後、doFoo方法で任意のセキュリティ関連のコードがあってはなりません。それがセキュリティを「無効にする」方法の1つです。

ログインプロセスが「難しい」と言ったら、どういう意味ですか?一度ログインすると、他の単体テストで同じコードを再利用できます(例:@Beforeメソッド)。

0

ただpojoとしてテストしてください。何かを渡し、何でも返す、アプリコンテキストをロードしない - それは統合テストです。

フレームワークをロードせずに機能を簡単にテストする機能は、バネの主な利点の1つです。

0

「ハード」とは言わないので、テスト結果を必要とするJavaメソッドでRESTサービスに何かがあると仮定しています。 Springは認証結果を嘲笑するためのユーティリティを持っています。たとえば、あなたが@Beforeセットアップ方法で、次の操作を行うことができます。

Object principal = null; // fix this 
Object credentials = null; // fix this 
Authentication auth = new org.springframework.security.authentication.TestingAuthenticationToken(principal, credentials); 
SecurityContextHolder.getContext().setAuthentication(auth); 

しかし、再び、あなたは

...あなたが実際に解決しようとしている何を問題としていません
関連する問題