def test_executor_init_with_password(request):
    """Test whether the executor initializes properly."""
    config = get_config(request)
    executor = PostgreSQLExecutor(
        executable=config['exec'],
        host=config['host'],
        port=get_port(config['port']),
        datadir='/tmp/error',
        unixsocketdir=config['unixsocketdir'],
        logfile='/tmp/version.error.log',
        startparams=config['startparams'],
        password="******",
    )
    with executor:
        assert executor.running()
        psycopg2.connect(dbname=executor.user,
                         user=executor.user,
                         password=executor.password,
                         host=executor.host,
                         port=executor.port)
        with pytest.raises(psycopg2.OperationalError):
            psycopg2.connect(dbname=executor.user,
                             user=executor.user,
                             password='******',
                             host=executor.host,
                             port=executor.port)
    assert not executor.running()
Example #2
0
    def postgresql_factory(request: FixtureRequest):
        """Fixture factory for PostgreSQL.

        :param FixtureRequest request: fixture request object
        :rtype: psycopg2.connection
        :returns: postgresql client
        """
        config = factories.get_config(request)
        proc_fixture = request.getfixturevalue(process_fixture_name)

        pg_host = proc_fixture.host
        pg_port = proc_fixture.port
        pg_user = proc_fixture.user
        pg_options = proc_fixture.options
        pg_db = db_name or config["dbname"]
        with SWHDatabaseJanitor(
                pg_user,
                pg_host,
                pg_port,
                pg_db,
                proc_fixture.version,
                dump_files=dump_files,
                no_truncate_tables=no_truncate_tables,
        ):
            connection = psycopg2.connect(
                dbname=pg_db,
                user=pg_user,
                host=pg_host,
                port=pg_port,
                options=pg_options,
            )
            yield connection
            connection.close()
Example #3
0
def apply_database_plumbing(request, postgresql_proc):
    """Bolt pytest-dbfixtures onto Django to work around its lack of no-setup testing facilities."""
    config = get_config(request)
    config['db'] = 'tests'
    settings.DATABASES['default'].update({
        'NAME': config['db'],
        'USER': config['user'],
        'HOST': postgresql_proc.host,
        'PORT': postgresql_proc.port,
    })
    init_postgresql_database(config['user'], postgresql_proc.host, postgresql_proc.port, config['db'])
Example #4
0
def pg_connection(request, postgresql_proc):
    config = get_config(request)
    pg_user = config['user']
    pg_host = postgresql_proc.host
    pg_port = postgresql_proc.port
    pg_db = config['db'] = 'tests'

    init_postgresql_database(pg_user, pg_host, pg_port, pg_db)
    apply_migrations(pg_user, pg_host, pg_port, pg_db)
    conn = psycopg2.connect(dbname=pg_db, user=pg_user,
                            host=pg_host, port=pg_port)
    return conn
def test_unsupported_version(request):
    """Check that the error gets raised on unsupported postgres version."""
    config = get_config(request)
    executor = PatchedPostgreSQLExecutor(
        executable=config['exec'],
        host=config['host'],
        port=get_port(config['port']),
        datadir='/tmp/error',
        unixsocketdir=config['unixsocketdir'],
        logfile='/tmp/version.error.log',
        startparams=config['startparams'],
    )

    with pytest.raises(PostgreSQLUnsupported):
        executor.start()
Example #6
0
def database(request):
    config = get_config(request)
    pg_host = config.get("host")
    pg_port = config.get("port") or 5432
    pg_user = config.get("user")
    pg_db = config.get("db", "tests")
    pg_version = config.get("version", 9.6)

    # Create our Database.
    init_postgresql_database(pg_user, pg_host, pg_port, pg_db)

    # Ensure our database gets deleted.
    @request.addfinalizer
    def drop_database():
        drop_postgresql_database(pg_user, pg_host, pg_port, pg_db, pg_version)

    return "postgresql://{}@{}:{}/{}".format(pg_user, pg_host, pg_port, pg_db)
Example #7
0
def database(request):
    config = get_config(request)
    pg_host = config.get("host")
    pg_port = config.get("port") or 5432
    pg_user = config.get("user")
    pg_db = config.get("db", "tests")
    pg_version = config.get("version", 9.6)

    # Create our Database.
    init_postgresql_database(pg_user, pg_host, pg_port, pg_db)

    # Ensure our database gets deleted.
    @request.addfinalizer
    def drop_database():
        drop_postgresql_database(pg_user, pg_host, pg_port, pg_db, pg_version)

    return "postgresql://{}@{}:{}/{}".format(pg_user, pg_host, pg_port, pg_db)
def config_database(request):
    connection_string = 'postgresql+psycopg2://{0}@{1}:{2}/{3}'

    config = get_config(request)
    pg_host = config.get('host')
    pg_port = config.get('port') or 5432
    pg_user = config.get('user')
    pg_db = config.get('db', 'tests')

    # Create the database
    init_postgresql_database(pg_user, pg_host, pg_port, pg_db)

    yield connection_string.format(pg_user, pg_host, pg_port, pg_db)

    # Ensure the database gets deleted
    drop_postgresql_database(
        pg_user, pg_host, pg_port, pg_db, '9.4'
    )
Example #9
0
def database(request):
    config = get_config(request)
    pg_host = config.get("host")
    pg_port = config.get("port") or os.environ.get("PGPORT", 5432)
    pg_user = config.get("user")
    pg_db = config.get("db", "tests")
    pg_version = config.get("version", 10.1)

    # In case the database already exists, possibly due to an aborted test run,
    # attempt to drop it before creating
    drop_postgresql_database(pg_user, pg_host, pg_port, pg_db, pg_version)

    # Create our Database.
    init_postgresql_database(pg_user, pg_host, pg_port, pg_db)

    # Ensure our database gets deleted.
    @request.addfinalizer
    def drop_database():
        drop_postgresql_database(pg_user, pg_host, pg_port, pg_db, pg_version)

    return "postgresql://{}@{}:{}/{}".format(pg_user, pg_host, pg_port, pg_db)