コネクタのテスト
テストコマンド
test コマンドはコネクタ成果物をテストするときに使用します。成果物にはいくつかの共通のオプションと専用のオプションがあります。テストコマンドはサブコマンドとして成果物のタイプをとります。テストコマンドには次のコマンドがあります。
コマンド | 説明 |
---|
flow test action <name> | <name> という名前の操作をテストします。 |
flow test connection <name> | <name> という名前の接続をテストします。 |
flow test lookup <name> <method> | 検索 <name> で <method> という名前の検索関数をテストします。 |
flow test oauth <name> | <name> という名前の OAuth をテストします。 |
flow test trigger <name> <method> | <name> という名前のトリガーをテストします。 |
テストコマンドには次のオプションがあります。
オプション | 説明 | データ型 |
---|
--version | バージョン番号を表示します。 | [ブール] |
--help | ヘルプを表示します。 | [ブール] |
--timeout | そのオペレーションのタイムアウト。--timeout オプションではタイムアウトをミリ秒単位で指定します (デフォルトは 30000 ms)。このオプションを指定することで、指定した時間内にコードが終了し、コールバックの呼び出しに失敗するなどのエラーが捕捉されます。 | [デフォルト: 30000] |
--logLevel,-1 | ログレベルを設定します。 | [デフォルト: "info"] |
ThingWorx Flow CLI を使用して、サーバーに
コネクタを展開する前に個々の成果物をテストできます。これにより、コネクタを展開する前に成果物が正しく機能していることをチェックできます。
テストケースは、mocha-chai フレームワークを使用して記述されます。mocha を使用してテストスイートが定義され、chai はアサーションライブラリとして使用されます。すべてのテストケースは testData フォルダの下の特定の成果物テストフォルダの下に定義されます。
ThingWorx Flow CLI で test コマンドを使用して成果物をテストできます。
成果物をテストするには、コマンドプロンプトから次のコマンドを実行します。
1. cd <user project root directory>
2. flow test <artifactType> <name>
OAuth とトリガーをテストするためのコンフィギュレーション
flow test oauth コマンドと flow test trigger コマンドは内部で Web サーバーを起動します。この Web サーバーは https リクエストのみを受け付けます。設定のリクエストを受け付けるようにするには、証明書が必要です。証明書がない場合、以下のエラーが発生します。
[2018-09-19T10:13:11.876] [ERROR] trigger - Validation of trigger failed : ENOENT: no such file or directory, open 'C:\[2018-09-19T10:13:11.876] [ERROR] trigger - Validation of trigger failed : ENOENT: no such file or directory, open 'C:\<user-home-dir\.flow\key.pem>
自己署名証明書を作成するには、次の手順に従います。
1. openssl をダウンロードしてインストールします。
2. openssl がパスにあるとした場合、openssl req -nodes -new -x509 -keyout key.pem -out cert.pem を実行します。
3. ユーザーのホームディレクトリ内の .flow ディレクトリにこれらのファイルをコピーします。
ホスト名とポートを設定するため、ユーザーのホームディレクトリ内の .flow ディレクトリ内にファイル flow.json を作成します。サンプルファイルを以下に示します。
{
"passphrase": "xyz",
"hostname" : "flow.local.rnd.ptc.com",
"port" : 443
}
すべてのプロパティがオプションです。
• Passphrase - パスフレーズを必要とするプライベートキーとともに使用します。
• Hostname - OAuth 用 redirect_uri の構築とトリガー URL の作成に使用します。多くのサービスで localhost は redirect_uri での有効なホスト名と見なされないことがあります。一部のアプリケーションでは、Webhook 登録 URL として非 localhost URL が明確に要求されています。テストのために、お使いの開発システムの URL を生産システムに対応させることもできます。たとえば、Google に登録した redirect_uri が https://flow.local.rnd.ptc.com/Thingworx/Oauths/oauth/return である場合、flow.json でのホスト名を flow.local.rnd.ptc.com にします。さらに、<%WINDIR%>\system32\drivers\etc\hosts に、このホストを追加します。
| このファイルを編集するには、管理者としてエディタを実行します。 |
OAuth コンフィギュレーションのテスト
各 OAuth プロバイダがユーザーの資格証明を受け付けるフォームはそれぞれ異なるので、OAuth コンフィギュレーションテストはブラウザを介して行われます。CLI は内部で Express Web サーバーを実行して、認証成功時または不成功時に IdP によって送信される応答を処理します。
OAuth コンフィギュレーションをテストするには、次の手順に従います。
1. プロジェクトディレクトリから、次のコマンドを実行します。
flow test oauth <oauth name>
ログインに成功すると、OAuth バリデータブラウザウィンドウが開きます。詳細については、チュートリアル内の例を参照してください。
2. テストするコンフィギュレーションを選択し、「Validate OAuth Configuration」をクリックするか「Exit」をクリックします。
接続のテスト
test connection コマンドは validate メソッドを呼び出した後、connect メソッドを呼び出して、入力スキーマに照らして入力をテストし、出力スキーマに照らして出力をテストします。
接続をテストするには、次の手順に従います。
1. プロジェクトディレクトリから、次のコマンドを実行します。
npm install
2. パッケージ内にテストデータファイルを作成し、そのデータにサービスプロバイダ情報を反映します。
このファイルには、以下のコードに示すような、<プロジェクトディレクトリ>\test\testData にあるテスト connectionTestData のサンプルデータが含まれています。
module.exports = {
sampleInput : {
email : 'your-email-id-here',
subscription_id:'your-subscription-id',
account_url: 'your-account-url',
token: 'your-token'
},
sampleOutput : {
handle: {
email : 'your-email-id-here',
subscription_id:'your-subscription-id',
account_url: 'your-account-url',
token: 'your-token'
} }
}
3. 以下のオプションを使用してテストコマンドを実行します。
オプション | 説明 | データ型 |
---|
--version | バージョン番号を表示します。 | [ブール] |
--help | ヘルプを表示します。 | [ブール] |
--timeout | そのオペレーションのタイムアウト。--timeout オプションでは、タイムアウトをミリ秒単位で指定します (デフォルトは 30000 ミリ秒)。このオプションを指定することで、指定した時間内にコードが終了し、コールバックの呼び出しに失敗するなどのエラーが捕捉されます。 | [デフォルト: 30000] |
--logLevel,-1 | ログレベルを設定します。 | [デフォルト: "info"] |
--artifactVersion,-v | テストする成果物のバージョン。 | 該当なし |
--projectDir,-d | プロジェクトの親ディレクトリ。 | 該当なし |
--input,-i | 入力変数の名前。 | 該当なし |
--output,-o | 予期される出力変数の名前。 | 該当なし |
--testDataFile,-f | testData ファイルのパス。 | 該当なし |
--save,-s | ユーザーの資格証明ストアに保存します。 | 該当なし |
--noSchemaValidation,-n | スキーマの検証を無効にします。 | [デフォルト: false] |
テストを実行し、connect メソッドと validate メソッドの両方が成功した場合、出力が生成されます。このコマンドでは、入力が入力スキーマと一致し、出力が、予期される出力と一致するかどうかもチェックされます。
--save オプションを指定した場合、接続コマンドの出力がユーザーのホームディレクトリにある .flow フォルダ内の creds.json ファイルに保存されます。このコマンドを実行すると、接続がファイルに保存されるときに使用されるキーが出力されます。後からこのキーを使用して、保存されている認証情報を別の test コマンドに渡すことができます。
検索のテスト
検索の構造はほかの成果物とは異なり、ほかの成果物と同じ方法ではバージョン管理されません。名前自体がそのバージョンとして機能します。新しい機能が必要な場合、新しい名前で新しい検索を検索 JavasSript ファイル内に作成します。次のコマンドを使用して、検索のテストコマンドを実行します。
以下のオプションを使用できます。
オプション | 説明 | データ型 |
---|
--version | バージョン番号を表示します。 | [ブール] |
--help | ヘルプを表示します。 | [ブール] |
--timeout | そのオペレーションのタイムアウト。--timeout オプションではタイムアウトをミリ秒単位で指定します (デフォルトは 30000 ms)。このオプションを指定することで、指定した時間内にコードが終了し、コールバックの呼び出しに失敗するなどのエラーが捕捉されます。 | [デフォルト: 30000] |
--logLevel,-1 | ログレベルを設定します。 | [デフォルト: "info"] |
--projectDir,-d | プロジェクトの親ディレクトリ。 | 該当なし |
--connection,-c | 注入する接続の uid。 | 該当なし |
--access_token,-a | 予期される出力変数の名前。 | 該当なし |
--input,-i | testData ファイルのパス。 | 該当なし |
--output,-o | 予期される出力変数の名前。 | 該当なし |
--testDataFile,-f | testData ファイルのパス。 | 該当なし |
--searchById | サーチに使用する ID。 | 該当なし |
--searchByValue | サーチに使用する値。 | 該当なし |
--filter | アイテムのサーチに使用するフィルタ。 | 該当なし |
flow test lookup <name> <method>
検索には searchById と searchByValue の 2 つのサーチオプションがあり、改ページに関連する次の 3 つのオプションがあります。
• 検索が一度にすべてのデータを返す - このオプションで必要な操作はありません。
• アプリケーションによってサポートされる改ページ API - 検索コードは getNextPage API を呼び出して、サービスが次のページからデータを返すことができるようにする引数を渡します。この情報は、ユーザーが検索フィールドの値のリストで「Load More」をクリックしたときに検索に渡されます。
• 改ページはサポートされない - アプリケーションはデータをクエリーし、検索サービスはデータを切り捨てて、現在のページとそれより前のすべてのページのレコードのみを表示します。
操作のテスト
操作のテストは検索のテストとほぼ同じです。検索は操作のテストの一環としてはテストされません。入力には結果がすでに含まれている必要があり、含まれていない場合には検索によって結果が返されます。
操作をテストするには、次の手順に従います。
1. サンプル入力およびサンプル出力 JSON をテストデータファイルに記述します。入力と出力のサンプルについては、
チュートリアル B を参照してください。
2. プロジェクトディレクトリから、以下のオプションを使用してテストコマンドを実行します。
オプション | 説明 | データ型 |
---|
--version | バージョン番号を表示します。 | [ブール] |
--help | ヘルプを表示します。 | [ブール] |
--timeout | そのオペレーションのタイムアウト。--timeout オプションではタイムアウトをミリ秒単位で指定します (デフォルトは 30000 ms)。このオプションを指定することで、指定した時間内にコードが終了し、コールバックの呼び出しに失敗するなどのエラーが捕捉されます。 | [デフォルト: 30000] |
--logLevel,-1 | ログレベルを設定します。 | [デフォルト: "info"] |
--artifactVersion,-v | テストする成果物のバージョン。 | [デフォルト: "v1"] |
--connection,-c | 注入する接続の uid。 | 該当なし |
--access_token,-a | 予期される出力変数の名前。 | 該当なし |
--projectDir,-d | プロジェクトの親ディレクトリ。 | [デフォルト: "."] |
--input,-i | testData ファイルのパス。 | 該当なし |
--output,-o | 予期される出力変数の名前。 | 該当なし |
--testDataFile,-f | testData ファイルのパス。 | 該当なし |
--noSchemaValidation,-n | スキーマの検証を無効にします。 | [デフォルト: false] |
トリガーのテスト
トリガーのテストは、操作、接続、検索のテストと若干異なります。以下のオプションを使用してテストコマンドを実行できます。
以下の表で、トリガーのテストに使用可能な各種オプションについて説明します。
オプション | 説明 | データ型 |
---|
--version | バージョン番号を表示します。 | [ブール] |
--help | ヘルプを表示します。 | [ブール] |
--timeout | そのオペレーションのタイムアウト。--timeout オプションではタイムアウトをミリ秒単位で指定します (デフォルトは 30000 ms)。このオプションを指定することで、指定した時間内にコードが終了し、コールバックの呼び出しに失敗するなどのエラーが捕捉されます。 | [デフォルト: 30000] |
--logLevel,-1 | ログレベルを設定します。 | [デフォルト: "info"] |
--artifactVersion,-v | テストする成果物のバージョン。 | [デフォルト: "v1"] |
--connection,-c | 注入する接続の uid。 | 該当なし |
--access_token,-a | 予期される出力変数の名前。 | 該当なし |
--projectDir,-d | プロジェクトの親ディレクトリ。 | [デフォルト: "."] |
--input,-i | 入力変数の名前。 | 該当なし |
--output,-o | 予期される出力変数の名前。 | 該当なし |
--testDataFile,-f | testData ファイルのパス。 | 該当なし |
--noSchemaValidation,-n | スキーマの検証を無効にします。 | [デフォルト: false] |
--polling,-p | このトリガーがポーリングトリガーであることを示します。 | 該当なし |
--event,-e | テストするイベント。 | 該当なし |
--mockData,-m | イベントのモックデータが格納されている変数の名前。 | 該当なし |
--interval,-t | トリガーする間隔 (秒)。 | [デフォルト: 15] |
--stopAfter,-s | トリガーへの呼び出しの最大回数。 | [デフォルト: 1] |
テストするメソッドを指定する必要があります。ポーリングトリガーの場合、メソッドは execute と activate です。
各種成果物のテストの例については、
「チュートリアル B」を参照してください。