【问题标题】:signature validation test using PHPunit使用 PHPunit 进行签名验证测试
【发布时间】:2011-04-21 05:59:35
【问题描述】:

我正在使用 Oauth 协议并根据 Oauth 标准开发身份验证系统,一旦您向服务器发送身份验证请求,您就会得到一组 oauth 参数,包括签名、时间戳、随机数等。现在我的问题是, 我如何编写 PHPUnit 测试用例来验证预期的参数是否到位(请注意,参数可以来自标头或正文或查询字符串)。在参数验证之后,我还需要使用我的签名计算方法来验证我收到的响应签名。

我被困在如何模拟响应以验证参数然后签名。

提前致谢。

【问题讨论】:

  • 您的回复是什么格式?顺便说一句,nonce 作为回应?!
  • 响应格式为 XML。是 Nonce 以避免重放攻击。
  • @CM:为什么它在响应中? tools.ietf.org/html/rfc5849 --- 在你在服务器端检查之后 - 你根本不需要它。以及签名...响应中没有签名:-S
  • 就我而言,为了进行身份验证,我将用户重定向到服务器门户,一旦用户提供用户名/密码,服务器将生成 oauth 参数并将其发送给客户端。
  • 很遗憾,我无法理解您 :-( 我对 OAuth 的了解与您在谈论的内容不相关 :-S

标签: php oauth phpunit


【解决方案1】:

据我了解,您想为您的客户端编写一个单元测试,以查看它是否正确解析来自 oauth 服务器的响应消息。

所以你需要“模拟”服务器。 (或者更确切地说是从服务器获取值的方法)。

您可以创建一些虚假的“响应”xml 文件并将它们传递给与读取响应有关的类。

所以你的 Response 类有一个 ->getHeaders、->getQueryString 和 ->getBody(我只是在这里做假设),你需要模拟这些方法来测试你的“解析”逻辑。

我希望我得到了你的问题。如果不让我知道,也许举个例子? :)

【讨论】:

  • 是的,我想你已经理解了我的问题。对于模拟响应,如何模拟 php://input?
  • 要么你申请(或已经申请)关注点分离然后你不需要需要这样做(因为读取php的对象://input 不是处理数据的方法)或者您在被测对象上模拟出数据读取方法(这需要针对模拟进行测试,但在这种情况下还不错),或者您有一个额外的属性来保存“我从哪里获取数据”属性(成员变量),然后您在测试中覆盖它(可能通过使用反射将其设置为公共)并将您的测试数据放在文件中)。
猜你喜欢
  • 2011-10-10
  • 2014-03-22
  • 2016-06-04
  • 2021-12-02
  • 1970-01-01
  • 2021-02-05
  • 2021-03-23
  • 2016-05-25
  • 1970-01-01
相关资源
最近更新 更多