|
17 | 17 | from django.conf import settings |
18 | 18 | from django.urls import reverse as urlreverse |
19 | 19 | from django.urls import NoReverseMatch |
| 20 | +from django.utils import timezone |
20 | 21 | from django.contrib.auth.models import User |
21 | 22 |
|
22 | 23 | from django.utils.html import escape |
|
26 | 27 | from ietf.doc.factories import WgDraftFactory, CharterFactory, BallotDocEventFactory |
27 | 28 | from ietf.doc.models import Document, DocAlias, DocEvent, State |
28 | 29 | from ietf.doc.utils_charter import charter_name_for_group |
| 30 | +from ietf.group.admin import GroupForm as AdminGroupForm |
29 | 31 | from ietf.group.factories import (GroupFactory, RoleFactory, GroupEventFactory, |
30 | 32 | DatedGroupMilestoneFactory, DatelessGroupMilestoneFactory) |
| 33 | +from ietf.group.forms import GroupForm |
31 | 34 | from ietf.group.models import Group, GroupEvent, GroupMilestone, GroupStateTransitions, Role |
32 | 35 | from ietf.group.utils import save_group_in_history, setup_default_community_list_for_group |
33 | 36 | from ietf.meeting.factories import SessionFactory |
@@ -1638,3 +1641,44 @@ def timeout_handler(signum, frame): |
1638 | 1641 |
|
1639 | 1642 | # If we get here, then there is not an infinite loop |
1640 | 1643 | return |
| 1644 | + |
| 1645 | +class AcronymValidationTests(TestCase): |
| 1646 | + |
| 1647 | + def test_admin_acronym_validation(self): |
| 1648 | + now = timezone.now() |
| 1649 | + form = AdminGroupForm({'acronym':'shouldpass','name':'should pass','type':'wg','state':'active','used_roles':'[]','time':now}) |
| 1650 | + self.assertTrue(form.is_valid()) |
| 1651 | + form = AdminGroupForm({'acronym':'should-fail','name':'should fail','type':'wg','state':'active','used_roles':'[]','time':now}) |
| 1652 | + self.assertIn('acronym',form.errors) |
| 1653 | + form = AdminGroupForm({'acronym':'f','name':'should fail','type':'wg','state':'active','used_roles':'[]','time':now}) |
| 1654 | + self.assertIn('acronym',form.errors) |
| 1655 | + # For the ITU we have a heirarchy of group names that use hyphens as delimeters |
| 1656 | + form = AdminGroupForm({'acronym':'should-pass','name':'should pass','type':'sdo','state':'active','used_roles':'[]','time':now}) |
| 1657 | + self.assertTrue(form.is_valid()) |
| 1658 | + form = AdminGroupForm({'acronym':'shouldfail-','name':'should fail','type':'wg','state':'active','used_roles':'[]','time':now}) |
| 1659 | + self.assertIn('acronym',form.errors) |
| 1660 | + form = AdminGroupForm({'acronym':'-shouldfail','name':'should fail','type':'wg','state':'active','used_roles':'[]','time':now}) |
| 1661 | + self.assertIn('acronym',form.errors) |
| 1662 | + |
| 1663 | + wg = GroupFactory(acronym='bad-idea', type_id='wg') # There are some existing wg and programs with hyphens in their acronyms. |
| 1664 | + form = AdminGroupForm({'acronym':wg.acronym,'name':wg.name,'type':wg.type_id,'state':wg.state_id,'used_roles':str(wg.used_roles),'time':now},instance=wg) |
| 1665 | + self.assertTrue(form.is_valid()) |
| 1666 | + |
| 1667 | + def test_groupform_acronym_validation(self): |
| 1668 | + form = GroupForm({'acronym':'shouldpass','name':'should pass','state':'active'},group_type='wg') |
| 1669 | + self.assertTrue(form.is_valid()) |
| 1670 | + form = GroupForm({'acronym':'should-fail','name':'should fail','state':'active'},group_type='wg') |
| 1671 | + self.assertIn('acronym',form.errors) |
| 1672 | + form = GroupForm({'acronym':'f','name':'should fail','state':'active'},group_type='wg') |
| 1673 | + self.assertIn('acronym',form.errors) |
| 1674 | + form = GroupForm({'acronym':'should-pass','name':'should pass','state':'active'},group_type='sdo') |
| 1675 | + self.assertTrue(form.is_valid()) |
| 1676 | + form = GroupForm({'acronym':'shouldfail-','name':'should fail','state':'active'},group_type='sdo') |
| 1677 | + self.assertIn('acronym',form.errors) |
| 1678 | + form = GroupForm({'acronym':'-shouldfail','name':'should fail','state':'active'},group_type='sdo') |
| 1679 | + self.assertIn('acronym',form.errors) |
| 1680 | + |
| 1681 | + wg = GroupFactory(acronym='bad-idea', type_id='wg') |
| 1682 | + form = GroupForm({'acronym':wg.acronym,'name':wg.name,'state':wg.state_id},group=wg, group_type=wg.type_id) |
| 1683 | + self.assertTrue(form.is_valid()) |
| 1684 | + |
0 commit comments