1from seahub.profile.models import Profile, DuplicatedContactEmailError 2from seahub.test_utils import BaseTestCase 3 4 5class ProfileManagerTest(BaseTestCase): 6 def setUp(self): 7 pass 8 9 def test_get_username_by_contact_email(self): 10 assert Profile.objects.get_username_by_contact_email('a@a.com') is None 11 12 user1 = self.user.username 13 Profile.objects.add_or_update(user1, contact_email='a@a.com') 14 assert Profile.objects.get_username_by_contact_email('a@a.com') == user1 15 16 # user2 = self.admin.username 17 # Profile.objects.add_or_update(user2, contact_email='a@a.com') 18 # assert Profile.objects.get_username_by_contact_email('a@a.com') is None 19 20 def test_convert_login_str_to_username(self): 21 s = Profile.objects 22 assert s.convert_login_str_to_username('a@a.com') == 'a@a.com' 23 24 Profile.objects.add_or_update(username='a@a.com', login_id='aaa') 25 assert s.convert_login_str_to_username('a@a.com') == 'a@a.com' 26 assert s.convert_login_str_to_username('aaa') == 'a@a.com' 27 28 Profile.objects.add_or_update(username='a@a.com', contact_email='a+1@a.com') 29 assert s.convert_login_str_to_username('a@a.com') == 'a@a.com' 30 assert s.convert_login_str_to_username('aaa') == 'a@a.com' 31 assert s.convert_login_str_to_username('a+1@a.com') == 'a@a.com' 32 33 def test_get_contact_email_by_user(self): 34 # no profile for user, contact email should be username 35 username = self.user.username 36 assert username == Profile.objects.get_contact_email_by_user(username) 37 38 # user has profile, but no contact email, contact email should be username 39 p = Profile.objects.add_or_update(username, 'nickname') 40 assert username == Profile.objects.get_contact_email_by_user(username) 41 42 # user has profile, and have contact email 43 p.contact_email = 'contact@foo.com' 44 p.save() 45 assert 'contact@foo.com' == Profile.objects.get_contact_email_by_user(username) 46 47 def test_add_or_update(self): 48 username = self.user.username 49 profiles = Profile.objects.filter(user=username) 50 for profile in profiles: 51 profile.delete() 52 53 profile = Profile.objects.add_or_update(username, 'nickname', 54 intro='hello', lang_code='ch', 55 login_id=username, 56 contact_email=username, 57 institution='test') 58 assert profile.nickname == 'nickname' 59 assert profile.user == username 60 assert profile.intro == 'hello' 61 assert profile.lang_code == 'ch' 62 assert profile.login_id == username 63 assert profile.contact_email == username 64 assert profile.institution == 'test' 65 66 # test whether other will be changed when some one updated 67 profile = Profile.objects.add_or_update(username, 'nick') 68 assert profile.nickname == 'nick' 69 assert profile.user == username 70 assert profile.intro == 'hello' 71 assert profile.lang_code == 'ch' 72 assert profile.login_id == username 73 assert profile.contact_email == username 74 assert profile.institution == 'test' 75 76 profile = Profile.objects.add_or_update(username, intro='intro') 77 assert profile.nickname == 'nick' 78 assert profile.user == username 79 assert profile.intro == 'intro' 80 assert profile.lang_code == 'ch' 81 assert profile.login_id == username 82 assert profile.contact_email == username 83 assert profile.institution == 'test' 84 85 profile = Profile.objects.add_or_update(username, lang_code='en') 86 assert profile.nickname == 'nick' 87 assert profile.user == username 88 assert profile.intro == 'intro' 89 assert profile.lang_code == 'en' 90 assert profile.login_id == username 91 assert profile.contact_email == username 92 assert profile.institution == 'test' 93 94 profile = Profile.objects.add_or_update(username, login_id='test@test.com') 95 assert profile.nickname == 'nick' 96 assert profile.user == username 97 assert profile.intro == 'intro' 98 assert profile.lang_code == 'en' 99 assert profile.login_id == 'test@test.com' 100 assert profile.contact_email == username 101 assert profile.institution == 'test' 102 103 profile = Profile.objects.add_or_update(username, contact_email='test@contact.com') 104 assert profile.nickname == 'nick' 105 assert profile.user == username 106 assert profile.intro == 'intro' 107 assert profile.lang_code == 'en' 108 assert profile.login_id == 'test@test.com' 109 assert profile.contact_email == 'test@contact.com' 110 assert profile.institution == 'test' 111 112 profile = Profile.objects.add_or_update(username, institution='insti') 113 assert profile.nickname == 'nick' 114 assert profile.user == username 115 assert profile.intro == 'intro' 116 assert profile.lang_code == 'en' 117 assert profile.login_id == 'test@test.com' 118 assert profile.contact_email == 'test@contact.com' 119 assert profile.institution == 'insti' 120 121 def test_add_or_update_with_empty(self): 122 username = self.user.username 123 profiles = Profile.objects.filter(user=username) 124 for profile in profiles: 125 profile.delete() 126 127 profile = Profile.objects.add_or_update(username, 'nickname', 128 intro='hello', lang_code='ch', 129 login_id=username, 130 contact_email=username, 131 institution='test') 132 assert profile.nickname == 'nickname' 133 assert profile.user == username 134 assert profile.intro == 'hello' 135 assert profile.lang_code == 'ch' 136 assert profile.login_id == username 137 assert profile.contact_email == username 138 assert profile.institution == 'test' 139 140 profile = Profile.objects.add_or_update(username, '') 141 assert profile.nickname == '' 142 143 profile = Profile.objects.add_or_update(username, intro='') 144 assert profile.intro == '' 145 146 profile = Profile.objects.add_or_update(username, lang_code='') 147 assert profile.lang_code == '' 148 149 profile = Profile.objects.add_or_update(username, login_id='') 150 assert profile.login_id == '' 151 152 profile = Profile.objects.add_or_update(username, contact_email='') 153 assert profile.contact_email == '' 154 155 def test_duplicated_contact_email(self, ): 156 profile = Profile.objects.add_or_update('test@test.com', '', 157 contact_email='a@a.com') 158 159 try: 160 _ = Profile.objects.add_or_update('1@1.com', '', 161 contact_email='a@a.com') 162 except DuplicatedContactEmailError: 163 assert True 164 else: 165 assert False 166 167 def test_updated_contact_email(self, ): 168 _ = Profile.objects.add_or_update('1@1.com', '', 169 contact_email='a@a.com') 170 171 username = self.user.username 172 profile = Profile.objects.add_or_update(username, '', 173 contact_email='b@b.com') 174 175 try: 176 Profile.objects.update_contact_email(username, contact_email='a@a.com') 177 except DuplicatedContactEmailError: 178 assert True 179 else: 180 assert False 181