このチュートリアルでは、シナリオに OAuth 2.0 認証セットアップ テストをすばやく追加するために使用できる Smart Test Template を作成する方法について説明します。
概要
このプロセスの概要は次のとおりです。
- .tst ファイルを作成し、空の REST クライアントを追加します。これは、Smart Test Template が認証を有効にするために使用するソース クライアントです。
- 認証サーバーにトークンを要求するようにクライアントを構成します。
- アクセス トークンとトークン タイプの変数を TestSuite 構成に追加します。
- JSON Data Bank ツールをクライアントにアタッチして、レスポンスからアクセス トークンとトークン タイプを抽出します。値は、カスタム列名 (デフォルト) ではなく、変数として抽出する必要があります。
- Smart Test Template (.stt) ファイルを作成して認証を必要とするテストに一致するようにリソース スイートを構成します。
- 親スイートに一致するリソース テンプレートを追加します。
- テスト スイート参照をリソース テンプレートに連結します。
- 認証を有効にする .tst ファイルを指すようにテスト スイート参照を構成します。
- 特定のパスに認証が必要な場合は、追加のリソース テンプレートをスイートに追加して、.stt が適用されたときに一致するテストを絞り込むことができます。
- HTTP ヘッダー出力をリソース テンプレートに追加し、トークン タイプとアクセス トークン変数をリクエストで送信する承認ヘッダーを含めます。
- すべての変更を保存し、認証が必要なテストにテンプレートを適用します。
Smart Test Template の構成に一致するテストを含む各テスト スイートの先頭に、テスト スイート参照が追加されます。スイートには、REST クライアントと JSON Data Bank、および抽出されたアクセス トークンとトークン タイプが含まれます。テスト スイート参照構成で [相対パスで保存] オプションが有効になっている場合は、生成されたテスト スイートの [テスト スイートの参照] フィールドを変更しなければならない場合があります。
認証ソースの設定
このセクションでは、OAuth 2.0 認証トークン情報をキャプチャするために使用される REST クライアントを含むテスト スイートを作成および構成する方法について説明します。
- SOAtest メニューから [ファイル] > [新規作成] > [テスト ファイル (.tst)] を選択します。
- プロジェクトのフォルダーと名前を指定します (たとえば "AuthSuite")。
- [次へ] をクリックし、[空] を選択します。
- [終了] をクリックし、新しいスイートをダブルクリックしてエディターで開きます。
- [変数] タブをクリックして [追加] をクリックします。
- 次の設定を使用して変数を構成します。
- [Name] フィールドに
access_token
と入力します。 - [Type] メニューから String を選択します。
- [Value] フィールドに
default_token
と入力します。
- [Name] フィールドに
- 変数を保存し、次の設定で別の変数を作成します。
- [Name] フィールドに
token_type
と入力します。 - [Type] メニューから String を選択します。
- [Value] フィールドに
default_type
と入力します。
- [Name] フィールドに
- 変数を保存して、スイートを右クリックします。
- ショートカットメニューから [新規] > [テスト...] を選択し、ウィザードで [標準テスト] > [REST Client] を選択します。
- [終了] をクリックし、[リソース] タブをクリックします。
- 認証サーバーへの URL を指定し、トークンを要求するために必要なログイン資格情報を含めます。OAuth 2.0 RFC によると、トークン リクエストには、使用している認証フローに応じて、付与タイプ、クライアント ID、クライアント シークレット、スコープなどの特定の情報セットを含める必要があります。詳細については OAuth 2.0 Authorization Framework を参照してください。資格情報を渡す方法は、アプリケーションによって異なります。たとえば、認証サーバーは、ペイロードで送信されたログイン資格情報を使用した POST 呼び出しを必要とする場合があります。次の例では、トークン リクエスト パラメーターは、multipart/form-data 形式を使用して REST Client ペイロードで送信されます。
- 変更を保存して、REST Client を右クリックします。
- ショートカットメニューから [出力の追加...] を選択し、ウィザードの [レスポンス] セクションから [トラフィック] を選択します。
- [JSON Data Bank] を選択し、[終了] をクリックします。
- クライアントを選択し、[テストの実行] ボタンをクリックして出力を入力します。
- access_token パラメーターを抽出し、 [変更] をクリックします。
- [データソース列] をクリックし、変数オプションを有効にします。
- access_token を選択し、[OK] をクリックします。
token_type
パラメーターを抽出し、 [変更] をクリックします。- [データソース列] をクリックし、変数オプションを有効にします。
token_type
を選択し、[OK] をクリックします。- 変更を保存します。
これで、REST Client は、認証サーバーから OAuth アクセス トークンとトークン タイプを抽出し、値を変数に格納するように構成されました。Smart Test Template が次のセクションで説明するように構成されている場合、スイートは、テンプレートの適用時に認証を必要とするテストにコピーされます。
Smart Test Template の作成
このセクションでは、認証が必要なテストに適用される Smart Test Template を作成する方法について説明します。
- Smart Test Templates ビューを開き、[テンプレートの追加] ボタンをクリックします。
- テンプレートの名前および場所を指定し、[次へ] をクリックします。テンプレートは、TestAssets フォルダーまたはそのサブフォルダーに保存する必要があります。
- [空] を選択し、 [終了] をクリックします。
- リソース スイートをダブルクリックし、[一致] フィールドでパターンを指定します。パターンは、ルールを適用するエンドポイントを識別する必要があります。リソースの一致の詳細については「SOAtest Smart API Test Generator のスコープ定義」を参照してください。
- リソース スイートを右クリックし、[新規追加] > [Resource Template] をクリックします。
- テンプレートを適用する必要のあるテストを特定するために、追加のパターン マッチング ロジック(REST メソッドやパス セグメントなど)を指定します。親リソース スイートによって一致するすべてのテストに一致するには、[一致] フィールドを空のままにします。
- リソース テンプレートを右クリックし、[出力の追加...] をクリックします。
- スイートのメニューから [開始] を選択し、[テスト スイートの参照] を選択します。
- [終了] をクリックし、「Configuring the Authentication Source」で作成した .tstファイル を指定します。[相対パスで保存] オプションを有効にした場合、テンプレートが適用されたときにテスト スイート構成で生成されるパスは、TestAssets フィールドに相対的です。
${project_loc}
変数を使って、別のプロジェクトのテストを参照できます。たとえば、作成した REST Client が auth というプロジェクトに保存され、.tst ファイルの名前が AuthSuite の場合、次のように指定できます:${project_loc:auth}/AuthSuite.tst
テンプレートが適用されると、参照へのパスが正しくなります。 - リソース テンプレートを再び右クリックし、[出力の追加...] をクリックします。
- リクエストのメニューから [トランスポート ヘッダー] を選択し、[HTTP ヘッダー] を選択します。
[終了] をクリックし、HTTP ヘッダー ツールの [ツール設定] セクションに次のヘッダーを追加します。
Authorization: ${access_token} ${token_type}
- 変更を保存します。
Smart Test Template の適用
このセクションでは、Smart Test Template を適用し、期待どおりに認証するためにテストに対して実行する必要のある、追加アクションに対処する方法について説明します。
テンプレートを単一のテストに適用する
- テストを右クリックし、[Apply Smart Test Template] を選択します。
- Smart Test Template ルールを確認し、[OK] をクリックします。
認証設定を含むテスト スイート参照は、テストを含むテスト スイートの先頭に追加されます。
テスト スイートを実行し、期待どおりに動作することを確認します。ターゲット テストを開き、[HTTP オプション] をクリックします。HTTP ヘッダー セクションに認証変数が表示されます。
ソース .tst ファイルを参照するときにプロジェクト変数を使用せず、Smart Test Template で [相対パスとして保存] オプションが有効になっている場合、生成されたテスト スイートに追加のパス セグメントが表示されることがあります。テストで認証スイートを適切に参照するために、パスを削除しなければならない場合があります。
テンプレートを複数のテストに適用する
- .tst ファイルまたは親テスト スイートを右クリックして [Apply Smart Test Template] を選択します。
- Smart Test Template ルールを確認し、[OK] をクリックします。
認証設定を含むテスト スイート参照は、一致するテストを含むテスト スイートの先頭に追加されます。
テスト スイートを実行し、期待どおりに動作することを確認します。ターゲット テストを開き、[HTTP オプション] をクリックします。HTTP ヘッダー セクションに認証変数が表示されます。
ソース .tst ファイルを参照するときにプロジェクト変数を使用せず、Smart Test Template で [相対パスとして保存] オプションが有効になっている場合、生成されたテスト スイートに追加のパス セグメントが表示されることがあります。テストで認証スイートを適切に参照するために、パスを削除しなければならない場合があります。