keystoneauth1.fixture.plugin 模块¶
- class keystoneauth1.fixture.plugin.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'
- __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 身份验证。
- 参数:
- __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'
- 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.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)