Skip to content

Commit 15f79d1

Browse files
fix: User creation through API when signups are supposed to be disabled (#2622)
* fix user creation when signups are supposed to be diabled * add user registration tests * run formatter * fix test filename --------- Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
1 parent ebe11da commit 15f79d1

File tree

2 files changed

+39
-5
lines changed

2 files changed

+39
-5
lines changed

mealie/services/user_services/registration_service.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,10 @@ def register_user(self, registration: CreateUserRegistration) -> PrivateUser:
6363
elif self.repos.users.get_one(registration.email, "email"):
6464
raise HTTPException(status.HTTP_409_CONFLICT, {"message": self.t("exceptions.email-conflict-error")})
6565

66-
self.logger.info(f"Registering user {registration.username}")
6766
token_entry = None
6867
new_group = False
6968

70-
if registration.group:
71-
new_group = True
72-
group = self._register_new_group()
73-
elif registration.group_token and registration.group_token != "":
69+
if registration.group_token and registration.group_token != "":
7470
token_entry = self.repos.group_invite_tokens.get_one(registration.group_token)
7571
if not token_entry:
7672
raise HTTPException(status.HTTP_400_BAD_REQUEST, {"message": "Invalid group token"})
@@ -81,9 +77,13 @@ def register_user(self, registration: CreateUserRegistration) -> PrivateUser:
8177
raise HTTPException(status.HTTP_400_BAD_REQUEST, {"message": "Invalid group token"})
8278

8379
group = maybe_none_group
80+
elif registration.group:
81+
new_group = True
82+
group = self._register_new_group()
8483
else:
8584
raise HTTPException(status.HTTP_400_BAD_REQUEST, {"message": "Missing group"})
8685

86+
self.logger.info(f"Registering user {registration.username}")
8787
user = self._create_new_user(group, new_group)
8888

8989
if new_group and registration.seed_data:
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import random
2+
import string
3+
4+
from fastapi.testclient import TestClient
5+
from mealie.core.config import get_app_settings
6+
from tests.utils import api_routes
7+
from tests.utils.factories import user_registration_factory
8+
9+
10+
def test_register_user(api_client: TestClient, monkeypatch):
11+
# create random registration
12+
registration = user_registration_factory()
13+
14+
# signup disabled but valid request
15+
monkeypatch.setenv("ALLOW_SIGNUP", "False")
16+
get_app_settings.cache_clear()
17+
response = api_client.post(api_routes.users_register, json=registration.dict(by_alias=True))
18+
assert response.status_code == 403
19+
20+
# signup disabled, request includes non valid group token
21+
registration.group_token = "".join(random.choice(string.ascii_lowercase + string.digits) for _ in range(10)).strip()
22+
response = api_client.post(api_routes.users_register, json=registration.dict(by_alias=True))
23+
assert response.status_code == 400
24+
25+
# signup enabled but contains non valid group token
26+
monkeypatch.setenv("ALLOW_SIGNUP", "True")
27+
get_app_settings.cache_clear()
28+
response = api_client.post(api_routes.users_register, json=registration.dict(by_alias=True))
29+
assert response.status_code == 400
30+
31+
# signup enabled and valid request
32+
registration.group_token = None
33+
response = api_client.post(api_routes.users_register, json=registration.dict(by_alias=True))
34+
assert response.status_code == 201

0 commit comments

Comments
 (0)