From a208803e82063408adc522f1f3444b3be3730ff6 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Fri, 13 Feb 2015 04:18:47 +0000 Subject: [PATCH] Added dealing with /wg/foo/email-aliases, /wg/email-aliases, and similar for /rg. Added an initial test suite for all invocations of the email_alias views. Commit ready for merge. - Legacy-Id: 9083 --- ietf/doc/tests.py | 46 ++++++++++++++++++++++++++++++++++++++++ ietf/group/info.py | 7 +++--- ietf/group/tests_info.py | 42 ++++++++++++++++++++++++++++++++++++ ietf/group/urls_info.py | 2 ++ 4 files changed, 94 insertions(+), 3 deletions(-) diff --git a/ietf/doc/tests.py b/ietf/doc/tests.py index 0fda63c48..3629417ce 100644 --- a/ietf/doc/tests.py +++ b/ietf/doc/tests.py @@ -1,3 +1,4 @@ +import os import datetime import sys if sys.version_info[0] == 2 and sys.version_info[1] < 7: @@ -5,8 +6,10 @@ if sys.version_info[0] == 2 and sys.version_info[1] < 7: else: import unittest from pyquery import PyQuery +from tempfile import NamedTemporaryFile from django.core.urlresolvers import reverse as urlreverse +from django.conf import settings from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State, DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, save_document_in_history ) @@ -472,3 +475,46 @@ class ReferencesTest(TestCase): self.assertEquals(r.status_code, 200) self.assertTrue(doc1.name in r.content) + +class EmailAliasesTests(TestCase): + + def setUp(self): + make_test_data() + self.doc_alias_file = NamedTemporaryFile(delete=False) + self.doc_alias_file.write("""# Generated by hand at 2015-02-12_16:26:45 +virtual.ietf.org anything +draft-ietf-mars-test@ietf.org xfilter-draft-ietf-mars-test +expand-draft-ietf-mars-test@virtual.ietf.org mars-author@example.com, mars-collaborator@example.com +draft-ietf-mars-test.authors@ietf.org xfilter-draft-ietf-mars-test.authors +expand-draft-ietf-mars-test.authors@virtual.ietf.org mars-author@example.mars, mars-collaborator@example.mars +draft-ietf-mars-test.chairs@ietf.org xfilter-draft-ietf-mars-test.chairs +expand-draft-ietf-mars-test.chairs@virtual.ietf.org mars-chair@example.mars +draft-ietf-mars-test.all@ietf.org xfilter-draft-ietf-mars-test.all +expand-draft-ietf-mars-test.all@virtual.ietf.org mars-author@example.mars, mars-collaborator@example.mars, mars-chair@example.mars +draft-ietf-ames-test@ietf.org xfilter-draft-ietf-ames-test +expand-draft-ietf-ames-test@virtual.ietf.org ames-author@example.com, ames-collaborator@example.com +draft-ietf-ames-test.authors@ietf.org xfilter-draft-ietf-ames-test.authors +expand-draft-ietf-ames-test.authors@virtual.ietf.org ames-author@example.ames, ames-collaborator@example.ames +draft-ietf-ames-test.chairs@ietf.org xfilter-draft-ietf-ames-test.chairs +expand-draft-ietf-ames-test.chairs@virtual.ietf.org ames-chair@example.ames +draft-ietf-ames-test.all@ietf.org xfilter-draft-ietf-ames-test.all +expand-draft-ietf-ames-test.all@virtual.ietf.org ames-author@example.ames, ames-collaborator@example.ames, ames-chair@example.ames + +""") + self.doc_alias_file.close() + settings.DRAFT_VIRTUAL_PATH = self.doc_alias_file.name + + def tearDown(self): + os.unlink(self.doc_alias_file.name) + + def testAliases(self): + url = urlreverse('ietf.doc.views_doc.email_aliases', kwargs=dict()) + r = self.client.get(url) + self.assertTrue(all([x in r.content for x in ['mars-test@','mars-test.authors@','mars-test.chairs@']])) + self.assertTrue(all([x in r.content for x in ['ames-test@','ames-test.authors@','ames-test.chairs@']])) + + url = urlreverse('ietf.doc.views_doc.email_aliases', kwargs=dict(name="draft-ietf-mars-test")) + r = self.client.get(url) + self.assertTrue(all([x in r.content for x in ['mars-test@','mars-test.authors@','mars-test.chairs@']])) + self.assertFalse(any([x in r.content for x in ['ames-test@','ames-test.authors@','ames-test.chairs@']])) + diff --git a/ietf/group/info.py b/ietf/group/info.py index 59b844036..14cacc99d 100644 --- a/ietf/group/info.py +++ b/ietf/group/info.py @@ -624,8 +624,8 @@ def dependencies_pdf(request, acronym, group_type=None): return HttpResponse(pdf, content_type='application/pdf') -def email_aliases(request, acronym=None): - group = get_group_or_404(acronym,None) if acronym else None +def email_aliases(request, acronym=None, group_type=None): + group = get_group_or_404(acronym,group_type) if acronym else None if acronym: pattern = re.compile('expand-(%s)(-\w+)@.*? +(.*)$'%acronym) @@ -637,7 +637,8 @@ def email_aliases(request, acronym=None): for line in virtual_file.readlines(): m = pattern.match(line) if m: - aliases.append({'acronym':m.group(1),'alias_type':m.group(2),'expansion':m.group(3)}) + if acronym or not group_type or Group.objects.filter(acronym=m.group(1),type__slug=group_type): + aliases.append({'acronym':m.group(1),'alias_type':m.group(2),'expansion':m.group(3)}) return render(request,'group/email_aliases.html',{'aliases':aliases,'ietf_domain':settings.IETF_DOMAIN,'group':group}) diff --git a/ietf/group/tests_info.py b/ietf/group/tests_info.py index 4d4ce4694..e12a00406 100644 --- a/ietf/group/tests_info.py +++ b/ietf/group/tests_info.py @@ -5,6 +5,7 @@ import json import datetime from pyquery import PyQuery +from tempfile import NamedTemporaryFile import debug # pyflakes:ignore from django.conf import settings @@ -951,3 +952,44 @@ class CustomizeWorkflowTests(TestCase): self.assertEqual(len(q('form').find('input[name=tag][value="%s"]' % tag.pk).parents("form").find("input[name=active]")), 1) group = Group.objects.get(acronym=group.acronym) self.assertTrue(tag in group.unused_tags.all()) + +class EmailAliasesTests(TestCase): + + def setUp(self): + make_test_data() + self.group_alias_file = NamedTemporaryFile(delete=False) + self.group_alias_file.write("""# Generated by hand at 2015-02-12_16:30:52 +virtual.ietf.org anything +mars-ads@ietf.org xfilter-mars-ads +expand-mars-ads@virtual.ietf.org aread@ietf.org +mars-chairs@ietf.org xfilter-mars-chairs +expand-mars-chairs@virtual.ietf.org mars_chair@ietf.org +ames-ads@ietf.org xfilter-mars-ads +expand-ames-ads@virtual.ietf.org aread@ietf.org +ames-chairs@ietf.org xfilter-mars-chairs +expand-ames-chairs@virtual.ietf.org mars_chair@ietf.org +""") + self.group_alias_file.close() + settings.GROUP_VIRTUAL_PATH = self.group_alias_file.name + + def tearDown(self): + os.unlink(self.group_alias_file.name) + + def testNothing(self): + url = urlreverse('ietf.group.info.email_aliases', kwargs=dict()) + r = self.client.get(url) + self.assertTrue(all([x in r.content for x in ['mars-ads@','mars-chairs@','ames-ads@','ames-chairs@']])) + + url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(acronym="mars")) + r = self.client.get(url) + self.assertTrue(all([x in r.content for x in ['mars-ads@','mars-chairs@']])) + self.assertFalse(any([x in r.content for x in ['ames-ads@','ames-chairs@']])) + + url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(group_type="wg")) + r = self.client.get(url) + self.assertTrue('mars-ads@' in r.content) + + url = urlreverse('ietf.group.info.email_aliases', kwargs=dict(group_type="rg")) + r = self.client.get(url) + self.assertFalse('mars-ads@' in r.content) + diff --git a/ietf/group/urls_info.py b/ietf/group/urls_info.py index ba5d2ab1f..95d59141e 100644 --- a/ietf/group/urls_info.py +++ b/ietf/group/urls_info.py @@ -17,6 +17,7 @@ urlpatterns = patterns('', (r'^chartering/$', RedirectView.as_view(url='/group/chartering/')), (r'^chartering/create/$', RedirectView.as_view(url='/group/chartering/create/%(group_type)s/')), (r'^bofs/$', info.bofs), + (r'^email-aliases/$', 'ietf.group.info.email_aliases'), (r'^bofs/create/$', edit.edit, {'action': "create"}, "bof_create"), (r'^(?P[a-zA-Z0-9-._]+)/documents/txt/$', info.group_documents_txt), (r'^(?P[a-zA-Z0-9-._]+)/$', info.group_home, None, "group_home"), @@ -33,4 +34,5 @@ urlpatterns = patterns('', (r'^(?P[a-zA-Z0-9-._]+)/milestones/charter/reset/$', milestones.reset_charter_milestones, None, "group_reset_charter_milestones"), (r'^(?P[a-zA-Z0-9-._]+)/ajax/searchdocs/$', milestones.ajax_search_docs, None, "group_ajax_search_docs"), (r'^(?P[a-zA-Z0-9-._]+)/workflow/$', edit.customize_workflow), + (r'^(?P[A-Za-z0-9._+-]+)/email-aliases/$', 'ietf.group.info.email_aliases'), )