From 9dcf042e5ab6c4745fb2e0f827fc79ff702c1dda Mon Sep 17 00:00:00 2001 From: Alexander Kislitsky Date: Mon, 22 Aug 2016 12:25:05 +0300 Subject: [PATCH] API urls changed Accordingly to REST API best practices we have the following urls schema: - /objects - for collection objects operations and new object creation, - /objects/ - for specific object operations. Change-Id: Ifebc613ab5dac1674a6de488dce5757da2362cd4 --- tuning_box/app.py | 7 +-- tuning_box/tests/library/test_environments.py | 56 +++++++++++-------- .../library/test_resource_definitions.py | 2 +- 3 files changed, 37 insertions(+), 28 deletions(-) diff --git a/tuning_box/app.py b/tuning_box/app.py index 018d306..8debe77 100644 --- a/tuning_box/app.py +++ b/tuning_box/app.py @@ -45,11 +45,11 @@ api.add_resource( ) api.add_resource( resource_definitions.ResourceDefinition, - '/resource_definition/' + '/resource_definitions/' ) api.add_resource( resource_definitions.ResourceDefinitionKeys, - '/resource_definition//' + '/resource_definitions//' 'keys/' ) @@ -83,8 +83,7 @@ api.add_resource( api.add_resource(environments.EnvironmentsCollection, '/environments') api.add_resource( environments.Environment, - '/environments/', # Backward compatibility support - '/environment/' + '/environments/' ) diff --git a/tuning_box/tests/library/test_environments.py b/tuning_box/tests/library/test_environments.py index c4f5203..5ebb08f 100644 --- a/tuning_box/tests/library/test_environments.py +++ b/tuning_box/tests/library/test_environments.py @@ -18,14 +18,17 @@ from tuning_box.tests.test_app import BaseTest class TestEnvironments(BaseTest): + collection_url = '/environments' + object_url = collection_url + '/{0}' + def test_get_environments_empty(self): - res = self.client.get('/environments') + res = self.client.get(self.collection_url) self.assertEqual(res.status_code, 200) self.assertEqual(res.json, []) def test_get_environments(self): self._fixture() - res = self.client.get('/environments') + res = self.client.get(self.collection_url) self.assertEqual(200, res.status_code) self.assertEqual(1, len(res.json)) self.assertEqual( @@ -35,7 +38,8 @@ class TestEnvironments(BaseTest): def test_get_one_environment(self): self._fixture() - res = self.client.get('/environments/9') + env_id = 9 + res = self.client.get(self.object_url.format(env_id)) self.assertEqual(200, res.status_code) self.assertEqual( {'id': 9, 'components': [7], 'hierarchy_levels': ['lvl1', 'lvl2']}, @@ -43,13 +47,14 @@ class TestEnvironments(BaseTest): ) def test_get_one_environment_404(self): - res = self.client.get('/environments/9') + env_id = 9 + res = self.client.get(self.object_url.format(env_id)) self.assertEqual(res.status_code, 404) def test_post_environment(self): self._fixture() json = {'components': [7], 'hierarchy_levels': ['lvla', 'lvlb']} - res = self.client.post('/environments', data=json) + res = self.client.post(self.collection_url, data=json) self.assertEqual(res.status_code, 201) json['id'] = res.json['id'] self.assertEqual(json, res.json) @@ -64,7 +69,7 @@ class TestEnvironments(BaseTest): 'components': [7], 'hierarchy_levels': ['lvla', 'lvlb'], } - res = self.client.post('/environments', data=json) + res = self.client.post(self.collection_url, data=json) self.assertEqual(201, res.status_code) self.assertEqual(json, res.json) self._assert_db_effect( @@ -77,7 +82,7 @@ class TestEnvironments(BaseTest): 'components': [7], 'hierarchy_levels': ['lvla', 'lvlb'], } - res = self.client.post('/environments', data=json) + res = self.client.post(self.collection_url, data=json) self.assertEqual(res.status_code, 409) def test_post_environment_preserve_id_conflict_propagate_exc(self): @@ -88,7 +93,7 @@ class TestEnvironments(BaseTest): 'components': [7], 'hierarchy_levels': ['lvla', 'lvlb'], } - res = self.client.post('/environments', data=json) + res = self.client.post(self.collection_url, data=json) self.assertEqual(res.status_code, 409) def test_post_environment_by_component_name(self): @@ -97,7 +102,7 @@ class TestEnvironments(BaseTest): 'components': ['component1'], 'hierarchy_levels': ['lvla', 'lvlb'], } - res = self.client.post('/environments', data=json) + res = self.client.post(self.collection_url, data=json) self.assertEqual(res.status_code, 201) json['id'] = res.json['id'] json['components'] = [7] @@ -112,7 +117,7 @@ class TestEnvironments(BaseTest): 'components': ['component1', 7], 'hierarchy_levels': ['lvl'], } - res = self.client.post('/environments', data=json) + res = self.client.post(self.collection_url, data=json) self.assertEqual(409, res.status_code) def test_post_components_no_duplication(self): @@ -138,13 +143,13 @@ class TestEnvironments(BaseTest): 'components': [component['id'], new_component['name']], 'hierarchy_levels': ['lvl'], } - res = self.client.post('/environments', data=json) + res = self.client.post(self.collection_url, data=json) self.assertEqual(201, res.status_code) def test_post_environment_404(self): self._fixture() json = {'components': [8], 'hierarchy_levels': ['lvla', 'lvlb']} - res = self.client.post('/environments', data=json) + res = self.client.post(self.collection_url, data=json) self.assertEqual(res.status_code, 404) self._assert_not_in_db(db.Environment, 10) @@ -154,28 +159,31 @@ class TestEnvironments(BaseTest): 'components': ['component2'], 'hierarchy_levels': ['lvla', 'lvlb'], } - res = self.client.post('/environments', data=json) + res = self.client.post(self.collection_url, data=json) self.assertEqual(res.status_code, 404) self._assert_not_in_db(db.Environment, 10) def test_delete_environment(self): self._fixture() - res = self.client.delete('/environments/9') + env_id = 9 + res = self.client.delete(self.object_url.format(env_id)) self.assertEqual(res.status_code, 204) self.assertEqual(res.data, b'') self._assert_not_in_db(db.Environment, 9) def test_delete_environment_404(self): - res = self.client.delete('/environments/9') + env_id = 9 + res = self.client.delete(self.object_url.format(env_id)) self.assertEqual(res.status_code, 404) def test_put_environment_404(self): - res = self.client.put('/environments/7') + env_id = 7 + res = self.client.put(self.object_url.format(env_id)) self.assertEqual(res.status_code, 404) def test_put_environment_components(self): self._fixture() - environment_url = '/environment/9' + environment_url = '/environments/9' initial = self.client.get(environment_url).json # Updating components @@ -196,9 +204,9 @@ class TestEnvironments(BaseTest): def test_put_environment_component_not_found(self): self._fixture() - environment_url = '/environment/9' + env_id = 9 res = self.client.put( - environment_url, + self.object_url.format(env_id), data={'components': [None]} ) self.assertEqual(404, res.status_code) @@ -214,7 +222,8 @@ class TestEnvironments(BaseTest): def test_put_environment_hierarchy_levels(self): self._fixture() - environment_url = '/environment/9' + env_id = 9 + environment_url = self.object_url.format(env_id) initial = self.client.get(environment_url).json # Updating hierarchy levels @@ -236,7 +245,8 @@ class TestEnvironments(BaseTest): def test_put_environment_hierarchy_levels_remove_level(self): self._fixture() - environment_url = '/environment/9' + env_id = 9 + environment_url = self.object_url.format(env_id) initial = self.client.get(environment_url).json expected_levels = initial['hierarchy_levels'][1:] @@ -252,9 +262,9 @@ class TestEnvironments(BaseTest): def test_put_environment_level_not_found(self): self._fixture() - environment_url = '/environment/9' + env_id = 9 res = self.client.put( - environment_url, + self.object_url.format(env_id), data={'hierarchy_levels': [None]} ) self.assertEqual(404, res.status_code) diff --git a/tuning_box/tests/library/test_resource_definitions.py b/tuning_box/tests/library/test_resource_definitions.py index 409dfe3..8436787 100644 --- a/tuning_box/tests/library/test_resource_definitions.py +++ b/tuning_box/tests/library/test_resource_definitions.py @@ -18,7 +18,7 @@ from tuning_box.tests.test_app import BaseTest class TestResourceDefinitions(BaseTest): collection_url = '/resource_definitions' - object_url = '/resource_definition/{0}' + object_url = '/resource_definitions/{0}' object_keys_url = object_url + '/keys/{1}' @property