def tests_copydb_template_absent(): assert not db_exists(TEST_DBNAME) assert not db_exists(TEST_DBNAME_NEW) result = CliRunner().invoke(main, [TEST_DBNAME, TEST_DBNAME_NEW]) assert result.exit_code != 0 assert "Source database does not exist" in result.output result = CliRunner().invoke( main, ["--if-source-exists", TEST_DBNAME, TEST_DBNAME_NEW]) assert result.exit_code == 0 assert "Source database does not exist" in result.output
def tests_dropdb(pgdb, filestore): filestore_dir = odoo.tools.config.filestore(TEST_DBNAME) # sanity check for fixture assert os.path.isdir(filestore_dir) assert db_exists(TEST_DBNAME) # drop result = CliRunner().invoke(main, [TEST_DBNAME]) assert result.exit_code == 0 assert not os.path.exists(filestore_dir) assert not db_exists(TEST_DBNAME)
def test_db_restore_move(backup): assert not db_exists(TEST_DBNAME) backup_path, original_db = backup try: result = CliRunner().invoke(restoredb, ["--move", TEST_DBNAME, backup_path]) assert result.exit_code == 0 assert db_exists(TEST_DBNAME) # when database is moved, default params are preserved _check_default_params(TEST_DBNAME, original_db, operator.eq) finally: _dropdb_odoo(TEST_DBNAME)
def test_db_restore(backup): assert not db_exists(TEST_DBNAME) backup_path, original_db = backup try: result = CliRunner().invoke(restoredb, [TEST_DBNAME, backup_path]) assert result.exit_code == 0 assert db_exists(TEST_DBNAME) # default restore mode is copy -> default params are not preserved _check_default_params(TEST_DBNAME, original_db, operator.ne) finally: _dropdb_odoo(TEST_DBNAME)
def test_copydb_target_exists(pgdb): _createdb(TEST_DBNAME_NEW) try: assert db_exists(TEST_DBNAME) assert db_exists(TEST_DBNAME_NEW) result = CliRunner().invoke(main, [TEST_DBNAME, TEST_DBNAME_NEW]) assert result.exit_code != 0 assert "Destination database already exists" in result.output result = CliRunner().invoke( main, ["--unless-dest-exists", TEST_DBNAME, TEST_DBNAME_NEW]) assert result.exit_code == 0 assert "Destination database already exists" in result.output finally: _dropdb(TEST_DBNAME_NEW)
def tests_backupdb_dump_restore(odoodb, odoocfg, tmp_path): """Test dump backup compatibility with native Odoo restore API""" dump_path = tmp_path.joinpath("test.dump") dump_filename = dump_path.as_posix() result = CliRunner().invoke(main, ["--format=dump", odoodb, dump_filename]) assert result.exit_code == 0 assert dump_path.exists() try: assert not db_exists(TEST_DBNAME) with odoo.api.Environment.manage(): odoo.service.db.restore_db(TEST_DBNAME, dump_filename, copy=True) odoo.sql_db.close_db(TEST_DBNAME) assert db_exists(TEST_DBNAME) finally: _dropdb_odoo(TEST_DBNAME)
def test_dropdb_not_exists(): assert not db_exists(TEST_DBNAME) with pytest.raises(subprocess.CalledProcessError) as e: subprocess.check_output( [ sys.executable, "-m", "click_odoo_contrib.dropdb", TEST_DBNAME, ], universal_newlines=True, stderr=subprocess.STDOUT, ) assert "Database does not exist" in e.value.output output = subprocess.check_output( [ sys.executable, "-m", "click_odoo_contrib.dropdb", "--if-exists", TEST_DBNAME, ], universal_newlines=True, stderr=subprocess.STDOUT, ) assert "Database does not exist" in output
def tests_backupdb_not_exists(): assert not db_exists(TEST_DBNAME) result = CliRunner().invoke(main, [TEST_DBNAME, "out"]) assert result.exit_code != 0 assert "Database does not exist" in result.output result = CliRunner().invoke(main, ["--if-exists", TEST_DBNAME, "out"]) assert result.exit_code == 0 assert "Database does not exist" in result.output
def test_copydb_template_not_exists_target_exists(): _createdb(TEST_DBNAME_NEW) try: assert not db_exists(TEST_DBNAME) assert db_exists(TEST_DBNAME_NEW) result = CliRunner().invoke( main, [ "--if-source-exists", "--unless-dest-exists", TEST_DBNAME, TEST_DBNAME_NEW, ], ) assert result.exit_code == 0 finally: _dropdb(TEST_DBNAME_NEW)
def tests_backupdb_folder_restore(odoodb, odoocfg, tmp_path): """Test the compatibility of the db dump file of a folder backup with native Odoo restore API """ backup_path = tmp_path.joinpath("backup") assert not backup_path.exists() backup_dir = backup_path.as_posix() result = CliRunner().invoke(main, ["--format=folder", odoodb, backup_dir]) assert result.exit_code == 0 assert backup_path.exists() try: assert not db_exists(TEST_DBNAME) dumpfile = os.path.join(backup_dir, "db.dump") with odoo.api.Environment.manage(): odoo.service.db.restore_db(TEST_DBNAME, dumpfile, copy=True) odoo.sql_db.close_db(TEST_DBNAME) assert db_exists(TEST_DBNAME) finally: _dropdb_odoo(TEST_DBNAME)
def test_dropdb_exists(pgdb, filestore): filestore_dir = odoo.tools.config.filestore(TEST_DBNAME) # sanity check for fixture assert os.path.isdir(filestore_dir) assert db_exists(TEST_DBNAME) # drop subprocess.check_call( [ sys.executable, "-m", "click_odoo_contrib.dropdb", "--if-exists", "--log-level=debug_sql", TEST_DBNAME, ], universal_newlines=True, ) assert not os.path.exists(filestore_dir), filestore_dir assert not db_exists(TEST_DBNAME)
def tests_copydb(pgdb, filestore): filestore_dir_new = odoo.tools.config.filestore(TEST_DBNAME_NEW) try: assert not db_exists(TEST_DBNAME_NEW) assert not os.path.exists(filestore_dir_new) result = CliRunner().invoke( main, ["--force-disconnect", TEST_DBNAME, TEST_DBNAME_NEW]) assert result.exit_code == 0 # this dropdb will indirectly test that the new db exists subprocess.check_call(["dropdb", TEST_DBNAME_NEW]) assert os.path.isdir(filestore_dir_new) finally: _dropdb(TEST_DBNAME_NEW) if os.path.isdir(filestore_dir_new): shutil.rmtree(filestore_dir_new)
def test_db_restore_target_exists(backup): _createdb(TEST_DBNAME) backup_path, original_db = backup try: result = CliRunner().invoke(restoredb, [TEST_DBNAME, backup_path]) assert result.exit_code != 0, result.output assert "Destination database already exists" in result.output finally: _dropdb_odoo(TEST_DBNAME) try: result = CliRunner().invoke(restoredb, ["--force", TEST_DBNAME, backup_path]) assert result.exit_code == 0 assert db_exists(TEST_DBNAME) finally: _dropdb_odoo(TEST_DBNAME)
def tests_copydb(odoodb, ir_config_param_test_values): filestore_dir_new = odoo.tools.config.filestore(TEST_DBNAME_NEW) filestore_dir_original = odoo.tools.config.filestore(odoodb) if not os.path.exists(filestore_dir_original): os.makedirs(filestore_dir_original) try: assert not db_exists(TEST_DBNAME_NEW) assert not os.path.exists(filestore_dir_new) result = CliRunner().invoke( main, ["--force-disconnect", odoodb, TEST_DBNAME_NEW]) assert result.exit_code == 0 # this assert will indirectly test that the new db exists _assert_ir_config_reset(odoodb, TEST_DBNAME_NEW) assert os.path.isdir(filestore_dir_new) finally: _dropdb(TEST_DBNAME_NEW) if os.path.isdir(filestore_dir_new): shutil.rmtree(filestore_dir_new)