Class HttpRequestTestSupport

java.lang.Object
nablarch.test.event.TestEventDispatcher
nablarch.test.core.http.HttpRequestTestSupport
Direct Known Subclasses:
AbstractHttpRequestTestTemplate

@Published public class HttpRequestTestSupport extends TestEventDispatcher
HTTPリクエストテスト用の基底クラス。
  • Field Details

    • testClass

      protected final Class<?> testClass
      テストクラス
  • Constructor Details

    • HttpRequestTestSupport

      public HttpRequestTestSupport(Class<?> testClass)
      コンストラクタ。
      Parameters:
      testClass - テストクラス
    • HttpRequestTestSupport

      protected HttpRequestTestSupport()
      コンストラクタ
      本メソッドはサブクラスから使用されることを想定している。
  • Method Details

    • execute

      protected HttpResponse execute(String caseName, HttpRequest req, ExecutionContext ctx)
      自動テスト用HTTPサーバを使用して、リクエスト単体テストを実現する。
      Parameters:
      req - テスト対象のアクションを呼び出すためのHttpRequest
      caseName - テストケース名
      ctx - ExecutionContext
      Returns:
      HttpResponse
    • initializeIfNotYet

      protected void initializeIfNotYet(HttpTestConfiguration config, File dumpDir, String className)
      初回時のみ初期化を実行する。
      Parameters:
      config - HttpTestConfiguration
      dumpDir - HTMLダンプ先のディレクトリ
      className - テストクラス
    • execute

      public HttpResponse execute(Class<?> testClass, String caseName, HttpRequest req, ExecutionContext ctx)
      自動テスト用HTTPサーバを使用して、リクエスト単体テストを実現する。
      Parameters:
      testClass - テストクラス
      req - テスト対象のアクションを呼び出すためのHttpRequest
      caseName - テストケース名
      ctx - ExecutionContext
      Returns:
      HttpResponse
    • createHttpServer

      protected HttpServer createHttpServer(HttpTestConfiguration config)
      HttpServerを生成する。
      Parameters:
      config - HttpTestConfiguration
      Returns:
      HTTPサーバ
    • getTestSupportHandler

      public static HttpRequestTestSupportHandler getTestSupportHandler()
      サポートハンドラを取得する。
      Returns:
      サポートハンドラ
    • prepareHandlerQueue

      protected void prepareHandlerQueue(List<Handler> handlerQueue)
      ハンドラキューの準備を行う。
      Parameters:
      handlerQueue - ハンドラキュー
    • createHttpServer

      protected HttpServer createHttpServer()
      HttpServerのインスタンスを生成する。
      Returns:
      HttpServerのインスタンス
    • copyHtmlResourceToDumpDir

      protected void copyHtmlResourceToDumpDir(HttpTestConfiguration config, File destDir, ResourceLocator warBaseLocator)
      HTMLリソースをダンプファイルの出力ディレクトリへコピーする。
      Parameters:
      config - HttpTestConfiguration
      destDir - 出力ディレクトリ
      warBaseLocator - warベースディレクトリのリソースロケータ
    • deleteHtmlResourceFile

      protected void deleteHtmlResourceFile(File srcDir, File destDir)
      ダンプディレクトリのHTMLリソースファイルを削除する。
      Parameters:
      srcDir - HTMLリソースフォルダ
      destDir - HTMLリソースのコピーフォルダ
    • rewriteResourceFile

      protected void rewriteResourceFile(HttpTestConfiguration config, File dumpDir, ResourceLocator warBaseLocator)
      HTMLリソースディレクトリ内のCSSファイルを置換する。

      出力したCSSファイルのタイムスタンプには、出力元CSSファイルのタイムスタンプを設定する。 次回、出力時にはタイムスタンプに変更がない限り、出力は行わない。

      Parameters:
      config - HttpTestConfiguration
      dumpDir - 出力先ディレクトリ
      warBaseLocator - warベースのリソースロケータ
    • rewritePath

      protected String rewritePath(String text, String replaceAbsolutePath)
      静的リソース内のパスを置き換える。
      Parameters:
      text - 文字列
      replaceAbsolutePath - ファイルの絶対パスからwarのルートパスを取り除いたパス。
      Returns:
      置換後の文字列
    • getAbsoluteCssUriPrefix

      protected String getAbsoluteCssUriPrefix(String uri, String replaceAbsolutePath)
      URI型の絶対パス参照文字列から、URIのプレフィックスを取得する。
      Parameters:
      uri - URI型の絶対パス参照文字列
      replaceAbsolutePath - HTMLリソースの絶対パスからwarのルートパスを取り除いたパス。
      Returns:
      URIのプレフックス
    • getFileFilter

      protected FileFilter getFileFilter(HttpTestConfiguration config)
      FileFilterを取得する。
      Parameters:
      config - HttpTestConfiguration
      Returns:
      FileFilter
    • setHttpHeader

      protected static void setHttpHeader(HttpRequest req, HttpTestConfiguration config)
      HTTPHeaderを設定する。
      すでにHttpRequestに設定されている項目は、設定しない。
      Parameters:
      req - HTTPHeaderを設定するHttpRequest
      config - HttpTestConfiguration
    • assertForward

      public void assertForward(String msg, String expectedUri)
      フォワード先URIが想定通りであることを表明する。
      Parameters:
      msg - アサート失敗時のメッセージ
      expectedUri - 期待するフォワード先URI
    • assertStatusCode

      protected void assertStatusCode(String message, int expected, HttpResponse response)
      ステータスコードが想定通りであることを表明する。

      内蔵サーバから戻り値で返却されたHTTPレスポンスがリダイレクトである場合、 ステータスコードが303または302であることを表明する。 このとき、内蔵サーバから返却されるHTTPレスポンスと比較しないのは、後方互換性を保つためである。 (内蔵サーバは、リダイレクト時のステータスコードに'302 FOUND'を使用する)

      上記以外の場合は、HttpRequestTestSupportHandler.getStatusCode() のステータスコードを比較対象とする。

      Parameters:
      message - アサート失敗時のメッセージ
      expected - 期待するステータスコード値
      response - HTTPレスポンス
      See Also:
    • is3XXStatusCode

      public boolean is3XXStatusCode(int statusCode)
      300系の HTTP ステータスコードかどうか判定する
      Parameters:
      statusCode - 判定対象のHTTPステータスコード
      Returns:
      300系の HTTP ステータスコードであれば true
    • assertApplicationMessageId

      public void assertApplicationMessageId(String expectedCommaSeparated, ExecutionContext actual)
      メッセージIDのアサートを行う。
      Parameters:
      expectedCommaSeparated - 期待するメッセージID(カンマ区切り)
      actual - 実行結果(メッセージIDをリクエストスコープにもつExecutionContext)
    • assertApplicationMessageId

      public void assertApplicationMessageId(String msg, String expectedCommaSeparated, ExecutionContext actual)
      メッセージIDのアサートを行う。
      Parameters:
      msg - 任意のメッセージ
      expectedCommaSeparated - 期待するメッセージID(カンマ区切り)
      actual - 実行結果(メッセージIDをリクエストスコープにもつExecutionContext)
    • assertApplicationMessageId

      public void assertApplicationMessageId(String[] expected, ExecutionContext actual)
      メッセージIDのアサートを行う。
      Parameters:
      expected - 期待するメッセージIDの配列
      actual - 実行結果(メッセージIDをリクエストスコープにもつExecutionContext)
    • assertApplicationMessageId

      public void assertApplicationMessageId(String msg, String[] expected, ExecutionContext actual)
      メッセージIDのアサートを行う。
      Parameters:
      msg - 任意のメッセージ
      expected - 期待するメッセージIDの配列
      actual - 実行結果(メッセージIDをリクエストスコープにもつExecutionContext)
    • setValidToken

      public void setValidToken(HttpRequest request, ExecutionContext context)
      有効なトークンをリクエストパラメータとセッションスコープに設定する。
      二重サブミットを防止しているアクションのメソッドをテストする場合は、このメソッドを呼び出しトークンを設定する。
      Parameters:
      request - テスト対象のアクションを呼び出すためのHttpRequest
      context - ExecutionContext
    • setToken

      public void setToken(HttpRequest request, ExecutionContext context, boolean valid)
      トークンをリクエストパラメータとセッションスコープに設定する。
      引数validが真の場合、有効なトークンを設定する。偽の場合はトークンを無効にする。
      Parameters:
      request - テスト対象のアクションを呼び出すためのHttpRequest
      context - ExecutionContext
      valid - 有効なトークンを設定するかどうか
    • createHttpRequest

      public HttpRequest createHttpRequest(String requestUri, String httpMethod, Map<String,String[]> params)
      リクエストパラメータを作成する。
      Parameters:
      requestUri - リクエストURI
      httpMethod - HTTPメソッド
      params - パラメータが格納されたMap
      Returns:
      リクエストパラメータ
    • createHttpRequest

      public HttpRequest createHttpRequest(String requestUri, Map<String,String[]> params)
      リクエストパラメータを作成する。
      Parameters:
      requestUri - リクエストURI
      params - パラメータが格納されたMap
      Returns:
      リクエストパラメータ
    • createHttpRequestWithConversion

      public HttpRequest createHttpRequestWithConversion(String requestUri, String httpMethod, Map<String,String> commaSeparated, Map<String,String> cookie, Map<String,String> queryParams)
      リクエストパラメータを作成する。
      Parameters:
      requestUri - リクエストURI
      httpMethod - HTTPメソッド
      commaSeparated - パラメータが格納されたMap
      cookie - Cookie情報が格納されたMap
      queryParams - クエリパラメータ情報が格納されたMap
      Returns:
      リクエストパラメータ
    • createHttpRequestWithConversion

      public HttpRequest createHttpRequestWithConversion(String requestUri, Map<String,String> commaSeparated, Map<String,String> cookie)
      リクエストパラメータを作成する。
      Parameters:
      requestUri - リクエストURI
      commaSeparated - パラメータが格納されたMap
      cookie - Cookie情報が格納されたMap
      Returns:
      リクエストパラメータ
    • createHttpRequestWithConversion

      public HttpRequest createHttpRequestWithConversion(String requestUri, String httpMethod, Map<String,String> commaSeparated, Map<String,String> cookie)
      リクエストパラメータを作成する。
      Parameters:
      requestUri - リクエストURI
      httpMethod - HTTPメソッド
      commaSeparated - パラメータが格納されたMap
      cookie - Cookie情報が格納されたMap
      Returns:
      リクエストパラメータ
    • createExecutionContext

      public ExecutionContext createExecutionContext(String userId)
      ExecutionContextを生成する。
      Parameters:
      userId - セッションスコープに格納するユーザID
      Returns:
      生成したExecutionContext
    • getDumpFile

      protected File getDumpFile(ExecutionContext ctx)
      HTTPレスポンスボディが出力されたファイルを取得する。
      Parameters:
      ctx - ExecutionContext
      Returns:
      ファイル。HTTPダンプ出力が無効な場合はnull
    • setDumpFile

      protected void setDumpFile(ExecutionContext ctx, File file)
      HTTPレスポンスボディが出力されたファイルを設定する。
      Parameters:
      ctx - ExecutionContext
      file - ファイル
    • setUpDb

      public void setUpDb(String sheetName)
      DbAccessTestSupport.setUpDb(String)への委譲メソッド。
      Parameters:
      sheetName - シート名
      See Also:
    • setUpDb

      public void setUpDb(String sheetName, String groupId)
      Parameters:
      sheetName - シート名
      groupId - グループID
      See Also:
    • assertSqlResultSetEquals

      public void assertSqlResultSetEquals(String message, String sheetName, String id, SqlResultSet actual)
      Parameters:
      message - 比較失敗時のメッセージ
      sheetName - 期待値を格納したシート名
      id - シート内のデータを特定するためのID
      actual - 実際の値
      See Also:
    • assertSqlRowEquals

      public void assertSqlRowEquals(String message, String sheetName, String id, SqlRow actual)
      Parameters:
      message - 比較失敗時のメッセージ
      sheetName - 期待値を格納したシート名
      id - シート内のデータを特定するためのID
      actual - 実際の値
    • getListMap

      public List<Map<String,String>> getListMap(String sheetName, String id)
      Parameters:
      sheetName - シート名
      id - ID
      Returns:
      List-Map形式のデータ
      See Also:
    • getListParamMap

      public List<Map<String,String[]>> getListParamMap(String sheetName, String id)
      Parameters:
      sheetName - シート名
      id - ID
      Returns:
      List-Map<String, String[]>形式のデータ
      See Also:
    • getParamMap

      public Map<String,String[]> getParamMap(String sheetName, String id)
      Parameters:
      sheetName - シート名
      id - ID
      Returns:
      Map<String,String[]>形式のデータ
      See Also:
    • assertTableEquals

      public void assertTableEquals(String sheetName)
      Parameters:
      sheetName - 期待値を格納したシート名
      See Also:
    • assertTableEquals

      public void assertTableEquals(String sheetName, String groupId)
      Parameters:
      sheetName - 期待値を格納したシート名
      groupId - グループID(オプション)
      See Also:
    • assertTableEquals

      public void assertTableEquals(String message, String sheetName, String groupId)
      Parameters:
      message - 比較失敗時のメッセージ
      groupId - グループID(オプション)
      sheetName - 期待値を格納したシート名
      See Also:
    • assertEntity

      public void assertEntity(String sheetName, String id, Object actual)
      Parameters:
      sheetName - シート名
      id - ケース表のID(LIST_MAP=testの場合は、testを指定する。)
      actual - 実行結果のオブジェクト(Java Beansオブジェクト)
    • assertObjectPropertyEquals

      public void assertObjectPropertyEquals(String message, String sheetName, String id, Object actual)
      Object に設定されたプロパティをアサートする。
      チェック条件の詳細は Assertion.assertProperties(java.util.Map, Object) を参照。
      Parameters:
      message - メッセージ
      sheetName - シート名
      id - ケース表のID(LIST_MAP=testの場合は、testを指定する。)
      actual - 実際の値
    • assertObjectArrayPropertyEquals

      public void assertObjectArrayPropertyEquals(String message, String sheetName, String id, Object[] actual)
      Object配列に設定されたプロパティをアサートする。
      チェック条件の詳細は Assertion.assertProperties(java.util.Map, Object) を参照。
      Parameters:
      message - メッセージ
      sheetName - シート名
      id - ケース表のID(LIST_MAP=testの場合は、testを指定する。)
      actual - 実際の値
    • assertObjectListPropertyEquals

      public void assertObjectListPropertyEquals(String message, String sheetName, String id, List<?> actual)
      Object に設定されたプロパティをアサートする。
      チェック条件の詳細は Assertion.assertProperties(java.util.Map, Object) を参照。
      Parameters:
      message - メッセージ
      sheetName - シート名
      id - ケース表のID(LIST_MAP=testの場合は、testを指定する。)
      actual - 実際の値
    • resetHttpServer

      public static void resetHttpServer()
      キャッシュした HttpServer をリセットする。