From 7d8bee7461e5f78e9e54e9e58fd20ca9bec62bd8 Mon Sep 17 00:00:00 2001
From: Kipchirchir Sigei <arapgodsmack@gmail.com>
Date: Fri, 8 Mar 2024 10:43:20 +0300
Subject: [PATCH] Add tests

Signed-off-by: Kipchirchir Sigei <arapgodsmack@gmail.com>
---
 .../apps/main/tests/test_user_validation.py   | 27 +++++++++++++++++++
 1 file changed, 27 insertions(+)
 create mode 100644 onadata/apps/main/tests/test_user_validation.py

diff --git a/onadata/apps/main/tests/test_user_validation.py b/onadata/apps/main/tests/test_user_validation.py
new file mode 100644
index 0000000000..7b2066974e
--- /dev/null
+++ b/onadata/apps/main/tests/test_user_validation.py
@@ -0,0 +1,27 @@
+from onadata.apps.main.admin import CustomUserChangeForm, CustomUserCreationForm
+from onadata.apps.main.tests.test_base import TestBase
+
+
+class TestUserValidation(TestBase):
+    def test_custom_user_creation_form_invalid_username(self):
+        # Try to create a user with a hyphenated username
+        form_data = {
+            "username": "john-doe",
+            "password1": "testpassword",
+            "password2": "testpassword",
+        }
+        form = CustomUserCreationForm(data=form_data)
+        self.assertFalse(form.is_valid())
+        self.assertIn("username", form.errors)
+        errors = form.errors.get("username")[0]
+        self.assertEqual(str(errors), "Usernames cannot contain hyphens.")
+
+    def test_custom_user_change_form_invalid_username(self):
+        # Try to change a user's username to one with a hyphen
+        user = self._create_user("bob-user", "bob")
+        form_data = {"username": "bob-user-1"}
+        form = CustomUserChangeForm(data=form_data, instance=user)
+        self.assertFalse(form.is_valid())
+        self.assertIn("username", form.errors)
+        errors = form.errors.get("username")[0]
+        self.assertEqual(str(errors), "Usernames cannot contain hyphens.")