Просмотр исходного кода

Unify test user credentials across tests

rafalp 6 лет назад
Родитель
Сommit
610edf9775

+ 1 - 1
misago/conftest.py

@@ -30,7 +30,7 @@ def settings():
 
 @pytest.fixture
 def user_password():
-    return "password"
+    return "p4ssw0rd!"
 
 
 @pytest.fixture

+ 4 - 4
misago/core/tests/test_shortcuts.py

@@ -61,10 +61,10 @@ class GetIntOr404Tests(TestCase):
         INVALID_VALUES = [
             None,
             "",
-            "bob",
-            "1bob",
-            "b0b",
-            "bob123",
+            "str",
+            "5tr",
+            "s0tr",
+            "str123",
             "12.321",
             ".4",
             "5.",

+ 2 - 2
misago/threads/tests/test_attachmenttypeadmin_views.py

@@ -203,8 +203,8 @@ class AttachmentTypeAdminViewsTests(AdminTestCase):
         test_type.attachment_set.create(
             secret="loremipsum",
             filetype=test_type,
-            uploader_name="Bob",
-            uploader_slug="bob",
+            uploader_name="User",
+            uploader_slug="user",
             filename="test.zip",
             file="sad76asd678as687sa.zip",
         )

+ 6 - 6
misago/threads/tests/test_clearattachments.py

@@ -39,8 +39,8 @@ class ClearAttachmentsTests(TestCase):
                 filetype=filetype,
                 size=1000,
                 uploaded_on=cutoff,
-                uploader_name="bob",
-                uploader_slug="bob",
+                uploader_name="User",
+                uploader_slug="user",
                 filename="testfile_%s.zip" % (Attachment.objects.count() + 1),
             )
 
@@ -55,8 +55,8 @@ class ClearAttachmentsTests(TestCase):
                 size=1000,
                 uploaded_on=cutoff,
                 post=post,
-                uploader_name="bob",
-                uploader_slug="bob",
+                uploader_name="User",
+                uploader_slug="user",
                 filename="testfile_%s.zip" % (Attachment.objects.count() + 1),
             )
 
@@ -66,8 +66,8 @@ class ClearAttachmentsTests(TestCase):
                 secret=Attachment.generate_new_secret(),
                 filetype=filetype,
                 size=1000,
-                uploader_name="bob",
-                uploader_slug="bob",
+                uploader_name="User",
+                uploader_slug="user",
                 filename="testfile_%s.zip" % (Attachment.objects.count() + 1),
             )
 

+ 12 - 12
misago/threads/tests/test_participants.py

@@ -49,7 +49,7 @@ class ParticipantsTests(TestCase):
         """has_participants returns true if thread has participants"""
         users = [
             create_test_user("User", "user@example.com"),
-            create_test_user("User2", "bob2@example.com"),
+            create_test_user("OtherUser", "otheruser@example.com"),
         ]
 
         self.assertFalse(has_participants(self.thread))
@@ -66,7 +66,7 @@ class ParticipantsTests(TestCase):
         annotations on list of threads
         """
         user = create_test_user("User", "user@example.com")
-        other_user = create_test_user("User2", "bob2@example.com")
+        other_user = create_test_user("OtherUser", "otheruser@example.com")
 
         self.assertFalse(hasattr(self.thread, "participants_list"))
         self.assertFalse(hasattr(self.thread, "participant"))
@@ -91,7 +91,7 @@ class ParticipantsTests(TestCase):
         annotations on thread model
         """
         user = create_test_user("User", "user@example.com")
-        other_user = create_test_user("User2", "bob2@example.com")
+        other_user = create_test_user("OtherUser", "otheruser@example.com")
 
         self.assertFalse(hasattr(self.thread, "participants_list"))
         self.assertFalse(hasattr(self.thread, "participant"))
@@ -131,8 +131,8 @@ class ParticipantsTests(TestCase):
         flag on users provided to true
         """
         users = [
-            create_test_user("User1", "bob1@example.com"),
-            create_test_user("User2", "bob2@example.com"),
+            create_test_user("User", "user@example.com"),
+            create_test_user("OtherUser", "otheruser@example.com"),
         ]
 
         set_users_unread_private_threads_sync(users=users)
@@ -146,8 +146,8 @@ class ParticipantsTests(TestCase):
         flag on participants provided to true
         """
         users = [
-            create_test_user("User1", "bob1@example.com"),
-            create_test_user("User2", "bob2@example.com"),
+            create_test_user("User", "user@example.com"),
+            create_test_user("OtherUser", "otheruser@example.com"),
         ]
 
         participants = [ThreadParticipant(user=u) for u in users]
