From 9c2395add6ef2db7d7a0b6b6beebd8a481a00fcd Mon Sep 17 00:00:00 2001 From: zmsdev Date: Mon, 10 Jul 2023 20:22:09 +0200 Subject: [PATCH] implement tests --- tests/test_accessmanager.py | 2 +- tests/test_rest_api.py | 31 +++++++++++++++++++++++++++++++ tests/test_zmscontainerobject.py | 2 +- tests/zms_test_util.py | 30 +++++++++--------------------- 4 files changed, 42 insertions(+), 23 deletions(-) create mode 100644 tests/test_rest_api.py diff --git a/tests/test_accessmanager.py b/tests/test_accessmanager.py index f35ae6284..f29f6efce 100644 --- a/tests/test_accessmanager.py +++ b/tests/test_accessmanager.py @@ -17,7 +17,7 @@ class AccessManagerTest(ZMSTestCase): def setUp(self): folder = Folder('myzmsx') - folder.REQUEST = HTTPRequest({'lang':'eng','preview':'preview'}) + folder.REQUEST = MockHTTPRequest({'lang':'eng','preview':'preview'}) zmscontext = zms.initZMS(folder, 'content', 'titlealt', 'title', 'eng', 'eng', folder.REQUEST) self.context = zmscontext diff --git a/tests/test_rest_api.py b/tests/test_rest_api.py new file mode 100644 index 000000000..8665469c9 --- /dev/null +++ b/tests/test_rest_api.py @@ -0,0 +1,31 @@ +# encoding: utf-8 + +from OFS.Folder import Folder +import sys +import time +import unittest + +# Product imports. +from tests.zms_test_util import * +from Products.zms import zms + +# /Products/zms> python -m unittest discover -s unit_tests +# /Products/zms> python -m unittest tests.test_rest_api.RestAPITest +class RestAPITest(ZMSTestCase): + + temp_title = 'temp-test' + + def setUp(self): + folder = Folder('myzmsx') + folder.REQUEST = MockHTTPRequest({'lang':'eng','preview':'preview'}) + zmscontext = zms.initZMS(folder, 'content', 'titlealt', 'title', 'eng', 'eng', folder.REQUEST) + self.context = zmscontext + print('[setUp] create %s'%self.temp_title) + self.folder = zmscontext.manage_addZMSCustom('ZMSFolder',{'title':self.temp_title,'titlealt':self.temp_title},zmscontext.REQUEST) + + def test_tree(self): + request = MockHTTPRequest({'REQUEST_METHOD':'GET','TraversalRequestNameStack':[self.folder.id]}) + name = '++rest_api' + actual = self.context.__bobo_traverse__(request, name)(request) + self.assertTrue(actual.find('"id": "e1"') > 0) + self.assertTrue(actual.find('"meta_id": "ZMSFolder"') > 0) \ No newline at end of file diff --git a/tests/test_zmscontainerobject.py b/tests/test_zmscontainerobject.py index b40994a18..163043148 100644 --- a/tests/test_zmscontainerobject.py +++ b/tests/test_zmscontainerobject.py @@ -17,7 +17,7 @@ class ZMSContainerObjectTest(ZMSTestCase): def setUp(self): folder = Folder('myzmsx') - folder.REQUEST = HTTPRequest({'lang':'eng','preview':'preview'}) + folder.REQUEST = MockHTTPRequest({'lang':'eng','preview':'preview'}) zmscontext = zms.initZMS(folder, 'content', 'titlealt', 'title', 'eng', 'eng', folder.REQUEST) self.context = zmscontext print('[setUp] create %s'%self.temp_title) diff --git a/tests/zms_test_util.py b/tests/zms_test_util.py index 844add4a9..795d56fa6 100644 --- a/tests/zms_test_util.py +++ b/tests/zms_test_util.py @@ -1,10 +1,6 @@ # encoding: utf-8 from OFS.Folder import Folder -import inspect -import os -import sys -import time import unittest # Product imports. from Products.zms import standard @@ -18,7 +14,7 @@ class ZMSTestCase(unittest.TestCase): def setUp(self): print(self,"ZMSTestCase.setUp") folder = Folder('myzmsx') - folder.REQUEST = HTTPRequest({'lang':'eng','preview':'preview'}) + folder.REQUEST = MockHTTPRequest({'lang':'eng','preview':'preview'}) zmscontext = zms.initZMS(folder, 'content', 'titlealt', 'title', 'eng', 'eng', folder.REQUEST) self.context = zmscontext @@ -34,28 +30,20 @@ def writeInfo(self, s): def writeError(self, s): self.context.write(logging.ERROR,s) - def read_image(self, filename): - filepath = "../plugins/www/img/%s"%filename - modulepath = os.sep.join(inspect.getfile(self.__class__).split(os.sep)[:-1]) - file = open(os.path.join(modulepath,filepath),"rb") - filedata = file.read() - file.close() - return standard.ImageFromData(self.context,filedata,filename) - - def startMeasurement(self, category): - self.measurements[category] = time.time() - - def stopMeasurement(self, category): - if self.measurements.has_key(category): - print('[stopMeasurement] | PERFORMANCE | %s | %.2fsecs.'%(category,time.time()-self.measurements[category])) - del self.measurements[category] +class MockHTTPResponse: + def __init__(self): + self.headers = {} + + def setHeader(self, k, v): + self.headers[k] = v -class HTTPRequest: +class MockHTTPRequest: def __init__(self, d={}, other={}): self.d = d self.other = other + self.RESPONSE = MockHTTPResponse() def __getitem__(self, k, v=None): return self.get(k)