Skip to content

Commit

Permalink
ruff format
Browse files Browse the repository at this point in the history
  • Loading branch information
mfrasco committed Nov 11, 2023
1 parent 43cd3b0 commit 1946885
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 41 deletions.
4 changes: 2 additions & 2 deletions Nobles_and_Peasants/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ def signup():
password = request.form["password"]
db = get_db()

if (party_name is None) or (party_name == ''):
if (party_name is None) or (party_name == ""):
msg = "Unsuccessful! You must choose a name for your party."
flash(msg)
return render_template("login.html", party_name=None)

if (password is None) or (password == ''):
if (password is None) or (password == ""):
msg = "Unsuccessful! You must choose a password for your party."
flash(msg)
return render_template("login.html", party_name=None)
Expand Down
22 changes: 12 additions & 10 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,21 @@
from nobles_and_peasants import create_app
from nobles_and_peasants.db import get_db, init_db

with open(os.path.join(os.path.dirname(__file__), 'test_data.sql'), 'rb') as f:
_data_sql = f.read().decode('utf8')
with open(os.path.join(os.path.dirname(__file__), "test_data.sql"), "rb") as f:
_data_sql = f.read().decode("utf8")


@pytest.fixture
def app():
"""Create an app object that can be used to test functionality."""
db_fd, db_path = tempfile.mkstemp()

app = create_app({
'TESTING': True,
'DATABASE': db_path,
})
app = create_app(
{
"TESTING": True,
"DATABASE": db_path,
}
)

with app.app_context():
init_db()
Expand All @@ -44,23 +46,23 @@ def runner(app):

class AuthActions:
"""Simplify authentication actions."""

def __init__(self, client):
"""Initialize authentication client."""
self._client = client

def login(self, party_name, password):
"""Log in to a party."""
return self._client.post(
'/auth/login',
data={'party_name': party_name, 'password': password}
"/auth/login", data={"party_name": party_name, "password": password}
)

def logout(self):
"""Log out of a party."""
return self._client.get('/auth/logout')
return self._client.get("/auth/logout")


@pytest.fixture
def auth(client):
"""A fixture for logging in and logging out."""
return AuthActions(client)
return AuthActions(client)
55 changes: 33 additions & 22 deletions tests/test_auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@

def test_signup(client, app):
"""Test that signing up a new party creates a row in the database."""
assert client.get('/auth/signup').status_code == 200
data = {'party_name': 'test_signup_name', 'password': 'test_signup_pw'}
client.post('/auth/signup', data=data)
assert client.get("/auth/signup").status_code == 200

data = {"party_name": "test_signup_name", "password": "test_signup_pw"}
client.post("/auth/signup", data=data)

with app.app_context():
db = get_db()
Expand All @@ -18,40 +18,51 @@ def test_signup(client, app):


@pytest.mark.parametrize(
('party_name', 'password', 'message'),
("party_name", "password", "message"),
(
('', 'pw', b'Unsuccessful! You must choose a name for your party.'),
('pn', '', b'Unsuccessful! You must choose a password for your party.'),
('party_name_1', 'pw', b'Unsuccessful! Please choose a different party name. Someone already selected party_name_1.'),
)
("", "pw", b"Unsuccessful! You must choose a name for your party."),
("pn", "", b"Unsuccessful! You must choose a password for your party."),
(
"party_name_1",
"pw",
b"Unsuccessful! Please choose a different party name. Someone already selected party_name_1.",
),
),
)
def test_signup_validate_input(client, party_name, password, message):
"""Test that signup handles errors correctly."""
response = client.post(
'/auth/signup',
data={'party_name': party_name, 'password': password}
"/auth/signup", data={"party_name": party_name, "password": password}
)
assert message in response.data


def test_login(client, auth):
"""Test that logging in to a party sets session variables correctly."""
assert client.get('/auth/login').status_code == 200
assert client.get("/auth/login").status_code == 200
response = auth.login(party_name="party_name_1", password="maya")
assert 'What is Nobles and Peasants?' in response.text
assert "What is Nobles and Peasants?" in response.text

with client:
client.get('/')
assert session['party_id'] == 1
assert g.user['party_name'] == 'party_name_1'
client.get("/")
assert session["party_id"] == 1
assert g.user["party_name"] == "party_name_1"


@pytest.mark.parametrize(
('party_name', 'password', 'message'),
("party_name", "password", "message"),
(
('unknown_party_name', 'test', b'Unsuccessful! unknown_party_name has not been registered yet. Please sign up to create a party.'),
('party_name_1', 'a', b'Unsuccessful! That is not the correct password for party_name_1.'),
)
(
"unknown_party_name",
"test",
b"Unsuccessful! unknown_party_name has not been registered yet. Please sign up to create a party.",
),
(
"party_name_1",
"a",
b"Unsuccessful! That is not the correct password for party_name_1.",
),
),
)
def test_login_validate_input(auth, party_name, password, message):
"""Test that login errors are handled properly."""
Expand All @@ -65,5 +76,5 @@ def test_logout(client, auth):

with client:
auth.logout()
assert 'party_id' not in session
assert 'party_name' not in session
assert "party_id" not in session
assert "party_name" not in session
14 changes: 8 additions & 6 deletions tests/test_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,24 +11,26 @@ def test_get_close_db(app):
db = get_db()
assert db is get_db()

num_parties = db.execute('select count(*) as num from parties').fetchone()['num']
query = "select count(*) as num from parties"
num_parties = db.execute(query).fetchone()["num"]
assert num_parties == 2

with pytest.raises(sqlite3.ProgrammingError) as e:
db.execute('SELECT 1')
db.execute("SELECT 1")

assert 'Cannot operate on a closed database' in str(e.value)
assert "Cannot operate on a closed database" in str(e.value)


def test_init_db_command(runner, monkeypatch):
"""Test that initialize database command works."""

class Recorder:
called = False

def fake_init_db():
Recorder.called = True

monkeypatch.setattr('nobles_and_peasants.db.init_db', fake_init_db)
result = runner.invoke(args=['init-db'])
assert 'Initialized' in result.output
monkeypatch.setattr("nobles_and_peasants.db.init_db", fake_init_db)
result = runner.invoke(args=["init-db"])
assert "Initialized" in result.output
assert Recorder.called
2 changes: 1 addition & 1 deletion tests/test_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
def test_config():
"""Test that testing mode is set properly when an app is created."""
assert not create_app().testing
assert create_app({'TESTING': True}).testing
assert create_app({"TESTING": True}).testing

0 comments on commit 1946885

Please sign in to comment.