blob: 3958e171fb0b45637d1f14ffc27d1955e1a3fe2e [file] [log] [blame]
DavidPurcellb25f93d2017-01-27 12:46:27 -05001# Copyright 2017 AT&T Corporation.
DavidPurcell029d8c32017-01-06 15:27:41 -05002# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
16from tempest.lib import exceptions
17
18
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050019class BasePatroleException(exceptions.TempestException):
20 message = "An unknown RBAC exception occurred"
21
22
23class RbacConflictingPolicies(BasePatroleException):
Samantha Blanco36bea052017-07-19 12:01:59 -040024 message = ("Conflicting policies preventing this action from being "
25 "performed.")
26
27
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050028class RbacMalformedResponse(BasePatroleException):
Samantha Blanco36bea052017-07-19 12:01:59 -040029 message = ("The response body is missing the expected %(attribute)s due "
30 "to policy enforcement failure.")
31
32 def __init__(self, empty=False, extra_attr=False, **kwargs):
33 if empty:
34 self.message = ("The response body is empty due to policy "
35 "enforcement failure.")
36 kwargs = {}
37 if extra_attr:
38 self.message = ("The response body contained an unexpected "
39 "attribute due to policy enforcement failure.")
40 kwargs = {}
41 super(RbacMalformedResponse, self).__init__(**kwargs)
DavidPurcell029d8c32017-01-06 15:27:41 -050042
43
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050044class RbacResourceSetupFailed(BasePatroleException):
Felipe Monteiro44d77842018-03-21 02:42:59 +000045 message = "RBAC resource setup failed"
DavidPurcell029d8c32017-01-06 15:27:41 -050046
47
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050048class RbacOverPermissionException(BasePatroleException):
Felipe Monteirof16b6b32018-06-28 19:32:59 -040049 """Raised when the expected result is failure but the actual result is
50 pass.
51 """
52 message = "Unauthorized action was allowed to be performed"
53
54
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050055class RbacUnderPermissionException(BasePatroleException):
Felipe Monteirof16b6b32018-06-28 19:32:59 -040056 """Raised when the expected result is pass but the actual result is
57 failure.
58 """
59 message = "Authorized action was not allowed to be performed"
60
61
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050062class RbacExpectedWrongException(BasePatroleException):
Felipe Monteirof16b6b32018-06-28 19:32:59 -040063 """Raised when the expected exception does not match the actual exception
64 raised, when both are instances of Forbidden or NotFound, indicating
65 the test provides a wrong argument to `expected_error_codes`.
66 """
67 message = ("Expected %(expected)s to be raised but %(actual)s was raised "
68 "instead. Actual exception: %(exception)s")
Rick Bartra503c5572017-03-09 13:49:58 -050069
70
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050071class RbacInvalidServiceException(BasePatroleException):
Felipe Monteiro51299a12018-06-28 20:03:27 -040072 """Raised when an invalid service is passed to ``rbac_rule_validation``
73 decorator.
74 """
Rick Bartra503c5572017-03-09 13:49:58 -050075 message = "Attempted to test an invalid service"
Felipe Monteiro48c913d2017-03-15 12:07:48 -040076
77
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050078class RbacParsingException(BasePatroleException):
Felipe Monteiro48c913d2017-03-15 12:07:48 -040079 message = "Attempted to test an invalid policy file or action"
Rick Bartra12998942017-03-17 17:35:45 -040080
81
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050082class RbacInvalidErrorCode(BasePatroleException):
Rick Bartra12998942017-03-17 17:35:45 -040083 message = "Unsupported error code passed in test"
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050084
85
86class RbacOverrideRoleException(BasePatroleException):
87 """Raised when override_role is used incorrectly or fails somehow.
88
89 Used for safeguarding against false positives that might occur when the
90 expected exception isn't raised inside the ``override_role`` context.
91 Specifically, when:
92
93 * ``override_role`` isn't called
94 * an exception is raised before ``override_role`` context
95 * an exception is raised after ``override_role`` context
96 """
97 message = "Override role failure or incorrect usage"