【问题标题】:Unit Test APIs with OAuth2 Implicit具有 OAuth2 隐式的单元测试 API
【发布时间】:2018-10-29 21:59:55
【问题描述】:

我有一组采用 JWT 令牌的 API,并且我对每个 API 都有单元测试覆盖率。我很容易通过 JWT 令牌并对其进行测试。 我的 JWT 令牌基于用户同意。 到目前为止,我获取了 JWT 令牌,将其放在单元测试中的某个位置,然后执行它们。

在我开始我的单元测试之前,有没有办法让我弹出一个对话框并征得用户同意,从而获得 JWT 令牌,然后继续我的单元测试?

这样我就可以

  • 不对 JWT 令牌进行硬编码
  • 在具有不同角色的不同用户之间轻松切换

【问题讨论】:

  • 请分享一些你的单元测试代码。根本不需要输入 JWT 令牌。如果你想测试你的代码对某些角色的作用,你应该伪造 JWT。
  • 我不推荐此解决方案,但如果您设置让用户输入 JWT,它会起作用。您可以在测试期间创建一个 System.Windows.Form 对象,执行 form.ShowDialog(),允许用户输入数据。当对话框关闭时,测试将自动继续。

标签: c# unit-testing oauth-2.0 jwt


【解决方案1】:

最后我最终使用了 Selenium,它最终变得更加有利。 示例代码如下。

WebBrowser = new ChromeDriver();
IWebElement inputEMail, inputPassword, loginButton;

WebBrowser.Navigate().GoToUrl(
    "http://www.yourOAuthProvider.com?client_id=ABCDE&AnyAdditionalParameters");

Thread.Sleep(1 * 3000);

this.Log(this.WebBrowser.Title);

inputEMail = this.WebBrowser.FindElement(By.Name("email"));
inputEMail.SendKeys("user@example.com");

inputPassword = this.WebBrowser.FindElement(By.Name("password"));
inputPassword.SendKeys("PasswordAtExampleDotCom");

loginButton = this.WebBrowser.FindElement(By.ClassName("submit"));
loginButton.Click();

Thread.Sleep(1 * 3000);

this.Log(this.WebBrowser.Url);

WebBrowser.Close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 2017-08-29
    • 2015-11-14
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    相关资源
    最近更新 更多