【问题标题】:call tcms-api fail with 403 Forbidden调用 tcms-api 失败并显示 403 Forbidden
【发布时间】:2019-11-18 02:43:42
【问题描述】:

我使用tcms-api调用TestPlan.filter,一切正常,函数返回测试计划。但是调用 TestPlan.create 失败并出现 xmlrpc.client.ProtocolError:

我已经启用了登录帐户的所有权限,但仍然不知道如何更改服务器配置。

请给我任何提示或建议。谢谢。

[环境] 猕猴桃版本是 6.11。 我在 Windows 10 上使用 python 3.6(32 位),并使用 winkerberos 替换 xmlrpc.py 中的 kerberos。我还将 ServerProxy 的参数替换为如下所示的自签名认证

self.server = ServerProxy(
    url,
    verbose=VERBOSE,
    allow_none=1,
    context=ssl._create_unverified_context()
)

diff xmlrpc.py

$ diff original_xmlrpc.py xmlrpc.py
18,19c18,19
< import kerberos
<
---
> import winkerberos as kerberos
> import ssl
106c106
<             transport=self._transport,
---
>             context=ssl._create_unverified_context(),

下面是测试代码。

#!/usr/bin/env python

import sys
import tcms_api
import datetime
import csv

MANAGER = 'your-username-here'
PRODUCT_ID = 31       # Kiwi TCMS
PRODUCT_VERSION = 721 # 6.1-ee
CATEGORY_ID = 46      # --default--
PRIORITY_ID = 10      # P1

rpc_client = tcms_api.TCMS().exec

NOW = datetime.datetime.now().isoformat().replace('T',' ')[:19]

test_plan = rpc_client.TestPlan.create({
    'name': 'Performance baseline TP at %s' % NOW,
    'text': 'A script is creating this TP and adds TCs and TRs to it to eastablish a performance baseline',
    'type': 7,
    'product': PRIORITY_ID,
    'product_version': PRODUCT_VERSION,
    'is_active': True,
})

下面是输出。

Traceback (most recent call last):
  File "D:\MyWork\MyProject\MyWorkspace\KiwiImporter\kiwi_importer\kiwi_importer.py", line 25, in <module>
    'is_active': True,
  File "C:\Users\AlinHuang\AppData\Local\Programs\Python\Python36-32\lib\xmlrpc\client.py", line 1112, in __call__
    return self.__send(self.__name, args)
  File "C:\Users\AlinHuang\AppData\Local\Programs\Python\Python36-32\lib\xmlrpc\client.py", line 1452, in __request
    verbose=self.__verbose
  File "C:\Users\AlinHuang\AppData\Local\Programs\Python\Python36-32\lib\xmlrpc\client.py", line 1154, in request
    return self.single_request(host, handler, request_body, verbose)
  File "C:\Users\AlinHuang\AppData\Local\Programs\Python\Python36-32\lib\xmlrpc\client.py", line 1187, in single_request
    dict(resp.getheaders())
xmlrpc.client.ProtocolError: <ProtocolError for 10.39.100.11/xml-rpc/: 403 Forbidden>

【问题讨论】:

  • 我可能找到原因了,调用“rpc_client = tcms_api.TCMS().exec”时登录成功,但是调用rpc_client.TestPlan.create时没有携带登录信息跨度>
  • 哪个 Kiwi TCMS 版本和哪个 tcms-api 版本?还有哪个 Python 版本/操作系统?听起来会话 cookie 没有传递到后续调用,但我们还没有看到这个问题。
  • 嗨,亚历山大,感谢您的回复。猕猴桃版本是 6.11。我在 Windows 10 上使用 python 3.6(32 位),并使用 winkerberos 替换 xmlrpc.py 中的 kerberos。我还替换了 ServerProxy' 参数进行自签名认证
  • 在这种情况下,发布您的代码版本和主分支之间的差异,以查看发生了什么变化。同样在上面的脚本中,我在任何地方都看不到对 login/login_krb 的调用,它最初设置了会话 cookie。
  • 关于登录,我看到xmlrpc.py已经这样做了,(self.server.Auth.login(username, password))。我应该重新登录吗?

标签: kiwi-tcms


【解决方案1】:

终于明白了!这是一个错误!

我最近添加了集成测试,这些测试清楚地显示了同样的失败。你可以在这里https://github.com/kiwitcms/tcms-api/issues/22监控进度。

很可能有 2 个错误 - 一个在 API 客户端,一个在服务器端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 2023-02-02
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多