summaryrefslogtreecommitdiffstats
path: root/devel/tests.py
blob: 01eed0fcd45551c6d75947dbd96925704d0ea9d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
from django.test import TestCase

from django.contrib.auth.models import User
from devel.utils import UserFinder
from main.models import UserProfile

class DevelTest(TestCase):
    def test_index(self):
        response = self.client.get('/devel/')
        self.assertEqual(response.status_code, 302)
        self.assertEqual(response.has_header('Location'), True)
        self.assertEqual(response['location'],
                         'http://testserver/login/?next=/devel/')

    def test_profile(self):
        response = self.client.get('/devel/profile/')
        self.assertEqual(response.status_code, 302)
        self.assertEqual(response.has_header('Location'), True)
        self.assertEqual(response['location'],
                         'http://testserver/login/?next=/devel/profile/')

    def test_newuser(self):
        response = self.client.get('/devel/newuser/')
        self.assertEqual(response.status_code, 302)
        self.assertEqual(response.has_header('Location'), True)
        self.assertEqual(response['location'],
                         'http://testserver/login/?next=/devel/newuser/')

    def test_mirrors(self):
        response = self.client.get('/mirrors/')
        self.assertEqual(response.status_code, 200)

class FindUserTest(TestCase):

    def setUp(self):
        self.finder = UserFinder()

        self.user1 = User.objects.create(username="joeuser", first_name="Joe",
                last_name="User", email="user1@example.com")
        self.user2 = User.objects.create(username="john", first_name="John",
                last_name="", email="user2@example.com")
        self.user3 = User.objects.create(username="bjones", first_name="Bob",
                last_name="Jones", email="user3@example.com")

        for user in (self.user1, self.user2, self.user3):
            email_addr = "%s@awesome.com" % user.username
            UserProfile.objects.create(user=user, public_email=email_addr)

        self.user4 = User.objects.create(username="tim1", first_name="Tim",
                last_name="One", email="tim@example.com")
        self.user5 = User.objects.create(username="tim2", first_name="Tim",
                last_name="Two", email="timtwo@example.com")

    def test_not_matching(self):
        self.assertIsNone(self.finder.find(None))
        self.assertIsNone(self.finder.find(""))
        self.assertIsNone(self.finder.find("Bogus"))
        self.assertIsNone(self.finder.find("Bogus <invalid"))
        self.assertIsNone(self.finder.find("Bogus User <bogus@example.com>"))
        self.assertIsNone(self.finder.find("<bogus@example.com>"))
        self.assertIsNone(self.finder.find("bogus@example.com"))
        self.assertIsNone(self.finder.find("Unknown Packager"))

    def test_by_email(self):
        self.assertEqual(self.user1,
                self.finder.find("XXX YYY <user1@example.com>"))
        self.assertEqual(self.user2,
                self.finder.find("YYY ZZZ <user2@example.com>"))

    def test_by_profile_email(self):
        self.assertEqual(self.user1,
                self.finder.find("XXX <joeuser@awesome.com>"))
        self.assertEqual(self.user2,
                self.finder.find("YYY <john@awesome.com>"))
        self.assertEqual(self.user3,
                self.finder.find("ZZZ <bjones@awesome.com>"))

    def test_by_name(self):
        self.assertEqual(self.user1,
                self.finder.find("Joe User <joe@differentdomain.com>"))
        self.assertEqual(self.user1,
                self.finder.find("Joe User"))
        self.assertEqual(self.user2,
                self.finder.find("John <john@differentdomain.com>"))
        self.assertEqual(self.user2,
                self.finder.find("John"))
        self.assertEqual(self.user3,
                self.finder.find("Bob Jones <bjones AT Arch Linux DOT org>"))

    def test_by_invalid(self):
        self.assertEqual(self.user1,
                self.finder.find("Joe User <user1@example.com"))
        self.assertEqual(self.user1,
                self.finder.find("Joe 'nickname' User <user1@example.com"))
        self.assertEqual(self.user1,
                self.finder.find("Joe \"nickname\" User <user1@example.com"))
        self.assertEqual(self.user1,
                self.finder.find("Joe User <joe@differentdomain.com"))

    def test_cache(self):
        # simply look two of them up, but then do it repeatedly
        for _ in range(5):
            self.assertEqual(self.user1,
                    self.finder.find("XXX YYY <user1@example.com>"))
            self.assertEqual(self.user3,
                    self.finder.find("Bob Jones <bjones AT Arch Linux DOT org>"))

    def test_ambiguous(self):
        self.assertEqual(self.user4,
                self.finder.find("Tim One <tim@anotherdomain.com>"))
        self.assertEqual(self.user5,
                self.finder.find("Tim Two <tim@anotherdomain.com>"))
        self.assertIsNone(self.finder.find("Tim <tim@anotherdomain.com>"))

# vim: set ts=4 sw=4 et: