From cc26f2b5d2fb7e1046989541ba292190901b6276 Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Fri, 23 Sep 2011 15:34:08 +0200 Subject: [IMP] tests: added a simple test case to create a database via XML-RPC. The test setup starts an OpenERP server similarly to the openerp-server script. For this to be possible, some of its code is moved to openerp.services. bzr revid: vmt@openerp.com-20110923133408-qqf4i5l86pkk7xn5 --- tests/test_xmlrpc.py | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 tests/test_xmlrpc.py (limited to 'tests/test_xmlrpc.py') diff --git a/tests/test_xmlrpc.py b/tests/test_xmlrpc.py new file mode 100644 index 00000000000..30af863f12d --- /dev/null +++ b/tests/test_xmlrpc.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +# Run with one of these commands: +# > OPENERP_ADDONS_PATH='../../addons/trunk' OPENERP_PORT=8069 \ +# OPENERP_DATABASE=yy PYTHONPATH=. python tests/test_xmlrpc.py +# > OPENERP_ADDONS_PATH='../../addons/trunk' OPENERP_PORT=8069 \ +# OPENERP_DATABASE=yy nosetests tests/test_xmlrpc.py +# > OPENERP_ADDONS_PATH='../../../addons/trunk' OPENERP_PORT=8069 \ +# OPENERP_DATABASE=yy PYTHONPATH=../:. unit2 test_xmlrpc +import os +import time +import unittest2 +import xmlrpclib + +import openerp + +ADDONS_PATH = os.environ['OPENERP_ADDONS_PATH'] +PORT = int(os.environ['OPENERP_PORT']) +DB = os.environ['OPENERP_DATABASE'] + +HOST = '127.0.0.1' + +ADMIN_USER = 'admin' +ADMIN_USER_ID = 1 +ADMIN_PASSWORD = 'admin' + +common_proxy_60 = None +db_proxy_60 = None +object_proxy_60 = None + +def setUpModule(): + """ + Start the OpenERP server similary to the openerp-server script and + setup some xmlrpclib proxies. + """ + openerp.tools.config['addons_path'] = ADDONS_PATH + openerp.tools.config['xmlrpc_port'] = PORT + openerp.service.start_services() + + global common_proxy_60 + global db_proxy_60 + global object_proxy_60 + + # Use the old (pre 6.1) API. + url = 'http://%s:%d/xmlrpc/' % (HOST, PORT) + common_proxy_60 = xmlrpclib.ServerProxy(url + 'common') + db_proxy_60 = xmlrpclib.ServerProxy(url + 'db') + object_proxy_60 = xmlrpclib.ServerProxy(url + 'object') + +def tearDownModule(): + """ Shutdown the OpenERP server similarly to a single ctrl-c. """ + openerp.service.stop_services() + +class test_xmlrpc(unittest2.TestCase): + + def test_xmlrpc_create_database_polling(self): + """ + Simulate a OpenERP client requesting the creation of a database and + polling the server until the creation is complete. + """ + progress_id = db_proxy_60.create(ADMIN_PASSWORD, DB, True, False, + ADMIN_PASSWORD) + while True: + time.sleep(1) + progress, users = db_proxy_60.get_progress(ADMIN_PASSWORD, + progress_id) + if progress == 1.0: + break + + def test_xmlrpc_login(self): + """ Try to login on the common service. """ + uid = common_proxy_60.login(DB, ADMIN_USER, ADMIN_PASSWORD) + assert uid == ADMIN_USER_ID + + def test_xmlrpc_ir_model_search(self): + """ Try a search on the object service. """ + ids = object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD, + 'ir.model', 'search', []) + assert ids + ids = object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD, + 'ir.model', 'search', [], {}) + assert ids + +if __name__ == '__main__': + unittest2.main() + -- cgit v1.2.3 From a254a13dc36a4ce4f0fc7c9aa50cb1afb6757543 Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Sun, 25 Sep 2011 17:09:23 +0200 Subject: [IMP] xmlrpc: versioned API. bzr revid: vmt@openerp.com-20110925150923-au0u0nply8lriise --- tests/test_xmlrpc.py | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'tests/test_xmlrpc.py') diff --git a/tests/test_xmlrpc.py b/tests/test_xmlrpc.py index 30af863f12d..f31efd24803 100644 --- a/tests/test_xmlrpc.py +++ b/tests/test_xmlrpc.py @@ -27,6 +27,10 @@ common_proxy_60 = None db_proxy_60 = None object_proxy_60 = None +common_proxy_61 = None +db_proxy_61 = None +model_proxy_61 = None + def setUpModule(): """ Start the OpenERP server similary to the openerp-server script and @@ -40,19 +44,32 @@ def setUpModule(): global db_proxy_60 global object_proxy_60 + global common_proxy_61 + global db_proxy_61 + global model_proxy_61 + # Use the old (pre 6.1) API. url = 'http://%s:%d/xmlrpc/' % (HOST, PORT) common_proxy_60 = xmlrpclib.ServerProxy(url + 'common') db_proxy_60 = xmlrpclib.ServerProxy(url + 'db') object_proxy_60 = xmlrpclib.ServerProxy(url + 'object') + # Use the new (6.1) API. + url = 'http://%s:%d/openerp/6.1/xmlrpc/' % (HOST, PORT) + common_proxy_61 = xmlrpclib.ServerProxy(url + 'common') + db_proxy_61 = xmlrpclib.ServerProxy(url + 'db') + model_proxy_61 = xmlrpclib.ServerProxy(url + 'model/' + DB) + + # Mmm need to make sure the server is listening for XML-RPC requests. + time.sleep(10) + def tearDownModule(): """ Shutdown the OpenERP server similarly to a single ctrl-c. """ openerp.service.stop_services() class test_xmlrpc(unittest2.TestCase): - def test_xmlrpc_create_database_polling(self): + def test_00_xmlrpc_create_database_polling(self): """ Simulate a OpenERP client requesting the creation of a database and polling the server until the creation is complete. @@ -80,6 +97,13 @@ class test_xmlrpc(unittest2.TestCase): 'ir.model', 'search', [], {}) assert ids + def test_xmlrpc_61_ir_model_search(self): + """ Try a search on the object service. """ + ids = model_proxy_61.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'ir.model', 'search', []) + assert ids + ids = model_proxy_61.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'ir.model', 'search', [], {}) + assert ids + if __name__ == '__main__': unittest2.main() -- cgit v1.2.3 From f2c5556b68f6879766dadf6522e35f4afc16696e Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 28 Sep 2011 12:30:09 +0200 Subject: [FIX] ir_sequence: forgot id argument in _create_sequence(). bzr revid: vmt@openerp.com-20110928103009-17rw1af5ebauu3f5 --- tests/test_xmlrpc.py | 54 +++++++++++++--------------------------------------- 1 file changed, 13 insertions(+), 41 deletions(-) (limited to 'tests/test_xmlrpc.py') diff --git a/tests/test_xmlrpc.py b/tests/test_xmlrpc.py index 30af863f12d..35ba07b940a 100644 --- a/tests/test_xmlrpc.py +++ b/tests/test_xmlrpc.py @@ -12,43 +12,15 @@ import unittest2 import xmlrpclib import openerp +import common -ADDONS_PATH = os.environ['OPENERP_ADDONS_PATH'] -PORT = int(os.environ['OPENERP_PORT']) -DB = os.environ['OPENERP_DATABASE'] +DB = common.DB +ADMIN_USER = common.ADMIN_USER +ADMIN_USER_ID = common.ADMIN_USER_ID +ADMIN_PASSWORD = common.ADMIN_PASSWORD -HOST = '127.0.0.1' - -ADMIN_USER = 'admin' -ADMIN_USER_ID = 1 -ADMIN_PASSWORD = 'admin' - -common_proxy_60 = None -db_proxy_60 = None -object_proxy_60 = None - -def setUpModule(): - """ - Start the OpenERP server similary to the openerp-server script and - setup some xmlrpclib proxies. - """ - openerp.tools.config['addons_path'] = ADDONS_PATH - openerp.tools.config['xmlrpc_port'] = PORT - openerp.service.start_services() - - global common_proxy_60 - global db_proxy_60 - global object_proxy_60 - - # Use the old (pre 6.1) API. - url = 'http://%s:%d/xmlrpc/' % (HOST, PORT) - common_proxy_60 = xmlrpclib.ServerProxy(url + 'common') - db_proxy_60 = xmlrpclib.ServerProxy(url + 'db') - object_proxy_60 = xmlrpclib.ServerProxy(url + 'object') - -def tearDownModule(): - """ Shutdown the OpenERP server similarly to a single ctrl-c. """ - openerp.service.stop_services() +setUpModule = common.setUpModule +tearDownModule = common.tearDownModule class test_xmlrpc(unittest2.TestCase): @@ -57,26 +29,26 @@ class test_xmlrpc(unittest2.TestCase): Simulate a OpenERP client requesting the creation of a database and polling the server until the creation is complete. """ - progress_id = db_proxy_60.create(ADMIN_PASSWORD, DB, True, False, - ADMIN_PASSWORD) + progress_id = common.db_proxy_60.create(ADMIN_PASSWORD, DB, True, + False, ADMIN_PASSWORD) while True: time.sleep(1) - progress, users = db_proxy_60.get_progress(ADMIN_PASSWORD, + progress, users = common.db_proxy_60.get_progress(ADMIN_PASSWORD, progress_id) if progress == 1.0: break def test_xmlrpc_login(self): """ Try to login on the common service. """ - uid = common_proxy_60.login(DB, ADMIN_USER, ADMIN_PASSWORD) + uid = common.common_proxy_60.login(DB, ADMIN_USER, ADMIN_PASSWORD) assert uid == ADMIN_USER_ID def test_xmlrpc_ir_model_search(self): """ Try a search on the object service. """ - ids = object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD, + ids = common.object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD, 'ir.model', 'search', []) assert ids - ids = object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD, + ids = common.object_proxy_60.execute(DB, ADMIN_USER_ID, ADMIN_PASSWORD, 'ir.model', 'search', [], {}) assert ids -- cgit v1.2.3 From 608274e2926e0463d6c849e60755738ff880b23c Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Mon, 3 Oct 2011 11:33:55 +0200 Subject: [FIX] use the new xmlrpc-1 URIs in the tests. bzr revid: vmt@openerp.com-20111003093355-2agzw7euaphdq7yr --- tests/test_xmlrpc.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'tests/test_xmlrpc.py') diff --git a/tests/test_xmlrpc.py b/tests/test_xmlrpc.py index 5cace01c9a9..4ad530cbeda 100644 --- a/tests/test_xmlrpc.py +++ b/tests/test_xmlrpc.py @@ -54,9 +54,11 @@ class test_xmlrpc(unittest2.TestCase): def test_xmlrpc_61_ir_model_search(self): """ Try a search on the object service. """ - ids = common.model_proxy_61.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'ir.model', 'search', []) + + proxy = xmlrpclib.ServerProxy(common.model_uri_61 + 'model/' + DB + '/ir.model') + ids = proxy.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'search', []) assert ids - ids = common.model_proxy_61.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'ir.model', 'search', [], {}) + ids = proxy.execute(ADMIN_USER_ID, ADMIN_PASSWORD, 'search', [], {}) assert ids if __name__ == '__main__': -- cgit v1.2.3