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

1from django.contrib.auth.hashers import make_password 

2from django.core.management.base import BaseCommand 

3 

4from website.models.UserModel import User 

5 

6 

7class Command(BaseCommand): 

8 help = "Create a test user for testing purposes" 

9 

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 ) 

23 

24 def handle(self, *args, **options): 

25 username = options["username"] 

26 password = options["password"] 

27 email = options["email"] 

28 

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 

33 

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 

39 

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 ) 

49 

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 )