@@ -162,9 +162,9 @@ class ParticipantsTests(TestCase):
         set_users_unread_private_threads_sync sets sync_unread_private_threads
         flag on users and participants provided to true
         """
-        users = [create_test_user("User1", "bob1@example.com")]
+        users = [create_test_user("User", "user@example.com")]
         participants = [ThreadParticipant(user=u) for u in users]
-        users.append(create_test_user("User2", "bob2@example.com"))
+        users.append(create_test_user("OtherUser", "otheruser@example.com"))
 
         set_users_unread_private_threads_sync(users=users, participants=participants)
         for user in users:
@@ -174,8 +174,8 @@ class ParticipantsTests(TestCase):
     def test_set_users_unread_private_threads_sync_exclude_user(self):
         """exclude_user kwarg works"""
         users = [
-            create_test_user("User1", "bob1@example.com"),
-            create_test_user("User2", "bob2@example.com"),
+            create_test_user("User", "user@example.com"),
+            create_test_user("OtherUser", "otheruser@example.com"),
         ]
 
         set_users_unread_private_threads_sync(users=users, exclude_user=users[0])
@@ -186,7 +186,7 @@ class ParticipantsTests(TestCase):
 
     def test_set_users_unread_private_threads_sync_noop(self):
         """excluding only user is noop"""
-        user = create_test_user("User", "bob1@example.com")
+        user = create_test_user("User", "user@example.com")
 
         with self.assertNumQueries(0):
             set_users_unread_private_threads_sync(users=[user], exclude_user=user)

+ 4 - 5
misago/threads/tests/test_thread_pollvotes_api.py

@@ -10,7 +10,6 @@ from misago.threads.test import patch_category_acl
 
 from .test_thread_poll_api import ThreadPollApiTestCase
 
-
 User = get_user_model()
 
 
@@ -109,10 +108,10 @@ class ThreadGetVotesTests(ThreadPollApiTestCase):
         self.assertEqual([len(c["voters"]) for c in response_json], [1, 0, 2, 1])
 
         self.assertEqual(
-            [[v["username"] for v in c["voters"]] for c in response_json][0][0], "bob"
+            [[v["username"] for v in c["voters"]] for c in response_json][0][0], "User"
         )
 
-        user = User.objects.get(slug="bob")
+        user = User.objects.get(slug="user")
 
         self.assertEqual(
             [[v["url"] for v in c["voters"]] for c in response_json][0][0],
@@ -138,10 +137,10 @@ class ThreadGetVotesTests(ThreadPollApiTestCase):
         self.assertEqual([len(c["voters"]) for c in response_json], [1, 0, 2, 1])
 
         self.assertEqual(
-            [[v["username"] for v in c["voters"]] for c in response_json][0][0], "bob"
+            [[v["username"] for v in c["voters"]] for c in response_json][0][0], "User"
         )
 
-        user = User.objects.get(slug="bob")
+        user = User.objects.get(slug="user")
 
         self.assertEqual(
             [[v["url"] for v in c["voters"]] for c in response_json][0][0],

+ 4 - 4
misago/threads/tests/test_threadview.py

@@ -399,7 +399,7 @@ class ThreadAttachmentsViewTests(ThreadViewTestCase):
             "filetype": "ZIP",
             "is_image": False,
             "uploaded_on": "2016-10-22T21:17:40.408710Z",
-            "uploader_name": "BobBoberson",
+            "uploader_name": "User",
         }
 
         json.update(data)
@@ -415,7 +415,7 @@ class ThreadAttachmentsViewTests(ThreadViewTestCase):
                     "url": {
                         "index": "/attachment/loremipsum-123/",
                         "thumb": None,
-                        "uploader": "/user/bobboberson-123/",
+                        "uploader": "/user/user-123/",
                     },
                     "filename": "Archiwum-1.zip",
                 }
@@ -425,7 +425,7 @@ class ThreadAttachmentsViewTests(ThreadViewTestCase):
                     "url": {
                         "index": "/attachment/loremipsum-223/",
                         "thumb": "/attachment/thumb/loremipsum-223/",
-                        "uploader": "/user/bobboberson-223/",
+                        "uploader": "/user/user-223/",
                     },
                     "is_image": True,
                     "filename": "Archiwum-2.zip",
@@ -436,7 +436,7 @@ class ThreadAttachmentsViewTests(ThreadViewTestCase):
                     "url": {
                         "index": "/attachment/loremipsum-323/",
                         "thumb": None,
-                        "uploader": "/user/bobboberson-323/",
+                        "uploader": "/user/user-323/",
                     },
                     "filename": "Archiwum-3.zip",
                 }

+ 3 - 3
misago/threads/tests/test_utils.py

@@ -233,17 +233,17 @@ class GetThreadIdFromUrlTests(TestCase):
             {
                 # old thread url
                 "request": MockRequest("http", "testforum.com"),
-                "url": "https://testforum.com/thread/bobboberson-123/",
+                "url": "https://testforum.com/thread/test-123/",
             },
             {
                 # dashed thread url
                 "request": MockRequest("http", "testforum.com"),
-                "url": "https://testforum.com/t/bobboberson-123/",
+                "url": "https://testforum.com/t/test-thread-123/",
             },
             {
                 # non-thread url
                 "request": MockRequest("http", "testforum.com"),
-                "url": "https://testforum.com/user/bobboberson-123/",
+                "url": "https://testforum.com/user/user-123/",
             },
             {
                 # rubbish url

+ 3 - 2
misago/threads/testutils.py

@@ -4,6 +4,7 @@ from django.contrib.auth import get_user_model
 from django.utils import timezone
 
 from misago.core.utils import slugify
+from misago.users.testutils import create_test_user
 
 from .checksums import update_post_checksum
 from .models import Poll, Post, Thread
@@ -142,9 +143,9 @@ def post_poll(thread, poster):
 
     # one user voted for Alpha choice
     try:
-        user = User.objects.get(slug="bob")
+        user = User.objects.get(slug="user")
     except User.DoesNotExist:
-        user = User.objects.create_user("bob", "bob@test.com", "Pass.123")
+        user = create_test_user("User", "user@example.com")
 
     poll.pollvote_set.create(
         category=thread.category,

+ 2 - 2
misago/users/models/ban.py

@@ -110,9 +110,9 @@ class Ban(models.Model):
     def check_value(self, value):
         if "*" in self.banned_value:
             regex = re.escape(self.banned_value).replace("\*", "(.*?)")
-            return re.search("^%s$" % regex, value) is not None
+            return re.search("^%s$" % regex, value, re.IGNORECASE) is not None
         else:
-            return self.banned_value == value
+            return self.banned_value.lower() == value.lower()
 
     def lift(self):
         self.expires_on = timezone.now()

+ 26 - 30
misago/users/tests/test_activation_views.py

@@ -18,86 +18,82 @@ class ActivationViewsTests(TestCase):
 
     def test_view_activate_banned(self):
         """activate banned user shows error"""
-        test_user = create_test_user("Bob", "bob@test.com", requires_activation=1)
+        user = create_test_user("User", "user@example.com", requires_activation=1)
+        activation_token = make_activation_token(user)
+
         Ban.objects.create(
-            check_type=Ban.USERNAME, banned_value="bob", user_message="Nope!"
+            check_type=Ban.USERNAME, banned_value="user", user_message="Nope!"
         )
-
-        activation_token = make_activation_token(test_user)
-
+        
         response = self.client.get(
             reverse(
                 "misago:activate-by-token",
-                kwargs={"pk": test_user.pk, "token": activation_token},
+                kwargs={"pk": user.pk, "token": activation_token},
             )
         )
         self.assertContains(response, encode_json_html("<p>Nope!</p>"), status_code=403)
 
-        test_user = User.objects.get(pk=test_user.pk)
-        self.assertEqual(test_user.requires_activation, 1)
+        user = User.objects.get(pk=user.pk)
+        self.assertEqual(user.requires_activation, 1)
 
     def test_view_activate_invalid_token(self):
         """activate with invalid token shows error"""
-        test_user = create_test_user("Bob", "bob@test.com", requires_activation=1)
-
-        activation_token = make_activation_token(test_user)
+        user = create_test_user("User", "user@example.com", requires_activation=1)
+        activation_token = make_activation_token(user)
 
         response = self.client.get(
             reverse(
                 "misago:activate-by-token",
-                kwargs={"pk": test_user.pk, "token": activation_token + "acd"},
+                kwargs={"pk": user.pk, "token": activation_token + "acd"},
             )
         )
         self.assertEqual(response.status_code, 400)
 
-        test_user = User.objects.get(pk=test_user.pk)
-        self.assertEqual(test_user.requires_activation, 1)
+        user = User.objects.get(pk=user.pk)
+        self.assertEqual(user.requires_activation, 1)
 
     def test_view_activate_disabled(self):
         """activate disabled user shows error"""
-        test_user = create_test_user("Bob", "bob@test.com", is_active=False)
-
-        activation_token = make_activation_token(test_user)
+        user = create_test_user("User", "user@example.com", is_active=False)
+        activation_token = make_activation_token(user)
 
         response = self.client.get(
             reverse(
                 "misago:activate-by-token",
-                kwargs={"pk": test_user.pk, "token": activation_token},
+                kwargs={"pk": user.pk, "token": activation_token},
             )
         )
         self.assertEqual(response.status_code, 404)
 
     def test_view_activate_active(self):
         """activate active user shows error"""
-        test_user = create_test_user("Bob", "bob@test.com")
-
-        activation_token = make_activation_token(test_user)
+        user = create_test_user("User", "user@example.com")
+        activation_token = make_activation_token(user)
 
         response = self.client.get(
             reverse(
                 "misago:activate-by-token",
-                kwargs={"pk": test_user.pk, "token": activation_token},
+                kwargs={"pk": user.pk, "token": activation_token},
             )
         )
         self.assertEqual(response.status_code, 200)
 
-        test_user = User.objects.get(pk=test_user.pk)
-        self.assertEqual(test_user.requires_activation, 0)
+        user = User.objects.get(pk=user.pk)
+        self.assertEqual(user.requires_activation, 0)
 
     def test_view_activate_inactive(self):
         """activate inactive user passess"""
-        test_user = create_test_user("Bob", "bob@test.com", requires_activation=1)
-
-        activation_token = make_activation_token(test_user)
+        user = create_test_user("User", "user@example.com", requires_activation=1)
+        activation_token = make_activation_token(user)
 
         response = self.client.get(
             reverse(
                 "misago:activate-by-token",
-                kwargs={"pk": test_user.pk, "token": activation_token},
+                kwargs={"pk": user.pk, "token": activation_token},
             )
         )
         self.assertEqual(response.status_code, 200)
         self.assertContains(response, "your account has been activated!")
 
-        test_user = User.objects.get(pk=test_user.pk)
-        self.assertEqual(test_user.requires_activation, 0)
+        user = User.objects.get(pk=user.pk)
+        self.assertEqual(user.requires_activation, 0)

+ 1 - 1
misago/users/tests/test_auth_views.py

@@ -63,7 +63,7 @@ class AuthViewsTests(TestCase):
     def test_logout_view(self):
         """logout view logs user out on post"""
         response = self.client.post(
-            "/api/auth/", data={"username": "nope", "password": "nope"}
+            "/api/auth/", data={"username": "nope", "password": "not-checked"}
         )
 
         self.assertContains(

+ 26 - 21
misago/users/tests/test_ban_model.py

@@ -7,23 +7,23 @@ class BansManagerTests(TestCase):
     def setUp(self):
         Ban.objects.bulk_create(
             [
-                Ban(check_type=Ban.USERNAME, banned_value="bob"),
-                Ban(check_type=Ban.EMAIL, banned_value="bob@test.com"),
+                Ban(check_type=Ban.USERNAME, banned_value="user"),
+                Ban(check_type=Ban.EMAIL, banned_value="user@example.com"),
                 Ban(check_type=Ban.IP, banned_value="127.0.0.1"),
             ]
         )
 
     def test_get_ban_for_banned_name(self):
         """get_ban finds ban for given username"""
-        self.assertIsNotNone(Ban.objects.get_ban(username="Bob"))
+        self.assertIsNotNone(Ban.objects.get_ban(username="User"))
         with self.assertRaises(Ban.DoesNotExist):
-            Ban.objects.get_ban(username="Jeb")
+            Ban.objects.get_ban(username="OtherUser")
 
     def test_get_ban_for_banned_email(self):
         """get_ban finds ban for given email"""
-        self.assertIsNotNone(Ban.objects.get_ban(email="bob@test.com"))
+        self.assertIsNotNone(Ban.objects.get_ban(email="user@example.com"))
         with self.assertRaises(Ban.DoesNotExist):
-            Ban.objects.get_ban(email="jeb@test.com")
+            Ban.objects.get_ban(email="otheruser@example.com")
 
     def test_get_ban_for_banned_ip(self):
         """get_ban finds ban for given ip"""
@@ -31,12 +31,12 @@ class BansManagerTests(TestCase):
         with self.assertRaises(Ban.DoesNotExist):
             Ban.objects.get_ban(ip="42.0.0.1")
 
-    def test_get_ban_for_all_bans(self):
+    def test_get_ban_for_all_values(self):
         """get_ban finds ban for given values"""
-        valid_kwargs = {"username": "bob", "ip": "42.51.52.51"}
+        valid_kwargs = {"username": "User", "ip": "42.51.52.51"}
         self.assertIsNotNone(Ban.objects.get_ban(**valid_kwargs))
 
-        invalid_kwargs = {"username": "bsob", "ip": "42.51.52.51"}
+        invalid_kwargs = {"username": "OtherUser", "ip": "42.51.52.51"}
         with self.assertRaises(Ban.DoesNotExist):
             Ban.objects.get_ban(**invalid_kwargs)
 
@@ -44,28 +44,33 @@ class BansManagerTests(TestCase):
 class BanTests(TestCase):
     def test_check_value_literal(self):
         """ban correctly tests given values"""
-        test_ban = Ban(banned_value="bob")
+        test_ban = Ban(banned_value="user")
 
-        self.assertTrue(test_ban.check_value("bob"))
-        self.assertFalse(test_ban.check_value("bobby"))
+        self.assertTrue(test_ban.check_value("User"))
+        self.assertFalse(test_ban.check_value("OtherUser"))
+        self.assertFalse(test_ban.check_value("UserOther"))
 
     def test_check_value_starts_with(self):
         """ban correctly tests given values"""
-        test_ban = Ban(banned_value="bob*")
+        test_ban = Ban(banned_value="user*")
 
-        self.assertTrue(test_ban.check_value("bob"))
-        self.assertTrue(test_ban.check_value("bobby"))
+        self.assertTrue(test_ban.check_value("User"))
+        self.assertTrue(test_ban.check_value("UserOther"))
+        self.assertFalse(test_ban.check_value("NewUser"))
 
     def test_check_value_middle_match(self):
         """ban correctly tests given values"""
-        test_ban = Ban(banned_value="b*b")
+        test_ban = Ban(banned_value="u*r")
 
-        self.assertTrue(test_ban.check_value("bob"))
-        self.assertFalse(test_ban.check_value("bobby"))
+        self.assertTrue(test_ban.check_value("User"))
+        self.assertTrue(test_ban.check_value("UserOther"))
+        self.assertFalse(test_ban.check_value("NewUser"))
+        self.assertFalse(test_ban.check_value("UserNew"))
 
     def test_check_value_ends_witch(self):
         """ban correctly tests given values"""
-        test_ban = Ban(banned_value="*bob")
+        test_ban = Ban(banned_value="*user")
 
-        self.assertTrue(test_ban.check_value("lebob"))
-        self.assertFalse(test_ban.check_value("bobby"))
+        self.assertTrue(test_ban.check_value("User"))
+        self.assertTrue(test_ban.check_value("OtherUser"))
+        self.assertFalse(test_ban.check_value("UserOther"))

+ 3 - 3
misago/users/tests/test_bans.py

@@ -44,12 +44,12 @@ class GetBanTests(TestCase):
         self.assertEqual(get_username_ban("admiral").pk, valid_ban.pk)
 
         registration_ban = Ban.objects.create(
-            banned_value="bob*",
+            banned_value="mod*",
             expires_on=timezone.now() + timedelta(days=7),
             registration_only=True,
         )
-        self.assertIsNone(get_username_ban("boberson"))
-        self.assertEqual(get_username_ban("boberson", True).pk, registration_ban.pk)
+        self.assertIsNone(get_username_ban("moderator"))
+        self.assertEqual(get_username_ban("moderator", True).pk, registration_ban.pk)
 
     def test_get_email_ban(self):
         """get_email_ban returns valid ban"""

+ 9 - 9
misago/users/tests/test_mention_api.py

@@ -25,33 +25,33 @@ class AuthenticateApiTests(TestCase):
 
     def test_user_search(self):
         """api searches uses"""
-        create_test_user("BobBoberson", "bob@test.com")
+        create_test_user("User", "user@example.com")
 
         # exact case sensitive match
-        response = self.client.get(self.api_link + "?q=BobBoberson")
+        response = self.client.get(self.api_link + "?q=User")
         self.assertEqual(response.status_code, 200)
         self.assertEqual(
             response.json(),
-            [{"avatar": "http://placekitten.com/100/100", "username": "BobBoberson"}],
+            [{"avatar": "http://placekitten.com/100/100", "username": "User"}],
         )
 
-        # rought case insensitive match
-        response = self.client.get(self.api_link + "?q=bob")
+        # case insensitive match
+        response = self.client.get(self.api_link + "?q=user")
         self.assertEqual(response.status_code, 200)
         self.assertEqual(
             response.json(),
-            [{"avatar": "http://placekitten.com/100/100", "username": "BobBoberson"}],
+            [{"avatar": "http://placekitten.com/100/100", "username": "User"}],
         )
 
         # eager case insensitive match
-        response = self.client.get(self.api_link + "?q=b")
+        response = self.client.get(self.api_link + "?q=u")
         self.assertEqual(response.status_code, 200)
         self.assertEqual(
             response.json(),
-            [{"avatar": "http://placekitten.com/100/100", "username": "BobBoberson"}],
+            [{"avatar": "http://placekitten.com/100/100", "username": "User"}],
         )
 
         # invalid match
-        response = self.client.get(self.api_link + "?q=bu")
+        response = self.client.get(self.api_link + "?q=other")
         self.assertEqual(response.status_code, 200)
         self.assertEqual(response.json(), [])

+ 1 - 1
misago/users/tests/test_profile_views.py

@@ -164,7 +164,7 @@ class UserProfileViewsTests(AuthenticatedUserTestCase):
 
     def test_user_ban_details(self):
         """user ban details page has no showstoppers"""
-        test_user = create_test_user("Bob", "bob@bob.com", "pass.123")
+        test_user = create_test_user("User", "user@example.com")
         link_kwargs = {"slug": test_user.slug, "pk": test_user.pk}
 
         with patch_user_acl({"can_see_ban_details": 0}):

+ 19 - 19
misago/users/tests/test_user_create_api.py

@@ -240,7 +240,7 @@ class UserCreateTests(UserTestCase):
         """api uses django's validate_password to validate registrations"""
         response = self.client.post(
             self.api_link,
-            data={"username": "Bob", "email": "loremipsum@dolor.met", "password": ""},
+            data={"username": "User", "email": "loremipsum@dolor.met", "password": ""},
         )
         self.assertEqual(response.status_code, 400)
         self.assertEqual(response.json(), {"password": ["This field is required."]})
