From f5330dd283065ab8914f7491f93b26a396ecc1d5 Mon Sep 17 00:00:00 2001
From: Janos Simon <janos.simon@nokia.com>
Date: Sun, 18 Dec 2016 19:41:58 +0100
Subject: [PATCH] api endpoint prefixed with version (v1)

---
 orchestrator/api/stacks.py |  4 ++--
 tests/test_api.py          | 49 +++++++++++++++++++++++++------------------------
 2 files changed, 27 insertions(+), 26 deletions(-)

diff --git a/orchestrator/api/stacks.py b/orchestrator/api/stacks.py
index bf27f9e..9a0af10 100644
--- a/orchestrator/api/stacks.py
+++ b/orchestrator/api/stacks.py
@@ -99,8 +99,8 @@ def handle_bad_request(*args):
 def create_app():
     stack_controller = Stack()
     app = falcon.API(middleware=[LoggingMiddleware()])
-    app.add_route('/stacks', stack_controller)
-    app.add_route('/stacks/{stack_id}', stack_controller)
+    app.add_route('/v1/stacks', stack_controller)
+    app.add_route('/v1/stacks/{stack_id}', stack_controller)
     app.add_error_handler(TypeError, handle_method_not_allowed)
     app.add_error_handler(InvalidResourceException, handle_bad_request)
     return app
diff --git a/tests/test_api.py b/tests/test_api.py
index 976c107..36edb2b 100644
--- a/tests/test_api.py
+++ b/tests/test_api.py
@@ -7,6 +7,7 @@ from mockito import mock, when, any  # pylint: disable=redefined-builtin
 
 from orchestrator.api import stacks
 
+API_ENDPOINT = '/v1/stacks'
 TEST_INSTANCE_ARGS = {
     'cpu_count': 2,
     'memory': 256 * 1000 * 1000
@@ -29,15 +30,15 @@ class StackTest(testing.TestCase):
         super(StackTest, self).tearDown()
 
     def test_stacks_api_allowed_methods_on_endpoints(self):
-        self.assertEqual(HTTP_OK, self.simulate_get('/stacks').status)
-        self.assertEqual(HTTP_NOT_FOUND, self.simulate_put('/stacks/42').status)
-        self.assertEqual(HTTP_NOT_FOUND, self.simulate_delete('/stacks/42').status)
-        self.assertEqual(HTTP_NOT_FOUND, self.simulate_get('/stacks/42').status)
-        self.assertEqual(HTTP_BAD_REQUEST, self.simulate_post('/stacks').status)
+        self.assertEqual(HTTP_OK, self.simulate_get(API_ENDPOINT).status)
+        self.assertEqual(HTTP_NOT_FOUND, self.simulate_put('/%s/%s' % (API_ENDPOINT, 42)).status)
+        self.assertEqual(HTTP_NOT_FOUND, self.simulate_delete('/%s/%s' % (API_ENDPOINT, 42)).status)
+        self.assertEqual(HTTP_NOT_FOUND, self.simulate_get('/%s/%s' % (API_ENDPOINT, 42)).status)
+        self.assertEqual(HTTP_BAD_REQUEST, self.simulate_post(API_ENDPOINT).status)
 
-        self.assertEqual(HTTP_METHOD_NOT_ALLOWED, self.simulate_post('/stacks/42').status)
-        self.assertEqual(HTTP_METHOD_NOT_ALLOWED, self.simulate_put('/stacks').status)
-        self.assertEqual(HTTP_METHOD_NOT_ALLOWED, self.simulate_delete('/stacks').status)
+        self.assertEqual(HTTP_METHOD_NOT_ALLOWED, self.simulate_post('/%s/%s' % (API_ENDPOINT, 42)).status)
+        self.assertEqual(HTTP_METHOD_NOT_ALLOWED, self.simulate_put(API_ENDPOINT).status)
+        self.assertEqual(HTTP_METHOD_NOT_ALLOWED, self.simulate_delete(API_ENDPOINT).status)
 
     def test_stacks_api_create(self):
         # given
@@ -81,7 +82,7 @@ class StackTest(testing.TestCase):
         }
 
         # when
