blob: 9130fb6a300b8f1513de3a67717840799481e983 [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
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050023class RbacMalformedResponse(BasePatroleException):
Samantha Blanco36bea052017-07-19 12:01:59 -040024 message = ("The response body is missing the expected %(attribute)s due "
25 "to policy enforcement failure.")
26
27 def __init__(self, empty=False, extra_attr=False, **kwargs):
28 if empty:
29 self.message = ("The response body is empty due to policy "
30 "enforcement failure.")
31 kwargs = {}
32 if extra_attr:
33 self.message = ("The response body contained an unexpected "
34 "attribute due to policy enforcement failure.")
35 kwargs = {}
36 super(RbacMalformedResponse, self).__init__(**kwargs)
DavidPurcell029d8c32017-01-06 15:27:41 -050037
38
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050039class RbacResourceSetupFailed(BasePatroleException):
Felipe Monteiro44d77842018-03-21 02:42:59 +000040 message = "RBAC resource setup failed"
DavidPurcell029d8c32017-01-06 15:27:41 -050041
42
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050043class RbacOverPermissionException(BasePatroleException):
Felipe Monteirof16b6b32018-06-28 19:32:59 -040044 """Raised when the expected result is failure but the actual result is
45 pass.
46 """
47 message = "Unauthorized action was allowed to be performed"
48
49
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050050class RbacUnderPermissionException(BasePatroleException):
Felipe Monteirof16b6b32018-06-28 19:32:59 -040051 """Raised when the expected result is pass but the actual result is
52 failure.
53 """
54 message = "Authorized action was not allowed to be performed"
55
56
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050057class RbacExpectedWrongException(BasePatroleException):
Felipe Monteirof16b6b32018-06-28 19:32:59 -040058 """Raised when the expected exception does not match the actual exception
59 raised, when both are instances of Forbidden or NotFound, indicating
60 the test provides a wrong argument to `expected_error_codes`.
61 """
62 message = ("Expected %(expected)s to be raised but %(actual)s was raised "
63 "instead. Actual exception: %(exception)s")
Rick Bartra503c5572017-03-09 13:49:58 -050064
65
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050066class RbacInvalidServiceException(BasePatroleException):
Felipe Monteiro51299a12018-06-28 20:03:27 -040067 """Raised when an invalid service is passed to ``rbac_rule_validation``
68 decorator.
69 """
Rick Bartra503c5572017-03-09 13:49:58 -050070 message = "Attempted to test an invalid service"
Felipe Monteiro48c913d2017-03-15 12:07:48 -040071
72
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050073class RbacParsingException(BasePatroleException):
Felipe Monteiro48c913d2017-03-15 12:07:48 -040074 message = "Attempted to test an invalid policy file or action"
Rick Bartra12998942017-03-17 17:35:45 -040075
76
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050077class RbacInvalidErrorCode(BasePatroleException):
Rick Bartra12998942017-03-17 17:35:45 -040078 message = "Unsupported error code passed in test"
Mykola Yakovliev11376ab2018-08-06 15:34:22 -050079
80
81class RbacOverrideRoleException(BasePatroleException):
82 """Raised when override_role is used incorrectly or fails somehow.
83
84 Used for safeguarding against false positives that might occur when the
85 expected exception isn't raised inside the ``override_role`` context.
86 Specifically, when:
87
88 * ``override_role`` isn't called
89 * an exception is raised before ``override_role`` context
90 * an exception is raised after ``override_role`` context
91 """
92 message = "Override role failure or incorrect usage"