import pytest import psycopg2 def test_proxy_select_1(static_proxy): static_proxy.safe_psql('select 1', options='project=generic-project-name') def test_password_hack(static_proxy): user = 'borat' password = 'password' static_proxy.safe_psql(f"create role {user} with login password '{password}'", options='project=irrelevant') # Note the format of `magic`! magic = f"project=irrelevant;{password}" static_proxy.safe_psql('select 1', sslsni=0, user=user, password=magic) # Must also check that invalid magic won't be accepted. with pytest.raises(psycopg2.errors.OperationalError): magic = "broken" static_proxy.safe_psql('select 1', sslsni=0, user=user, password=magic) # Pass extra options to the server. # # Currently, proxy eats the extra connection options, so this fails. # See https://github.com/neondatabase/neon/issues/1287 @pytest.mark.xfail def test_proxy_options(static_proxy): with static_proxy.connect(options='-cproxytest.option=value') as conn: with conn.cursor() as cur: cur.execute('SHOW proxytest.option') value = cur.fetchall()[0][0] assert value == 'value'