問題タブ [spring-security-test]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-test - 遅延コレクションを持つエンティティを含む Spring 統合テストの問題
新しい Spring Security Test フレームワークを試しています。遅延コレクションを含む JPA エンティティを返すテストがあります。
遅延コレクションの 1 つが原因で、次のテストはエラーになります。
エラーメッセージは次のとおりです。
テスト設定で何が間違っていますか? JPA エンティティーマネージャーの閉鎖が早すぎるのはなぜですか? この問題を回避するにはどうすればよいですか?
編集1:
コントローラーからのメソッド:
サービスからのメソッド:
編集2:
@Transactional
次のようにテストメソッドに注釈を付けたにもかかわらず、テストが実際にはエラーになっていることに気付きました。
エラーメッセージは次のとおりです。
編集3:
カリキュラムの関連部分は次のとおりです。
java - Spring Boot セキュリティ構成のテスト
Spring Boot セキュリティのテストを試すために、非常に単純なデモ アプリを作成しました。
これは私のアプリ構成です
私の UserDetailsService 実装は、「admin」ユーザーに管理者ロールを付与されたパスワード「password」を持つすべてのユーザーを受け入れます。
最後に、それを確認するための簡単なテストを作成しました。
テストに合格することを期待していましたが、代わりに BadCredentialsException が発生しました。デバッグ後、テストで Spring によって注入された AuthenticationManager が、私が構成したものではないことに気付きました。Eclipse デバッガーでオブジェクトを掘り下げているときに、UserDetailsServer が InMemoryUserDetailsManager であることがわかりました。
また、DemoApplication の configure() メソッドが呼び出されることも確認しました。私は何を間違っていますか?
spring-security - Spring セキュリティ テストを使用してセキュアな Spring MVC コントローラーをテストする
Spring Security Testを 使用して、Spring Security の背後に配線されているSpring MVC アプリのテストを作成する方法に関するドキュメントに従ってください。
これは、典型的なスプリング セキュリティ ワイヤリングを採用したバニラ スプリング ブート アプリケーションです。ここにメインの Application.java があります
スプリングセキュリティの配線は次のとおりです。
ご覧のとおり、"/" と "/sign_up" のリクエストを除いて、すべてのリクエストが認証される必要があります。アプリケーションをデプロイして、認証スキームが正常に機能することを確認しました。
ここからが興味深い部分です。Spring MVC テストの作成です。私が提供したリンクは、 spring-security-testフレームワークがモック ユーザー/セキュリティ コンテキストの挿入を許可するようなテストを作成するためのいくつかの良い方法を提供します。というアプローチをとりました
- モック UserDetails インターフェイスを定義し、
- SecurityContextFactory を使用して SecurityContext を作成します。
- テストの起動中にアプリケーション コンテキストに挿入する必要があります。
1. のコードは次のとおりです。
2. のコードは次のとおりです。
最後に、テストクラスは次のとおりです。
テスト実行の出力:
- テスト 1 に合格します。
- 2 パスをテストします。
- テスト 3 は失敗します。出力が期待されていましたが、<> が得られました。
「SecurityContext」が適切に設定されていないため、テスト 3 が失敗した可能性が非常に高いです。ドキュメントによると、それはうまくいったはずです。私が逃したものがわからない。どんな助けでも大歓迎です。
spring - Spring Security Unit Test - MockMvc はカスタム ユーザーでテストを実行します
Spring MVC コントローラーの単体テストをセットアップしており、Spring MVC テスト フレームワークを活用しようとしています。コントローラーの各エンドポイントに対して、指定された権限を持つユーザーのみがアクセスできるようにしたいと考えています。私の問題は、カスタムの User 実装を使用し、これを回避するための mockMvc ツールを使用すると、クラス キャスト例外が発生することです。
リクエストごとに、次のようになると思います。
上記のステートメントを微調整して、カスタム ユーザー プリンシパルを指定したいと思います。以下のSpringのユーザーメソッドを参照してください。私が最初に考えたのは、クラスをオーバーライドしてUserRequestPostProcessor
微調整し、標準の Spring Security ユーザーの代わりにカスタム ユーザー タイプを使用することでしたが、このクラスは final として宣言されており、サブクラス化できません。デフォルトの動作をオーバーライドし、カスタム ユーザー タイプを使用するためのサポートはありますか??
私が見てきたことから、認証でカスタム ユーザー プリンシパルを設定できるように、 @WithSecurityContextでテストに注釈を付ける候補です。ここでの私の懸念は、メソッドごとに 1 人のユーザーをテストすることに制限されることであり、これは私がやろうとしていることに対応していません。
複数のカスタム ユーザーによるリクエストをテストするにはどうすればよいですか?
java - Gradle がテストの依存関係をダウンロードしない
gradle を使用するプロジェクトにテスト依存関係を追加しようとしています。私が単に必要としているのは、gradle が依存関係の jar をダウンロードして、パッケージの一部をインポートできるようにすることです。必要なのは次のパッケージです。
だから私は私のgradleファイルを含むように編集しました
これを入力してからプロジェクトをビルドしてみました。残念ながら、これはうまくいきませんでした。実際にいくつかの成功を収め、次のimport org.springframework.security.test.*
ように実行できませんでした。gradlew test
どこにダウンロードされたのかわかりませんが。I ca $HOME/.gradle/caches/modules-2/files-2.1/org.springframework.security
n't see no sign of the Download package (そして Idea は外部ライブラリでそれを認識しません) に移動します。ランニングgradle build --refresh-dependencies
はうまくいかなかったようです。
どんな助けでも大歓迎です。
spring - Spring Security + Spring-Boot テスト コントローラー
ホームコントローラーをテストしようとしています
ユーザー名として「user」を使用し、デフォルトでパスワードとしてテストする春のセキュリティを使用していますが、@PreAuthorizeが機能していません
結果
期待される結果:
<"[Hello World!]">
実結果:
<"{"timestamp":1501100448216,"status":401,"error":"Unauthorized","message":"このリソースにアクセスするには完全な認証が必要です","path":"/"}]">
何か不足していますか?