keystoneauth1.fixture 包

子模块

模块内容

生成符合 Keystone 规范的结构,用于测试。

它们是公共 API 的一部分,因为其他客户端可能依赖它们来生成测试令牌。但是,它们绝不应该被导入到主客户端(keystoneauth 或其他)中。因此,此模块可能存在对仅在测试中可用的库的依赖关系。

class keystoneauth1.fixture.DiscoveryList(href=None, v2=True, v3=True, v2_id=None, v3_id=None, v2_status=None, v2_updated=None, v2_html=True, v2_pdf=True, v3_status=None, v3_updated=None, v3_json=True, v3_xml=True)

基类: dict[str, Any]

版本元素列表。

创建一个正确结构的身份服务端点列表,用于在发现测试中使用。

参数:
  • href (字符串) – 此列表应基于的 URL。

  • v2 (布尔值) – 添加 v2 元素。

  • v3 (布尔值) – 添加 v3 元素。

  • v2_status (字符串) – 用于 v2 元素的状态。

  • v2_updated (DateTime) – 用于 v2 元素的更新时间。

  • v2_html (布尔值) – 如果为 True,则在 v2 元素中添加 html 链接。

  • v2_pdf (布尔值) – 如果为 True,则在 v2 元素中添加 pdf 链接。

  • v3_status (字符串) – 用于 v3 元素的状态。

  • v3_updated (DateTime) – 用于 v3 元素的更新时间。

  • v3_json (布尔值) – 如果为 True,则在 v2 元素中添加 html 链接。

  • v3_xml (布尔值) – 如果为 True,则在 v2 元素中添加 pdf 链接。

TEST_URL = 'http://keystone.host:5000/'
__dict__ = mappingproxy({'__module__': 'keystoneauth1.fixture.discovery', '__doc__': 'A List of version elements.\n\n    Creates a correctly structured list of identity service endpoints for\n    use in testing with discovery.\n\n    :param string href: The url that this should be based at.\n    :param bool v2: Add a v2 element.\n    :param bool v3: Add a v3 element.\n    :param string v2_status: The status to use for the v2 element.\n    :param DateTime v2_updated: The update time to use for the v2 element.\n    :param bool v2_html: True to add a html link to the v2 element.\n    :param bool v2_pdf: True to add a pdf link to the v2 element.\n    :param string v3_status: The status to use for the v3 element.\n    :param DateTime v3_updated: The update time to use for the v3 element.\n    :param bool v3_json: True to add a html link to the v2 element.\n    :param bool v3_xml: True to add a pdf link to the v2 element.\n    ', 'TEST_URL': 'http://keystone.host:5000/', '__init__': <function DiscoveryList.__init__>, 'versions': <property object>, 'add_version': <function DiscoveryList.add_version>, 'add_v2': <function DiscoveryList.add_v2>, 'add_v3': <function DiscoveryList.add_v3>, 'add_microversion': <function DiscoveryList.add_microversion>, 'add_nova_microversion': <function DiscoveryList.add_nova_microversion>, '__orig_bases__': (dict[str, typing.Any],), '__dict__': <attribute '__dict__' of 'DiscoveryList' objects>, '__weakref__': <attribute '__weakref__' of 'DiscoveryList' objects>, '__annotations__': {}})
__doc__ = 'A List of version elements.\n\n    Creates a correctly structured list of identity service endpoints for\n    use in testing with discovery.\n\n    :param string href: The url that this should be based at.\n    :param bool v2: Add a v2 element.\n    :param bool v3: Add a v3 element.\n    :param string v2_status: The status to use for the v2 element.\n    :param DateTime v2_updated: The update time to use for the v2 element.\n    :param bool v2_html: True to add a html link to the v2 element.\n    :param bool v2_pdf: True to add a pdf link to the v2 element.\n    :param string v3_status: The status to use for the v3 element.\n    :param DateTime v3_updated: The update time to use for the v3 element.\n    :param bool v3_json: True to add a html link to the v2 element.\n    :param bool v3_xml: True to add a pdf link to the v2 element.\n    '
__init__(href=None, v2=True, v3=True, v2_id=None, v3_id=None, v2_status=None, v2_updated=None, v2_html=True, v2_pdf=True, v3_status=None, v3_updated=None, v3_json=True, v3_xml=True)
__module__ = 'keystoneauth1.fixture.discovery'
__orig_bases__ = (dict[str, typing.Any],)
__weakref__

对该对象的弱引用列表

add_microversion(href, id, **kwargs)

向列表中添加一个微版本。

参数与 MicroversionDiscovery 相同。

