42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
| import pytest
 | |
| 
 | |
| from funkwhale_api.common import authentication
 | |
| 
 | |
| 
 | |
| @pytest.mark.parametrize(
 | |
|     "setting_value, is_superuser, has_verified_primary_email, expected",
 | |
|     [
 | |
|         ("mandatory", False, False, True),
 | |
|         ("mandatory", False, True, False),
 | |
|         ("mandatory", True, False, False),
 | |
|         ("mandatory", True, True, False),
 | |
|         ("optional", False, False, False),
 | |
|         ("optional", False, True, False),
 | |
|         ("optional", True, False, False),
 | |
|         ("optional", True, True, False),
 | |
|     ],
 | |
| )
 | |
| def test_should_verify_email(
 | |
|     setting_value,
 | |
|     is_superuser,
 | |
|     has_verified_primary_email,
 | |
|     expected,
 | |
|     factories,
 | |
|     settings,
 | |
| ):
 | |
|     settings.ACCOUNT_EMAIL_VERIFICATION = setting_value
 | |
|     user = factories["users.User"](
 | |
|         is_superuser=is_superuser, verified_email=has_verified_primary_email
 | |
|     )
 | |
|     assert user.should_verify_email() is expected
 | |
| 
 | |
| 
 | |
| def test_app_token_authentication(factories, api_request):
 | |
|     user = factories["users.User"]()
 | |
|     app = factories["users.Application"](user=user, scope="read write")
 | |
|     request = api_request.get("/", HTTP_AUTHORIZATION=f"Bearer {app.token}")
 | |
| 
 | |
|     auth = authentication.ApplicationTokenAuthentication()
 | |
|     assert auth.authenticate(request)[0] == app.user
 | |
|     assert request.scopes == ["read", "write"]
 |