def test_create(self): self.service.db.list.return_value = ['newdb'] self.service.common.login.return_value = 1 client = odooly.Client('http://127.0.0.1:8069', 'newdb', 'usr', 'pss') expected_calls = self.startup_calls + ( call.common.login('newdb', 'usr', 'pss'), call.object.execute_kw('newdb', 1, 'pss', 'res.users', 'context_get', ()), ) url_xmlrpc = 'http://127.0.0.1:8069/xmlrpc' self.assertIsInstance(client, odooly.Client) self.assertCalls(*expected_calls) self.assertEqual( client.env._cache, { ('[1, {}]', 'newdb', url_xmlrpc): client.env(context={}), ('[1, {"lang": "en_US", "tz": "Europe/Zurich"}]', 'newdb', url_xmlrpc): client.env, ('auth', 'newdb', url_xmlrpc): { 1: (1, 'pss'), 'usr': (1, 'pss') }, ('model_names', 'newdb', url_xmlrpc): {'res.users'} }) self.assertOutput('')
def test_service_openerp_client(self, server_version=11.0): server = 'http://127.0.0.1:8069/%s' % self.protocol return_values = [str(server_version), ['newdb'], 1, {}] if self.protocol == 'jsonrpc': return_values = [{'result': rv} for rv in return_values] self.service.side_effect = return_values client = odooly.Client(server, 'newdb', 'usr', 'pss') self.service.return_value = ANY self.assertIsInstance(client.db, odooly.Service) self.assertIsInstance(client.common, odooly.Service) self.assertIsInstance(client._object, odooly.Service) if server_version >= 11.0: self.assertIs(client._report, None) self.assertIs(client._wizard, None) elif server_version >= 7.0: self.assertIsInstance(client._report, odooly.Service) self.assertIs(client._wizard, None) else: self.assertIsInstance(client._report, odooly.Service) self.assertIsInstance(client._wizard, odooly.Service) self.assertIn('/%s|db' % self.protocol, str(client.db.create_database)) self.assertIn('/%s|db' % self.protocol, str(client.db.db_exist)) if server_version >= 8.0: self.assertRaises(AttributeError, getattr, client.db, 'create') self.assertRaises(AttributeError, getattr, client.db, 'get_progress') else: self.assertIn('/%s|db' % self.protocol, str(client.db.create)) self.assertIn('/%s|db' % self.protocol, str(client.db.get_progress)) self.assertCalls(ANY, ANY, ANY, ANY) self.assertOutput('')
def duplicar_base(): db = click.prompt('Base de datos a duplicar') db_duplicate = click.prompt('Nueva base de datos') if db == db_duplicate: click.echo( "Error al duplicar la base de datos, la nueva base debe tener otro nombre." ) return servidor = click.prompt("Servidor Odoo o IP") try: servidor = 'http://' + servidor + ':8069' client = odooly.Client(servidor) except Exception as e: raise Warning("%s " % e) list_dbs = client.db.list() if not db in list_dbs: click.echo("La base de datos %s, no existe." % db) return click.echo("Bases de datos %s" % list_dbs) #user = click.prompt("Usuario Odoo") #password = click.prompt("Contraseña Odoo") click.echo("Duplicando base %s a %s" % (db, db_duplicate))
def odoo_connect(self): self.client = odooly.Client( server='http://localhost:%s' % self.xmlrpc_port, db=self.db, user=self.user, password=self.password, ) time.sleep(5)
def test_create_with_cache(self): self.service.db.list.return_value = ['database'] self.assertFalse(odooly.Env._cache) url_xmlrpc = 'http://127.0.0.1:8069/xmlrpc' mock.patch.dict(odooly.Env._cache, { ('auth', 'database', url_xmlrpc): { 'usr': (1, 'password') } }).start() client = odooly.Client('http://127.0.0.1:8069', 'database', 'usr') self.assertIsInstance(client, odooly.Client) self.assertCalls(*(self.startup_calls + (call.object.execute_kw( 'database', 1, 'password', 'res.users', 'context_get', ()), ))) self.assertOutput('')
def setUp(self): self.maxDiff = 4096 # instead of 640 self.addCleanup(mock.patch.stopall) self.stdout = mock.patch('sys.stdout', new=PseudoFile()).start() self.stderr = mock.patch('sys.stderr', new=PseudoFile()).start() # Clear the login cache mock.patch.dict('odooly.Env._cache', clear=True).start() # Avoid hanging on getpass mock.patch('getpass.getpass', side_effect=RuntimeError).start() self.service = self._patch_service() if self.server and self.database: # create the client self.client = odooly.Client(self.server, self.database, self.user, self.password) self.env = self.client.env # reset the mock self.service.reset_mock()
def test_create_getpass(self): getpass = mock.patch('getpass.getpass', return_value='password').start() self.service.db.list.return_value = ['database'] expected_calls = self.startup_calls + (call.common.login( 'database', 'usr', 'password'), ) # A: Invalid login self.assertRaises(odooly.Error, odooly.Client, 'http://127.0.0.1:8069', 'database', 'usr') self.assertCalls(*expected_calls) self.assertEqual(getpass.call_count, 1) # B: Valid login self.service.common.login.return_value = 17 getpass.reset_mock() expected_calls = expected_calls + (call.object.execute_kw( 'database', 17, 'password', 'res.users', 'context_get', ()), ) client = odooly.Client('http://127.0.0.1:8069', 'database', 'usr') self.assertIsInstance(client, odooly.Client) self.assertCalls(*expected_calls) self.assertEqual(getpass.call_count, 1)