Fixed #54: Now use pytest everywhere \o/
This commit is contained in:
parent
a7758395ee
commit
099cdfa99c
65 changed files with 1466 additions and 1467 deletions
0
api/tests/users/__init__.py
Normal file
0
api/tests/users/__init__.py
Normal file
35
api/tests/users/test_admin.py
Normal file
35
api/tests/users/test_admin.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
from funkwhale_api.users.admin import MyUserCreationForm
|
||||
|
||||
|
||||
def test_clean_username_success(db):
|
||||
# Instantiate the form with a new username
|
||||
form = MyUserCreationForm({
|
||||
'username': 'alamode',
|
||||
'password1': '123456',
|
||||
'password2': '123456',
|
||||
})
|
||||
# Run is_valid() to trigger the validation
|
||||
valid = form.is_valid()
|
||||
assert valid
|
||||
|
||||
# Run the actual clean_username method
|
||||
username = form.clean_username()
|
||||
assert 'alamode' == username
|
||||
|
||||
|
||||
def test_clean_username_false(factories):
|
||||
user = factories['users.User']()
|
||||
# Instantiate the form with the same username as self.user
|
||||
form = MyUserCreationForm({
|
||||
'username': user.username,
|
||||
'password1': '123456',
|
||||
'password2': '123456',
|
||||
})
|
||||
# Run is_valid() to trigger the validation, which is going to fail
|
||||
# because the username is already taken
|
||||
valid = form.is_valid()
|
||||
assert not valid
|
||||
|
||||
# The form.errors dict should contain a single error called 'username'
|
||||
assert len(form.errors) == 1
|
||||
assert 'username' in form.errors
|
||||
4
api/tests/users/test_models.py
Normal file
4
api/tests/users/test_models.py
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
|
||||
def test__str__(factories):
|
||||
user = factories['users.User'](username='hello')
|
||||
assert user.__str__() == 'hello'
|
||||
64
api/tests/users/test_views.py
Normal file
64
api/tests/users/test_views.py
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
import json
|
||||
|
||||
from django.test import RequestFactory
|
||||
from django.urls import reverse
|
||||
|
||||
from funkwhale_api.users.models import User
|
||||
|
||||
|
||||
def test_can_create_user_via_api(settings, client, db):
|
||||
url = reverse('rest_register')
|
||||
data = {
|
||||
'username': 'test1',
|
||||
'email': 'test1@test.com',
|
||||
'password1': 'testtest',
|
||||
'password2': 'testtest',
|
||||
}
|
||||
settings.REGISTRATION_MODE = "public"
|
||||
response = client.post(url, data)
|
||||
assert response.status_code == 201
|
||||
|
||||
u = User.objects.get(email='test1@test.com')
|
||||
assert u.username == 'test1'
|
||||
|
||||
|
||||
def test_can_disable_registration_view(settings, client, db):
|
||||
url = reverse('rest_register')
|
||||
data = {
|
||||
'username': 'test1',
|
||||
'email': 'test1@test.com',
|
||||
'password1': 'testtest',
|
||||
'password2': 'testtest',
|
||||
}
|
||||
settings.REGISTRATION_MODE = "disabled"
|
||||
response = client.post(url, data)
|
||||
assert response.status_code == 403
|
||||
|
||||
|
||||
def test_can_fetch_data_from_api(client, factories):
|
||||
url = reverse('api:v1:users:users-me')
|
||||
response = client.get(url)
|
||||
# login required
|
||||
assert response.status_code == 401
|
||||
|
||||
user = factories['users.User'](
|
||||
is_staff=True,
|
||||
perms=[
|
||||
'music.add_importbatch',
|
||||
'dynamic_preferences.change_globalpreferencemodel',
|
||||
]
|
||||
)
|
||||
assert user.has_perm('music.add_importbatch')
|
||||
client.login(username=user.username, password='test')
|
||||
response = client.get(url)
|
||||
assert response.status_code == 200
|
||||
|
||||
payload = json.loads(response.content.decode('utf-8'))
|
||||
|
||||
assert payload['username'] == user.username
|
||||
assert payload['is_staff'] == user.is_staff
|
||||
assert payload['is_superuser'] == user.is_superuser
|
||||
assert payload['email'] == user.email
|
||||
assert payload['name'] == user.name
|
||||
assert payload['permissions']['import.launch']['status']
|
||||
assert payload['permissions']['settings.change']['status']
|
||||
Loading…
Add table
Add a link
Reference in a new issue