67 lines
2.0 KiB
Python
67 lines
2.0 KiB
Python
import pytest
|
|
|
|
from funkwhale_api.users import serializers
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"data, expected_error",
|
|
[
|
|
(
|
|
{
|
|
"username": "myusername",
|
|
"email": "test@hello.com",
|
|
"password1": "myusername",
|
|
},
|
|
r".*password is too similar.*",
|
|
),
|
|
(
|
|
{"username": "myusername", "email": "test@hello.com", "password1": "test"},
|
|
r".*must contain at least 8 characters.*",
|
|
),
|
|
(
|
|
{
|
|
"username": "myusername",
|
|
"email": "test@hello.com",
|
|
"password1": "superman",
|
|
},
|
|
r".*password is too common.*",
|
|
),
|
|
(
|
|
{
|
|
"username": "myusername",
|
|
"email": "test@hello.com",
|
|
"password1": "123457809878",
|
|
},
|
|
r".*password is entirely numeric.*",
|
|
),
|
|
],
|
|
)
|
|
def test_registration_serializer_validates_password_properly(data, expected_error, db):
|
|
data["password2"] = data["password1"]
|
|
serializer = serializers.RegisterSerializer(data=data)
|
|
|
|
with pytest.raises(serializers.serializers.ValidationError, match=expected_error):
|
|
serializer.is_valid(raise_exception=True)
|
|
|
|
|
|
def test_me_serializer_includes_tokens(factories, mocker):
|
|
user = factories["users.User"]()
|
|
generate_scoped_token = mocker.patch(
|
|
"funkwhale_api.users.authentication.generate_scoped_token"
|
|
)
|
|
expected = {"listen": generate_scoped_token.return_value}
|
|
serializer = serializers.MeSerializer(user)
|
|
|
|
assert serializer.data["tokens"] == expected
|
|
|
|
generate_scoped_token.assert_called_once_with(
|
|
user_id=user.pk, user_secret=user.secret_key, scopes=["read:libraries"]
|
|
)
|
|
|
|
|
|
def test_me_serializer_includes_settings(factories):
|
|
user = factories["users.User"](settings={"foo": "bar"})
|
|
serializer = serializers.MeSerializer(user)
|
|
|
|
assert serializer.data["settings"] == {"foo": "bar"}
|