74 lines
2.4 KiB
Python
74 lines
2.4 KiB
Python
import json
|
|
|
|
from django.test import RequestFactory
|
|
|
|
from test_plus.test import TestCase
|
|
from funkwhale_api.users.models import User
|
|
|
|
from . factories import UserFactory
|
|
|
|
|
|
class UserTestCase(TestCase):
|
|
|
|
def setUp(self):
|
|
self.user = self.make_user()
|
|
self.factory = RequestFactory()
|
|
|
|
def test_can_create_user_via_api(self):
|
|
url = self.reverse('rest_register')
|
|
data = {
|
|
'username': 'test1',
|
|
'email': 'test1@test.com',
|
|
'password1': 'testtest',
|
|
'password2': 'testtest',
|
|
}
|
|
with self.settings(REGISTRATION_MODE="public"):
|
|
response = self.client.post(url, data)
|
|
self.assertEqual(response.status_code, 201)
|
|
|
|
u = User.objects.get(email='test1@test.com')
|
|
self.assertEqual(u.username, 'test1')
|
|
|
|
def test_can_disable_registration_view(self):
|
|
url = self.reverse('rest_register')
|
|
data = {
|
|
'username': 'test1',
|
|
'email': 'test1@test.com',
|
|
'password1': 'testtest',
|
|
'password2': 'testtest',
|
|
}
|
|
with self.settings(REGISTRATION_MODE="disabled"):
|
|
response = self.client.post(url, data)
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
def test_can_fetch_data_from_api(self):
|
|
url = self.reverse('api:v1:users:users-me')
|
|
response = self.client.get(url)
|
|
# login required
|
|
self.assertEqual(response.status_code, 401)
|
|
|
|
user = UserFactory(
|
|
is_staff=True,
|
|
perms=[
|
|
'music.add_importbatch',
|
|
'dynamic_preferences.change_globalpreferencemodel',
|
|
]
|
|
)
|
|
self.assertTrue(user.has_perm('music.add_importbatch'))
|
|
self.login(user)
|
|
|
|
response = self.client.get(url)
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
payload = json.loads(response.content.decode('utf-8'))
|
|
|
|
self.assertEqual(payload['username'], user.username)
|
|
self.assertEqual(payload['is_staff'], user.is_staff)
|
|
self.assertEqual(payload['is_superuser'], user.is_superuser)
|
|
self.assertEqual(payload['email'], user.email)
|
|
self.assertEqual(payload['name'], user.name)
|
|
self.assertEqual(
|
|
payload['permissions']['import.launch']['status'], True)
|
|
self.assertEqual(
|
|
payload['permissions']['settings.change']['status'], True)
|