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"}
 |