add_nova_microversion(href, id, **kwargs)

向列表中添加一个 nova 微版本。

参数与 NovaMicroversionDiscovery 相同。

add_v2(href, **kwargs)

向列表中添加一个 v2 版本。

参数与 V2Discovery 相同。

add_v3(href, **kwargs)

向列表中添加一个 v3 版本。

参数与 V3Discovery 相同。

add_version(version)

将一个新的版本结构添加到列表中。

参数:

version (dict) – 要添加到列表中的一个新的版本结构。

property versions
exception keystoneauth1.fixture.FixtureValidationError

基类: Exception

您创建的令牌无效。

生成的令牌中包含的数据无效,并且不会从 keystone 服务器返回。您不应该使用此令牌进行测试。

__doc__ = '您 创建的 令牌 无效。\n\n    生成的 令牌 包含的 数据 无效, 并且 不会 keystone 服务器 返回。\n    应该 使用 令牌 进行 测试。\n    '
__module__ = 'keystoneauth1.fixture.exception'
__weakref__

对该对象的弱引用列表

class keystoneauth1.fixture.LoadingFixture(token=None, endpoint=None, user_id=None, project_id=None)

基础: Fixture

一个用于模拟所有插件加载调用的 fixture。

在使用从配置、CLI 或其他地方加载的 keystoneauth 插件时,由于我们没有合理的默认值,因此通常难以处理插件部分在测试中的问题。

此 fixture 将创建一个 TestPlugin,该插件将返回所有插件加载调用的结果,以便您可以简单地绕过身份验证步骤并返回一个已知的对象。

参数:
  • token (str) – 在经过身份验证的请求中包含的令牌。

  • endpoint (str) – 对服务查找做出响应的端点。

  • user_id (str) – 经过身份验证的用户报告的 user_id。

  • project_id (str) – 经过身份验证的用户报告的 project_id。

MOCK_POINT = 'keystoneauth1.loading.base.get_plugin_loader'
__doc__ = "一个 fixture, 用于 模拟 所有 插件 加载 调用。\n\n    在使用 配置、 CLI 或其他 地方 加载的 keystoneauth 插件时, 由于 我们 没有 合理的\n    默认值, 因此 通常 难以 处理 插件 部分 测试中的 问题。\n\n    fixture 创建一个 :py:class:`TestPlugin` 插件 将\n    返回 所有 插件 加载 调用的 结果, 以便 您可以 简单地 绕过 身份验证\n    步骤 返回 一个 已知的 对象。\n\n    :param str token: 经过 身份验证的 请求中 包含的 令牌。\n    :param str endpoint: 服务 查找 做出 响应的 端点。\n    :param str user_id: 经过 身份验证的 用户 报告的 user_id。\n    :param str project_id: 经过 身份验证的 用户 报告的 project_id。\n    "
__init__(token=None, endpoint=None, user_id=None, project_id=None)
__module__ = 'keystoneauth1.fixture.plugin'
create_plugin()
get_endpoint(path=None, **kwargs)

实用函数,用于获取插件将返回的端点。

此函数作为一种方便的方式提供,以便您可以在测试中进行比较。覆盖它不会影响插件返回的端点。

参数:

path (str) – 要附加到插件端点的路径。

get_plugin_loader(auth_type)
setUp()

准备 Fixture 以供使用。

不应覆盖此方法。具体的 fixture 应该实现 _setUp。仍然支持覆盖 setUp,但不推荐。

在 setUp 完成后,fixture 将具有一个或多个属性,这些属性可用于(具体取决于具体的子类)。

引发:

如果 _setUp 失败,则引发 MultipleExceptions。MultipleExceptions 中捕获的最后一个异常将是一个 SetupError 异常。

返回值:

None。

更改于 1.3:

覆盖 setUp 的建议已反转 - 在 1.3 之前,应该覆盖 setUp(),现在不应该覆盖。

更改于 1.3.1:

现在捕获 BaseException,并且只有 Exception 的子类才会被包装在 MultipleExceptions 中。

class keystoneauth1.fixture.TestPlugin(token=None, endpoint=None, user_id=None, project_id=None)

继承自:BaseAuthPlugin

一个简单的插件,用于在测试时返回您提供的内容。

在测试使用身份验证插件的服务时,您通常希望模拟身份验证调用并专注于服务的重点部分。此插件充当真实的 keystoneauth 插件,并返回已知的标准值,而无需模拟真实的 keystone 响应。

请注意,此插件是 BaseAuthPlugin 而不是 BaseIdentityPlugin。这意味着它实现了服务应该使用的基本插件接口,但没有实现 get_auth_ref。不应依赖服务 get_auth_ref,因为用户始终可以配置服务以使用非 keystone 身份验证。

