1.7. PostgreSQL 用 Dev Services を使用したアプリケーションのテスト
アプリケーションを実稼働モードで実行する前に、Dev Services for PostgreSQL を使用して JVM およびネイティブモードでアプリケーションの統合テストを完了します。
まず、テストプロジェクトに次の依存関係を追加します。
Maven を使用:
<dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <scope>test</scope> </dependency><dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <scope>test</scope> </dependency>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Gradle を使用する場合:
testImplementation("io.rest-assured:rest-assured")testImplementation("io.rest-assured:rest-assured")Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションを dev モードで実行するには、以下を実行します。
Quarkus CLI を使用:
quarkus dev
quarkus devCopy to Clipboard Copied! Toggle word wrap Toggle overflow Maven を使用:
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow Gradle を使用する場合:
./gradlew --console=plain quarkusDev
./gradlew --console=plain quarkusDevCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
次のプロパティー設定は、PostgreSQL テストを本番 (
prod) モードでのみ実行できるようにする方法を示しています。このシナリオでは、Dev Services for PostgreSQLがPostgreSQLテストコンテナーを起動して設定します。
-
%prod.プロファイル接頭辞を追加すると、データソースプロパティーはDev Services for PostgreSQLには表示されなくなり、運用モードで実行されているアプリケーションによってのみ監視されます。 - 統合テストを記述するには、次のコードサンプルを使用します。
このコードサンプルからわかるように、テストコードからテストコンテナーを起動する必要はありません。
開発モードでアプリケーションを起動すると、Dev Services for PostgreSQL は PostgreSQL 開発モードコンテナーを起動して、アプリケーションの開発を開始できるようにします。アプリケーションの開発中に、継続テスト 機能を使用してテストを個別に追加および実行できます。Dev Services for PostgreSQL は、開発モードコンテナーと競合しない別の PostgreSQL テストコンテナーを提供することで、開発中のテストをサポートします。
1.7.1. curl またはブラウザーを使用したアプリケーションのテスト リンクのコピーリンクがクリップボードにコピーされました!
- 次の例を使用して、PostgreSQL サーバーを起動します。
docker run --rm=true --name security-getting-started -e POSTGRES_USER=quarkus \
-e POSTGRES_PASSWORD=quarkus -e POSTGRES_DB=elytron_security_jpa \
-p 5432:5432 postgres:14.1
docker run --rm=true --name security-getting-started -e POSTGRES_USER=quarkus \
-e POSTGRES_PASSWORD=quarkus -e POSTGRES_DB=elytron_security_jpa \
-p 5432:5432 postgres:14.1
1.7.2. アプリケーションのコンパイルおよび実行 リンクのコピーリンクがクリップボードにコピーされました!
以下の方法のいずれかを使用して、Quarkus アプリケーションをコンパイルして実行します。
JVM モード
アプリケーションをコンパイルします。
Quarkus CLI を使用:
quarkus build
quarkus buildCopy to Clipboard Copied! Toggle word wrap Toggle overflow Maven を使用:
./mvnw install
./mvnw installCopy to Clipboard Copied! Toggle word wrap Toggle overflow Gradle を使用する場合:
./gradlew build
./gradlew buildCopy to Clipboard Copied! Toggle word wrap Toggle overflow
アプリケーションを実行します。
java -jar target/quarkus-app/quarkus-run.jar
java -jar target/quarkus-app/quarkus-run.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ネイティブモード
アプリケーションをコンパイルします。
Quarkus CLI を使用:
quarkus build --native
quarkus build --nativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Maven を使用:
./mvnw install -Dnative
./mvnw install -DnativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow Gradle を使用する場合:
./gradlew build -Dquarkus.package.type=native
./gradlew build -Dquarkus.package.type=nativeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
アプリケーションを実行します。
./target/security-jpa-quickstart-1.0.0-SNAPSHOT-runner
./target/security-jpa-quickstart-1.0.0-SNAPSHOT-runnerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.7.3. アプリケーションのセキュリティーへのアクセスおよびテスト リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの実行中に、以下の Curl コマンドのいずれかを使用してエンドポイントにアクセスできます。
保護されたエンドポイントに匿名で接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保護されたエンドポイントに匿名で接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 承認されたユーザーとして保護されたエンドポイントに接続します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ブラウザーを使用して同じエンドポイント URL にアクセスすることもできます。
ブラウザーを使用して保護されたリソースに匿名で接続する場合は、Basic 認証フォームが表示され、認証情報の入力を求められます。
1.7.4. Results リンクのコピーリンクがクリップボードにコピーされました!
admin:admin などの承認済みユーザーの認証情報を提供すると、Jakarta Persistence セキュリティーエクステンションによってユーザーのロールが認証され、読み込まれます。admin ユーザーには、保護されたリソースにアクセスする権限が与えられます。
リソースが @RolesAllowed ("user") で保護されている場合、次の例に示すように、admin ユーザーは、"user" ロールに割り当てられていないため、リソースにアクセスする権限がありません。
最後に、user という名前の ユーザー が承認され、セキュリティーコンテキストにはユーザー名などのプリンシパルの詳細が含まれます。