diff --git a/server/szurubooru/tests/api/test_user_api.py b/server/szurubooru/tests/api/test_user_api.py
index 4614f3b..a2d9be2 100644
--- a/server/szurubooru/tests/api/test_user_api.py
+++ b/server/szurubooru/tests/api/test_user_api.py
@@ -1,3 +1,4 @@
+import tempfile
 from datetime import datetime
 from szurubooru import api, db, errors
 from szurubooru.util import auth
@@ -214,7 +215,9 @@ class TestUpdatingUser(DatabaseTestCase):
             'secret': '',
             'user_name_regex': '.{3,}',
             'password_regex': '.{3,}',
-            'thumbnails': {'avatar_width': 200},
+            'data_dir': tempfile.gettempdir(),
+            'data_url': 'http://example.com/data/',
+            'thumbnails': {'avatar_width': 200, 'avatar_height': 200},
             'ranks': ['anonymous', 'regular_user', 'mod', 'admin'],
             'rank_names': {},
             'privileges': {
@@ -222,10 +225,12 @@ class TestUpdatingUser(DatabaseTestCase):
                 'users:edit:self:pass': 'regular_user',
                 'users:edit:self:email': 'regular_user',
                 'users:edit:self:rank': 'mod',
+                'users:edit:self:avatar': 'mod',
                 'users:edit:any:name': 'mod',
                 'users:edit:any:pass': 'mod',
                 'users:edit:any:email': 'mod',
                 'users:edit:any:rank': 'admin',
+                'users:edit:any:avatar': 'admin',
             },
         })
         util.mock_context(self)
@@ -256,12 +261,14 @@ class TestUpdatingUser(DatabaseTestCase):
             'email': 'asd@asd.asd',
             'password': 'oks',
             'rank': 'mod',
+            'avatarStyle': 'gravatar',
         }
         self.api.put(self.context, 'u1')
         admin_user = self.session.query(db.User).filter_by(name='chewie').one()
         self.assertEqual(admin_user.name, 'chewie')
         self.assertEqual(admin_user.email, 'asd@asd.asd')
         self.assertEqual(admin_user.rank, 'mod')
+        self.assertEqual(admin_user.avatar_style, admin_user.AVATAR_GRAVATAR)
         self.assertTrue(auth.is_valid_password(admin_user, 'oks'))
         self.assertFalse(auth.is_valid_password(admin_user, 'invalid'))
 
@@ -290,6 +297,9 @@ class TestUpdatingUser(DatabaseTestCase):
         self.context.request = {'email': '.'}
         self.assertRaises(
             errors.ValidationError, self.api.put, self.context, 'u1')
+        self.context.request = {'avatarStyle': 'manual'}
+        self.assertRaises(
+            errors.ValidationError, self.api.put, self.context, 'u1')
 
     def test_user_trying_to_update_someone_else(self):
         user1 = util.mock_user('u1', 'regular_user')
@@ -335,3 +345,22 @@ class TestUpdatingUser(DatabaseTestCase):
             errors.AuthError, self.api.put, self.context, user1.name)
         self.assertRaises(
             errors.AuthError, self.api.put, self.context, user2.name)
+
+    def test_uploading_avatar(self):
+        user = util.mock_user('u1', 'mod')
+        self.session.add(user)
+        self.context.user = user
+        self.context.request = {
+            'avatarStyle': 'manual',
+        }
+        empty_pixel = \
+            b'\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x01\x00\x00\x00\x00' \
+            b'\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x01\x00\x2c\x00\x00\x00\x00' \
+            b'\x01\x00\x01\x00\x00\x02\x02\x4c\x01\x00\x3b'
+        self.context.files['avatar'] = empty_pixel
+        response = self.api.put(self.context, 'u1')
+        user = self.session.query(db.User).filter_by(name='u1').one()
+        self.assertEqual(user.avatar_style, user.AVATAR_MANUAL)
+        self.assertEqual(
+            response['user']['avatarUrl'],
+            'http://example.com/data/avatars/u1.jpg')
diff --git a/server/szurubooru/tests/api/util.py b/server/szurubooru/tests/api/util.py
index 8b252e7..3621b39 100644
--- a/server/szurubooru/tests/api/util.py
+++ b/server/szurubooru/tests/api/util.py
@@ -21,6 +21,7 @@ def mock_context(parent):
     context = misc.dotdict()
     context.session = parent.session
     context.request = {}
+    context.files = {}
     context.user = db.User()
     parent.context = context