参数:
  • token (str) – 在经过身份验证的请求中包含的令牌。

  • endpoint (str) – 对服务查找做出响应的端点。

  • user_id (str) – 经过身份验证的用户报告的 user_id。

  • project_id (str) – 经过身份验证的用户报告的 project_id。

__annotations__ = {}
__doc__ = '一个 简单的 插件 ,用于 测试 ,返回 提供 它的 内容 。\n\n    测试 使用 身份验证 插件 的服务 ,你 通常 希望 模拟\n    身份验证 调用 专注于 服务 的重要 部分 插件 充当 一个 真实的 keystoneauth 插件 ,并 返回 已知的\n    标准 ,而 无需 模拟 真实的 keystone 响应 。\n\n    请注意 ,此 插件 一个 BaseAuthPlugin ,而 不是 一个 BaseIdentityPlugin 。\n    这意味着 实现了 服务 使用的 基本 插件 接口 ,但 实现 get_auth_ref 不应 依赖\n    服务 中的 get_auth_ref ,因为 用户 始终 可以 配置 服务 使用 keystone 身份验证 。\n\n    :param str token: 包含 身份验证 请求 中的 令牌 。\n    :param str endpoint: 服务 查找 响应 的端点 。\n    :param str user_id: 经过 身份验证 的用户 user_id 。\n    :param str project_id: 经过 身份验证 的用户 project_id 。\n    '
__init__(token=None, endpoint=None, user_id=None, project_id=None)
__module__ = 'keystoneauth1.fixture.plugin'
auth_type = 'test_plugin'
get_endpoint(session, **kwargs)

为客户端返回一个端点。

`get_endpoint` 作为插件实现不要求任何必需的关键字参数,应该尽最大努力使用可用信息来确定端点。但是,有一些标准的选项将由客户端生成,并且应该由插件使用

  • service_type: 所需服务的类型

  • service_name: 目录中的服务名称

  • interface: 端点应具有的可视性

  • region_name: 端点所在的区域

参数:
  • session (keystoneauth1.session.Session) – 该认证插件所属的会话对象。

  • kwargs – 已忽略。

返回值:

用于与所需服务通信的基本 URL,或者如果不可用则为 None

返回类型:

字符串

get_project_id(session)

返回插件认证到的项目 ID。

只要可能,项目 ID 应该从 token 推断出来,但是某些 URL 和其他地方需要访问当前认证的项目 ID。

参数:

session (keystoneauth1.session.Session) – 一个会话对象,以便插件可以进行 HTTP 调用。

返回值:

一个项目标识符,如果不可用则为 None。

返回类型:

str

get_token(session)

获取令牌

获取令牌的方式由插件决定。如果它仍然有效,则可以重复使用、从缓存中检索或调用服务器上的身份验证请求

返回 None 将指示无法检索到令牌

此函数放置不当,因为它仅应需要使用“X-Auth-Token”标头的身份验证插件。但是,由于插件的演变,此方法是必需的,并且通常被调用以触发新插件上的身份验证请求

在实现新插件时,建议您实现此方法,但是,如果您不需要“X-Auth-Token”标头,请改写 `get_headers` 方法

参数:

session (keystoneauth1.session.Session) – 一个会话对象,以便插件可以进行 HTTP 调用。

返回值:

要使用的令牌

返回类型:

字符串

get_user_id(session)

返回插件的唯一用户标识符。

只要可能,用户 ID 应该从 token 推断出来,但是某些 URL 和其他地方需要访问当前认证的用户 ID。

参数:

session (keystoneauth1.session.Session) – 一个会话对象,以便插件可以进行 HTTP 调用。

返回值:

一个用户标识符,如果不可用则为 None。

返回类型:

str

invalidate()

使当前的身份验证数据失效。

这应该导致在下次调用时获取新的 token。

如果返回 Unauthorized HTTP 响应以指示 token 可能已被撤销或现在无效,则插件可能会失效。

返回值:

如果插件执行了某些操作以使其失效,则为 True。这意味着尝试再次是有意义的。如果未发生任何事情,则返回 False 以指示放弃。

返回类型:

bool

class keystoneauth1.fixture.V2Discovery(href, id=None, html=True, pdf=True, **kwargs)

基类:DiscoveryBase

用于 V2 身份服务端点的版本元素

提供了一些默认值和辅助方法,用于创建 v2.0 端点版本结构。客户端应使用此方法而不是创建自己的结构

