Coverage for website/management/commands/create_test_user.py: 0%
23 statements
« prev ^ index » next coverage.py v7.5.0, created at 2025-09-13 15:29 -0300
« prev ^ index » next coverage.py v7.5.0, created at 2025-09-13 15:29 -0300
1from django.contrib.auth.hashers import make_password
2from django.core.management.base import BaseCommand
4from website.models.UserModel import User
7class Command(BaseCommand):
8 help = "Create a test user for testing purposes"
10 def add_arguments(self, parser):
11 parser.add_argument(
12 "--username", type=str, default="test", help="Username for the test user"
13 )
14 parser.add_argument(
15 "--password", type=str, default="test", help="Password for the test user"
16 )
17 parser.add_argument(
18 "--email",
19 type=str,
20 default="test@example.com",
21 help="Email for the test user",
22 )
24 def handle(self, *args, **options):
25 username = options["username"]
26 password = options["password"]
27 email = options["email"]
29 # Check if user already exists
30 if User.objects.filter(username=username).exists():
31 self.stdout.write(self.style.WARNING(f'User "{username}" already exists!'))
32 return
34 if User.objects.filter(email=email).exists():
35 self.stdout.write(
36 self.style.WARNING(f'User with email "{email}" already exists!')
37 )
38 return
40 # Create the test user
41 user = User.objects.create(
42 username=username,
43 email=email,
44 password=make_password(password),
45 is_active=True,
46 is_staff=False,
47 is_superuser=False,
48 )
50 self.stdout.write(
51 self.style.SUCCESS(
52 f'Successfully created test user "{username}" with password "{password}"'
53 )
54 )
55 self.stdout.write(self.style.SUCCESS(f"Email: {email}"))
56 self.stdout.write(
57 self.style.SUCCESS(
58 "This user has no Author or Reader profile, perfect for testing the mobile menu!"
59 )
60 )