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)
-
版本元素列表。
创建一个正确结构的身份服务端点列表,用于在发现测试中使用。
- 参数:
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,该插件将返回所有插件加载调用的结果,以便您可以简单地绕过身份验证步骤并返回一个已知的对象。- 参数:
- 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 身份验证。
- 参数:
- __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。
- 返回类型:
- 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。
- 返回类型:
- invalidate()
使当前的身份验证数据失效。
这应该导致在下次调用时获取新的 token。
如果返回 Unauthorized HTTP 响应以指示 token 可能已被撤销或现在无效,则插件可能会失效。
- 返回值:
如果插件执行了某些操作以使其失效,则为 True。这意味着尝试再次是有意义的。如果未发生任何事情,则返回 False 以指示放弃。
- 返回类型:
- class keystoneauth1.fixture.V2Discovery(href, id=None, html=True, pdf=True, **kwargs)
基类:
DiscoveryBase用于 V2 身份服务端点的版本元素。
提供了一些默认值和辅助方法,用于创建 v2.0 端点版本结构。客户端应使用此方法而不是创建自己的结构。
- 参数:
- _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 端点版本结构。客户端应使用此方法而不是创建自己的结构。
- 参数:
- __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'