参数:
  • **href** (string) – 此条目应指向的 URL

  • **id** (string) – 应报告的版本 ID (可选) 默认为“v2.0”

  • **html** (bool) – 将 HTML describedby 链接添加到结构中

  • **pdf** (bool) – 将 PDF describedby 链接添加到结构中

_DESC_URL = 'https://developer.openstack.org/api-ref/identity/v2/'
__doc__ = "用于 V2 身份服务端点的版本元素。\n\n    提供了一些默认值和辅助方法,用于创建 v2.0\n    端点版本结构。客户端应使用此方法而不是创建\n    自己的结构。\n\n    :param string href: 此条目应指向的 URL。\n    :param string id: 应报告的版本 ID (可选)\n                      默认为“v2.0”\n    :param bool html: 将 HTML describedby 链接添加到结构中。\n    :param bool pdf: 将 PDF describedby 链接添加到结构中。\n\n    "
__init__(href, id=None, html=True, pdf=True, **kwargs)
__module__ = 'keystoneauth1.fixture.discovery'
add_html_description()

添加 HTML describedby 链接

标准结构包含指向包含 API 规范的 HTML 文档的链接。将其添加到此条目

add_pdf_description()

添加 PDF describedby 链接

标准结构包含指向包含 API 规范的 PDF 文档的链接。将其添加到此条目

keystoneauth1.fixture.V2Token

别名:Token

class keystoneauth1.fixture.V3Discovery(href, id=None, json=True, xml=True, **kwargs)

基类:DiscoveryBase

用于 V3 身份服务端点的版本元素

提供了一些默认值和辅助方法,用于创建 v3 端点版本结构。客户端应使用此方法而不是创建自己的结构

参数:
  • **href** – 此条目应指向的 URL

  • **id** (string) – 应报告的版本 ID (可选) 默认为“v3.0”

  • **json** (bool) – 将 JSON media-type 元素添加到结构中

  • **xml** (bool) – 将 XML media-type 元素添加到结构中

__annotations__ = {}
__doc__ = "一个 V3 身份服务端点的版本元素。\n\n    提供了一些默认值和辅助方法,用于创建 V3\n    端点版本结构。客户端应该使用此方法,而不是创建\n    他们自己的结构。\n\n    :param href: 此条目应指向的 URL。\n    :param string id: 应报告的版本 ID。(可选)\n                      默认为 'v3.0'。\n    :param bool json: 将 JSON media-type 元素添加到结构中。\n    :param bool xml: 将 XML media-type 元素添加到结构中。\n    "
__init__(href, id=None, json=True, xml=True, **kwargs)
__module__ = 'keystoneauth1.fixture.discovery'
add_json_media_type()

添加 JSON media-type 链接。

标准结构包含端点支持的一组 media-type。将 JSON 添加到列表中。

add_xml_media_type()

添加 XML media-type 链接。

标准结构包含端点支持的一组 media-type。将 XML 添加到列表中。

class keystoneauth1.fixture.V3FederationToken(methods=None, identity_provider=None, protocol=None, groups=None)

Bases: Token

一个可用于测试的 V3 Keystone Federation token。

类似于 V3Token,此对象旨在允许客户端生成正确的 V3 federation token,用于测试代码。

FEDERATED_DOMAIN_ID = 'Federated'
__doc__ = '一个可用于测试的 V3 Keystone Federation token。\n\n    类似于 V3Token,此对象旨在允许客户端生成\n    正确的 V3 federation token,用于测试代码。\n    '
__init__(methods=None, identity_provider=None, protocol=None, groups=None)
__module__ = 'keystoneauth1.fixture.v3'
add_federation_info_to_user(identity_provider=None, protocol=None, groups=None)
keystoneauth1.fixture.V3Token

别名:Token

class keystoneauth1.fixture.VersionDiscovery(href, id, **kwargs)

基类:DiscoveryBase

不带微版本的非 Keystone 服务的版本元素。

提供了一些默认值和辅助方法,用于创建微版本端点版本结构。客户端应该使用此方法,而不是创建他们自己的结构。

参数:
  • **href** (string) – 此条目应指向的 URL

  • id (string) – 应报告的版本 ID。

__annotations__ = {}
__doc__ = '不带微版本的非 Keystone 服务的版本元素。\n\n    提供了一些默认值和辅助方法,用于创建微版本\n    端点版本结构。客户端应该使用此方法,而不是创建\n    他们自己的结构。\n\n    :param string href: 此条目应指向的 URL。\n    :param string id: 应报告的版本 ID。\n    '
__init__(href, id, **kwargs)
__module__ = 'keystoneauth1.fixture.discovery'