use HTTPStatus instead of direct code

Python introduced http.HTTPStatus since version 3.5,
and Wallaby has targeted a minimum version of python 3.6.

Change-Id: I45f732f0f59b8fae831bb6c07f4fdd98cdd7409a
This commit is contained in:
sue 2021-03-25 15:49:10 +08:00 committed by Dantali0n
parent 546b730c9b
commit c28756c48b
25 changed files with 215 additions and 177 deletions

View File

@ -57,6 +57,7 @@ are dynamically loaded by Watcher at launch time.
import datetime
from http import HTTPStatus
import pecan
from pecan import rest
import wsme
@ -362,7 +363,7 @@ class ActionsController(rest.RestController):
return Action.convert_with_links(action)
@wsme_pecan.wsexpose(Action, body=Action, status_code=201)
@wsme_pecan.wsexpose(Action, body=Action, status_code=HTTPStatus.CREATED)
def post(self, action):
"""Create a new action(forbidden).
@ -422,7 +423,7 @@ class ActionsController(rest.RestController):
action_to_update.save()
return Action.convert_with_links(action_to_update)
@wsme_pecan.wsexpose(None, types.uuid, status_code=204)
@wsme_pecan.wsexpose(None, types.uuid, status_code=HTTPStatus.NO_CONTENT)
def delete(self, action_uuid):
"""Delete a action(forbidden).

View File

