7e185ad96b
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
70 lines
2.1 KiB
Python
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,
|
|
)
|
|
)
|