Пример #1
0
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
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)
Пример #7
0
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
Пример #8
0
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
Пример #9
0
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)
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
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)
Пример #13
0
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)
Пример #14
0
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)