【问题标题】:Robot Framework - AWS API Gateway secured by IAM机器人框架 - 由 IAM 保护的 AWS API 网关
【发布时间】:2018-04-02 18:46:28
【问题描述】:

背景

我一直在使用 Robot FrameworkRequestsLibrary 针对我通过 AWS API Gateway 公开的 RESTful 端点编写自动化测试。所以我正在编写大致如下所示的测试:

*** Settings ***                
Library Collections
Library RequestsLibrary

*** Test Cases ***              
Get Requests
    Create Session  Sess    https://<api-gateway-url>   
    ${resp}=    Get Request Sess    /path/to/my/api?param=value 
    Should Be Equal As Strings  ${resp.status_code} 200 
    Dictionary Should Contain Value ${resp.json()}  someValueIwantToVerify  

现在,我开始着手使用 IAM 保护这些 API Gateway 端点。因此请求需要sig4 signed

使用这些服务的应用程序是用 javascript 编写的,并使用aws-api-gateway-client 对请求进行签名。在 Postman 中测试(手动)也很容易,使用 AWS Signature 授权类型。但是,我正在努力为 Robot Framework 制定策略。

问题

从最广泛的意义上说,我想知道是否还有其他人在使用 Robot Framework 来测试 IAM 保护的 API 网关端点。如果是这样,你是怎么做到的?

更具体地说:

  • 是否有解决此用例的现有机器人框架库?
  • 如果不是,那么编写自己的库是我唯一的选择吗?
  • 如果我被困在编写库 (this looks promising) 中,我会定义什么样的关键字,我将如何使用它们?

【问题讨论】:

标签: python amazon-web-services python-requests robotframework aws-api-gateway


【解决方案1】:

我不知道有什么 RF 库可以满足您的需求,但我的第一反应是使用 Amazon 自己的 AWS SDK for Python (boto3),并围绕它编写一个精简的关键字包装库。我已经为使用 AWS S3 的测试用例做到了,但 boto3 也支持 API 网关:http://boto3.readthedocs.io/en/latest/reference/services/apigateway.html

【讨论】:

    【解决方案2】:

    requests 库接受 auth 参数,该参数应为 AuthBase 的子类。

    事实证明,修改 RequestsLibrary 以利用此现有功能总共需要两行代码(不包括 cmets、测试和空格以提高可读性):

    def create_custom_session(self, alias, url, auth, headers={}, cookies=None, timeout=None, proxies=None, verify=False, debug=0, max_retries=3, backoff_factor=0.10, disable_warnings=0):
        return self._create_session(alias, url, headers, cookies, auth, timeout, max_retries, backoff_factor, proxies, verify, debug, disable_warnings)
    

    有时答案只是发给issue your own pull request

    新的Create Custom Session 关键字将接受任意auth 对象,包括由library I'm using 生成的对象(我强烈推荐)。

    original issue 现在包含有关 aws-requests-authRequestsLibrary 如何与新关键字协同工作的详细信息。

    @the_mero 提到了boto3,这几乎肯定是你想要用来实际编组凭据的东西。您不想像问题/拉取请求中的简单示例那样在测试中对它们进行硬编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 2016-09-22
      • 2013-11-08
      • 2017-11-07
      • 2016-04-26
      • 2018-02-25
      相关资源
      最近更新 更多