keystoneauth1.fixture.plugin 模块

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

基础: Fixture

一个 fixture,它将替换所有插件加载调用。

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

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

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

  • endpoint (str) – 用于响应服务查找的端点。

  • user_id (str) – 已身份验证用户的 user_id。

  • project_id (str) – 已身份验证用户的 project_id。

MOCK_POINT = 'keystoneauth1.loading.base.get_plugin_loader'
__annotations__ = {}
__doc__ = "一个 fixture,它将替换所有插件加载调用。\n\n    在使用 keystoneauth 插件从配置、CLI 或其他地方加载时,通常很难处理测试中的插件部分,因为我们没有合理的默认值。\n\n    fixture 将创建一个 :py:class:`TestPlugin` ,该插件将返回所有插件加载调用的结果,因此您可以简单地绕过身份验证步骤并返回一个已知的对象。\n\n    :param str token: 包含在已身份验证请求中的 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.plugin.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) – 包含在已身份验证请求中的 token。

  • endpoint (str) – 用于响应服务查找的端点。

  • user_id (str) – 已身份验证用户的 user_id。

  • project_id (str) – 已身份验证用户的 project_id。

__annotations__ = {'_discovery_cache': 'dict[str, discover.Discover]'}
__doc__ = '一个 简单的插件,它返回您提供给它的内容以进行测试。\n\n    在测试使用身份验证插件的服务时,您通常希望替换身份验证调用并专注于服务的重点部分。\n    插件充当真实的 keystoneauth 插件,并返回已知的标准值,而无需替换真实的 keystone 响应。\n\n    请注意,此插件是 BaseAuthPlugin 而不是 BaseIdentityPlugin。这意味着它实现了服务应该使用的基本插件接口,但没有实现 get_auth_ref。\n    不应依赖服务的 get_auth_ref,因为用户始终可以配置服务以使用非 keystone 身份验证。\n\n    :param str token: 包含在已身份验证请求中的 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'
_discovery_cache: dict[str, Discover]
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.plugin._TestPluginLoader(plugin)

Bases: BaseLoader[TestPlugin]

__abstractmethods__ = frozenset({})
__doc__ = None
__init__(plugin)
__module__ = 'keystoneauth1.fixture.plugin'
__orig_bases__ = (keystoneauth1.loading.base.BaseLoader[keystoneauth1.fixture.plugin.TestPlugin],)
__parameters__ = ()
_abc_impl = <_abc._abc_data object>
create_plugin(**kwargs)

从加载程序可用的选项创建插件。

给定加载程序指定的选项,创建适当的插件。您可以覆盖此函数以在加载程序中进行操作。

过去,通过提供 plugin_class 属性来指定此内容,但仍然支持此方法,但是指定属性不允许您根据呈现的选项选择插件类型。

如果您希望根据呈现的选项返回不同的插件,请覆盖此函数,否则可以简单地提供 plugin_class 属性。

添加于 2.9

get_options()

返回与身份验证插件关联的参数列表。

此列表可用于生成 CLI 或配置文件参数。

返回值:

描述可用插件参数的 Param 对象列表。

返回类型:

列表

keystoneauth1.fixture.plugin._format_endpoint(endpoint, **kwargs)