예제 #1
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'])
예제 #2
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
예제 #3
0
def database(request):
    pg_host = DB_OPTS.get("host")
    pg_port = DB_OPTS.get("port")
    pg_user = DB_OPTS.get("user")
    pg_db = DB_OPTS.get("name", "tests")

    # 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, 9.6)
예제 #4
0
def session(postgresql_proc):
    db_name = 'unittests'
    port = postgresql_proc.port
    user = postgresql_proc.user
    socketdir = postgresql_proc.unixsocketdir
    pg_factory.init_postgresql_database(user, socketdir, port, db_name)
    db_url = (f'postgresql:///{db_name}?'
              f'user={user}&host={socketdir}&port={port}')
    database.init(db_url)
    database.migrate()
    yield database.session
    pg_factory.drop_postgresql_database(user, socketdir, port, db_name,
                                        postgresql_proc.version)
예제 #5
0
def database(request):
    '''
    Create a Postgres database for the tests, and drop it when the tests are done.
    '''
    pg_host = DB_OPTS.get("host")
    pg_port = DB_OPTS.get("port")
    pg_user = DB_OPTS.get("username")
    pg_db = DB_OPTS["database"]

    init_postgresql_database(pg_user, pg_host, pg_port, pg_db)

    @request.addfinalizer
    def drop_database():
        drop_postgresql_database(pg_user, pg_host, pg_port, pg_db, 9.6)
예제 #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)
예제 #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)
예제 #8
0
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'
    )
예제 #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)
예제 #10
0
def database(request):
    pg_host = DB_OPTS.get("host")
    pg_port = DB_OPTS.get("port")
    pg_user = DB_OPTS.get("user")
    pg_db = DB_OPTS.get("name", "tests")

    if 'test' not in pg_db:
        pg_db = '{}_test'.format(pg_db)

    # Create our Database.
    try:
        init_postgresql_database(pg_user, pg_host, pg_port, pg_db)
    except psycopg2.ProgrammingError as e:
        if 'permission denied' in str(e):
            pg_user = '******'
            init_postgresql_database(pg_user, pg_host, pg_port, pg_db)
        else:
            raise e

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