Browse Source

refactor(api): improve UserSerializer structure

Peter Thomassen 3 years ago
parent
commit
7871b7b8ff
2 changed files with 10 additions and 10 deletions
  1. 9 9
      api/desecapi/serializers.py
  2. 1 1
      api/desecapi/tests/test_user_management.py

+ 9 - 9
api/desecapi/serializers.py

@@ -633,13 +633,8 @@ class UserSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = models.User
-        fields = ('created', 'email', 'id', 'limit_domains', 'password',)
-        extra_kwargs = {
-            'password': {
-                'write_only': True,  # Do not expose password field
-                'allow_null': True,
-            }
-        }
+        fields = ('created', 'email', 'id', 'limit_domains',)
+        read_only_fields = ('created', 'email', 'id', 'limit_domains',)
 
     def validate_password(self, value):
         if value is not None:
@@ -656,8 +651,13 @@ class RegisterAccountSerializer(UserSerializer):
 
     class Meta:
         model = UserSerializer.Meta.model
-        fields = ('email', 'password', 'domain', 'captcha')
-        extra_kwargs = UserSerializer.Meta.extra_kwargs
+        fields = ('email', 'password', 'domain', 'captcha',)
+        extra_kwargs = {
+            'password': {
+                'write_only': True,  # Do not expose password field
+                'allow_null': True,
+            }
+        }
 
     def validate_domain(self, value):
         serializer = DomainSerializer(data=dict(name=value), context=self.context)

+ 1 - 1
api/desecapi/tests/test_user_management.py

@@ -676,7 +676,7 @@ class HasUserAccountTestCase(UserManagementTestCase):
     def test_view_account(self):
         response = self.client.view_account(self.token)
         self.assertEqual(response.status_code, 200)
-        self.assertTrue('created' in response.data)
+        self.assertEqual(response.data.keys(), {'created', 'email', 'id', 'limit_domains'})
         self.assertEqual(response.data['email'], self.email)
         self.assertEqual(response.data['id'], str(User.objects.get(email=self.email).pk))
         self.assertEqual(response.data['limit_domains'], settings.LIMIT_USER_DOMAIN_COUNT_DEFAULT)