def test___init__can_create_multiple_databases(self): database_1 = None database_2 = None try: database_1 = pgtools.PostgresDatabase(db_name='test_pgtools_1', port=self.port) database_2 = pgtools.PostgresDatabase(db_name='test_pgtools_2', port=self.port) finally: if database_1: database_1.drop_if_exists() if database_2: database_2.drop_if_exists()
def test_sql_ok_when_sql_is_valid(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create() assert self.database.sql('SELECT 1') == [(1, )] assert self.database.sql("SELECT 'hello', 2") == [('hello', 2)]
def test_super_psql_detects_sql_error(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create() with pytest.raises(CalledProcessError): self.database.super_psql(['-c', 'bogus'])
def test_drop_is_idempotent(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create() self.database.drop() self.database.drop() self.database.drop()
def test_drop(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create() self.database.drop() # Can't select; the database is gone! with pytest.raises(psycopg2.OperationalError): self.database.sql('SELECT 1')
def test_sql_detects_bogus_params(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create() with pytest.raises(TypeError): self.database.sql(3.14) with pytest.raises(psycopg2.ProgrammingError): self.database.sql([])
def test_ensure_user_exists(self): """ ensure_user should not fail if user already exists """ self.database = pgtools.PostgresDatabase( db_name='test_pgtools', port=self.port, ) self.database.create_user() self.database.ensure_user()
def test___str__(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', user='******', host='localhost', port=self.port, superuser='******', template='template1') assert str(self.database) == ( 'PostgresDatabase(db_name=test_pgtools, user=pmxtest, ' 'host=localhost,' ' port=%s, superuser=postgres, template=template1)' % self.port)
def test_create_user_exists(self): """ create_user raises an exception if the user already exists """ self.database = pgtools.PostgresDatabase( db_name='test_pgtools', port=self.port, ) self.database.create_user() with pytest.raises(Exception): self.database.create_user()
def test_create_ok_with_sql_using_psl_extensions(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create(r'\set ON_ERROR_STOP FALSE\nSYNTAX ERROR HERE')
def test___init__ok(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port)
def test_super_psql_ok_when_sql_is_valid(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create() self.database.super_psql(['-c', 'SELECT 1'])
def test___init__ok_when_port_integer(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=int(self.port))
def test_super_psql_detects_bogus_params(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create()
def test___init__ok_when_port_string(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=str(self.port))
def test_create_fails_when_user_nonexistent(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port, user='******') with pytest.raises(CalledProcessError): self.database.create()
def test_create_ok_when_no_sql(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create()
def test_create_ok_with_sql(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create('CREATE TABLE test (value text)')
def test_create_ok_with_sql_containing_unicode(self): self.database = pgtools.PostgresDatabase(db_name='test_pgtools', port=self.port) self.database.create_user() self.database.create('CREATE TABLE countries (value text) -- ¡México!')