Class HttpRequestTestSupportHandler

java.lang.Object
nablarch.test.core.http.HttpRequestTestSupportHandler
All Implemented Interfaces:
Handler<HttpRequest,HttpResponse>, HttpRequestHandler

@Published public class HttpRequestTestSupportHandler extends Object implements HttpRequestHandler
HTTPリクエストのテスト時に先頭の設定するリクエストハンドラ。
本クラスでは、以下の処理を行う。
  • テストクラスから指定されたExecutionContextを、 handleメソッドの引数のExecutionContextへ移送する。
  • ExecutionContext#handleNext呼び出し後のExecutionContextの情報を テストクラスから指定されたExecutionContextへ移送する。
  • ハンドラキューの処理結果となるHttpResponseオブジェクトのステータスコードを アサートできるようにスタティック変数として保持しておく。
HttpRequestTestSupport.execute(Class, String, HttpRequest, ExecutionContext)から nablarch.fw.web.HttpServer#handle(HttpRequest, ExecutionContext)が呼ばれるが、 ここで引数にExecutionContextを渡しても使用されない。 (nablarch.fw.Handler#handle(Object, nablarch.fw.ExecutionContext)を実装する為、 引数として用意されているだけで、実際には使用しない) 実際には内蔵サーバ内で新たに生成されたExecutionContextが使用される。 テストクラス側で生成したExecutionContextの情報を使用してテストを行う為に、 本ハンドラにて移送を行う。

また、コンテンツパスを指定してレスポンスを行った場合、 内蔵サーバからは一律ステータスコード200が返却される。 (JSP等のリソースに対するサーブレットフォーワードは全てこれに含まれる。) このため、HttpResponseオブジェクトのステータスコードと、クライアントに対する 実際のレスポンスコードが一致しなくなるので、本ハンドラにHttpResponseオブジェクトのステータス コードを保持しておき、後続のアサート処理で参照する。 ただし、リダイレクトの場合はServletAPI(HttpServletResponse.sendRedirect(String)) を使用しているため、HttpResponseにはリダイレクトのステータスコードは設定されない。 (ステータスコードの設定をコンテナに任せているため) 従って、リダイレクトの場合のステータスコードは、本クラスではなく、 コンテナが返却するレスポンスから取得する必要がある。

See Also:
  • Field Details

    • NABLARCH_JETTY_CONNECTOR_LATCH

      public static final String NABLARCH_JETTY_CONNECTOR_LATCH
      CountDownLatchのキー。 サーバ側の処理完了を待つためのラッチを格納・取得する用途に使用する。
      See Also:
  • Constructor Details

    • HttpRequestTestSupportHandler

      public HttpRequestTestSupportHandler(HttpTestConfiguration config)
      コンストラクタ。
      Parameters:
      config - HttpTestConfiguration
  • Method Details