問題タブ [spring-cloud-contract]
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.
json - フィールドがすべての配列項目に存在し、空でないことを確認する方法
次のような契約があるとします。
のみのテストは、空でない属性を"profile" : regex(nonEmpty())
持つ配列エントリが少なくとも 1 つあることを確認します。profile
すべてのエントリに空でない があることをテストしたいと思いますprofile
。
私はすでにテストマッチャーを使用してこれを試しました:
これはすべてprofile
のフィールドが空でないことを確認しますが、そのようなフィールドが実際に存在するかどうかは確認しません。
profile
すべての配列エントリにフィールドが存在し、それぞれが空でないことをテストするにはどうすればよいですか?
spring-security - 春のクラウド契約:ユーザー登録テスト
BCryptPasswordEncoder と groovy 契約に苦労しています
プロデューサーとコンシューマー サービスがあり、プロデューサーはユーザー登録情報 (つまり、ユーザーとパスワード (BCryptPasswordEncoder(12) を使用してエンコード)) を含むメッセージを送信します。テストでは、暗号化されたパスワードを使用してメッセージを作成しています。これは問題ありませんが、質問は: 1. コントラクトでパスワードを暗号化することは可能ですか? 2. その方法は? 3. 可能な場合、BCryptPasswordEncoder(12) を設定するにはどうすればよいですか?
プロデューサーからテスト (mvn clean install) を実行すると、暗号化されたパスワード <> コントラクトで定義されたプレーン パスワードであるため、検証が失敗します。
ありがとう!
更新 サンプルを github https://github.com/dssantana/user-registrationにアップロードしました mvn clean install を実行すると、特定の時点でテストの 1 つが次のようなエラーで失敗することがわかります。
2017-12-18 11:55:36.056 INFO [ユーザークライアント、、、] 5236 --- [メイン] .eucUserAccountRegistrationController: UserAccountRegistrationController - UserAccountRegister: AccountRegistration(firstName=Diego、lastName=Santana、email=dssantana@gmail.com 、mobileNumber=0452621048、ipAddress=127.0.0.1、誕生日=1979-10-16、 パスワード=$2a$12$jm3YACnf72P3wKCmPLRXwufeXJx5lzibwLz3DzhCXft.XKW2bK1RC) [エラー] テストの実行: 2、失敗: 0、エラー: 2、スキップ: 0、経過時間: 6.935 秒 <<< 失敗! - au.net.example.userclient.ContractVerifierTest で [エラー] validate_shouldSendAnAccountRegistrationMessageWithSpecialCharactersUsername(au.net.example.userclient.ContractVerifierTest) 経過時間: 0.426 秒 <<< エラー! java.lang.IllegalStateException: 解析された JSON [{"firstName":"Joe","lastName":"Doe","email":"joe.doe+test@gmail.com","mobileNumber":"0452621048", "ipAddress":"127.0.0.1", "birthday":"1979-10-16", "password":"$2a$12$fZcEe6fUzmjHmItvsJ8MCOCOR.mnc2nbDqh/Ce1aYzUBRq5L8ywRm"}] が JSON パスと一致しません [$[? (@.['パスワード'] == 'Test01')]] au.net.example.userclient.ContractVerifierTest.validate_shouldSendAnAccountRegistrationMessageWithSpecialCharactersUsername(ContractVerifierTest.java:49) で [エラー] validate_shouldSendAnAccountRegistrationMessage(au.net.example.userclient.ContractVerifierTest) 経過時間: 0.323 s <<< エラー! java.lang.IllegalStateException: 解析された JSON [{"firstName":"Diego","lastName":"Santana","email":"dssantana@gmail.com","mobileNumber":"0452621048","ipAddress": "127.0.0.1", "birthday":"1979-10-16","password":"$2a$12$jm3YACnf72P3wKCmPLRXwufeXJx5lzibwLz3DzhCXft.XKW2bK1RC"}] が JSON パス [$[?(@.['password '] == 'Test01')]] au.net.example.userclient.
暗号化されたパスワードは Test01 であり、コントラクト テストのプレーン パスワードと一致するはずですが、これを確認する方法がわかりません。これは一方向の暗号化であり、確認する方法は、コントラクト データを暗号化してテスト データと照合することです。