forked from adamlaska/datatracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests.py
More file actions
155 lines (127 loc) · 7.08 KB
/
Copy pathtests.py
File metadata and controls
155 lines (127 loc) · 7.08 KB
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# Copyright The IETF Trust 2013-2020, All Rights Reserved
# -*- coding: utf-8 -*-
import os
from unittest import skipIf
from django.conf import settings
from django.urls import reverse as urlreverse
from django.db.models import Q
from django.test import Client
import debug # pyflakes:ignore
from ietf.doc.factories import DocumentFactory, WgDraftFactory
from ietf.doc.models import DocEvent, RelatedDocument
from ietf.group.models import Role, Group
from ietf.group.utils import get_group_role_emails, get_child_group_role_emails, get_group_ad_emails
from ietf.group.factories import GroupFactory, RoleFactory
from ietf.utils.test_runner import set_coverage_checking
from ietf.person.factories import EmailFactory
from ietf.person.models import Person
from ietf.utils.test_utils import login_testing_unauthorized, TestCase
if getattr(settings,'SKIP_DOT_TO_PDF', False):
skip_dot_to_pdf = True
skip_message = "settings.SKIP_DOT_TO_PDF = %s" % skip_dot_to_pdf
elif ( os.path.exists(settings.DOT_BINARY) and
os.path.exists(settings.UNFLATTEN_BINARY)):
skip_dot_to_pdf = False
skip_message = ""
else:
skip_dot_to_pdf = True
skip_message = ("Skipping dependency graph tests: One or more of the binaries for dot\n "
"and unflatten weren't found in the locations indicated in settings.py")
print(" "+skip_message)
class StreamTests(TestCase):
def test_streams(self):
r = self.client.get(urlreverse("ietf.group.views.streams"))
self.assertEqual(r.status_code, 200)
self.assertContains(r, "Independent Submission Editor")
def test_stream_documents(self):
draft = DocumentFactory(type_id='draft',group__acronym='iab',states=[('draft','active')])
draft.stream_id = "iab"
draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="changed_stream", by=Person.objects.get(user__username="secretary"), desc="Test")])
r = self.client.get(urlreverse("ietf.group.views.stream_documents", kwargs=dict(acronym="iab")))
self.assertEqual(r.status_code, 200)
self.assertContains(r, draft.name)
def test_stream_edit(self):
EmailFactory(address="ad2@ietf.org")
stream_acronym = "ietf"
url = urlreverse("ietf.group.views.stream_edit", kwargs=dict(acronym=stream_acronym))
login_testing_unauthorized(self, "secretary", url)
# get
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
r = self.client.post(url, dict(delegates="ad2@ietf.org"))
self.assertEqual(r.status_code, 302)
self.assertTrue(Role.objects.filter(name="delegate", group__acronym=stream_acronym, email__address="ad2@ietf.org"))
@skipIf(skip_dot_to_pdf, skip_message)
class GroupDocDependencyGraphTests(TestCase):
def setUp(self):
set_coverage_checking(False)
a = WgDraftFactory()
b = WgDraftFactory()
RelatedDocument.objects.create(source=a,target=b.docalias.first(),relationship_id='refnorm')
def tearDown(self):
set_coverage_checking(True)
def test_group_document_dependency_dotfile(self):
for group in Group.objects.filter(Q(type="wg") | Q(type="rg")):
client = Client(Accept='text/plain')
for url in [ urlreverse("ietf.group.views.dependencies",kwargs=dict(acronym=group.acronym,output_type="dot")),
urlreverse("ietf.group.views.dependencies",kwargs=dict(acronym=group.acronym,group_type=group.type_id,output_type="dot")),
]:
r = client.get(url)
self.assertTrue(r.status_code == 200, "Failed to receive "
"a dot dependency graph for group: %s"%group.acronym)
self.assertGreater(len(r.content), 0, "Dot dependency graph for group "
"%s has no content"%group.acronym)
def test_group_document_dependency_pdffile(self):
for group in Group.objects.filter(Q(type="wg") | Q(type="rg")):
client = Client(Accept='application/pdf')
for url in [ urlreverse("ietf.group.views.dependencies",kwargs=dict(acronym=group.acronym,output_type="pdf")),
urlreverse("ietf.group.views.dependencies",kwargs=dict(acronym=group.acronym,group_type=group.type_id,output_type="pdf")),
]:
r = client.get(url)
self.assertTrue(r.status_code == 200, "Failed to receive "
"a pdf dependency graph for group: %s"%group.acronym)
self.assertGreater(len(r.content), 0, "Pdf dependency graph for group "
"%s has no content"%group.acronym)
def test_group_document_dependency_svgfile(self):
for group in Group.objects.filter(Q(type="wg") | Q(type="rg")):
client = Client(Accept='image/svg+xml')
for url in [ urlreverse("ietf.group.views.dependencies",kwargs=dict(acronym=group.acronym,output_type="svg")),
urlreverse("ietf.group.views.dependencies",kwargs=dict(acronym=group.acronym,group_type=group.type_id,output_type="svg")),
]:
r = client.get(url)
self.assertTrue(r.status_code == 200, "Failed to receive "
"a svg dependency graph for group: %s"%group.acronym)
self.assertGreater(len(r.content), 0, "svg dependency graph for group "
"%s has no content"%group.acronym)
class GroupRoleEmailTests(TestCase):
def setUp(self):
# make_immutable_base_data makes two areas, and puts a group in one of them
# the tests below assume all areas have groups
for area in Group.objects.filter(type_id='area'):
for iter_count in range(2):
group = GroupFactory(type_id='wg',parent=area)
RoleFactory(group=group,name_id='chair',person__user__email='{%s}chairman@ietf.org'%group.acronym)
RoleFactory(group=group,name_id='secr',person__user__email='{%s}secretary@ietf.org'%group.acronym)
def test_group_role_emails(self):
wgs = Group.objects.filter(type='wg')
for wg in wgs:
chair_emails = get_group_role_emails(wg, ['chair'])
secr_emails = get_group_role_emails(wg, ['secr'])
self.assertIn("chairman", list(chair_emails)[0])
self.assertIn("secretary", list(secr_emails)[0])
both_emails = get_group_role_emails(wg, ['chair', 'secr'])
self.assertEqual(secr_emails | chair_emails, both_emails)
def test_child_group_role_emails(self):
areas = Group.objects.filter(type='area')
for area in areas:
emails = get_child_group_role_emails(area, ['chair', 'secr'])
self.assertGreater(len(emails), 0)
for item in emails:
self.assertIn('@', item)
def test_group_ad_emails(self):
wgs = Group.objects.filter(type='wg')
for wg in wgs:
emails = get_group_ad_emails(wg)
self.assertGreater(len(emails), 0)
for item in emails:
self.assertIn('@', item)