如何使用 BDD 测试网站的密码过期时间?
How can I test password expiration using BDD for a website?
假设我有一个带有身份验证用户名和密码的网站,出于安全原因,用户必须每 X 个月更改一次密码(因此密码在 X 个月更改后过期,用户,下次 he/she登录,将显示更改密码屏幕)。假设用户 table.
中有一列 LastChangeDate 或 NextChangeDate
假设它是 BDD 中的有效验收测试,我应该有类似
Given My password has expired
When I sign in
And I complete the change password form..
Then I can sign in with the new password
我应该如何实施第一步 "Given"?
创建一个使用户密码过期的函数(例如转到用户 table 并更改 LastChangeDate/NextChangeDate)是一个好习惯吗?那只是为了测试。
我正在使用 C# 和 Selenium,但我不认为它们(如此)相关。这更像是一个问题,如何在 BDD 中模拟未来事件,但找不到合适的答案。
我最后做的是将包含存储库的库作为引用包括在内,并直接使用存储库来更改我的用户记录。
在 ruby 中有一个名为 timecop 的库,用于执行此类操作。基本上,它使您能够穿越到不同的时间。这将允许你实现你的 Given 之类的东西
Given "my password has expired" do
timecop.travel - password_expiration time
@i = create user
timecop.travel present
@i.expired?.should be_true
end
(以上为伪代码)
我希望在 C# 环境中有类似的东西。
总之仅供参考,在您的上下文中打开用户记录并将过期设置为 true 也是可行的。
假设我有一个带有身份验证用户名和密码的网站,出于安全原因,用户必须每 X 个月更改一次密码(因此密码在 X 个月更改后过期,用户,下次 he/she登录,将显示更改密码屏幕)。假设用户 table.
中有一列 LastChangeDate 或 NextChangeDate假设它是 BDD 中的有效验收测试,我应该有类似
Given My password has expired
When I sign in
And I complete the change password form..
Then I can sign in with the new password
我应该如何实施第一步 "Given"? 创建一个使用户密码过期的函数(例如转到用户 table 并更改 LastChangeDate/NextChangeDate)是一个好习惯吗?那只是为了测试。
我正在使用 C# 和 Selenium,但我不认为它们(如此)相关。这更像是一个问题,如何在 BDD 中模拟未来事件,但找不到合适的答案。
我最后做的是将包含存储库的库作为引用包括在内,并直接使用存储库来更改我的用户记录。
在 ruby 中有一个名为 timecop 的库,用于执行此类操作。基本上,它使您能够穿越到不同的时间。这将允许你实现你的 Given 之类的东西
Given "my password has expired" do
timecop.travel - password_expiration time
@i = create user
timecop.travel present
@i.expired?.should be_true
end
(以上为伪代码)
我希望在 C# 环境中有类似的东西。
总之仅供参考,在您的上下文中打开用户记录并将过期设置为 true 也是可行的。