oslo.policy/oslo_policy/fixture.py
Davanum Srinivas 7e185ad96b http/https check rules as stevedore extensions
Why? HttpCheck/HttpsCheck are examples of rule checks
that can be implemented outside of the oslo.policy
library. Once we setup the infra for registering and
using these as stevedore extensions, we automatically
get the capability of other folks contributing to
writing custom rules for their own use cases.

* Add HttpCheck/HttpsCheck as entrypoints in setup.cfg
* parser will check get_extensions() to see if there
  are any external checks registered
* Move HttpCheck/HttpsCheck into external module
* Move related test cases to test_external.py

Change-Id: Icde2b26a38d7c7842defae053228d9208454b969
2017-10-05 08:40:47 -04:00

70 lines
2.1 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
__all__ = ['HttpCheckFixture', 'HttpsCheckFixture']
import fixtures
class HttpCheckFixture(fixtures.Fixture):
"""Helps short circuit the external http call"""
def __init__(self, return_value=True):
"""Initialize the fixture.
:param return_value: True implies the policy check passed and False
implies that the policy check failed
:type return_value: boolean
"""
super(HttpCheckFixture, self).__init__()
self.return_value = return_value
def setUp(self):
super(HttpCheckFixture, self).setUp()
def mocked_call(target, cred, enforcer, rule):
return self.return_value
self.useFixture(
fixtures.MonkeyPatch(
'oslo_policy._external.HttpCheck.__call__',
mocked_call,
)
)
class HttpsCheckFixture(fixtures.Fixture):
"""Helps short circuit the external http call"""
def __init__(self, return_value=True):
"""Initialize the fixture.
:param return_value: True implies the policy check passed and False
implies that the policy check failed
:type return_value: boolean
"""
super(HttpsCheckFixture, self).__init__()
self.return_value = return_value
def setUp(self):
super(HttpsCheckFixture, self).setUp()
def mocked_call(target, cred, enforcer, rule):
return self.return_value
self.useFixture(
fixtures.MonkeyPatch(
'oslo_policy._external.HttpsCheck.__call__',
mocked_call,
)
)