-        result = self.simulate_post('/stacks', body=json.dumps(stack_request_body))
+        result = self.simulate_post(API_ENDPOINT, body=json.dumps(stack_request_body))
 
         # then
         self.assertEqual(sort_resources(stack_request_body), sort_resources(result.json))
@@ -92,7 +93,7 @@ class StackTest(testing.TestCase):
         empty_request_body = '{}'
 
         # when
-        result = self.simulate_post('/stacks', body=empty_request_body, headers={'content-type': 'application/json'})
+        result = self.simulate_post(API_ENDPOINT, body=empty_request_body, headers={'content-type': 'application/json'})
 
         # then
         self.assertIn('id', result.json.keys())
@@ -103,7 +104,7 @@ class StackTest(testing.TestCase):
 
     def test_stacks_api_create_with_empty_body(self):
         # when
-        result = self.simulate_post('/stacks', headers={'content-type': 'application/json'})
+        result = self.simulate_post(API_ENDPOINT, headers={'content-type': 'application/json'})
 
         # then
         self.assertEqual(HTTP_BAD_REQUEST, result.status)
@@ -117,7 +118,7 @@ class StackTest(testing.TestCase):
 
         for body in invalid_request_bodies:
             # when
-            result = self.simulate_post('/stacks', body=body, headers={'content-type': 'application/json'})
+            result = self.simulate_post(API_ENDPOINT, body=body, headers={'content-type': 'application/json'})
 
             # then
             self.assertEqual(HTTP_BAD_REQUEST, result.status)
@@ -138,9 +139,9 @@ class StackTest(testing.TestCase):
         }
 
         # when
-        self.simulate_post('/stacks', body=json.dumps(group1))
-        put_result = self.simulate_put('/stacks/%s' % stack_id, body=json.dumps(group2))
-        get_result = self.simulate_get('/stacks')
+        self.simulate_post(API_ENDPOINT, body=json.dumps(group1))
+        put_result = self.simulate_put('/%s/%s' % (API_ENDPOINT, stack_id), body=json.dumps(group2))
+        get_result = self.simulate_get(API_ENDPOINT)
 
         # then
         self.assertEqual(expected_diff, put_result.json)
@@ -153,10 +154,10 @@ class StackTest(testing.TestCase):
         resource.update(TEST_INSTANCE_ARGS)
 
         # when
-        self.simulate_post('/stacks', body=json.dumps(resource))
-        list_result_before_delete = self.simulate_get('/stacks')
-        delete_result = self.simulate_delete('/stacks/%s' % resource_id)
-        list_result_after_delete = self.simulate_get('/stacks')
+        self.simulate_post(API_ENDPOINT, body=json.dumps(resource))
+        list_result_before_delete = self.simulate_get(API_ENDPOINT)
+        delete_result = self.simulate_delete('/%s/%s' % (API_ENDPOINT, resource_id))
+        list_result_after_delete = self.simulate_get(API_ENDPOINT)
 
         # then
         self.assertEqual([resource], list_result_before_delete.json)
@@ -171,9 +172,9 @@ class StackTest(testing.TestCase):
         resource2.update(TEST_INSTANCE_ARGS)
 
         # when
-        self.simulate_post('/stacks', body=json.dumps(resource1))
-        self.simulate_post('/stacks', body=json.dumps(resource2))
-        result = self.simulate_get('/stacks').json
+        self.simulate_post(API_ENDPOINT, body=json.dumps(resource1))
+        self.simulate_post(API_ENDPOINT, body=json.dumps(resource2))
+        result = self.simulate_get(API_ENDPOINT).json
 
         # then
         self.assertEqual(2, len(result))
@@ -187,8 +188,8 @@ class StackTest(testing.TestCase):
         resource.update(TEST_INSTANCE_ARGS)
 
         # when
-        self.simulate_post('/stacks', body=json.dumps(resource))
-        result = self.simulate_get('/stacks/%s' % resource_id).json
+        self.simulate_post(API_ENDPOINT, body=json.dumps(resource))
+        result = self.simulate_get('/%s/%s' % (API_ENDPOINT, resource_id)).json
 
         # then
         self.assertEqual([resource], result)
--
libgit2 0.26.0