Skip to content
Snippets Groups Projects
test_models.py 2.37 KiB
Newer Older
  • Learn to ignore specific revisions
  • import pytest
    
    from funkwhale_api.users import models
    
    
    
    def test__str__(factories):
        user = factories['users.User'](username='hello')
        assert user.__str__() == 'hello'
    
    
    
    def test_changing_password_updates_subsonic_api_token_no_token(factories):
        user = factories['users.User'](subsonic_api_token=None)
        user.set_password('new')
        assert user.subsonic_api_token is None
    
    
    def test_changing_password_updates_subsonic_api_token(factories):
        user = factories['users.User'](subsonic_api_token='test')
        user.set_password('new')
    
        assert user.subsonic_api_token is not None
        assert user.subsonic_api_token != 'test'
    
    
    
    def test_get_permissions_superuser(factories):
        user = factories['users.User'](is_superuser=True)
    
        perms = user.get_permissions()
        for p in models.PERMISSIONS:
            assert perms[p] is True
    
    
    def test_get_permissions_regular(factories):
        user = factories['users.User'](permission_library=True)
    
        perms = user.get_permissions()
        for p in models.PERMISSIONS:
            if p == 'library':
                assert perms[p] is True
            else:
                assert perms[p] is False
    
    
    
    def test_get_permissions_default(factories, preferences):
        preferences['users__default_permissions'] = ['upload', 'federation']
        user = factories['users.User']()
    
        perms = user.get_permissions()
        assert perms['upload'] is True
        assert perms['federation'] is True
        assert perms['library'] is False
        assert perms['settings'] is False
    
    
    
    @pytest.mark.parametrize('args,perms,expected', [
        ({'is_superuser': True}, ['federation', 'library'], True),
        ({'is_superuser': False}, ['federation'], False),
        ({'permission_library': True}, ['library'], True),
        ({'permission_library': True}, ['library', 'federation'], False),
    ])
    
    def test_has_permissions_and(args, perms, expected, factories):
    
        assert user.has_permissions(*perms, operator='and') is expected
    
    
    @pytest.mark.parametrize('args,perms,expected', [
        ({'is_superuser': True}, ['federation', 'library'], True),
        ({'is_superuser': False}, ['federation'], False),
        ({'permission_library': True}, ['library', 'federation'], True),
        ({'permission_library': True}, ['federation'], False),
    ])
    def test_has_permissions_or(args, perms, expected, factories):
        user = factories['users.User'](**args)
        assert user.has_permissions(*perms, operator='or') is expected