41 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			41 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)
 | 
						|
    setattr(user, "has_verified_primary_email", has_verified_primary_email)
 | 
						|
    assert authentication.should_verify_email(user) 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="Bearer {}".format(app.token))
 | 
						|
 | 
						|
    auth = authentication.ApplicationTokenAuthentication()
 | 
						|
    assert auth.authenticate(request)[0] == app.user
 | 
						|
    assert request.scopes == ["read", "write"]
 |