|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
|
これは未公開の文書です Admission Controller 1.34-dev. |
ポリシー作成者向けのテスト
SUSE Security Admission ControllerポリシーはWebAssembly(Wasm)としてコンパイルされた通常のプログラムです。 あらゆる種類のプログラムと同様に、良好なテストカバレッジは重要です。
ポリシー作成者はお気に入りの開発環境を使用できます。 慣れ親しんだツールやテストフレームワークを使用して開発を検証できます。
彼らは開発環境のために標準テストを使用したテストスイートを持っています。
ポリシーはCIパイプラインのためにGitHub Actionsを使用します。
エンドツーエンドテスト
ポリシーを含むWasmバイナリに対して実行されるテストを書くこともできます。 Kubernetesクラスターをデプロイせずにこれを行うには、これらのツールを使用できます:
`kwctl run`を使用するには、次のものが必要です。
-
実行するポリシーのWasmバイナリファイルの参照。 Admission Controllerポリシーは次の場所からロードできます:
-
ローカルファイルシステム(
file://) -
HTTP(s)サーバー(
https://) -
OCIレジストリ(
registry://)。
-
-
テストするためのアドミッションリクエストオブジェクト。 それを`--request-path`引数を介して渡すか、
stdin`で--request-path`を`-`に設定して渡します。 -
--settings-json`フラグを介してインラインJSONとしてのランタイム用のポリシー設定。 または、ファイルシステムから--settings-path`を介してロードされたJSONまたはYAMLファイル。
テスト`kwctl`の後、`ValidationResponse`オブジェクトを標準出力に印刷します。
これが、kwctl`を使用して前述のhttps://github.com/kubewarden/ingress-policy[`ingress-policy]のWasmバイナリをテストする方法です:
$ curl https://raw.githubusercontent.com/kubewarden/ingress-policy/v0.1.8/test_data/ingress-wildcard.json 2> /dev/null | \
kwctl run \
--settings-json '{"allowPorts": [80], "denyPorts": [3000]}' \
--request-path - \
registry://ghcr.io/kubewarden/policies/ingress:v0.1.8 | jq
`kwctl`の事前ビルドされたバイナリをダウンロードできますhttps://github.com/kubewarden/kwctl/releases[こちら]。
`bats`を使用すると、このコマンドを実行し、期待される出力を探すテストを書くことができます。
batsテスト
@test "all is good" {
run kwctl run \
--request-path test_data/ingress-wildcard.json \
--settings-json '{"allowPorts": [80], "denyPorts": [3000]}' \
ingress-policy.wasm
# this prints the output when one the checks below fails
echo "output = ${output}"
# settings validation passed
[[ "$output" == *"valid: true"* ]]
# request accepted
[[ "$output" == *"allowed: true"* ]]
}
コードをファイル`e2e.bats`に入れることができ、例えば、その後`bats`を呼び出すことができます。
$ bats e2e.bats
✓ all is good
1 tests, 0 failures
このセクションには、ポリシーのエンドツーエンドテストの書き方についての詳細があります。