@@ -250,7 +250,7 @@ class UserCreateTests(UserTestCase):
         response = self.client.post(
             self.api_link,
             data={
-                "username": "Bob",
+                "username": "User",
                 "email": "l.o.r.e.m.i.p.s.u.m@gmail.com",
                 "password": "123",
             },
@@ -415,7 +415,7 @@ class UserCreateTests(UserTestCase):
         response = self.client.post(
             self.api_link,
             data={
-                "username": "Bob",
+                "username": "User",
                 "email": "l.o.r.e.m.i.p.s.u.m@gmail.com",
                 "password": "pas123",
             },
@@ -437,27 +437,27 @@ class UserCreateTests(UserTestCase):
         response = self.client.post(
             self.api_link,
             data={
-                "username": "Bob",
-                "email": "bob@bob.com",
+                "username": "User",
+                "email": "user@example.com",
                 "password": self.USER_PASSWORD,
             },
         )
         self.assertEqual(response.status_code, 200)
         self.assertEqual(
             response.json(),
-            {"activation": "active", "username": "Bob", "email": "bob@bob.com"},
+            {"activation": "active", "username": "User", "email": "user@example.com"},
         )
 
-        User.objects.get_by_username("Bob")
+        User.objects.get_by_username("User")
 
-        test_user = User.objects.get_by_email("bob@bob.com")
+        test_user = User.objects.get_by_email("user@example.com")
         self.assertEqual(Online.objects.filter(user=test_user).count(), 1)
 
         self.assertTrue(test_user.check_password(self.USER_PASSWORD))
 
         auth_json = self.client.get(reverse("misago:api:auth")).json()
         self.assertTrue(auth_json["is_authenticated"])
-        self.assertEqual(auth_json["username"], "Bob")
+        self.assertEqual(auth_json["username"], "User")
 
         self.assertIn("Welcome", mail.outbox[0].subject)
 
@@ -469,22 +469,22 @@ class UserCreateTests(UserTestCase):
         response = self.client.post(
             self.api_link,
             data={
-                "username": "Bob",
-                "email": "bob@bob.com",
+                "username": "User",
+                "email": "user@example.com",
                 "password": self.USER_PASSWORD,
             },
         )
         self.assertEqual(response.status_code, 200)
         self.assertEqual(
             response.json(),
-            {"activation": "user", "username": "Bob", "email": "bob@bob.com"},
+            {"activation": "user", "username": "User", "email": "user@example.com"},
         )
 
         auth_json = self.client.get(reverse("misago:api:auth")).json()
         self.assertFalse(auth_json["is_authenticated"])
 
-        User.objects.get_by_username("Bob")
-        User.objects.get_by_email("bob@bob.com")
+        User.objects.get_by_username("User")
+        User.objects.get_by_email("user@example.com")
 
         self.assertIn("Welcome", mail.outbox[0].subject)
 
@@ -494,22 +494,22 @@ class UserCreateTests(UserTestCase):
         response = self.client.post(
             self.api_link,
             data={
-                "username": "Bob",
-                "email": "bob@bob.com",
+                "username": "User",
+                "email": "user@example.com",
                 "password": self.USER_PASSWORD,
             },
         )
         self.assertEqual(response.status_code, 200)
         self.assertEqual(
             response.json(),
-            {"activation": "admin", "username": "Bob", "email": "bob@bob.com"},
+            {"activation": "admin", "username": "User", "email": "user@example.com"},
         )
 
         auth_json = self.client.get(reverse("misago:api:auth")).json()
         self.assertFalse(auth_json["is_authenticated"])
 
-        User.objects.get_by_username("Bob")
-        User.objects.get_by_email("bob@bob.com")
+        User.objects.get_by_username("User")
+        User.objects.get_by_email("user@example.com")
 
         self.assertIn("Welcome", mail.outbox[0].subject)
 

+ 79 - 79
misago/users/tests/test_useradmin_views.py

@@ -96,7 +96,7 @@ class UserAdminViewsTests(AdminTestCase):
         user_pks = []
         for i in range(10):
             test_user = create_test_user(
-                "Bob%s" % i, "bob%s@test.com" % i, requires_activation=1
+                "User%s" % i, "user%s@example.com" % i, requires_activation=1
             )
             user_pks.append(test_user.pk)
 
@@ -115,7 +115,7 @@ class UserAdminViewsTests(AdminTestCase):
         user_pks = []
         for i in range(10):
             test_user = create_test_user(
-                "Bob%s" % i, "bob%s@test.com" % i, requires_activation=1
+                "User%s" % i, "user%s@example.com" % i, requires_activation=1
             )
             user_pks.append(test_user.pk)
 
@@ -144,8 +144,8 @@ class UserAdminViewsTests(AdminTestCase):
         user_pks = []
         for i in range(10):
             test_user = create_test_user(
-                "Bob%s" % i,
-                "bob%s@test.com" % i,
+                "User%s" % i,
+                "user%s@example.com" % i,
                 joined_from_ip="73.95.67.27",
                 requires_activation=1,
             )
@@ -183,7 +183,7 @@ class UserAdminViewsTests(AdminTestCase):
         user_pks = []
         for i in range(10):
             test_user = create_test_user(
-                "Bob%s" % i, "bob%s@test.com" % i, requires_activation=1
+                "User%s" % i, "user%s@example.com" % i, requires_activation=1
             )
             user_pks.append(test_user.pk)
 
@@ -202,7 +202,7 @@ class UserAdminViewsTests(AdminTestCase):
         user_pks = []
         for i in range(10):
             test_user = create_test_user(
-                "Bob%s" % i, "bob%s@test.com" % i, requires_activation=1
+                "User%s" % i, "user%s@example.com" % i, requires_activation=1
             )
             request_user_data_download(test_user)
             user_pks.append(test_user.pk)
@@ -234,7 +234,7 @@ class UserAdminViewsTests(AdminTestCase):
         """its impossible to delete admin account"""
         user_pks = []
         for i in range(10):
-            test_user = create_test_user("Bob%s" % i, "bob%s@test.com" % i)
+            test_user = create_test_user("User%s" % i, "user%s@example.com" % i)
             user_pks.append(test_user.pk)
 
             test_user.is_staff = True
@@ -256,7 +256,7 @@ class UserAdminViewsTests(AdminTestCase):
         """its impossible to delete superadmin account"""
         user_pks = []
         for i in range(10):
-            test_user = create_test_user("Bob%s" % i, "bob%s@test.com" % i)
+            test_user = create_test_user("User%s" % i, "user%s@example.com" % i)
             user_pks.append(test_user.pk)
 
             test_user.is_superuser = True
@@ -280,7 +280,7 @@ class UserAdminViewsTests(AdminTestCase):
         user_pks = []
         for i in range(10):
             test_user = create_test_user(
-                "Bob%s" % i, "bob%s@test.com" % i, requires_activation=0
+                "User%s" % i, "user%s@example.com" % i, requires_activation=0
             )
             user_pks.append(test_user.pk)
 
@@ -314,7 +314,7 @@ class UserAdminViewsTests(AdminTestCase):
         """its impossible to delete admin account and content"""
         user_pks = []
         for i in range(10):
-            test_user = create_test_user("Bob%s" % i, "bob%s@test.com" % i)
+            test_user = create_test_user("User%s" % i, "user%s@example.com" % i)
             user_pks.append(test_user.pk)
 
             test_user.is_staff = True
@@ -336,7 +336,7 @@ class UserAdminViewsTests(AdminTestCase):
         """its impossible to delete superadmin account and content"""
         user_pks = []
         for i in range(10):
-            test_user = create_test_user("Bob%s" % i, "bob%s@test.com" % i)
+            test_user = create_test_user("User%s" % i, "user%s@example.com" % i)
             user_pks.append(test_user.pk)
 
             test_user.is_superuser = True
@@ -359,7 +359,7 @@ class UserAdminViewsTests(AdminTestCase):
         user_pks = []
         for i in range(10):
             test_user = create_test_user(
-                "Bob%s" % i, "bob%s@test.com" % i, requires_activation=1
+                "User%s" % i, "user%s@example.com" % i, requires_activation=1
             )
             user_pks.append(test_user.pk)
 
@@ -383,18 +383,18 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             reverse("misago:admin:users:accounts:new"),
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(default_rank.pk),
                 "roles": str(authenticated_role.pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "new_password": "pass123",
                 "staff_level": "0",
             },
         )
         self.assertEqual(response.status_code, 302)
 
-        User.objects.get_by_username("Bawww")
-        test_user = User.objects.get_by_email("reg@stered.com")
+        User.objects.get_by_username("NewUsername")
+        test_user = User.objects.get_by_email("edited@example.com")
 
         self.assertTrue(test_user.check_password("pass123"))
 
@@ -409,24 +409,24 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             reverse("misago:admin:users:accounts:new"),
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(default_rank.pk),
                 "roles": str(authenticated_role.pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "new_password": " pass123 ",
                 "staff_level": "0",
             },
         )
         self.assertEqual(response.status_code, 302)
 
