Fix #17: prevent to set is_active/is_superuser on register route

This commit is contained in:
François Voron
2019-10-19 18:56:54 +02:00
parent 5d4979f9a9
commit 8d65a11a4f
2 changed files with 28 additions and 1 deletions

View File

@ -42,7 +42,10 @@ def get_user_router(
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST) raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST)
hashed_password = get_password_hash(user.password) hashed_password = get_password_hash(user.password)
db_user = models.UserDB(**user.dict(), hashed_password=hashed_password) db_user = models.UserDB(
**user.dict(exclude={"id", "is_superuser", "is_active"}),
hashed_password=hashed_password
)
created_user = await user_db.create(db_user) created_user = await user_db.create(db_user)
return created_user return created_user

View File

@ -91,6 +91,30 @@ class TestRegister:
assert "password" not in response_json assert "password" not in response_json
assert "id" in response_json assert "id" in response_json
def test_valid_body_is_superuser(self, test_app_client: TestClient):
json = {
"email": "lancelot@camelot.bt",
"password": "guinevere",
"is_superuser": True,
}
response = test_app_client.post("/register", json=json)
assert response.status_code == status.HTTP_201_CREATED
response_json = response.json()
assert response_json["is_superuser"] is False
def test_valid_body_is_active(self, test_app_client: TestClient):
json = {
"email": "lancelot@camelot.bt",
"password": "guinevere",
"is_active": False,
}
response = test_app_client.post("/register", json=json)
assert response.status_code == status.HTTP_201_CREATED
response_json = response.json()
assert response_json["is_active"] is True
class TestLogin: class TestLogin:
def test_empty_body(self, test_app_client: TestClient): def test_empty_body(self, test_app_client: TestClient):