Adding test for change avatar permissions

remotes/origin/enhancement/email-actions
Jesús Espino 2014-07-31 16:32:25 +02:00
parent 55a5abec73
commit 43c8699328
2 changed files with 52 additions and 2 deletions

View File

@ -23,6 +23,8 @@ from django.contrib.auth import logout, login, authenticate
from django.contrib.auth.hashers import make_password from django.contrib.auth.hashers import make_password
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from easy_thumbnails.exceptions import InvalidImageFormatError
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.filters import BaseFilterBackend from rest_framework.filters import BaseFilterBackend
@ -176,7 +178,12 @@ class UsersViewSet(ModelCrudViewSet):
request.user.photo = avatar request.user.photo = avatar
request.user.save(update_fields=["photo"]) request.user.save(update_fields=["photo"])
try:
user_data = serializers.UserSerializer(request.user).data user_data = serializers.UserSerializer(request.user).data
except InvalidImageFormatError:
raise exc.WrongArguments(_("Invalid image format"))
user_data = serializers.UserSerializer(request.user).data
return Response(user_data, status=status.HTTP_200_OK) return Response(user_data, status=status.HTTP_200_OK)
@detail_route(methods=["GET"]) @detail_route(methods=["GET"])

View File

@ -12,8 +12,12 @@ from tests.utils import helper_test_http_method, disconnect_signals, reconnect_s
import json import json
from tempfile import NamedTemporaryFile
pytestmark = pytest.mark.django_db pytestmark = pytest.mark.django_db
DUMMY_BMP_DATA = b'BM:\x00\x00\x00\x00\x00\x00\x006\x00\x00\x00(\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x04\x00\x00\x00\x13\x0b\x00\x00\x13\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
def setup_module(module): def setup_module(module):
disconnect_signals() disconnect_signals()
@ -155,10 +159,49 @@ def test_user_action_change_password(client, data):
] ]
patch_data = json.dumps({"current_password": "test-current-password", "password": "test-password"}) post_data = json.dumps({"current_password": "test-current-password", "password": "test-password"})
results = helper_test_http_method(client, 'post', url, patch_data, users) results = helper_test_http_method(client, 'post', url, post_data, users)
assert results == [401, 204, 204, 204] assert results == [401, 204, 204, 204]
def test_user_action_change_avatar(client, data):
url = reverse('users-change-avatar')
users = [
None,
data.registered_user,
data.other_user,
data.superuser,
]
with NamedTemporaryFile() as avatar:
avatar.write(DUMMY_BMP_DATA)
avatar.seek(0)
post_data = {
'avatar': avatar
}
client.logout()
response = client.post(url, post_data)
assert response.status_code == 401
avatar.seek(0)
client.login(data.registered_user)
response = client.post(url, post_data)
assert response.status_code == 200
avatar.seek(0)
client.login(data.other_user)
response = client.post(url, post_data)
assert response.status_code == 200
avatar.seek(0)
client.login(data.superuser)
response = client.post(url, post_data)
assert response.status_code == 200
def test_user_action_change_password_from_recovery(client, data): def test_user_action_change_password_from_recovery(client, data):
url = reverse('users-change-password-from-recovery') url = reverse('users-change-password-from-recovery')