-        User.objects.get_by_username("Bawww")
-        test_user = User.objects.get_by_email("reg@stered.com")
+        User.objects.get_by_username("NewUsername")
+        test_user = User.objects.get_by_email("edited@example.com")
 
         self.assertTrue(test_user.check_password(" pass123 "))
 
     def test_edit_view(self):
         """edit user view changes account"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
         )
@@ -437,10 +437,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "new_password": "newpass123",
                 "staff_level": "0",
                 "signature": "Hello world!",
@@ -457,11 +457,11 @@ class UserAdminViewsTests(AdminTestCase):
 
         updated_user = User.objects.get(pk=test_user.pk)
         self.assertTrue(updated_user.check_password("newpass123"))
-        self.assertEqual(updated_user.username, "Bawww")
-        self.assertEqual(updated_user.slug, "bawww")
+        self.assertEqual(updated_user.username, "NewUsername")
+        self.assertEqual(updated_user.slug, "newusername")
 
-        User.objects.get_by_username("Bawww")
-        User.objects.get_by_email("reg@stered.com")
+        User.objects.get_by_username("NewUsername")
+        User.objects.get_by_email("edited@example.com")
 
     def test_edit_dont_change_username(self):
         """
@@ -469,7 +469,7 @@ class UserAdminViewsTests(AdminTestCase):
 
         This is regression test for issue #640
         """
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
         )
@@ -480,10 +480,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bob",
+                "username": "User",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "signature": "Hello world!",
                 "is_signature_locked": "1",
                 "is_hiding_presence": "0",
@@ -497,13 +497,13 @@ class UserAdminViewsTests(AdminTestCase):
         self.assertEqual(response.status_code, 302)
 
         updated_user = User.objects.get(pk=test_user.pk)
-        self.assertEqual(updated_user.username, "Bob")
-        self.assertEqual(updated_user.slug, "bob")
+        self.assertEqual(updated_user.username, "User")
+        self.assertEqual(updated_user.slug, "user")
         self.assertEqual(updated_user.namechanges.count(), 0)
 
     def test_edit_change_password_whitespaces(self):
         """edit user view changes account password to include whitespaces"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
         )
