最近のアクセス:
REST オブジェクト用のテストの作成

この機能により、HTTP 経由でプロシージャーを呼び出すことで、REST サービスとして公開されるプロシージャーのテストが可能になります。

テストの作成

Rest Test オブジェクトを作成する方法は 2つあります。
最初の推奨オプションは、プロシージャーのコンテキストメニューの [ REST テストを作成 ] オプションを使用することです。
イメージ:51318.png
作成時に、現在の環境の [ Rest Test Base URL ] プロパティが設定されていない場合は、自動的に生成され、環境のバックエンドの Web Root を使用して設定されます。
これにより、コンテキストメニューから Unit Test オブジェクトが作成されるように、Rest Test オブジェクトが自動的に生成されます。つまり、REST テストと並行して、テストが依存するすべてのデータと、その構造のデータを記述する SDT をロードするための、関連付けられた Data Provider オブジェクトが見つかります。
イメージ:51495.png
生成されるこの REST テストと生成されるユニットテストの主な相違点は、SDT に想定されるレスポンスの HTTP ステータスコード用の追加フィールドが含まれ、テストオブジェクトにソースコードおよび変数も含まれるという点です。
テストは、少なくとも次の 3つの追加の変数とともに生成されます:
  • &HttpClient: 情報をロードし、テスト対象のサービスへのリモートの呼び出しを実行するための変数。
  • &RequestBody: HTTP リクエストの本文をロードするための変数。
  • &RestSettings: 環境のベース URL をロードするための変数。
ただし、アプリケーションで GAM の統合セキュリティが有効になっている場合、テスト内で認証を行うために、さらに次の変数も生成されます:
  • &GAMApplication: クライアント ID およびクライアントシークレットの取得に使用される変数。
  • &LoginAdditionalParameters: 認証タイプのような追加のログインパラメーターを保持するオブジェクト。
  • &OAuthAdditionalParameters: 資格情報のスコープのような追加のログインパラメーターを保持するオブジェクト。
  • &AccessToken: ログイン後に OAuth アクセストークンを格納するための変数。
前述のように、アプリケーションで GAM の統合セキュリティが有効になっている場合、生成される SDT にいくつかの追加フィールド (User および Password) が提供されます。
ユーザーフィールドおよびパスワードフィールドに資格情報を指定する必要があるため、生成されたテストデータを編集することをお勧めします。その際には、少なくとも別のステータスコードをテストすることを強くお勧めします。たとえば、正しい資格情報を指定する場合は ExpectedStatusCode を 200 に設定し、空のままにする場合は 401 に設定します。
イメージ:51496.png

GAM 認証が有効になっていない場合の REST テストの例

/* Autogenerated Rest test code for Procedure 'Procedure1' */ 

Do 'Prepare Client' 

For &TestCaseData in RestDemoProcedureRestTestData2()

    &HttpClient.AddHeader(!'Content-type', !'application/json')     
    &RequestBody = '{  "inParam": ' + &TestCaseData.inParam.ToString() + '}’          

    &HttpClient.AddString(&RequestBody)          

    /* Act...                       */     
    &HttpClient.Execute(!"POST", RestDemoProcedure.Type)          

    // Load &HttpClient response on TestCaseData     
    &TestCaseData.FromJson(&HttpClient.ToString())          

    /* Assert...                    */     
    AssertNumericEquals(&TestCaseData.ExpectedStatusCode, &HttpClient.StatusCode, format(!'%1.ExpectedStatusCode:', &TestCaseData.TestCaseId))     
    AssertNumericEquals(&TestCaseData.ExpectedoutParam, &TestCaseData.outParam, format(!'%1.ExpectedoutParam: %2', &TestCaseData.TestCaseId, &TestCaseData.MsgoutParam)) 
endfor 

Sub 'Prepare Client’     
    &HttpClient.Host = &RestSettings.Host     
    &HttpClient.Port = &RestSettings.Port     
    &HttpClient.Secure = &RestSettings.Secure     
    &HttpClient.BaseUrl = &RestSettings.BaseURL 
EndSub

GAM 認証が有効になっている場合の REST テストの例

/* Autogenerated Rest test code for Procedure 'Procedure1' */ 

Do 'Prepare Client' 

For &TestCaseData in RestDemoProcedureRestTestData()          
    &HttpClient.AddHeader(!'Content-type', !'application/json')     
    &AccessToken = GAMRepository.GetOauthAccessToken(&TestCaseData.User, &TestCaseData.Password, &LoginAdditionalParameters, &OAuthAdditionalParameters, &GAMSession, &GAMErrors)     
    &HttpClient.AddHeader(!'Authorization', !'OAuth ' + &AccessToken.access_token)          

    &RequestBody = '{  "inParam": ' + &TestCaseData.inParam.ToString() + '}’          

    &HttpClient.AddString(&RequestBody)          

    /* Act...                       */     
    &HttpClient.Execute(!"POST", RestDemoProcedure.Type)          

    // Load &HttpClient response on TestCaseData     
    &TestCaseData.FromJson(&HttpClient.ToString())          

    /* Assert...                    */     
    AssertNumericEquals(&TestCaseData.ExpectedStatusCode, &HttpClient.StatusCode, format(!'%1.ExpectedStatusCode:', &TestCaseData.TestCaseId))     
    AssertNumericEquals(&TestCaseData.ExpectedoutParam, &TestCaseData.outParam, format(!'%1.ExpectedoutParam: %2', &TestCaseData.TestCaseId, &TestCaseData.MsgoutParam)) 
endfor 

Sub 'Prepare Client’     
    &HttpClient.Host = &RestSettings.Host     
    &HttpClient.Port = &RestSettings.Port     
    &HttpClient.Secure = &RestSettings.Secure     
    &HttpClient.BaseUrl = &RestSettings.BaseURL     
    &GAMApplication = GAMApplication.Get()     
    &LoginAdditionalParameters.AuthenticationTypeName = !"local」     
    &OAuthAdditionalParameters.ClientId = &GAMApplication.ClientId     
    &OAuthAdditionalParameters.ClientSecret = &GAMApplication.ClientSecret     
    &OAuthAdditionalParameters.Scope = !"FullControl" 
EndSub

使用可能バージョン

この機能は GeneXus 17 Upgrade 11 以降で利用できます。





サブページ
Created: 22/12/15 21:20 by Admin Last update: 22/12/15 21:20 by Admin
カテゴリ
Powered by GXwiki 3.0