我正在使用实习生进行功能测试。其中一项测试需要登录管理员帐户:
registerSuite({
name: 'login',
'login': function() {
return this.remote
.get(URL)
.findById('username')
.click()
.pressKeys(USER.ADMIN.USERNAME)
.end()
.findById('password')
.click()
.pressKeys(USER.ADMIN.PASSWORD)
.pressKeys('\n')
.end()
.findByCssSelector('.login-welcome')
.getVisibleText()
.then(function(text) {
assert.strictEqual(text, USER.ADMIN.NAME, 'User should now be logged in');
});
}
});
现在,问题是这个密码是作为纯文本传入的。它在 BrowserStack 上显示:
00:19 | 0 | Send a sequence of key strokes to the active element. | password
在 SauceLabs 上也是如此:
COMMAND: POST keys
PARAMETERS: {"value":["password"]}
问题在于这些测试的访问不受限制——这些测试需要其他部门的人查看。
即使没有这个,万一测试帐户的密码被泄露,我也不希望攻击者突然获得对其他所有内容的管理员访问权限。
有什么办法可以使密码不在命令中存储/显示为纯文本?
我的团队目前正在考虑运行单独的脚本来激活/停用这些帐户,以便它们仅在运行功能测试时工作,但我想看看是否有人提出了更好的解决方案。