@@ -514,10 +514,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "new_password": " newpass123 ",
                 "staff_level": "0",
                 "signature": "Hello world!",
@@ -534,15 +534,15 @@ class UserAdminViewsTests(AdminTestCase):
 
         updated_user = User.objects.get(pk=test_user.pk)
         self.assertTrue(updated_user.check_password(" newpass123 "))
-        self.assertEqual(updated_user.username, "Bawww")
-        self.assertEqual(updated_user.slug, "bawww")
+        self.assertEqual(updated_user.username, "NewUsername")
+        self.assertEqual(updated_user.slug, "newusername")
 
-        User.objects.get_by_username("Bawww")
-        User.objects.get_by_email("reg@stered.com")
+        User.objects.get_by_username("NewUsername")
+        User.objects.get_by_email("edited@example.com")
 
     def test_edit_make_admin(self):
         """edit user view allows super admin to make other user admin"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
         )
@@ -554,10 +554,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "is_staff": "1",
                 "is_superuser": "0",
                 "signature": "Hello world!",
@@ -578,7 +578,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_edit_make_superadmin_admin(self):
         """edit user view allows super admin to make other user super admin"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
         )
@@ -590,10 +590,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "is_staff": "0",
                 "is_superuser": "1",
                 "signature": "Hello world!",
