Merge "dovetail: conditional step bugfix"
[releng.git] / utils / test / testapi / opnfv_testapi / tests / unit / test_base.py
index 9343ab2..4d34456 100644 (file)
@@ -7,21 +7,26 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 import json
+from os import path
 
-from tornado.web import Application
-from tornado.testing import AsyncHTTPTestCase
+import mock
+from tornado import testing
 
-from opnfv_testapi.router import url_mappings
-from opnfv_testapi.resources.models import CreateResponse
-import fake_pymongo
+from opnfv_testapi.common import config
+from opnfv_testapi.resources import models
+from opnfv_testapi.tests.unit import fake_pymongo
 
+config.Config.CONFIG = path.join(path.dirname(__file__),
+                                 '../../../etc/config.ini')
 
-class TestBase(AsyncHTTPTestCase):
+
+class TestBase(testing.AsyncHTTPTestCase):
     headers = {'Content-Type': 'application/json; charset=UTF-8'}
 
     def setUp(self):
+        self._patch_server()
         self.basePath = ''
-        self.create_res = CreateResponse
+        self.create_res = models.CreateResponse
         self.get_res = None
         self.list_res = None
         self.update_res = None
@@ -30,12 +35,26 @@ class TestBase(AsyncHTTPTestCase):
         self.addCleanup(self._clear)
         super(TestBase, self).setUp()
 
+    def tearDown(self):
+        self.db_patcher.stop()
+
+    def _patch_server(self):
+        from opnfv_testapi.cmd import server
+        server.parse_config([
+            '--config-file',
+            path.join(path.dirname(__file__), 'common/normal.ini')
+        ])
+        self.db_patcher = mock.patch('opnfv_testapi.cmd.server.get_db',
+                                     self._fake_pymongo)
+        self.db_patcher.start()
+
+    @staticmethod
+    def _fake_pymongo():
+        return fake_pymongo
+
     def get_app(self):
-        return Application(
-            url_mappings.mappings,
-            db=fake_pymongo,
-            debug=True,
-        )
+        from opnfv_testapi.cmd import server
+        return server.make_app()
 
     def create_d(self, *args):
         return self.create(self.req_d, *args)
@@ -47,11 +66,11 @@ class TestBase(AsyncHTTPTestCase):
         return self.create_help(self.basePath, req, *args)
 
     def create_help(self, uri, req, *args):
-        if req and not isinstance(req, str):
-            req = json.dumps(req.format())
+        if req and not isinstance(req, str) and hasattr(req, 'format'):
+            req = req.format()
         res = self.fetch(self._update_uri(uri, *args),
                          method='POST',
-                         body=req if req else json.dumps(None),
+                         body=json.dumps(req),
                          headers=self.headers)
 
         return self._get_return(res, self.create_res)
@@ -97,7 +116,7 @@ class TestBase(AsyncHTTPTestCase):
         return uri.count('%s')
 
     def _get_query_uri(self, query):
-        return self.basePath + '?' + query
+        return self.basePath + '?' + query if query else self.basePath
 
     def _get_uri(self, *args):
         return self._update_uri(self.basePath, *args)