Skip to content

Commit

Permalink
i
Browse files Browse the repository at this point in the history
  • Loading branch information
tlocke committed Mar 31, 2024
1 parent b287256 commit 8dc9fd1
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 23 deletions.
36 changes: 21 additions & 15 deletions test/native/auth/test_scram-sha-256.py
Original file line number Diff line number Diff line change
@@ -1,32 +1,38 @@
import pytest

from pg8000.native import Connection, DatabaseError
from pg8000.native import Connection, InterfaceError

# This requires a line in pg_hba.conf that requires scram-sha-256 for the
# database scram_sha_256

DB = "pg8000_scram_sha_256"

def test_scram_sha_256(db_kwargs):
db_kwargs["database"] = "pg8000_scram_sha_256"

# Should only raise an exception saying db doesn't exist
with pytest.raises(DatabaseError, match="3D000"):
Connection(**db_kwargs)
@pytest.fixture
def setup(con):
con.run("ALTER SYSTEM SET ssl = off")
con.run("SELECT pg_reload_conf()")
yield
con.run("ALTER SYSTEM SET ssl = on")
con.run("SELECT pg_reload_conf()")


def test_scram_sha_256(setup, db_kwargs):
db_kwargs["database"] = DB

Connection(**db_kwargs)

def test_scram_sha_256_ssl_False(db_kwargs):
db_kwargs["database"] = "pg8000_scram_sha_256"

def test_scram_sha_256_ssl_False(setup, db_kwargs):
db_kwargs["database"] = DB
db_kwargs["ssl_context"] = False

# Should only raise an exception saying db doesn't exist
with pytest.raises(DatabaseError, match="3D000"):
Connection(**db_kwargs)
Connection(**db_kwargs)


def test_scram_sha_256_ssl_True(db_kwargs):
db_kwargs["database"] = "pg8000_scram_sha_256"
def test_scram_sha_256_ssl_True(setup, db_kwargs):
db_kwargs["database"] = DB
db_kwargs["ssl_context"] = True

# Should only raise an exception saying db doesn't exist
with pytest.raises(DatabaseError, match="3D000"):
with pytest.raises(InterfaceError, match="Server refuses SSL"):
Connection(**db_kwargs)
48 changes: 40 additions & 8 deletions test/native/auth/test_scram-sha-256_ssl.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,53 @@
import ssl
from ssl import CERT_NONE, SSLSocket, create_default_context

import pytest

from pg8000.native import Connection, DatabaseError

# This requires a line in pg_hba.conf that requires scram-sha-256 for the
# database scram_sha_256
# database pg8000_scram_sha_256

DB = "pg8000_scram_sha_256"


@pytest.fixture
def setup(con):
try:
con.run("CREATE DATABASE {DB}")
except DatabaseError:
pass


def test_scram_sha_256_plus(db_kwargs):
context = ssl.create_default_context()
db_kwargs["database"] = DB

con = Connection(**db_kwargs)
assert isinstance(con._usock, SSLSocket)


def test_scram_sha_256_plus_ssl_True(db_kwargs):
db_kwargs["ssl_context"] = True
db_kwargs["database"] = DB

con = Connection(**db_kwargs)
assert isinstance(con._usock, SSLSocket)


def test_scram_sha_256_plus_ssl_custom(db_kwargs):
context = create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
context.verify_mode = CERT_NONE

db_kwargs["ssl_context"] = context
db_kwargs["database"] = "pg8000_scram_sha_256"
db_kwargs["database"] = DB

con = Connection(**db_kwargs)
assert isinstance(con._usock, SSLSocket)


def test_scram_sha_256_plus_ssl_False(db_kwargs):
db_kwargs["ssl_context"] = False
db_kwargs["database"] = DB

# Should only raise an exception saying db doesn't exist
with pytest.raises(DatabaseError, match="3D000"):
Connection(**db_kwargs)
con = Connection(**db_kwargs)
assert not isinstance(con._usock, SSLSocket)

0 comments on commit 8dc9fd1

Please sign in to comment.