单元测试oAuth2授权码

时间:2017-04-04 16:38:07

标签: php laravel unit-testing oauth-2.0 guzzle

我可以通过外部api从Laravel通过Guzzle连接。该API需要通过oAuth2和授权码进行身份验证。我想知道如何集成测试重定向方案,只有用户名和密码?

换句话说:如何通过在集成测试中重定向“抢夺”重定向uri的授权码来模拟浏览器操作?

流量

  • 我请求(GET)外部api的登录页面
  • 我必须填写用户名和密码
  • 在正确登录后,我将被重定向到指定的重定向uri,其中de de authorization code为查询参数

自动测试

  • 我可以连接api,我可以做GET,POST和PUT请求
  • 重定向方案通过浏览器工作,但在集成测试场景中,我只有用户名和密码,但没有CSRF,viewState等字段

问题

在第一个GET请求的响应中(获取登录表单),有多个隐藏字段(CSRF,viewState)。我无法在POST请求中模拟的字段。我只有用户名和密码字段。所以在这种情况下,我从未被重定向,但它再次返回登录页面。因为我错过了重要的隐藏领域。

1 个答案:

答案 0 :(得分:0)

我需要做以下事情:

一旦

  • 申请授权码
  • 请求访问令牌+刷新令牌

如果刷新令牌可用

当访问令牌过期时,请使用当前刷新令牌请求新的令牌对(访问+刷新)。