4020d896086c01d374f5891d00d26e7db527dba9
[laas.git] / src / account / tests / test_general.py
1 ##############################################################################
2 # Copyright (c) 2016 Max Breitenfeldt and others.
3 #
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
9
10
11 from django.contrib.auth.models import User
12 from django.test import Client
13 from django.test import TestCase
14 from django.urls import reverse
15 from django.utils import timezone
16
17 from account.models import UserProfile
18
19
20 class AccountMiddlewareTestCase(TestCase):
21     def setUp(self):
22         self.client = Client()
23         self.user1 = User.objects.create(username='user1')
24         self.user1.set_password('user1')
25         self.user1profile = UserProfile.objects.create(user=self.user1)
26         self.user1.save()
27
28     def test_timezone_middleware(self):
29         """
30         Verify timezone is being set by Middleware.
31
32         The timezone should be UTC for anonymous users,
33         for authenticated users it should be set to user.userprofile.timezone
34         """
35         # default
36         self.assertEqual(timezone.get_current_timezone_name(), 'UTC')
37
38         url = reverse('account:settings')
39         # anonymous request
40         self.client.get(url)
41         self.assertEqual(timezone.get_current_timezone_name(), 'UTC')
42
43         # authenticated user with UTC timezone (userprofile default)
44         self.client.login(username='user1', password='user1')
45         self.client.get(url)
46         self.assertEqual(timezone.get_current_timezone_name(), 'UTC')
47
48         # authenticated user with custom timezone (userprofile default)
49         self.user1profile.timezone = 'Etc/Greenwich'
50         self.user1profile.save()
51         self.client.get(url)
52         self.assertEqual(timezone.get_current_timezone_name(), 'GMT')
53
54         # if there is no profile for a user, it should be created
55         user2 = User.objects.create(username='user2')
56         user2.set_password('user2')
57         user2.save()
58         self.client.login(username='user2', password='user2')
59         self.client.get(url)
60         self.assertTrue(user2.userprofile)