spring cloud contract:用户注册测试

时间:2017-12-08 00:40:40

标签: spring-security spring-cloud spring-cloud-contract

我正在努力学习BCryptPasswordEncoder和groovy合同

我有一个生产者和消费者服务,生产者发送一条带有用户注册信息的消息(即用户和密码(使用BCryptPasswordEncoder(12)编码)。测试是创建加密密码的消息,这没关系,但我的问题是: 1.是否可以加密合同中的密码? 怎么样? 3.如果可能,我如何设置BCryptPasswordEncoder(12)?

在从生产者运行测试(mvn clean install)时,验证失败,因为加密密码<>合同中定义的普通密码

谢谢!

更新 我已将样本上传到github https://github.com/dssantana/user-registration 如果你运行mvn clean install,你会发现在某个时刻,其中一个测试失败了,错误类似于:

  

2017-12-18 11:55:36.056 INFO [user-client ,,,] 5236 --- [main] .e.u.c.UserAccountRegistrationController:UserAccountRegistrationController - UserAccountRegister:   AccountRegistration(firstName = Diego,lastName = Santana,email = dssantana @ gmail.com,mobileNumber = 0452621048,ipAddress = 127.0.0.1,birthday = 1979-10-16,   密码= $ 2A $ 12 $ jm3YACnf72P3wKCmPLRXwufeXJx5lzibwLz3DzhCXft.XKW2bK1RC )   [错误]测试运行:2,失败:0,错误:2,跳过:0,经过的时间:6.935 s<<<失败! - 在au.net.example.userclient.ContractVerifierTest中   [错误] validate_shouldSendAnAccountRegistrationMessageWithSpecialCharactersUsername(au.net.example.userclient.ContractVerifierTest)经过的时间:0.426秒<<<错误!   java.lang.IllegalStateException:解析JSON   [{ “名字”: “乔”, “姓氏”: “李四”, “电子邮件”: “joe.doe+test@gmail.com”, “移动电话号码”: “0452621048”, “ip地址”:“127.0.0.1 ”   “生日”: “1979年10月16日”,的 “密码”: “$ 2A $ 12 $ fZcEe6fUzmjHmItvsJ8MCOCOR.mnc2nbDqh / Ce1aYzUBRq5L8ywRm”}]   与JSON路径不匹配[$ [?(@。['password'] =='Test01')]]       at au.net.example.userclient.ContractVerifierTest.validate_shouldSendAnAccountRegistrationMessageWithSpecialCharactersUsername(ContractVerifierTest.java:49)   [错误] validate_shouldSendAnAccountRegistrationMessage(au.net.example.userclient.ContractVerifierTest)已用时间:0.323秒<<<错误!   java.lang.IllegalStateException:解析JSON   [{ “名字”: “迭戈”, “姓氏”: “桑塔纳”, “电子邮件”: “dssantana@gmail.com”, “移动电话号码”: “0452621048”, “ip地址”: “127.0.0.1”,   “生日”:“1979-10-16”,“密码”:“$ 2a $ 12 $ jm3YACnf72P3wKCmPLRXwufeXJx5lzibwLz3DzhCXft.XKW2bK1RC”}]与JSON路径不匹配[$ [?(@。['password'] =='Test01 “)]]       at au.net.example.userclient.ContractVerifierTest.validate_shouldSendAnAccountRegistrationMessage(ContractVerifierTest.java:33)

加密密码是Test01,应该与合同测试中的普通密码匹配,但是我不知道如何验证这一点,它是单向加密,验证的方法是加密和匹配合同数据与测试数据。

1 个答案:

答案 0 :(得分:0)

如此链接https://github.com/dssantana/user-registration/pull/1/files所示,初始测试设置中添加的是$( consumer("fixed value"), producer(regex(nonBlank())))行,以确保在生成者端,在生成的测试中我们有一些密码值