@@ -615,7 +615,7 @@ class UserAdminViewsTests(AdminTestCase):
     def test_edit_denote_superadmin(self):
         """edit user view allows super admin to denote other super admin"""
         test_user = create_test_user(
-            "Bob", "bob@test.com", is_staff=True, is_superuser=True
+            "User", "user@example.com", is_staff=True, is_superuser=True
         )
 
         test_link = reverse(
@@ -629,10 +629,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "is_staff": "0",
                 "is_superuser": "0",
                 "signature": "Hello world!",
@@ -656,7 +656,7 @@ class UserAdminViewsTests(AdminTestCase):
         self.user.is_superuser = False
         self.user.save()
 
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
         )
@@ -668,10 +668,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "is_staff": "1",
                 "is_superuser": "1",
                 "signature": "Hello world!",
@@ -695,7 +695,7 @@ class UserAdminViewsTests(AdminTestCase):
         self.user.is_superuser = False
         self.user.save()
 
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
         )
@@ -707,10 +707,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "is_staff": "0",
                 "is_superuser": "0",
                 "signature": "Hello world!",
@@ -736,7 +736,7 @@ class UserAdminViewsTests(AdminTestCase):
         self.user.is_superuser = True
         self.user.save()
 
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
 
         test_user.is_staff = True
         test_user.save()
