Skip to content

Commit

Permalink
Allow connecting to upper-case project IDs. (#934)
Browse files Browse the repository at this point in the history
Fix #933.
  • Loading branch information
almet committed Nov 23, 2021
1 parent bd9ebd1 commit 68552a6
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 14 deletions.
6 changes: 3 additions & 3 deletions ihatemoney/tests/budget_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ def test_authentication(self):
self.assertTrue(session["is_admin"])

def test_authentication_with_upper_case(self):
self.create_project("Raclette")
self.post_project("Raclette")

# try to connect with the right credentials should work
with self.app.test_client() as c:
Expand All @@ -521,8 +521,8 @@ def test_authentication_with_upper_case(self):
)

self.assertNotIn("Authentication", resp.data.decode("utf-8"))
self.assertIn("Raclette", session)
self.assertTrue(session["Raclette"])
self.assertIn("raclette", session)
self.assertTrue(session["raclette"])

def test_admin_authentication(self):
self.app.config["ADMIN_PASSWORD"] = generate_password_hash("pass")
Expand Down
21 changes: 13 additions & 8 deletions ihatemoney/tests/common/ihatemoney_testcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,31 +51,36 @@ def login(self, project, password=None, test_client=None):
)

def post_project(
self, id, follow_redirects=True, default_currency="XXX", name=None
self,
id,
follow_redirects=True,
default_currency="XXX",
name=None,
password=None,
):
"""Create a fake project"""
if name is None:
name = id
name = name or id
password = password or id
# create the project
return self.client.post(
"/create",
data={
"name": name,
"id": id,
"password": id,
"password": password,
"contact_email": f"{id}@notmyidea.org",
"default_currency": default_currency,
},
follow_redirects=follow_redirects,
)

def create_project(self, id, default_currency="XXX", name=None):
if name is None:
name = str(id)
def create_project(self, id, default_currency="XXX", name=None, password=None):
name = name or str(id)
password = password or id
project = models.Project(
id=id,
name=name,
password=generate_password_hash(id),
password=generate_password_hash(password),
contact_email=f"{id}@notmyidea.org",
default_currency=default_currency,
)
Expand Down
7 changes: 4 additions & 3 deletions ihatemoney/web.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,9 @@ def pull_project(endpoint, values):
return
if not values:
values = {}
project_id = values.pop("project_id", None)
if project_id:
entered_project_id = values.pop("project_id", None)
if entered_project_id:
project_id = entered_project_id.lower()
project = Project.query.get(project_id)
if not project:
raise Redirect303(url_for(".create_project", project_id=project_id))
Expand Down Expand Up @@ -225,7 +226,7 @@ def authenticate(project_id=None):

if not form.id.data and request.args.get("project_id"):
form.id.data = request.args["project_id"]
project_id = form.id.data
project_id = form.id.data.lower() if form.id.data else None

project = Project.query.get(project_id) if project_id is not None else None
if not project:
Expand Down

0 comments on commit 68552a6

Please sign in to comment.