From c28756c48b19eb203cef77a4924608d5825d1881 Mon Sep 17 00:00:00 2001 From: sue Date: Thu, 25 Mar 2021 15:49:10 +0800 Subject: [PATCH] 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 --- watcher/api/controllers/v1/action.py | 5 +- watcher/api/controllers/v1/action_plan.py | 3 +- watcher/api/controllers/v1/audit.py | 6 +- watcher/api/controllers/v1/audit_template.py | 5 +- watcher/api/controllers/v1/webhooks.py | 3 +- watcher/api/hooks.py | 6 +- watcher/common/exception.py | 13 +-- watcher/common/placement_helper.py | 13 +-- .../decision_engine/datasources/grafana.py | 7 +- watcher/tests/api/test_base.py | 4 +- watcher/tests/api/v1/test_actions.py | 15 ++-- watcher/tests/api/v1/test_actions_plans.py | 43 +++++----- watcher/tests/api/v1/test_audit_templates.py | 60 +++++++------- watcher/tests/api/v1/test_audits.py | 79 ++++++++++--------- watcher/tests/api/v1/test_data_model.py | 5 +- watcher/tests/api/v1/test_goals.py | 9 ++- watcher/tests/api/v1/test_microversions.py | 6 +- watcher/tests/api/v1/test_scoring_engines.py | 9 ++- watcher/tests/api/v1/test_services.py | 9 ++- watcher/tests/api/v1/test_strategies.py | 9 ++- watcher/tests/api/v1/test_types.py | 24 +++--- watcher/tests/api/v1/test_webhooks.py | 10 ++- watcher/tests/common/test_cinder_helper.py | 9 ++- watcher/tests/common/test_placement_helper.py | 37 +++++---- .../datasources/test_grafana_helper.py | 3 +- 25 files changed, 215 insertions(+), 177 deletions(-) diff --git a/watcher/api/controllers/v1/action.py b/watcher/api/controllers/v1/action.py index 73e9a17f7..3f803579d 100644 --- a/watcher/api/controllers/v1/action.py +++ b/watcher/api/controllers/v1/action.py @@ -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). diff --git a/watcher/api/controllers/v1/action_plan.py b/watcher/api/controllers/v1/action_plan.py index e13fe3b5a..0ad331ec8 100644 --- a/watcher/api/controllers/v1/action_plan.py +++ b/watcher/api/controllers/v1/action_plan.py @@ -56,6 +56,7 @@ 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. diff --git a/watcher/api/controllers/v1/audit.py b/watcher/api/controllers/v1/audit.py index 74df4a4f0..e998bc203 100644 --- a/watcher/api/controllers/v1/audit.py +++ b/watcher/api/controllers/v1/audit.py @@ -32,6 +32,7 @@ states, visit :ref:`the 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. diff --git a/watcher/api/controllers/v1/audit_template.py b/watcher/api/controllers/v1/audit_template.py index f22e60692..ac57c0bba 100644 --- a/watcher/api/controllers/v1/audit_template.py +++ b/watcher/api/controllers/v1/audit_template.py @@ -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. diff --git a/watcher/api/controllers/v1/webhooks.py b/watcher/api/controllers/v1/webhooks.py index 8835acce3..d2e783a4d 100644 --- a/watcher/api/controllers/v1/webhooks.py +++ b/watcher/api/controllers/v1/webhooks.py @@ -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. diff --git a/watcher/api/hooks.py b/watcher/api/hooks.py index 996678eaf..208a11402 100644 --- a/watcher/api/hooks.py +++ b/watcher/api/hooks.py @@ -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 diff --git a/watcher/common/exception.py b/watcher/common/exception.py index 86ce9f4cc..7eb65e82d 100644 --- a/watcher/common/exception.py +++ b/watcher/common/exception.py @@ -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): diff --git a/watcher/common/placement_helper.py b/watcher/common/placement_helper.py index 7c34bcb90..c6cf14705 100644 --- a/watcher/common/placement_helper.py +++ b/watcher/common/placement_helper.py @@ -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'] diff --git a/watcher/decision_engine/datasources/grafana.py b/watcher/decision_engine/datasources/grafana.py index 6c736766b..f7a3673e1 100644 --- a/watcher/decision_engine/datasources/grafana.py +++ b/watcher/decision_engine/datasources/grafana.py @@ -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) diff --git a/watcher/tests/api/test_base.py b/watcher/tests/api/test_base.py index 8e5860c38..c639cd092 100644 --- a/watcher/tests/api/test_base.py +++ b/watcher/tests/api/test_base.py @@ -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']) diff --git a/watcher/tests/api/v1/test_actions.py b/watcher/tests/api/v1/test_actions.py index 6aaf3d719..b5c5fdbc0 100644 --- a/watcher/tests/api/v1/test_actions.py +++ b/watcher/tests/api/v1/test_actions.py @@ -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, diff --git a/watcher/tests/api/v1/test_actions_plans.py b/watcher/tests/api/v1/test_actions_plans.py index 4b227a43a..7d89a2892 100644 --- a/watcher/tests/api/v1/test_actions_plans.py +++ b/watcher/tests/api/v1/test_actions_plans.py @@ -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, diff --git a/watcher/tests/api/v1/test_audit_templates.py b/watcher/tests/api/v1/test_audit_templates.py index fcad7dc16..3d066ebe5 100644 --- a/watcher/tests/api/v1/test_audit_templates.py +++ b/watcher/tests/api/v1/test_audit_templates.py @@ -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, diff --git a/watcher/tests/api/v1/test_audits.py b/watcher/tests/api/v1/test_audits.py index 58be0ebdb..878acb1c6 100644 --- a/watcher/tests/api/v1/test_audits.py +++ b/watcher/tests/api/v1/test_audits.py @@ -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, diff --git a/watcher/tests/api/v1/test_data_model.py b/watcher/tests/api/v1/test_data_model.py index 867b14841..640bf2ddd 100644 --- a/watcher/tests/api/v1/test_data_model.py +++ b/watcher/tests/api/v1/test_data_model.py @@ -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, diff --git a/watcher/tests/api/v1/test_goals.py b/watcher/tests/api/v1/test_goals.py index 94baf4291..54c8c6314 100644 --- a/watcher/tests/api/v1/test_goals.py +++ b/watcher/tests/api/v1/test_goals.py @@ -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, diff --git a/watcher/tests/api/v1/test_microversions.py b/watcher/tests/api/v1/test_microversions.py index c3d97493e..939c176c6 100644 --- a/watcher/tests/api/v1/test_microversions.py +++ b/watcher/tests/api/v1/test_microversions.py @@ -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 ' diff --git a/watcher/tests/api/v1/test_scoring_engines.py b/watcher/tests/api/v1/test_scoring_engines.py index f10a84c11..7aa31b0d7 100644 --- a/watcher/tests/api/v1/test_scoring_engines.py +++ b/watcher/tests/api/v1/test_scoring_engines.py @@ -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, diff --git a/watcher/tests/api/v1/test_services.py b/watcher/tests/api/v1/test_services.py index 114534ad6..60962e5dc 100644 --- a/watcher/tests/api/v1/test_services.py +++ b/watcher/tests/api/v1/test_services.py @@ -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, diff --git a/watcher/tests/api/v1/test_strategies.py b/watcher/tests/api/v1/test_strategies.py index 3cf9a11da..a4b82a4a0 100644 --- a/watcher/tests/api/v1/test_strategies.py +++ b/watcher/tests/api/v1/test_strategies.py @@ -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, diff --git a/watcher/tests/api/v1/test_types.py b/watcher/tests/api/v1/test_types.py index 95f50c537..3477662d7 100644 --- a/watcher/tests/api/v1/test_types.py +++ b/watcher/tests/api/v1/test_types.py @@ -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']) diff --git a/watcher/tests/api/v1/test_webhooks.py b/watcher/tests/api/v1/test_webhooks.py index c3b8786df..bd20000ea 100644 --- a/watcher/tests/api/v1/test_webhooks.py +++ b/watcher/tests/api/v1/test_webhooks.py @@ -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']) diff --git a/watcher/tests/common/test_cinder_helper.py b/watcher/tests/common/test_cinder_helper.py index be99e09f2..5334d08f2 100644 --- a/watcher/tests/common/test_cinder_helper.py +++ b/watcher/tests/common/test_cinder_helper.py @@ -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) diff --git a/watcher/tests/common/test_placement_helper.py b/watcher/tests/common/test_placement_helper.py index 00e906d49..5b7a18e2b 100644 --- a/watcher/tests/common/test_placement_helper.py +++ b/watcher/tests/common/test_placement_helper.py @@ -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) diff --git a/watcher/tests/decision_engine/datasources/test_grafana_helper.py b/watcher/tests/decision_engine/datasources/test_grafana_helper.py index 1e716d742..565896c23 100644 --- a/watcher/tests/decision_engine/datasources/test_grafana_helper.py +++ b/watcher/tests/decision_engine/datasources/test_grafana_helper.py @@ -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())