瀏覽代碼

HUE-8758 [useradmin] Add test to uderprofile data field

Romain 5 年之前
父節點
當前提交
9dbfa67baf
共有 2 個文件被更改,包括 37 次插入12 次删除
  1. 3 3
      apps/useradmin/src/useradmin/models.py
  2. 34 9
      apps/useradmin/src/useradmin/tests.py

+ 3 - 3
apps/useradmin/src/useradmin/models.py

@@ -39,6 +39,7 @@ Note that Django itself has a notion of users, groups, and permissions. We re-us
 permissions.  The permissions notion in Django is strongly tied to what models you may or may not edit, and there are elaborations (especially
 in Django 1.2) to manipulate this row by row. This does not map nicely onto actions which may not relate to database models.
 """
+import json
 import logging
 from datetime import datetime
 from enum import Enum
@@ -133,11 +134,10 @@ class UserProfile(models.Model):
       self.json_data = json.dumps({})
     return json.loads(self.json_data)
 
-  @data.setter
-  def data(self, val):
+  def update_data(self, val):
     data_dict = self.data
     data_dict.update(val)
-    self.data = json.dumps(data_dict)
+    self.json_data = json.dumps(data_dict)
 
 
 def get_profile(user):

+ 34 - 9
apps/useradmin/src/useradmin/tests.py

@@ -32,6 +32,7 @@ from datetime import datetime
 from django.contrib.sessions.models import Session
 from django.db.models import Q
 from django.urls import reverse
+from django.test import override_settings
 from django.test.client import Client
 
 import desktop.conf
@@ -245,7 +246,7 @@ class BaseUserAdminTests(object):
   @classmethod
   def setUpClass(cls):
     cls._class_resets = [
-        useradmin.conf.DEFAULT_USER_GROUP.set_for_testing(None),
+      useradmin.conf.DEFAULT_USER_GROUP.set_for_testing(None),
     ]
 
   @classmethod
@@ -261,6 +262,38 @@ class BaseUserAdminTests(object):
     pass
 
 
+class TestUserProfile(BaseUserAdminTests):
+
+  @override_settings(AUTHENTICATION_BACKENDS=['desktop.auth.backend.AllowFirstUserDjangoBackend'])
+  def test_get_profile(self):
+    '''Ensure profiles are created after get_profile is called.'''
+    c = make_logged_in_client(username='test', password='test', is_superuser=True, recreate=True)
+    assert_equal(0, UserProfile.objects.count())
+    p = get_profile(User.objects.get(username='test'))
+    assert_equal(1, UserProfile.objects.count())
+
+
+  @override_settings(AUTHENTICATION_BACKENDS=['desktop.auth.backend.AllowFirstUserDjangoBackend'])
+  def test_get_and_update_profile(self):
+    c = make_logged_in_client(username='test', password='test', is_superuser=False, recreate=True)
+
+    user = User.objects.get(username='test')
+    userprofile = get_profile(user)
+    assert_false(userprofile.data.get('language_preference'))
+
+    userprofile.update_data({'language_preference': 'en'})
+    userprofile.save()
+    assert_equal('en', userprofile.data['language_preference'])
+
+    userprofile.update_data({'language_preference': 'es'})
+    userprofile.save()
+    assert_equal('es', userprofile.data['language_preference'])
+
+    user = User.objects.get(username='test')
+    userprofile = get_profile(user)
+    assert_equal('es', userprofile.data['language_preference'])
+
+
 class TestUserAdmin(BaseUserAdminTests):
 
   def test_group_permissions(self):
@@ -425,14 +458,6 @@ class TestUserAdmin(BaseUserAdminTests):
         reset()
 
 
-  def test_get_profile(self):
-    # Ensure profiles are created after get_profile is called.
-    c = make_logged_in_client(username='test', password='test', is_superuser=True)
-    assert_equal(0, UserProfile.objects.count())
-    p = get_profile(User.objects.get(username='test'))
-    assert_equal(1, UserProfile.objects.count())
-
-
   def test_group_admin(self):
     c = make_logged_in_client(username="test", is_superuser=True)
     response = c.get('/useradmin/groups')