Skip to content

Commit b396dbb

Browse files
committed
Test project permissions
1 parent 34d7ec2 commit b396dbb

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

projects/test_views.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
from authlib.little_auth.models import User
2-
from django.test import TestCase
2+
from django.test import Client, TestCase
33

44
from projects.models import Project
55

66

77
class ProjectsTest(TestCase):
88
def test_smoke(self):
9-
user = User.objects.create_superuser("[email protected]", "admin")
10-
self.client.force_login(user)
9+
superuser = User.objects.create_superuser("[email protected]", "admin")
10+
su_client = Client()
11+
su_client.force_login(superuser)
12+
13+
p2 = Project.objects.create(name="test2", slug="test2")
14+
user = User.objects.create_user("[email protected]", "user")
15+
user.projects.add(p2)
16+
u_client = Client()
17+
u_client.force_login(user)
1118

1219
p = Project.objects.create(name="test", slug="test")
1320
c = p.catalogs.create(
@@ -31,38 +38,48 @@ def test_smoke(self):
3138
""",
3239
)
3340

34-
r = self.client.get("/", headers={"accept-language": "en"})
35-
41+
r = su_client.get("/", headers={"accept-language": "en"})
3642
self.assertContains(r, '<a href="/project/test/">test</a>')
43+
self.assertContains(r, '<a href="/project/test2/">test2</a>')
44+
45+
r = u_client.get("/", headers={"accept-language": "en"})
46+
self.assertNotContains(r, '<a href="/project/test/">test</a>')
47+
self.assertContains(r, '<a href="/project/test2/">test2</a>')
3748

38-
r = self.client.get(p.get_absolute_url(), headers={"accept-language": "en"})
49+
r = su_client.get(p.get_absolute_url(), headers={"accept-language": "en"})
3950
self.assertContains(r, p.token)
4051
self.assertContains(
4152
r,
4253
'<a href="/project/test/catalog/fr/djangojs/">French, djangojs (100%)</a>',
4354
)
4455

45-
r = self.client.get(c.get_absolute_url(), headers={"accept-language": "en"})
56+
r = u_client.get(p.get_absolute_url(), headers={"accept-language": "en"})
57+
self.assertEqual(r.status_code, 404)
58+
59+
r = u_client.get(p2.get_absolute_url(), headers={"accept-language": "en"})
60+
self.assertEqual(r.status_code, 200)
61+
62+
r = su_client.get(c.get_absolute_url(), headers={"accept-language": "en"})
4663
self.assertContains(
4764
r,
4865
'<input type="hidden" name="msgid_1" value="Copied code!" id="id_msgid_1">',
4966
)
5067

5168
# API test
52-
r = self.client.get("/api/pofile/fr/djangojs/")
69+
r = su_client.get("/api/pofile/fr/djangojs/")
5370
self.assertEqual(r.status_code, 403)
5471

55-
r = self.client.get(
72+
r = su_client.get(
5673
"/api/pofile/fr/djangojs/", headers={"x-project-token": p.token}
5774
)
5875
self.assertEqual(r.content.decode("utf-8"), c.pofile)
5976

60-
r = self.client.get(
77+
r = su_client.get(
6178
"/api/pofile/de/djangojs/", headers={"x-project-token": p.token}
6279
)
6380
self.assertEqual(r.status_code, 404)
6481

65-
r = self.client.put(
82+
r = su_client.put(
6683
"/api/pofile/fr/djangojs/",
6784
headers={"x-project-token": p.token},
6885
data=b"""\
@@ -98,7 +115,7 @@ def test_smoke(self):
98115
)
99116

100117
# Different language!
101-
r = self.client.put(
118+
r = su_client.put(
102119
"/api/pofile/de/djangojs/",
103120
headers={"x-project-token": p.token},
104121
data=b"""\

0 commit comments

Comments
 (0)