@@ -752,10 +752,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "is_staff": "1",
                 "is_superuser": "0",
                 "signature": "Hello world!",
@@ -781,7 +781,7 @@ class UserAdminViewsTests(AdminTestCase):
         self.user.is_superuser = False
         self.user.save()
 
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
 
         test_user.is_staff = True
         test_user.save()
@@ -797,10 +797,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "is_staff": "1",
                 "is_superuser": "0",
                 "signature": "Hello world!",
@@ -823,7 +823,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_edit_is_deleting_account_cant_reactivate(self):
         """users deleting own accounts can't be reactivated"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_user.mark_for_delete()
 
         test_link = reverse(
@@ -837,10 +837,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "is_staff": "1",
                 "is_superuser": "0",
                 "signature": "Hello world!",
@@ -862,7 +862,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_edit_unusable_password(self):
         """admin edit form handles unusable passwords and lets setting new password"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         self.assertFalse(test_user.has_usable_password())
 
         test_link = reverse(
@@ -875,10 +875,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "new_password": "pass123",
                 "is_staff": "1",
                 "is_superuser": "0",
@@ -900,7 +900,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_edit_keep_unusable_password(self):
         """admin edit form handles unusable passwords and lets admin leave them unchanged"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         self.assertFalse(test_user.has_usable_password())
 
         test_link = reverse(
@@ -913,10 +913,10 @@ class UserAdminViewsTests(AdminTestCase):
         response = self.client.post(
             test_link,
             data={
-                "username": "Bawww",
+                "username": "NewUsername",
                 "rank": str(test_user.rank_id),
                 "roles": str(test_user.roles.all()[0].pk),
-                "email": "reg@stered.com",
+                "email": "edited@example.com",
                 "is_staff": "1",
                 "is_superuser": "0",
                 "signature": "Hello world!",
@@ -937,7 +937,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_edit_agreements_list(self):
         """edit view displays list of user's agreements"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:edit", kwargs={"pk": test_user.pk}
         )
