Esempio n. 1
0
    def test_http_with_objects_in_target(self):
        self.requests_mock.post("http://example.com/target", text='True')

        check = _external.HttpCheck('http', '//example.com/%(name)s')
        target = {'a': object(), 'name': 'target', 'b': 'test data'}
        self.assertTrue(
            check(target, dict(user='******', roles=['a', 'b', 'c']),
                  self.enforcer))
Esempio n. 2
0
    def test_reject(self):
        self.requests_mock.post("http://example.com/target", text='other')

        check = _external.HttpCheck('http', '//example.com/%(name)s')

        target_dict = dict(name='target', spam='spammer')
        cred_dict = dict(user='******', roles=['a', 'b', 'c'])
        self.assertFalse(check(target_dict, cred_dict, self.enforcer))

        last_request = self.requests_mock.last_request
        self.assertEqual('POST', last_request.method)
        self.assertEqual(
            dict(target=target_dict, credentials=cred_dict, rule=None),
            self.decode_post_data(last_request.body))
Esempio n. 3
0
    def test_accept(self):
        self.requests_mock.post('http://example.com/target', text='True')

        check = _external.HttpCheck('http', '//example.com/%(name)s')

        target_dict = dict(name='target', spam='spammer')
        cred_dict = dict(user='******', roles=['a', 'b', 'c'])
        self.assertTrue(check(target_dict, cred_dict, self.enforcer))

        last_request = self.requests_mock.last_request
        self.assertEqual('application/x-www-form-urlencoded',
                         last_request.headers['Content-Type'])
        self.assertEqual('POST', last_request.method)
        self.assertEqual(
            dict(target=target_dict, credentials=cred_dict, rule=None),
            self.decode_post_data(last_request.body))
Esempio n. 4
0
    def test_accept_with_rule_in_argument(self):
        self.requests_mock.post('http://example.com/target', text='True')

        check = _external.HttpCheck('http', '//example.com/%(name)s')

        target_dict = dict(name='target', spam='spammer')
        cred_dict = dict(user='******', roles=['a', 'b', 'c'])
        current_rule = "a_rule"
        self.assertTrue(
            check(target_dict, cred_dict, self.enforcer, current_rule))

        last_request = self.requests_mock.last_request
        self.assertEqual('POST', last_request.method)
        self.assertEqual(
            dict(target=target_dict, credentials=cred_dict, rule=current_rule),
            self.decode_post_data(last_request.body))
Esempio n. 5
0
    def test_accept_json(self):
        self.conf.set_override('remote_content_type',
                               'application/json',
                               group='oslo_policy')
        self.requests_mock.post('http://example.com/target', text='True')

        check = _external.HttpCheck('http', '//example.com/%(name)s')

        target_dict = dict(name='target', spam='spammer')
        cred_dict = dict(user='******', roles=['a', 'b', 'c'])
        self.assertTrue(check(target_dict, cred_dict, self.enforcer))

        last_request = self.requests_mock.last_request
        self.assertEqual('application/json',
                         last_request.headers['Content-Type'])
        self.assertEqual('POST', last_request.method)
        self.assertEqual(
            dict(rule=None, credentials=cred_dict, target=target_dict),
            json.loads(last_request.body.decode('utf-8')))