@ -56,6 +56,7 @@ state machine <action_plan_state_machine>`.
import datetime
from http import HTTPStatus
from oslo_log import log
import pecan
from pecan import rest
@ -460,7 +461,7 @@ class ActionPlansController(rest.RestController):
return ActionPlan.convert_with_links(action_plan)
@wsme_pecan.wsexpose(None, types.uuid, status_code=204)
@wsme_pecan.wsexpose(None, types.uuid, status_code=HTTPStatus.NO_CONTENT)
def delete(self, action_plan_uuid):
"""Delete an action plan.

View File

@ -32,6 +32,7 @@ states, visit :ref:`the Audit State machine <audit_state_machine>`.
import datetime
from dateutil import tz
from http import HTTPStatus
import pecan
from pecan import rest
import wsme
@ -595,7 +596,8 @@ class AuditsController(rest.RestController):
return Audit.convert_with_links(rpc_audit)
@wsme_pecan.wsexpose(Audit, body=AuditPostType, status_code=201)
@wsme_pecan.wsexpose(Audit, body=AuditPostType,
status_code=HTTPStatus.CREATED)
def post(self, audit_p):
"""Create a new audit.
@ -717,7 +719,7 @@ class AuditsController(rest.RestController):
audit_to_update.save()
return Audit.convert_with_links(audit_to_update)
@wsme_pecan.wsexpose(None, wtypes.text, status_code=204)
@wsme_pecan.wsexpose(None, wtypes.text, status_code=HTTPStatus.NO_CONTENT)
def delete(self, audit):
"""Delete an audit.

View File

@ -45,6 +45,7 @@ will be launched automatically or will need a manual confirmation from the
import datetime
from http import HTTPStatus
import pecan
from pecan import rest
import wsme
@ -618,7 +619,7 @@ class AuditTemplatesController(rest.RestController):
@wsme.validate(types.uuid, AuditTemplatePostType)
@wsme_pecan.wsexpose(AuditTemplate, body=AuditTemplatePostType,
status_code=201)
status_code=HTTPStatus.CREATED)
def post(self, audit_template_postdata):
"""Create a new audit template.
@ -694,7 +695,7 @@ class AuditTemplatesController(rest.RestController):
audit_template_to_update.save()
return AuditTemplate.convert_with_links(audit_template_to_update)
@wsme_pecan.wsexpose(None, wtypes.text, status_code=204)
@wsme_pecan.wsexpose(None, wtypes.text, status_code=HTTPStatus.NO_CONTENT)
def delete(self, audit_template):
"""Delete a audit template.

View File

@ -14,6 +14,7 @@
Webhook endpoint for Watcher v1 REST API.
"""
from http import HTTPStatus
from oslo_log import log
import pecan
from pecan import rest
@ -36,7 +37,7 @@ class WebhookController(rest.RestController):
self.dc_client = rpcapi.DecisionEngineAPI()
@wsme_pecan.wsexpose(None, wtypes.text, body=types.jsontype,
status_code=202)
status_code=HTTPStatus.ACCEPTED)
def post(self, audit_ident, body):
"""Trigger the given audit.

View File

@ -15,7 +15,7 @@
# under the License.
from http import client as http_client
from http import HTTPStatus
from oslo_config import cfg
from pecan import hooks
@ -91,8 +91,8 @@ class NoExceptionTracebackHook(hooks.PecanHook):
# Do nothing if there is no error.
# Status codes in the range 200 (OK) to 399 (400 = BAD_REQUEST) are not
# an error.
if (http_client.OK <= state.response.status_int <
http_client.BAD_REQUEST):
if (HTTPStatus.OK <= state.response.status_int <
HTTPStatus.BAD_REQUEST):
return
json_body = state.response.json

View File

@ -25,6 +25,7 @@ SHOULD include dedicated exception logging.
import functools
import sys
from http import HTTPStatus
from keystoneclient import exceptions as keystone_exceptions
from oslo_config import cfg
from oslo_log import log
@ -62,7 +63,7 @@ class WatcherException(Exception):
"""
msg_fmt = _("An unknown exception occurred")
code = 500
code = HTTPStatus.INTERNAL_SERVER_ERROR
headers = {}
safe = False
@ -114,12 +115,12 @@ class UnsupportedError(WatcherException):
class NotAuthorized(WatcherException):
msg_fmt = _("Not authorized")
code = 403
code = HTTPStatus.FORBIDDEN
class NotAcceptable(WatcherException):
msg_fmt = _("Request not acceptable.")
code = 406
code = HTTPStatus.NOT_ACCEPTABLE
class PolicyNotAuthorized(NotAuthorized):
@ -132,7 +133,7 @@ class OperationNotPermitted(NotAuthorized):
class Invalid(WatcherException, ValueError):
msg_fmt = _("Unacceptable parameters")
code = 400
code = HTTPStatus.BAD_REQUEST
class ObjectNotFound(WatcherException):
@ -141,12 +142,12 @@ class ObjectNotFound(WatcherException):
class Conflict(WatcherException):
msg_fmt = _('Conflict')
code = 409
code = HTTPStatus.CONFLICT
class ResourceNotFound(ObjectNotFound):
msg_fmt = _("The %(name)s resource %(id)s could not be found")
code = 404
code = HTTPStatus.NOT_FOUND
class InvalidParameter(Invalid):

View File

@ -11,6 +11,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from http import HTTPStatus
from oslo_config import cfg
from oslo_log import log as logging
@ -53,7 +54,7 @@ class PlacementHelper(object):
if rp_name:
url += '?name=%s' % rp_name
resp = self.get(url)
if resp.status_code == 200:
if resp.status_code == HTTPStatus.OK:
json_resp = resp.json()
return json_resp['resource_providers']
@ -77,7 +78,7 @@ class PlacementHelper(object):
"""
url = '/resource_providers/%s/inventories' % rp_uuid
resp = self.get(url)
if resp.status_code == 200:
if resp.status_code == HTTPStatus.OK:
json = resp.json()
return json['inventories']
msg = ("Failed to get resource provider %(rp_uuid)s inventories. "
@ -97,7 +98,7 @@ class PlacementHelper(object):
"""
resp = self.get("/resource_providers/%s/traits" % rp_uuid)
if resp.status_code == 200:
if resp.status_code == HTTPStatus.OK:
json = resp.json()
return json['traits']
msg = ("Failed to get resource provider %(rp_uuid)s traits. "
@ -118,7 +119,7 @@ class PlacementHelper(object):
"""
url = '/allocations/%s' % consumer_uuid
resp = self.get(url)
if resp.status_code == 200:
if resp.status_code == HTTPStatus.OK:
json = resp.json()
return json['allocations']
msg = ("Failed to get allocations for consumer %(c_uuid). "
@ -139,7 +140,7 @@ class PlacementHelper(object):
"""
url = '/resource_providers/%s/usages' % rp_uuid
resp = self.get(url)
if resp.status_code == 200:
if resp.status_code == HTTPStatus.OK:
json = resp.json()
return json['usages']
msg = ("Failed to get resource provider %(rp_uuid)s usages. "
@ -164,7 +165,7 @@ class PlacementHelper(object):
"""
url = "/allocation_candidates?%s" % resources
resp = self.get(url)
if resp.status_code == 200:
if resp.status_code == HTTPStatus.OK:
data = resp.json()
return data['provider_summaries']

View File

@ -18,6 +18,7 @@
from urllib import parse as urlparse
from http import HTTPStatus
from oslo_config import cfg
from oslo_log import log
@ -138,11 +139,11 @@ class GrafanaHelper(base.DataSourceBase):
resp = requests.get(self._base_url + str(project_id) + '/query',
params=params, headers=self._headers)
if resp.status_code == 200:
if resp.status_code == HTTPStatus.OK:
return resp
elif resp.status_code == 400:
elif resp.status_code == HTTPStatus.BAD_REQUEST:
LOG.error("Query for metric is invalid")
elif resp.status_code == 401:
elif resp.status_code == HTTPStatus.UNAUTHORIZED:
LOG.error("Authorization token is invalid")
raise exception.DataSourceNotAvailable(self.NAME)

View File

@ -13,6 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.
from http import HTTPStatus
from watcher.tests.api import base
@ -25,6 +27,6 @@ class TestBase(base.FunctionalTest):
response = self.get_json('/bad/path',
expect_errors=True,
headers={"Accept": "application/json"})
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual("application/json", response.content_type)
self.assertTrue(response.json['error_message'])

View File

@ -14,6 +14,7 @@ import datetime
import itertools
from unittest import mock
from http import HTTPStatus
from oslo_config import cfg
from oslo_serialization import jsonutils
from wsme import types as wtypes
@ -102,7 +103,7 @@ class TestListAction(api_base.FunctionalTest):
response = self.get_json('/actions/%s' % action['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_detail(self):
action = obj_utils.create_test_action(self.context, parents=None)
@ -125,7 +126,7 @@ class TestListAction(api_base.FunctionalTest):
action = obj_utils.create_test_action(self.context, parents=None)
response = self.get_json('/actions/%s/detail' % action['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_many(self):
action_list = []
@ -266,7 +267,7 @@ class TestListAction(api_base.FunctionalTest):
url = '/actions?action_plan_uuid=%s&audit_uuid=%s' % (
action_plan.uuid, self.audit.uuid)
response = self.get_json(url, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
def test_many_with_sort_key_uuid(self):
action_plan = obj_utils.create_test_action_plan(
@ -327,7 +328,7 @@ class TestListAction(api_base.FunctionalTest):
response = self.get_json(
'/actions?sort_key=%s' % 'bad_name',
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
def test_many_with_soft_deleted_action_plan_uuid(self):
action_plan1 = obj_utils.create_test_action_plan(
@ -488,7 +489,7 @@ class TestPatch(api_base.FunctionalTest):
[{'path': '/state', 'value': new_state, 'op': 'replace'}],
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertTrue(response.json['error_message'])
@ -516,7 +517,7 @@ class TestDelete(api_base.FunctionalTest):
mock_utcnow.return_value = test_time
response = self.delete('/actions/%s' % self.action.uuid,
expect_errors=True)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -536,7 +537,7 @@ class TestActionPolicyEnforcement(api_base.FunctionalTest):
"default": "rule:admin_api",
rule: "rule:defaut"})
response = func(*arg, **kwarg)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(
"Policy doesn't allow %s to be performed." % rule,

View File

@ -14,6 +14,7 @@ import datetime
import itertools
from unittest import mock
from http import HTTPStatus
from oslo_config import cfg
from oslo_serialization import jsonutils
@ -87,7 +88,7 @@ class TestListActionPlan(api_base.FunctionalTest):
response = self.get_json('/action_plans/%s' % action_plan['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_detail(self):
action_plan = obj_utils.create_test_action_plan(self.context)
@ -113,7 +114,7 @@ class TestListActionPlan(api_base.FunctionalTest):
response = self.get_json(
'/action_plan/%s/detail' % action_plan['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_many(self):
action_plan_list = []
@ -260,7 +261,7 @@ class TestListActionPlan(api_base.FunctionalTest):
response = self.get_json(
'/action_plans?sort_key=%s' % 'bad_name',
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
def test_links(self):
uuid = utils.generate_uuid()
@ -317,7 +318,7 @@ class TestDelete(api_base.FunctionalTest):
def test_delete_action_plan_without_action(self):
response = self.delete('/action_plans/%s' % self.action_plan.uuid,
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
self.action_plan.state = objects.action_plan.State.SUCCEEDED
@ -325,7 +326,7 @@ class TestDelete(api_base.FunctionalTest):
self.delete('/action_plans/%s' % self.action_plan.uuid)
response = self.get_json('/action_plans/%s' % self.action_plan.uuid,
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -345,20 +346,20 @@ class TestDelete(api_base.FunctionalTest):
expect_errors=True)
# The action plan does not exist anymore
self.assertEqual(404, ap_response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, ap_response.status_int)
self.assertEqual('application/json', ap_response.content_type)
self.assertTrue(ap_response.json['error_message'])
# Nor does the action
self.assertEqual(0, len(acts_response['actions']))
self.assertEqual(404, act_response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, act_response.status_int)
self.assertEqual('application/json', act_response.content_type)
self.assertTrue(act_response.json['error_message'])
def test_delete_action_plan_not_found(self):
uuid = utils.generate_uuid()
response = self.delete('/action_plans/%s' % uuid, expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -388,7 +389,7 @@ class TestStart(api_base.FunctionalTest):
uuid = utils.generate_uuid()
response = self.post('/v1/action_plans/%s/%s' %
(uuid, 'start'), expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -401,11 +402,11 @@ class TestStart(api_base.FunctionalTest):
response = self.post('/v1/action_plans/%s/%s/'
% (self.action_plan.uuid, 'start'),
expect_errors=True)
self.assertEqual(200, response.status_int)
self.assertEqual(HTTPStatus.OK, response.status_int)
act_response = self.get_json(
'/actions/%s' % action.uuid,
expect_errors=True)
self.assertEqual(200, act_response.status_int)
self.assertEqual(HTTPStatus.OK, act_response.status_int)
self.assertEqual('PENDING', act_response.json['state'])
self.assertEqual('application/json', act_response.content_type)
@ -445,7 +446,7 @@ class TestPatch(api_base.FunctionalTest):
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertTrue(response.json['error_message'])
def test_replace_non_existent_action_plan_denied(self):
@ -455,7 +456,7 @@ class TestPatch(api_base.FunctionalTest):
'value': objects.action_plan.State.PENDING,
'op': 'replace'}],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -465,7 +466,7 @@ class TestPatch(api_base.FunctionalTest):
[{'path': '/foo', 'value': 'bar', 'op': 'add'}],
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertTrue(response.json['error_message'])
def test_remove_denied(self):
@ -480,7 +481,7 @@ class TestPatch(api_base.FunctionalTest):
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertTrue(response.json['error_message'])
def test_remove_uuid_denied(self):
@ -488,7 +489,7 @@ class TestPatch(api_base.FunctionalTest):
'/action_plans/%s' % self.action_plan.uuid,
[{'path': '/uuid', 'op': 'remove'}],
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -497,7 +498,7 @@ class TestPatch(api_base.FunctionalTest):
'/action_plans/%s' % self.action_plan.uuid,
[{'path': '/non-existent', 'op': 'remove'}],
expect_errors=True)
self.assertEqual(400, response.status_code)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_code)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -512,7 +513,7 @@ class TestPatch(api_base.FunctionalTest):
[{'path': '/state', 'value': new_state,
'op': 'replace'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_code)
self.assertEqual(HTTPStatus.OK, response.status_code)
applier_mock.assert_called_once_with(mock.ANY,
self.action_plan.uuid)
@ -579,7 +580,7 @@ class TestPatchStateTransitionDenied(api_base.FunctionalTest):
self.assertNotEqual(self.new_state, initial_ap['state'])
self.assertEqual(self.original_state, updated_ap['state'])
self.assertEqual(400, response.status_code)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_code)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -618,7 +619,7 @@ class TestPatchStateTransitionOk(api_base.FunctionalTest):
self.assertNotEqual(self.new_state, initial_ap['state'])
self.assertEqual(self.new_state, updated_ap['state'])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_code)
self.assertEqual(HTTPStatus.OK, response.status_code)
class TestActionPlanPolicyEnforcement(api_base.FunctionalTest):
@ -635,7 +636,7 @@ class TestActionPlanPolicyEnforcement(api_base.FunctionalTest):
"default": "rule:admin_api",
rule: "rule:defaut"})
response = func(*arg, **kwarg)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(
"Policy doesn't allow %s to be performed." % rule,

View File

@ -15,6 +15,7 @@ import itertools
from unittest import mock
from urllib import parse as urlparse
from http import HTTPStatus
from oslo_config import cfg
from oslo_serialization import jsonutils
from oslo_utils import timeutils
@ -126,7 +127,7 @@ class TestListAuditTemplate(FunctionalTestWithSetup):
response = self.get_json(
'/audit_templates/%s' % audit_template['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_detail(self):
audit_template = obj_utils.create_test_audit_template(self.context)
@ -152,7 +153,7 @@ class TestListAuditTemplate(FunctionalTestWithSetup):
response = self.get_json(
'/audit_templates/%s/detail' % audit_template['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_many(self):
audit_template_list = []
@ -336,7 +337,7 @@ class TestListAuditTemplate(FunctionalTestWithSetup):
response = self.get_json(
'/audit_templates?sort_key=%s' % 'goal_bad_name',
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
class TestPatch(FunctionalTestWithSetup):
@ -362,7 +363,7 @@ class TestPatch(FunctionalTestWithSetup):
[{'path': '/goal', 'value': new_goal_uuid,
'op': 'replace'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_code)
self.assertEqual(HTTPStatus.OK, response.status_code)
response = self.get_json(
'/audit_templates/%s' % self.audit_template.uuid)
@ -386,7 +387,7 @@ class TestPatch(FunctionalTestWithSetup):
[{'path': '/goal', 'value': new_goal_uuid,
'op': 'replace'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_code)
self.assertEqual(HTTPStatus.OK, response.status_code)
response = self.get_json(
'/audit_templates/%s' % self.audit_template.name)
@ -401,7 +402,7 @@ class TestPatch(FunctionalTestWithSetup):
[{'path': '/goal', 'value': self.fake_goal1.uuid,
'op': 'replace'}],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -416,7 +417,7 @@ class TestPatch(FunctionalTestWithSetup):
[{'path': '/goal', 'value': utils.generate_uuid(),
'op': 'replace'}],
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
assert not cn_mock.called
def test_add_goal_uuid(self):
@ -426,7 +427,7 @@ class TestPatch(FunctionalTestWithSetup):
'value': self.fake_goal2.uuid,
'op': 'add'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_int)
self.assertEqual(HTTPStatus.OK, response.status_int)
response = self.get_json(
'/audit_templates/%s' % self.audit_template.uuid)
@ -439,7 +440,7 @@ class TestPatch(FunctionalTestWithSetup):
'value': self.fake_strategy1.uuid,
'op': 'add'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_int)
self.assertEqual(HTTPStatus.OK, response.status_int)
response = self.get_json(
'/audit_templates/%s' % self.audit_template.uuid)
@ -452,7 +453,7 @@ class TestPatch(FunctionalTestWithSetup):
'value': self.fake_strategy2['uuid'],
'op': 'replace'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_int)
self.assertEqual(HTTPStatus.OK, response.status_int)
response = self.get_json(
'/audit_templates/%s' % self.audit_template.uuid)
@ -466,7 +467,7 @@ class TestPatch(FunctionalTestWithSetup):
'value': utils.generate_uuid(), # Does not exist
'op': 'replace'}], expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertTrue(response.json['error_message'])
def test_add_non_existent_property(self):
@ -475,7 +476,7 @@ class TestPatch(FunctionalTestWithSetup):
[{'path': '/foo', 'value': 'bar', 'op': 'add'}],
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertTrue(response.json['error_message'])
def test_remove_strategy(self):
@ -492,7 +493,7 @@ class TestPatch(FunctionalTestWithSetup):
'/audit_templates/%s' % self.audit_template.uuid,
[{'path': '/strategy', 'op': 'remove'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_code)
self.assertEqual(HTTPStatus.OK, response.status_code)
def test_remove_goal(self):
response = self.get_json(
@ -503,7 +504,7 @@ class TestPatch(FunctionalTestWithSetup):
'/audit_templates/%s' % self.audit_template.uuid,
[{'path': '/goal', 'op': 'remove'}],
expect_errors=True)
self.assertEqual(403, response.status_code)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_code)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -512,7 +513,7 @@ class TestPatch(FunctionalTestWithSetup):
'/audit_templates/%s' % self.audit_template.uuid,
[{'path': '/uuid', 'op': 'remove'}],
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -521,7 +522,7 @@ class TestPatch(FunctionalTestWithSetup):
'/audit_templates/%s' % self.audit_template.uuid,
[{'path': '/non-existent', 'op': 'remove'}],
expect_errors=True)
self.assertEqual(400, response.status_code)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_code)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -538,7 +539,7 @@ class TestPost(FunctionalTestWithSetup):
response = self.post_json('/audit_templates', audit_template_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
# Check location header
self.assertIsNotNone(response.location)
expected_location = \
@ -565,7 +566,7 @@ class TestPost(FunctionalTestWithSetup):
response = self.post_json('/audit_templates', audit_template_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
# Check location header
self.assertIsNotNone(response.location)
expected_location = \
@ -613,7 +614,8 @@ class TestPost(FunctionalTestWithSetup):
strategy=self.fake_strategy1.uuid, scope=scope)
response = self.post_json('/audit_templates',
audit_template_dict, expect_errors=True)
self.assertEqual(500, response.status_int)
self.assertEqual(HTTPStatus.INTERNAL_SERVER_ERROR,
response.status_int)
def test_create_audit_template_does_autogenerate_id(self):
audit_template_dict = post_get_test_audit_template(
@ -635,7 +637,7 @@ class TestPost(FunctionalTestWithSetup):
response = self.post_json('/audit_templates', audit_template_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertTrue(utils.is_uuid_like(response.json['uuid']))
def test_create_audit_template_with_invalid_goal(self):
@ -648,7 +650,7 @@ class TestPost(FunctionalTestWithSetup):
goal_uuid=utils.generate_uuid())
response = self.post_json('/audit_templates',
audit_template_dict, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
assert not cn_mock.called
def test_create_audit_template_with_invalid_strategy(self):
@ -662,7 +664,7 @@ class TestPost(FunctionalTestWithSetup):
strategy_uuid=utils.generate_uuid())
response = self.post_json('/audit_templates',
audit_template_dict, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
assert not cn_mock.called
def test_create_audit_template_with_unrelated_strategy(self):
@ -676,7 +678,7 @@ class TestPost(FunctionalTestWithSetup):
strategy=self.fake_strategy2['uuid'])
response = self.post_json('/audit_templates',
audit_template_dict, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
assert not cn_mock.called
def test_create_audit_template_with_uuid(self):
@ -689,7 +691,7 @@ class TestPost(FunctionalTestWithSetup):
response = self.post_json('/audit_templates', audit_template_dict,
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
assert not cn_mock.called
def test_create_audit_template_with_old_scope(self):
@ -710,7 +712,7 @@ class TestPost(FunctionalTestWithSetup):
strategy=self.fake_strategy1.uuid, scope=scope)
response = self.post_json('/audit_templates',
audit_template_dict)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
class TestDelete(api_base.FunctionalTest):
@ -730,7 +732,7 @@ class TestDelete(api_base.FunctionalTest):
response = self.get_json(
urlparse.quote('/audit_templates/%s' % self.audit_template.uuid),
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -753,7 +755,7 @@ class TestDelete(api_base.FunctionalTest):
response = self.get_json(
urlparse.quote('/audit_templates/%s' % self.audit_template.name),
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -771,7 +773,7 @@ class TestDelete(api_base.FunctionalTest):
uuid = utils.generate_uuid()
response = self.delete(
'/audit_templates/%s' % uuid, expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -784,7 +786,7 @@ class TestAuditTemplatePolicyEnforcement(api_base.FunctionalTest):
"default": "rule:admin_api",
rule: "rule:defaut"})
response = func(*arg, **kwarg)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(
"Policy doesn't allow %s to be performed." % rule,

View File

@ -16,6 +16,7 @@ import itertools
from unittest import mock
from urllib import parse as urlparse
from http import HTTPStatus
from oslo_config import cfg
from oslo_serialization import jsonutils
from oslo_utils import timeutils
@ -130,7 +131,7 @@ class TestListAudit(api_base.FunctionalTest):
response = self.get_json('/audits/%s' % audit['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_detail(self):
audit = obj_utils.create_test_audit(self.context)
@ -153,7 +154,7 @@ class TestListAudit(api_base.FunctionalTest):
audit = obj_utils.create_test_audit(self.context)
response = self.get_json('/audits/%s/detail' % audit['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_many(self):
audit_list = []
@ -225,7 +226,7 @@ class TestListAudit(api_base.FunctionalTest):
response = self.get_json(
'/audits?sort_key=%s' % 'bad_name',
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
def test_links(self):
uuid = utils.generate_uuid()
@ -295,7 +296,7 @@ class TestPatch(api_base.FunctionalTest):
[{'path': '/state', 'value': new_state,
'op': 'replace'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_code)
self.assertEqual(HTTPStatus.OK, response.status_code)
response = self.get_json('/audits/%s' % self.audit.uuid)
self.assertEqual(new_state, response['state'])
@ -308,7 +309,7 @@ class TestPatch(api_base.FunctionalTest):
'/audits/%s' % utils.generate_uuid(),
[{'path': '/state', 'value': objects.audit.State.SUCCEEDED,
'op': 'replace'}], expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -318,7 +319,7 @@ class TestPatch(api_base.FunctionalTest):
'/audits/%s' % self.audit.uuid,
[{'path': '/state', 'value': new_state, 'op': 'add'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_int)
self.assertEqual(HTTPStatus.OK, response.status_int)
response = self.get_json('/audits/%s' % self.audit.uuid)
self.assertEqual(new_state, response['state'])
@ -329,7 +330,7 @@ class TestPatch(api_base.FunctionalTest):
[{'path': '/foo', 'value': 'bar', 'op': 'add'}],
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertTrue(response.json['error_message'])
def test_remove_ok(self):
@ -339,7 +340,7 @@ class TestPatch(api_base.FunctionalTest):
response = self.patch_json('/audits/%s' % self.audit.uuid,
[{'path': '/interval', 'op': 'remove'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_code)
self.assertEqual(HTTPStatus.OK, response.status_code)
response = self.get_json('/audits/%s' % self.audit.uuid)
self.assertIsNone(response['interval'])
@ -348,7 +349,7 @@ class TestPatch(api_base.FunctionalTest):
response = self.patch_json('/audits/%s' % self.audit.uuid,
[{'path': '/uuid', 'op': 'remove'}],
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -357,7 +358,7 @@ class TestPatch(api_base.FunctionalTest):
'/audits/%s' % self.audit.uuid,
[{'path': '/non-existent', 'op': 'remove'}],
expect_errors=True)
self.assertEqual(400, response.status_code)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_code)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -415,7 +416,7 @@ class TestPatchStateTransitionDenied(api_base.FunctionalTest):
'op': 'replace'}],
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_code)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_code)
self.assertTrue(response.json['error_message'])
response = self.get_json('/audits/%s' % self.audit.uuid)
@ -462,7 +463,7 @@ class TestPatchStateTransitionOk(api_base.FunctionalTest):
[{'path': '/state', 'value': self.new_state,
'op': 'replace'}])
self.assertEqual('application/json', response.content_type)
self.assertEqual(200, response.status_code)
self.assertEqual(HTTPStatus.OK, response.status_code)
response = self.get_json('/audits/%s' % self.audit.uuid)
self.assertEqual(self.new_state, response['state'])
@ -502,7 +503,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
# Check location header
self.assertIsNotNone(response.location)
expected_location = '/v1/audits/%s' % response.json['uuid']
@ -527,7 +528,7 @@ class TestPost(api_base.FunctionalTest):
audit_dict = post_get_test_audit(state=objects.audit.State.SUCCEEDED)
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -542,7 +543,7 @@ class TestPost(api_base.FunctionalTest):
'next_run_time', 'hostname'])
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -557,7 +558,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertEqual(objects.audit.State.PENDING,
response.json['state'])
self.assertTrue(utils.is_uuid_like(response.json['uuid']))
@ -573,7 +574,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertEqual(objects.audit.State.PENDING,
response.json['state'])
self.assertTrue(utils.is_uuid_like(response.json['uuid']))
@ -590,7 +591,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertEqual(objects.audit.State.PENDING,
response.json['state'])
self.assertTrue(utils.is_uuid_like(response.json['uuid']))
@ -608,7 +609,7 @@ class TestPost(api_base.FunctionalTest):
'01234567-8910-1112-1314-151617181920')
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual("application/json", response.content_type)
expected_error_msg = ('The audit template UUID or name specified is '
'invalid')
@ -643,7 +644,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertEqual(objects.audit.State.PENDING,
response.json['state'])
self.assertTrue(utils.is_uuid_like(response.json['uuid']))
@ -660,7 +661,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertEqual(objects.audit.State.PENDING,
response.json['state'])
self.assertEqual(audit_dict['interval'], response.json['interval'])
@ -679,7 +680,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertEqual(objects.audit.State.PENDING,
response.json['state'])
self.assertEqual(audit_dict['interval'], response.json['interval'])
@ -698,7 +699,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(500, response.status_int)
self.assertEqual(HTTPStatus.INTERNAL_SERVER_ERROR, response.status_int)
expected_error_msg = ('Exactly 5 or 6 columns has to be '
'specified for iterator expression.')
self.assertTrue(response.json['error_message'])
@ -714,7 +715,7 @@ class TestPost(api_base.FunctionalTest):
audit_dict['audit_type'] = objects.audit.AuditType.CONTINUOUS.value
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
expected_error_msg = ('Interval of audit must be specified '
'for CONTINUOUS.')
@ -731,7 +732,7 @@ class TestPost(api_base.FunctionalTest):
audit_dict['audit_type'] = objects.audit.AuditType.ONESHOT.value
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
expected_error_msg = 'Interval of audit must not be set for ONESHOT.'
self.assertTrue(response.json['error_message'])
@ -755,7 +756,7 @@ class TestPost(api_base.FunctionalTest):
del audit_dict['scope']
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
assert not mock_trigger_audit.called
@mock.patch.object(deapi.DecisionEngineAPI, 'trigger_audit')
@ -769,7 +770,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
expected_error_msg = ('Specify parameters but no predefined '
'strategy for audit, or no '
'parameter spec in predefined strategy')
@ -792,7 +793,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
expected_error_msg = ('Specify parameters but no predefined '
'strategy for audit, or no '
'parameter spec in predefined strategy')
@ -816,7 +817,7 @@ class TestPost(api_base.FunctionalTest):
del audit_dict[k]
response = self.post_json('/audits', audit_dict, expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual("application/json", response.content_type)
expected_error_msg = 'Audit parameter fake2 are not allowed'
self.assertTrue(response.json['error_message'])
@ -875,13 +876,13 @@ class TestPost(api_base.FunctionalTest):
audit_dict['name'] = normal_name
response = self.post_json('/audits', audit_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertEqual(normal_name, response.json['name'])
audit_dict['name'] = long_name
response = self.post_json('/audits', audit_dict)
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertNotEqual(long_name, response.json['name'])
@mock.patch.object(deapi.DecisionEngineAPI, 'trigger_audit')
@ -905,7 +906,7 @@ class TestPost(api_base.FunctionalTest):
audit_dict,
headers={'OpenStack-API-Version': 'infra-optim 1.1'})
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertEqual(objects.audit.State.PENDING,
response.json['state'])
self.assertEqual(audit_dict['interval'], response.json['interval'])
@ -944,7 +945,7 @@ class TestPost(api_base.FunctionalTest):
headers={'OpenStack-API-Version': 'infra-optim 1.0'},
expect_errors=True)
self.assertEqual('application/json', response.content_type)
self.assertEqual(406, response.status_int)
self.assertEqual(HTTPStatus.NOT_ACCEPTABLE, response.status_int)
expected_error_msg = 'Request not acceptable.'
self.assertTrue(response.json['error_message'])
self.assertIn(expected_error_msg, response.json['error_message'])
@ -963,7 +964,7 @@ class TestPost(api_base.FunctionalTest):
audit_dict,
headers={'OpenStack-API-Version': 'infra-optim 1.2'})
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertFalse(response.json['force'])
@mock.patch.object(deapi.DecisionEngineAPI, 'trigger_audit')
@ -980,7 +981,7 @@ class TestPost(api_base.FunctionalTest):
audit_dict,
headers={'OpenStack-API-Version': 'infra-optim 1.2'})
self.assertEqual('application/json', response.content_type)
self.assertEqual(201, response.status_int)
self.assertEqual(HTTPStatus.CREATED, response.status_int)
self.assertTrue(response.json['force'])
@ -1013,7 +1014,7 @@ class TestDelete(api_base.FunctionalTest):
'op': 'replace'}])
response = self.delete('/audits/%s' % self.audit.uuid,
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -1025,7 +1026,7 @@ class TestDelete(api_base.FunctionalTest):
self.delete('/audits/%s' % self.audit.uuid)
response = self.get_json('/audits/%s' % self.audit.uuid,
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -1041,7 +1042,7 @@ class TestDelete(api_base.FunctionalTest):
def test_delete_audit_not_found(self):
uuid = utils.generate_uuid()
response = self.delete('/audits/%s' % uuid, expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -1058,7 +1059,7 @@ class TestAuditPolicyEnforcement(api_base.FunctionalTest):
"default": "rule:admin_api",
rule: "rule:defaut"})
response = func(*arg, **kwarg)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(
"Policy doesn't allow %s to be performed." % rule,

View File

@ -15,6 +15,7 @@
from unittest import mock
from http import HTTPStatus
from oslo_serialization import jsonutils
from watcher.decision_engine import rpcapi as deapi
@ -42,7 +43,7 @@ class TestListDataModel(api_base.FunctionalTest):
'/data_model/?data_model_type=compute',
headers={'OpenStack-API-Version': 'infra-optim 1.2'},
expect_errors=True)
self.assertEqual(406, response.status_int)
self.assertEqual(HTTPStatus.NOT_ACCEPTABLE, response.status_int)
class TestDataModelPolicyEnforcement(api_base.FunctionalTest):
@ -59,7 +60,7 @@ class TestDataModelPolicyEnforcement(api_base.FunctionalTest):
"default": "rule:admin_api",
rule: "rule:defaut"})
response = func(*arg, **kwarg)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(
"Policy doesn't allow %s to be performed." % rule,

View File

@ -10,6 +10,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from http import HTTPStatus
from oslo_config import cfg
from oslo_serialization import jsonutils
from urllib import parse as urlparse
@ -59,7 +60,7 @@ class TestListGoal(api_base.FunctionalTest):
response = self.get_json(
'/goals/%s' % goal['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_detail(self):
goal = obj_utils.create_test_goal(self.context)
@ -71,7 +72,7 @@ class TestListGoal(api_base.FunctionalTest):
goal = obj_utils.create_test_goal(self.context)
response = self.get_json('/goals/%s/detail' % goal.uuid,
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_many(self):
goal_list = []
@ -139,7 +140,7 @@ class TestListGoal(api_base.FunctionalTest):
response = self.get_json(
'/goals?sort_key=%s' % 'bad_name',
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
class TestGoalPolicyEnforcement(api_base.FunctionalTest):
@ -150,7 +151,7 @@ class TestGoalPolicyEnforcement(api_base.FunctionalTest):
"default": "rule:admin_api",
rule: "rule:default"})
response = func(*arg, **kwarg)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(
"Policy doesn't allow %s to be performed." % rule,

View File

@ -10,6 +10,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from http import HTTPStatus
from watcher.api.controllers.v1 import versions
from watcher.tests.api import base as api_base
@ -38,7 +40,7 @@ class TestMicroversions(api_base.FunctionalTest):
'10'])},
expect_errors=True, return_json=False)
self.assertEqual('application/json', response.content_type)
self.assertEqual(406, response.status_int)
self.assertEqual(HTTPStatus.NOT_ACCEPTABLE, response.status_int)
expected_error_msg = ('Invalid value for'
' OpenStack-API-Version header')
self.assertTrue(response.json['error_message'])
@ -98,7 +100,7 @@ class TestMicroversions(api_base.FunctionalTest):
headers={'OpenStack-API-Version': ' '.join([SERVICE_TYPE,
'1.999'])},
expect_errors=True)
self.assertEqual(406, response.status_int)
self.assertEqual(HTTPStatus.NOT_ACCEPTABLE, response.status_int)
self.assertEqual(response.headers[H_MIN_VER], MIN_VER)
self.assertEqual(response.headers[H_MAX_VER], MAX_VER)
expected_error_msg = ('Version 1.999 was requested but the minor '

View File

@ -10,6 +10,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from http import HTTPStatus
from oslo_config import cfg
from oslo_serialization import jsonutils
from watcher.common import utils
@ -44,7 +45,7 @@ class TestListScoringEngine(api_base.FunctionalTest):
response = self.get_json(
'/scoring_engines/%s' % scoring_engine['name'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_detail(self):
obj_utils.create_test_goal(self.context)
@ -63,7 +64,7 @@ class TestListScoringEngine(api_base.FunctionalTest):
response = self.get_json(
'/scoring_engines/%s/detail' % scoring_engine.id,
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_many(self):
scoring_engine_list = []
@ -131,7 +132,7 @@ class TestListScoringEngine(api_base.FunctionalTest):
response = self.get_json(
'/goals?sort_key=%s' % 'bad_name',
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
class TestScoringEnginePolicyEnforcement(api_base.FunctionalTest):
@ -142,7 +143,7 @@ class TestScoringEnginePolicyEnforcement(api_base.FunctionalTest):
"default": "rule:admin_api",
rule: "rule:default"})
response = func(*arg, **kwarg)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(
"Policy doesn't allow %s to be performed." % rule,

View File

@ -10,6 +10,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from http import HTTPStatus
from oslo_config import cfg
from oslo_serialization import jsonutils
from urllib import parse as urlparse
@ -57,7 +58,7 @@ class TestListService(api_base.FunctionalTest):
response = self.get_json(
'/services/%s' % service['id'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_detail(self):
service = obj_utils.create_test_service(self.context)
@ -74,7 +75,7 @@ class TestListService(api_base.FunctionalTest):
service = obj_utils.create_test_service(self.context)
response = self.get_json('/services/%s/detail' % service.id,
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_many(self):
service_list = []
@ -149,7 +150,7 @@ class TestListService(api_base.FunctionalTest):
response = self.get_json(
'/services?sort_key=%s' % 'bad_name',
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
class TestServicePolicyEnforcement(api_base.FunctionalTest):
@ -160,7 +161,7 @@ class TestServicePolicyEnforcement(api_base.FunctionalTest):
"default": "rule:admin_api",
rule: "rule:default"})
response = func(*arg, **kwarg)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(
"Policy doesn't allow %s to be performed." % rule,

View File

@ -13,6 +13,7 @@
from unittest import mock
from urllib import parse as urlparse
from http import HTTPStatus
from oslo_config import cfg
from oslo_serialization import jsonutils
@ -88,7 +89,7 @@ class TestListStrategy(api_base.FunctionalTest):
response = self.get_json(
'/strategies/%s' % strategy['uuid'],
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_detail(self):
strategy = obj_utils.create_test_strategy(self.context)
@ -104,7 +105,7 @@ class TestListStrategy(api_base.FunctionalTest):
strategy = obj_utils.create_test_strategy(self.context)
response = self.get_json('/strategies/%s/detail' % strategy.uuid,
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
def test_many(self):
strategy_list = []
@ -240,7 +241,7 @@ class TestListStrategy(api_base.FunctionalTest):
response = self.get_json(
'/strategies?sort_key=%s' % 'bad_name',
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
class TestStrategyPolicyEnforcement(api_base.FunctionalTest):
@ -256,7 +257,7 @@ class TestStrategyPolicyEnforcement(api_base.FunctionalTest):
"default": "rule:admin_api",
rule: "rule:defaut"})
response = func(*arg, **kwarg)
self.assertEqual(403, response.status_int)
self.assertEqual(HTTPStatus.FORBIDDEN, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(
"Policy doesn't allow %s to be performed." % rule,

View File

@ -18,6 +18,8 @@ import webtest
import wsme
from wsme import types as wtypes
from http import HTTPStatus
from watcher.api.controllers.v1 import types
from watcher.common import exception
from watcher.common import utils
@ -120,68 +122,68 @@ class TestJsonPatchType(base.TestCase):
{'path': '/dict', 'op': 'add',
'value': {'cat': 'meow'}}]
ret = self._patch_json(valid_patches, False)
self.assertEqual(200, ret.status_int)
self.assertEqual(HTTPStatus.OK, ret.status_int)
self.assertEqual(valid_patches, ret.json)
def test_cannot_update_internal_attr(self):
patch = [{'path': '/internal', 'op': 'replace', 'value': 'foo'}]
ret = self._patch_json(patch, True)
self.assertEqual(400, ret.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, ret.status_int)
self.assertTrue(ret.json['faultstring'])
def test_cannot_update_internal_dict_attr(self):
patch = [{'path': '/internal', 'op': 'replace',
'value': 'foo'}]
ret = self._patch_json(patch, True)
self.assertEqual(400, ret.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, ret.status_int)
self.assertTrue(ret.json['faultstring'])
def test_mandatory_attr(self):
patch = [{'op': 'replace', 'path': '/mandatory', 'value': 'foo'}]
ret = self._patch_json(patch, False)
self.assertEqual(200, ret.status_int)
self.assertEqual(HTTPStatus.OK, ret.status_int)
self.assertEqual(patch, ret.json)
def test_cannot_remove_mandatory_attr(self):
patch = [{'op': 'remove', 'path': '/mandatory'}]
ret = self._patch_json(patch, True)
self.assertEqual(400, ret.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, ret.status_int)
self.assertTrue(ret.json['faultstring'])
def test_missing_required_fields_path(self):
missing_path = [{'op': 'remove'}]
ret = self._patch_json(missing_path, True)
self.assertEqual(400, ret.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, ret.status_int)
self.assertTrue(ret.json['faultstring'])
def test_missing_required_fields_op(self):
missing_op = [{'path': '/foo'}]
ret = self._patch_json(missing_op, True)
self.assertEqual(400, ret.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, ret.status_int)
self.assertTrue(ret.json['faultstring'])
def test_invalid_op(self):
patch = [{'path': '/foo', 'op': 'invalid'}]
ret = self._patch_json(patch, True)
self.assertEqual(400, ret.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, ret.status_int)
self.assertTrue(ret.json['faultstring'])
def test_invalid_path(self):
patch = [{'path': 'invalid-path', 'op': 'remove'}]
ret = self._patch_json(patch, True)
self.assertEqual(400, ret.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, ret.status_int)
self.assertTrue(ret.json['faultstring'])
def test_cannot_add_with_no_value(self):
patch = [{'path': '/extra/foo', 'op': 'add'}]
ret = self._patch_json(patch, True)
self.assertEqual(400, ret.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, ret.status_int)
self.assertTrue(ret.json['faultstring'])
def test_cannot_replace_with_no_value(self):
patch = [{'path': '/foo', 'op': 'replace'}]
ret = self._patch_json(patch, True)
self.assertEqual(400, ret.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, ret.status_int)
self.assertTrue(ret.json['faultstring'])

View File

@ -12,6 +12,8 @@
from unittest import mock
from http import HTTPStatus
from watcher.decision_engine import rpcapi as deapi
from watcher import objects
from watcher.tests.api import base as api_base
@ -34,7 +36,7 @@ class TestPost(api_base.FunctionalTest):
response = self.post_json(
'/webhooks/%s' % audit['uuid'], {},
headers={'OpenStack-API-Version': 'infra-optim 1.4'})
self.assertEqual(202, response.status_int)
self.assertEqual(HTTPStatus.ACCEPTED, response.status_int)
mock_trigger_audit.assert_called_once_with(
mock.ANY, audit['uuid'])
@ -43,7 +45,7 @@ class TestPost(api_base.FunctionalTest):
'/webhooks/no-audit', {},
headers={'OpenStack-API-Version': 'infra-optim 1.4'},
expect_errors=True)
self.assertEqual(404, response.status_int)
self.assertEqual(HTTPStatus.NOT_FOUND, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -53,7 +55,7 @@ class TestPost(api_base.FunctionalTest):
'/webhooks/%s' % audit['uuid'], {},
headers={'OpenStack-API-Version': 'infra-optim 1.4'},
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])
@ -66,6 +68,6 @@ class TestPost(api_base.FunctionalTest):
'/webhooks/%s' % audit['uuid'], {},
headers={'OpenStack-API-Version': 'infra-optim 1.4'},
expect_errors=True)
self.assertEqual(400, response.status_int)
self.assertEqual(HTTPStatus.BAD_REQUEST, response.status_int)
self.assertEqual('application/json', response.content_type)
self.assertTrue(response.json['error_message'])

View File

@ -13,9 +13,11 @@
# limitations under the License.
#
import time
from unittest import mock
from http import HTTPStatus
import time
from cinderclient import exceptions as cinder_exception
from watcher.common import cinder_helper
@ -291,7 +293,8 @@ class TestCinderHelper(base.TestCase):
volume = self.fake_volume()
cinder_util.get_volume = mock.MagicMock()
cinder_util.get_volume.side_effect = cinder_exception.NotFound(404)
cinder_util.get_volume.side_effect =\
cinder_exception.NotFound(HTTPStatus.NOT_FOUND)
result = cinder_util._can_get_volume(volume.id)
self.assertFalse(result)
@ -339,7 +342,7 @@ class TestCinderHelper(base.TestCase):
cinder_util = cinder_helper.CinderHelper()
volume = self.fake_volume()
side_effect = cinder_exception.NotFound(404)
side_effect = cinder_exception.NotFound(HTTPStatus.NOT_FOUND)
cinder_util.cinder.volumes.get.side_effect = side_effect
cinder_util.cinder.volumes.find.return_value = False
result = cinder_util.get_volume(volume)

View File

@ -11,6 +11,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from http import HTTPStatus
from unittest import mock
from watcher.common import placement_helper
@ -55,10 +56,10 @@ class TestPlacementHelper(base.TestCase):
kss_req.assert_called_once_with(url, method, **kwargs)
def test_get(self, kss_req):
kss_req.return_value = fake_requests.FakeResponse(200)
kss_req.return_value = fake_requests.FakeResponse(HTTPStatus.OK)
url = '/resource_providers'
resp = self.client.get(url)
self.assertEqual(200, resp.status_code)
self.assertEqual(HTTPStatus.OK, resp.status_code)
self._assert_keystone_called_once(kss_req, url, 'GET')
def test_get_resource_providers_OK(self, kss_req):
@ -76,7 +77,7 @@ class TestPlacementHelper(base.TestCase):
}
kss_req.return_value = fake_requests.FakeResponse(
200, content=jsonutils.dump_as_bytes(mock_json_data))
HTTPStatus.OK, content=jsonutils.dump_as_bytes(mock_json_data))
result = self.client.get_resource_providers(rp_name)
@ -99,7 +100,7 @@ class TestPlacementHelper(base.TestCase):
}
kss_req.return_value = fake_requests.FakeResponse(
200, content=jsonutils.dump_as_bytes(mock_json_data))
HTTPStatus.OK, content=jsonutils.dump_as_bytes(mock_json_data))
result = self.client.get_resource_providers(rp_name)
@ -110,7 +111,8 @@ class TestPlacementHelper(base.TestCase):
def test_get_resource_providers_fail(self, kss_req):
rp_name = 'compute'
kss_req.return_value = fake_requests.FakeResponse(
400, content=jsonutils.dump_as_bytes(self.fake_err_msg))
HTTPStatus.BAD_REQUEST,
content=jsonutils.dump_as_bytes(self.fake_err_msg))
result = self.client.get_resource_providers(rp_name)
self.assertIsNone(result)
@ -149,7 +151,7 @@ class TestPlacementHelper(base.TestCase):
}
kss_req.return_value = fake_requests.FakeResponse(
200, content=jsonutils.dump_as_bytes(mock_json_data))
HTTPStatus.OK, content=jsonutils.dump_as_bytes(mock_json_data))
result = self.client.get_inventories(rp_uuid)
@ -160,7 +162,8 @@ class TestPlacementHelper(base.TestCase):
def test_get_inventories_fail(self, kss_req):
rp_uuid = uuidutils.generate_uuid()
kss_req.return_value = fake_requests.FakeResponse(
404, content=jsonutils.dump_as_bytes(self.fake_err_msg))
HTTPStatus.NOT_FOUND,
content=jsonutils.dump_as_bytes(self.fake_err_msg))
result = self.client.get_inventories(rp_uuid)
self.assertIsNone(result)
@ -175,7 +178,7 @@ class TestPlacementHelper(base.TestCase):
}
kss_req.return_value = fake_requests.FakeResponse(
200, content=jsonutils.dump_as_bytes(mock_json_data))
HTTPStatus.OK, content=jsonutils.dump_as_bytes(mock_json_data))
result = self.client.get_provider_traits(rp_uuid)
@ -186,7 +189,8 @@ class TestPlacementHelper(base.TestCase):
def test_get_provider_traits_fail(self, kss_req):
rp_uuid = uuidutils.generate_uuid()
kss_req.return_value = fake_requests.FakeResponse(
404, content=jsonutils.dump_as_bytes(self.fake_err_msg))
HTTPStatus.NOT_FOUND,
content=jsonutils.dump_as_bytes(self.fake_err_msg))
result = self.client.get_provider_traits(rp_uuid)
self.assertIsNone(result)
@ -216,7 +220,7 @@ class TestPlacementHelper(base.TestCase):
}
kss_req.return_value = fake_requests.FakeResponse(
200, content=jsonutils.dump_as_bytes(mock_json_data))
HTTPStatus.OK, content=jsonutils.dump_as_bytes(mock_json_data))
result = self.client.get_allocations_for_consumer(c_uuid)
@ -227,7 +231,8 @@ class TestPlacementHelper(base.TestCase):
def test_get_allocations_for_consumer_fail(self, kss_req):
c_uuid = uuidutils.generate_uuid()
kss_req.return_value = fake_requests.FakeResponse(
404, content=jsonutils.dump_as_bytes(self.fake_err_msg))
HTTPStatus.NOT_FOUND,
content=jsonutils.dump_as_bytes(self.fake_err_msg))
result = self.client.get_allocations_for_consumer(c_uuid)
self.assertIsNone(result)
@ -245,7 +250,7 @@ class TestPlacementHelper(base.TestCase):
}
kss_req.return_value = fake_requests.FakeResponse(
200, content=jsonutils.dump_as_bytes(mock_json_data))
HTTPStatus.OK, content=jsonutils.dump_as_bytes(mock_json_data))
result = self.client.get_usages_for_resource_provider(rp_uuid)
@ -256,7 +261,8 @@ class TestPlacementHelper(base.TestCase):
def test_get_usages_for_resource_provider_fail(self, kss_req):
rp_uuid = uuidutils.generate_uuid()
kss_req.return_value = fake_requests.FakeResponse(
404, content=jsonutils.dump_as_bytes(self.fake_err_msg))
HTTPStatus.NOT_FOUND,
content=jsonutils.dump_as_bytes(self.fake_err_msg))
result = self.client.get_usages_for_resource_provider(rp_uuid)
self.assertIsNone(result)
@ -296,7 +302,7 @@ class TestPlacementHelper(base.TestCase):
}
kss_req.return_value = fake_requests.FakeResponse(
200, content=jsonutils.dump_as_bytes(mock_json_data))
HTTPStatus.OK, content=jsonutils.dump_as_bytes(mock_json_data))
result = self.client.get_candidate_providers(resources)
@ -307,6 +313,7 @@ class TestPlacementHelper(base.TestCase):
def test_get_candidate_providers_fail(self, kss_req):
rp_uuid = uuidutils.generate_uuid()
kss_req.return_value = fake_requests.FakeResponse(
404, content=jsonutils.dump_as_bytes(self.fake_err_msg))
HTTPStatus.NOT_FOUND,
content=jsonutils.dump_as_bytes(self.fake_err_msg))
result = self.client.get_candidate_providers(rp_uuid)
self.assertIsNone(result)

View File

@ -26,6 +26,7 @@ from watcher.common import exception
from watcher.decision_engine.datasources import grafana
from watcher.tests import base
from http import HTTPStatus
import requests
CONF = cfg.CONF
@ -128,7 +129,7 @@ class TestGrafana(base.BaseTestCase):
problems.
"""
m_request.return_value = mock.Mock(status_code=404)
m_request.return_value = mock.Mock(status_code=HTTPStatus.NOT_FOUND)
t_grafana = grafana.GrafanaHelper(osc=mock.Mock())