@@ -973,7 +973,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_delete_threads_view_staff(self):
         """delete user threads view validates if user deletes staff"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_user.is_staff = True
         test_user.save()
 
@@ -989,7 +989,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_delete_threads_view_superuser(self):
         """delete user threads view validates if user deletes superuser"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_user.is_superuser = True
         test_user.save()
 
@@ -1005,7 +1005,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_delete_threads_view(self):
         """delete user threads view deletes threads"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:delete-threads", kwargs={"pk": test_user.pk}
         )
@@ -1041,7 +1041,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_delete_posts_view_staff(self):
         """delete user posts view validates if user deletes staff"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_user.is_staff = True
         test_user.save()
 
@@ -1057,7 +1057,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_delete_posts_view_superuser(self):
         """delete user posts view validates if user deletes superuser"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_user.is_superuser = True
         test_user.save()
 
@@ -1073,7 +1073,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_delete_posts_view(self):
         """delete user posts view deletes posts"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:delete-posts", kwargs={"pk": test_user.pk}
         )
@@ -1110,7 +1110,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_delete_account_view_staff(self):
         """delete user account view validates if user deletes staff"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_user.is_staff = True
         test_user.save()
 
@@ -1126,7 +1126,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_delete_account_view_superuser(self):
         """delete user account view validates if user deletes superuser"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_user.is_superuser = True
         test_user.save()
 
@@ -1142,7 +1142,7 @@ class UserAdminViewsTests(AdminTestCase):
 
     def test_delete_account_view(self):
         """delete user account view deletes user account"""
-        test_user = create_test_user("Bob", "bob@test.com")
+        test_user = create_test_user("User", "user@example.com")
         test_link = reverse(
             "misago:admin:users:accounts:delete-account", kwargs={"pk": test_user.pk}
         )