これは一般的な質問ではなく、特定の問題ではありますが、将来同様の問題が発生した場合に役立つことを願っています。IdentityServer4の統合テストを実装する方法は?
私は当初、公開APIアクセスの認証と認可を設定するビジネスケースでIdentityServer4を実装しています。そのために、最初はClientCredentialsフローのみを使用します。使用フローを手動でテストし、正しい設定とセットアップを行うために、ドキュメントのサンプルプロジェクトのように、小さなテストAPIとクライアントコンソールアプリケーションを作成しました。しかし、私はIdentityServer4の設定をほぼ完了し、実際のAPI自体の作業を開始するので、自動化したいと思います。
基本的に私はIdentityServerの実装に対していくつかの統合テストを行いたいと思っています。しかし、私はこのトピックに関する経験がほとんどないので、セットアップの方法に関するヒントやヒントがあります。
少なくともいくつかのエンドポイントが既に完了している場合は、API側で設定する必要がありますか?しかし、私のIdentityServerとAPIが異なるソリューションにある場合、たとえばローカルでこれらのテストを実行する場合、IdentityServerを手動で起動し、それに接続するAPIプロジェクトでテストを実行する必要があります。
また、私にとっては、IdentityServerプロジェクトでテスト、テストAPI、およびクライアントを使用する方が意味があります(ソースコードソリューションと同じです)。しかし、ソースコードの統合テストを見ると、IdentityServerを起動するためのStartupクラスが別々にあることがわかりました。これを同様に行うか、自分のIdentityServerプロジェクトのStartupクラスに対してテストを実行するように設定する必要がありますか?次に、私はすべてのappSettingsファイルなどをコピーする必要があります。
私はそれがかなり一般的な質問とトピックだと知っていますが、実際の正しいことをテストする方法については、私はそれがソースコードのソリューションでも行われているので、機能自体についてたくさんテストする必要はないと知っていますが、自分の設定などをテストするための統合テストを用意しています。お互いに、私はすぐに知っていただろう。
ありがとうございます!
このような徹底的な答えに感謝します!私は質問がかなり一般的で幅広いことを知っていますが、これらの一般的な提案は私が望むものです。ある時点であなたに個人的に連絡できることによって、私は多くの利益を得ると思う。しかし、あなたの答えについては、ソースプロジェクトに基づいたDiscoveryClientテストも開始しました。私はあなたが共有したリンクの答えにある同じ4行を持っていますが、WebHostBuilderにどのスタートアップファイルを提供したのでしょうか?私はあなたのポイントのほとんどに同意するが、私はまだセレンに触れないだろう。また、独自の管理UIを開発しましたか? –
WebHostBuilderにオーバーライドされたテスト起動が渡されました。はい、私たちは小さなAdminUIを開発しました – MJK
だから、彼らはソースプロジェクトでそれを持っているのと同じですか?IntegrationTestsプロジェクト内に新しい別のStartupクラスがありますか?しかし、私はIdS4の実際の実装との統合をどのようにテストするのか理解するのに苦労していますか?現在は、Testプロジェクト内のClientsとResourcesの新しいクラスを作成しました。私が正しいことをテストしていることが私にとって理にかなっている唯一の方法は、私の実際の実装とまったく同じクライアントおよびリソースオブジェクトを持つことです。さもなければ、それはテストのためだけに別の実装であり、実際の実装が動作することを保証するものではありません。 –