Browse Source

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

Romain 5 years ago
parent
commit
9dbfa67baf
2 changed files with 37 additions and 12 deletions
  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
 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.
 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
 import logging
 from datetime import datetime
 from datetime import datetime
 from enum import Enum
 from enum import Enum
@@ -133,11 +134,10 @@ class UserProfile(models.Model):
       self.json_data = json.dumps({})
       self.json_data = json.dumps({})
     return json.loads(self.json_data)
     return json.loads(self.json_data)
 
 
-  @data.setter
-  def data(self, val):
+  def update_data(self, val):
     data_dict = self.data
     data_dict = self.data
     data_dict.update(val)
     data_dict.update(val)
-    self.data = json.dumps(data_dict)
+    self.json_data = json.dumps(data_dict)
 
 
 
 
 def get_profile(user):
 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.contrib.sessions.models import Session
 from django.db.models import Q
 from django.db.models import Q
 from django.urls import reverse
 from django.urls import reverse
+from django.test import override_settings
 from django.test.client import Client
 from django.test.client import Client
 
 
 import desktop.conf
 import desktop.conf
@@ -245,7 +246,7 @@ class BaseUserAdminTests(object):
   @classmethod
   @classmethod
   def setUpClass(cls):
   def setUpClass(cls):
     cls._class_resets = [
     cls._class_resets = [
-        useradmin.conf.DEFAULT_USER_GROUP.set_for_testing(None),
+      useradmin.conf.DEFAULT_USER_GROUP.set_for_testing(None),
     ]
     ]
 
 
   @classmethod
   @classmethod
@@ -261,6 +262,38 @@ class BaseUserAdminTests(object):
     pass
     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):
 class TestUserAdmin(BaseUserAdminTests):
 
 
   def test_group_permissions(self):
   def test_group_permissions(self):
@@ -425,14 +458,6 @@ class TestUserAdmin(BaseUserAdminTests):
         reset()
         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):
   def test_group_admin(self):
     c = make_logged_in_client(username="test", is_superuser=True)
     c = make_logged_in_client(username="test", is_superuser=True)
     response = c.get('/useradmin/groups')
     response = c.get('/useradmin/groups')