Use temporary directories instead of "real" filesystem for tests. Fixes #3414. Commit ready for merge.
- Legacy-Id: 19555
This commit is contained in:
parent
968b775315
commit
81d9234d54
|
@ -5,7 +5,6 @@
|
|||
import json
|
||||
import html
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
from importlib import import_module
|
||||
|
@ -38,14 +37,7 @@ OMITTED_APPS = (
|
|||
)
|
||||
|
||||
class CustomApiTests(TestCase):
|
||||
def setUp(self):
|
||||
self.agenda_path = self.tempdir('materials')
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.agenda_path
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.agenda_path)
|
||||
settings.AGENDA_PATH = self.saved_agenda_path
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
|
||||
|
||||
# Using mock to patch the import functions in ietf.meeting.views, where
|
||||
# api_import_recordings() are using them:
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import datetime
|
||||
import io
|
||||
import lxml
|
||||
|
@ -13,6 +12,7 @@ import json
|
|||
import copy
|
||||
|
||||
from http.cookies import SimpleCookie
|
||||
from pathlib import Path
|
||||
from pyquery import PyQuery
|
||||
from urllib.parse import urlparse, parse_qs
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
@ -523,19 +523,10 @@ Man Expires September 22, 2015 [Page 3]
|
|||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
settings.INTERNET_DRAFT_PATH = self.id_dir
|
||||
self.saved_internet_all_drafts_archive_dir = settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR
|
||||
settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR = self.id_dir
|
||||
f = io.open(os.path.join(self.id_dir, 'draft-ietf-mars-test-01.txt'), 'w')
|
||||
f.write(self.draft_text)
|
||||
f.close()
|
||||
|
||||
def tearDown(self):
|
||||
settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR = self.saved_internet_all_drafts_archive_dir
|
||||
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
|
||||
shutil.rmtree(self.id_dir)
|
||||
super().setUp()
|
||||
for dir in [settings.INTERNET_ALL_DRAFTS_ARCHIVE_DIR, settings.INTERNET_DRAFT_PATH]:
|
||||
with (Path(dir) / 'draft-ietf-mars-test-01.txt').open('w') as f:
|
||||
f.write(self.draft_text)
|
||||
|
||||
def test_document_draft(self):
|
||||
draft = WgDraftFactory(name='draft-ietf-mars-test',rev='01')
|
||||
|
@ -694,6 +685,7 @@ Man Expires September 22, 2015 [Page 3]
|
|||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
rfc = WgRfcFactory()
|
||||
(Path(settings.RFC_PATH) / rfc.get_base_name()).touch()
|
||||
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.canonical_name())))
|
||||
self.assertEqual(r.status_code, 200)
|
||||
r = self.client.get(urlreverse("ietf.doc.views_doc.document_html", kwargs=dict(name=rfc.rfc_number())))
|
||||
|
@ -1895,6 +1887,7 @@ class ReferencesTest(TestCase):
|
|||
|
||||
class GenerateDraftAliasesTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.doc_aliases_file = NamedTemporaryFile(delete=False, mode='w+')
|
||||
self.doc_aliases_file.close()
|
||||
self.doc_virtual_file = NamedTemporaryFile(delete=False, mode='w+')
|
||||
|
@ -1909,6 +1902,7 @@ class GenerateDraftAliasesTests(TestCase):
|
|||
settings.DRAFT_VIRTUAL_PATH = self.saved_draft_virtual_path
|
||||
os.unlink(self.doc_aliases_file.name)
|
||||
os.unlink(self.doc_virtual_file.name)
|
||||
super().tearDown()
|
||||
|
||||
def testManagementCommand(self):
|
||||
a_month_ago = datetime.datetime.now() - datetime.timedelta(30)
|
||||
|
@ -2013,6 +2007,7 @@ class GenerateDraftAliasesTests(TestCase):
|
|||
class EmailAliasesTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
WgDraftFactory(name='draft-ietf-mars-test',group__acronym='mars')
|
||||
WgDraftFactory(name='draft-ietf-ames-test',group__acronym='ames')
|
||||
RoleFactory(group__type_id='review', group__acronym='yangdoctors', name_id='secr')
|
||||
|
@ -2044,6 +2039,7 @@ expand-draft-ietf-ames-test.all@virtual.ietf.org ames-author@example.ames, ames
|
|||
def tearDown(self):
|
||||
settings.DRAFT_VIRTUAL_PATH = self.saved_draft_virtual_path
|
||||
os.unlink(self.doc_alias_file.name)
|
||||
super().tearDown()
|
||||
|
||||
def testAliases(self):
|
||||
PersonFactory(user__username='plain')
|
||||
|
@ -2068,6 +2064,7 @@ expand-draft-ietf-ames-test.all@virtual.ietf.org ames-author@example.ames, ames
|
|||
class DocumentMeetingTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.group = GroupFactory(type_id='wg',state_id='active')
|
||||
self.group_chair = PersonFactory()
|
||||
self.group.role_set.create(name_id='chair',person=self.group_chair,email=self.group_chair.email())
|
||||
|
@ -2384,17 +2381,15 @@ class FieldTests(TestCase):
|
|||
)
|
||||
|
||||
class MaterialsTests(TestCase):
|
||||
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
|
||||
def setUp(self):
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.id_dir
|
||||
super().setUp()
|
||||
|
||||
meeting_number='111'
|
||||
meeting_dir = os.path.join(f'{settings.AGENDA_PATH}',f'{meeting_number}')
|
||||
os.mkdir(meeting_dir)
|
||||
agenda_dir = os.path.join(meeting_dir,'agenda')
|
||||
os.mkdir(agenda_dir)
|
||||
meeting_dir = Path(settings.AGENDA_PATH) / meeting_number
|
||||
meeting_dir.mkdir()
|
||||
agenda_dir = meeting_dir / 'agenda'
|
||||
agenda_dir.mkdir()
|
||||
|
||||
group_acronym='bogons'
|
||||
|
||||
|
@ -2402,35 +2397,26 @@ class MaterialsTests(TestCase):
|
|||
# * build the DocumentHistory correctly
|
||||
# * maybe do something by default with uploaded_filename
|
||||
# and there should be a more usable unit to save bits to disk (handle_file_upload isn't quite right) that tests can leverage
|
||||
try:
|
||||
uploaded_filename_00 = f'agenda-{meeting_number}-{group_acronym}-00.txt'
|
||||
uploaded_filename_01 = f'agenda-{meeting_number}-{group_acronym}-01.md'
|
||||
f = io.open(os.path.join(agenda_dir, uploaded_filename_00), 'w')
|
||||
f.write('This is some unremarkable text')
|
||||
f.close()
|
||||
f = io.open(os.path.join(agenda_dir, uploaded_filename_01), 'w')
|
||||
f.write('This links to [an unusual place](https://unusual.example).')
|
||||
f.close()
|
||||
uploaded_filename_00 = f'agenda-{meeting_number}-{group_acronym}-00.txt'
|
||||
uploaded_filename_01 = f'agenda-{meeting_number}-{group_acronym}-01.md'
|
||||
f = io.open(os.path.join(agenda_dir, uploaded_filename_00), 'w')
|
||||
f.write('This is some unremarkable text')
|
||||
f.close()
|
||||
f = io.open(os.path.join(agenda_dir, uploaded_filename_01), 'w')
|
||||
f.write('This links to [an unusual place](https://unusual.example).')
|
||||
f.close()
|
||||
|
||||
self.doc = DocumentFactory(type_id='agenda',rev='00',group__acronym=group_acronym, newrevisiondocevent=None, name=f'agenda-{meeting_number}-{group_acronym}', uploaded_filename=uploaded_filename_00)
|
||||
e = NewRevisionDocEventFactory(doc=self.doc,rev='00')
|
||||
self.doc.save_with_history([e])
|
||||
self.doc.rev = '01'
|
||||
self.doc.uploaded_filename = uploaded_filename_01
|
||||
e = NewRevisionDocEventFactory(doc=self.doc, rev='01')
|
||||
self.doc.save_with_history([e])
|
||||
self.doc = DocumentFactory(type_id='agenda',rev='00',group__acronym=group_acronym, newrevisiondocevent=None, name=f'agenda-{meeting_number}-{group_acronym}', uploaded_filename=uploaded_filename_00)
|
||||
e = NewRevisionDocEventFactory(doc=self.doc,rev='00')
|
||||
self.doc.save_with_history([e])
|
||||
self.doc.rev = '01'
|
||||
self.doc.uploaded_filename = uploaded_filename_01
|
||||
e = NewRevisionDocEventFactory(doc=self.doc, rev='01')
|
||||
self.doc.save_with_history([e])
|
||||
|
||||
# This is necessary for the view to be able to find the document
|
||||
# which hints that the view has an issue : if a materials document is taken out of all SessionPresentations, it is no longer accessable by this view
|
||||
SessionPresentationFactory(session__meeting__number=meeting_number, session__group=self.doc.group, document=self.doc)
|
||||
|
||||
except:
|
||||
shutil.rmtree(self.id_dir)
|
||||
raise
|
||||
|
||||
def tearDown(self):
|
||||
settings.AGENDA_PATH = self.saved_agenda_path
|
||||
shutil.rmtree(self.id_dir)
|
||||
# This is necessary for the view to be able to find the document
|
||||
# which hints that the view has an issue : if a materials document is taken out of all SessionPresentations, it is no longer accessable by this view
|
||||
SessionPresentationFactory(session__meeting__number=meeting_number, session__group=self.doc.group, document=self.doc)
|
||||
|
||||
def test_markdown_and_text(self):
|
||||
url = urlreverse("ietf.doc.views_doc.document_main", kwargs=dict(name=self.doc.name,rev='00'))
|
||||
|
@ -2446,15 +2432,7 @@ class MaterialsTests(TestCase):
|
|||
self.assertEqual(q('#materials-content .panel-body a').attr['href'],'https://unusual.example')
|
||||
|
||||
class Idnits2SupportTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.derived_dir = self.tempdir('derived')
|
||||
self.saved_derived_dir = settings.DERIVED_DIR
|
||||
settings.DERIVED_DIR = self.derived_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.DERIVED_DIR = self.saved_derived_dir
|
||||
shutil.rmtree(self.derived_dir)
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['DERIVED_DIR']
|
||||
|
||||
def test_obsoleted(self):
|
||||
rfc = WgRfcFactory(alias2__name='rfc1001')
|
||||
|
@ -2506,6 +2484,7 @@ class Idnits2SupportTests(TestCase):
|
|||
class RfcdiffSupportTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.target_view = 'ietf.doc.views_doc.rfcdiff_latest_json'
|
||||
|
||||
def getJson(self, view_args):
|
||||
|
|
|
@ -1056,6 +1056,7 @@ class DeferUndeferTestCase(TestCase):
|
|||
# when charters support being deferred, be sure to test them here
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
IndividualDraftFactory(name='draft-ietf-mars-test',states=[('draft','active'),('draft-iesg','iesg-eva')],
|
||||
ad=Person.objects.get(user__username='ad'))
|
||||
DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review',states=[('statchg','iesgeval')])
|
||||
|
|
|
@ -2,10 +2,9 @@
|
|||
|
||||
import datetime
|
||||
import debug # pyflakes:ignore
|
||||
import io
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from pathlib import Path
|
||||
from pyquery import PyQuery
|
||||
from random import randint
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
@ -24,19 +23,11 @@ from ietf.utils.test_utils import TestCase, reload_db_objects, unicontent, login
|
|||
|
||||
|
||||
class BofreqTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.bofreq_dir = self.tempdir('bofreq')
|
||||
self.saved_bofreq_path = settings.BOFREQ_PATH
|
||||
settings.BOFREQ_PATH = self.bofreq_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.BOFREQ_PATH = self.saved_bofreq_path
|
||||
shutil.rmtree(self.bofreq_dir)
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['BOFREQ_PATH']
|
||||
|
||||
def write_bofreq_file(self, bofreq):
|
||||
fname = os.path.join(self.bofreq_dir, "%s-%s.md" % (bofreq.canonical_name(), bofreq.rev))
|
||||
with io.open(fname, "w") as f:
|
||||
fname = Path(settings.BOFREQ_PATH) / ("%s-%s.md" % (bofreq.canonical_name(), bofreq.rev))
|
||||
with fname.open("w") as f:
|
||||
f.write(f"""# This is a test bofreq.
|
||||
Version: {bofreq.rev}
|
||||
|
||||
|
|
|
@ -4,9 +4,8 @@
|
|||
|
||||
import datetime
|
||||
import io
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from pathlib import Path
|
||||
from pyquery import PyQuery
|
||||
|
||||
from django.conf import settings
|
||||
|
@ -84,17 +83,12 @@ class ViewCharterTests(TestCase):
|
|||
|
||||
|
||||
class EditCharterTests(TestCase):
|
||||
def setUp(self):
|
||||
self.charter_dir = self.tempdir('charter')
|
||||
self.saved_charter_path = settings.CHARTER_PATH
|
||||
settings.CHARTER_PATH = self.charter_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.CHARTER_PATH = self.saved_charter_path
|
||||
shutil.rmtree(self.charter_dir)
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CHARTER_PATH']
|
||||
|
||||
def write_charter_file(self, charter):
|
||||
with io.open(os.path.join(self.charter_dir, "%s-%s.txt" % (charter.canonical_name(), charter.rev)), "w") as f:
|
||||
with (Path(settings.CHARTER_PATH) /
|
||||
("%s-%s.txt" % (charter.canonical_name(), charter.rev))
|
||||
).open("w") as f:
|
||||
f.write("This is a charter.")
|
||||
|
||||
def test_startstop_process(self):
|
||||
|
@ -513,7 +507,7 @@ class EditCharterTests(TestCase):
|
|||
self.assertEqual(charter.rev, next_revision(prev_rev))
|
||||
self.assertTrue("new_revision" in charter.latest_event().type)
|
||||
|
||||
with io.open(os.path.join(self.charter_dir, charter.canonical_name() + "-" + charter.rev + ".txt"), encoding='utf-8') as f:
|
||||
with (Path(settings.CHARTER_PATH) / (charter.canonical_name() + "-" + charter.rev + ".txt")).open(encoding='utf-8') as f:
|
||||
self.assertEqual(f.read(), "Windows line\nMac line\nUnix line\n" + utf_8_snippet.decode('utf-8'))
|
||||
|
||||
def test_submit_initial_charter(self):
|
||||
|
@ -792,7 +786,9 @@ class EditCharterTests(TestCase):
|
|||
self.assertTrue(not charter.ballot_open("approve"))
|
||||
|
||||
self.assertEqual(charter.rev, "01")
|
||||
self.assertTrue(os.path.exists(os.path.join(self.charter_dir, "charter-ietf-%s-%s.txt" % (group.acronym, charter.rev))))
|
||||
self.assertTrue(
|
||||
(Path(settings.CHARTER_PATH) / ("charter-ietf-%s-%s.txt" % (group.acronym, charter.rev))).exists()
|
||||
)
|
||||
|
||||
self.assertEqual(len(outbox), 2)
|
||||
#
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
import io
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from pyquery import PyQuery
|
||||
from textwrap import wrap
|
||||
|
@ -367,11 +366,13 @@ class ConflictReviewTests(TestCase):
|
|||
self.assertEqual(len(outbox), 0)
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
IndividualDraftFactory(name='draft-imaginary-independent-submission')
|
||||
ConflictReviewFactory(name='conflict-review-imaginary-irtf-submission',review_of=IndividualDraftFactory(name='draft-imaginary-irtf-submission',stream_id='irtf'),notify='notifyme@example.net')
|
||||
|
||||
|
||||
class ConflictReviewSubmitTests(TestCase):
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CONFLICT_REVIEW_PATH']
|
||||
def test_initial_submission(self):
|
||||
doc = Document.objects.get(name='conflict-review-imaginary-irtf-submission')
|
||||
url = urlreverse('ietf.doc.views_conflict_review.submit',kwargs=dict(name=doc.name))
|
||||
|
@ -447,11 +448,5 @@ class ConflictReviewSubmitTests(TestCase):
|
|||
self.assertTrue(q('textarea')[0].text.strip().startswith("[Edit this page"))
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
ConflictReviewFactory(name='conflict-review-imaginary-irtf-submission',review_of=IndividualDraftFactory(name='draft-imaginary-irtf-submission',stream_id='irtf'),notify='notifyme@example.net')
|
||||
self.test_dir = self.tempdir('conflict-review')
|
||||
self.saved_conflict_review_path = settings.CONFLICT_REVIEW_PATH
|
||||
settings.CONFLICT_REVIEW_PATH = self.test_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.CONFLICT_REVIEW_PATH = self.saved_conflict_review_path
|
||||
shutil.rmtree(self.test_dir)
|
||||
|
|
|
@ -16,6 +16,7 @@ from ietf.utils.test_utils import login_testing_unauthorized
|
|||
class Downref(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
PersonFactory(name='Plain Man',user__username='plain')
|
||||
self.draft = WgDraftFactory(name='draft-ietf-mars-test')
|
||||
self.draftalias = self.draft.docalias.get(name='draft-ietf-mars-test')
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import datetime
|
||||
import io
|
||||
import mock
|
||||
|
||||
from collections import Counter
|
||||
from pathlib import Path
|
||||
from pyquery import PyQuery
|
||||
|
||||
from django.urls import reverse as urlreverse
|
||||
|
@ -547,27 +547,14 @@ class EditInfoTests(TestCase):
|
|||
class DraftFileMixin():
|
||||
'''A mixin to setup temporary draft directories and files'''
|
||||
def setUp(self):
|
||||
self.saved_id_dir = settings.INTERNET_DRAFT_PATH
|
||||
self.saved_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.archive_dir = self.tempdir('id-archive')
|
||||
os.mkdir(os.path.join(self.archive_dir, "unknown_ids"))
|
||||
os.mkdir(os.path.join(self.archive_dir, "deleted_tombstones"))
|
||||
os.mkdir(os.path.join(self.archive_dir, "expired_without_tombstone"))
|
||||
|
||||
settings.INTERNET_DRAFT_PATH = self.id_dir
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.id_dir)
|
||||
shutil.rmtree(self.archive_dir)
|
||||
settings.INTERNET_DRAFT_PATH = self.saved_id_dir
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.saved_archive_dir
|
||||
super().setUp()
|
||||
(Path(settings.INTERNET_DRAFT_ARCHIVE_DIR) / "unknown_ids").mkdir()
|
||||
(Path(settings.INTERNET_DRAFT_ARCHIVE_DIR) / "deleted_tombstones").mkdir()
|
||||
(Path(settings.INTERNET_DRAFT_ARCHIVE_DIR) / "expired_without_tombstone").mkdir()
|
||||
|
||||
def write_draft_file(self, name, size):
|
||||
f = io.open(os.path.join(self.id_dir, name), 'w')
|
||||
f.write("a" * size)
|
||||
f.close()
|
||||
with (Path(settings.INTERNET_DRAFT_PATH) / name).open('w') as f:
|
||||
f.write("a" * size)
|
||||
|
||||
|
||||
class ResurrectTests(DraftFileMixin, TestCase):
|
||||
|
@ -638,8 +625,8 @@ class ResurrectTests(DraftFileMixin, TestCase):
|
|||
self.assertTrue('aread' in outbox[-1]['To'])
|
||||
|
||||
# ensure file restored from archive directory
|
||||
self.assertTrue(os.path.exists(os.path.join(self.id_dir, txt)))
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.archive_dir, txt)))
|
||||
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, txt)))
|
||||
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, txt)))
|
||||
|
||||
|
||||
class ExpireIDsTests(DraftFileMixin, TestCase):
|
||||
|
@ -749,8 +736,8 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
|
|||
self.assertTrue(draft.latest_event(type="expired_document"))
|
||||
self.assertCountEqual(draft.action_holders.all(), [])
|
||||
self.assertIn('Removed all action holders', draft.latest_event(type='changed_action_holders').desc)
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
|
||||
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, txt)))
|
||||
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, txt)))
|
||||
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, txt)))
|
||||
|
||||
draft.delete()
|
||||
|
||||
|
@ -772,8 +759,8 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
|
|||
|
||||
clean_up_draft_files()
|
||||
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, unknown)))
|
||||
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, "unknown_ids", unknown)))
|
||||
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, unknown)))
|
||||
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, "unknown_ids", unknown)))
|
||||
|
||||
|
||||
# put file with malformed name (no revision)
|
||||
|
@ -782,8 +769,8 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
|
|||
|
||||
clean_up_draft_files()
|
||||
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, malformed)))
|
||||
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, "unknown_ids", malformed)))
|
||||
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, malformed)))
|
||||
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, "unknown_ids", malformed)))
|
||||
|
||||
|
||||
# RFC draft
|
||||
|
@ -796,11 +783,11 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
|
|||
|
||||
clean_up_draft_files()
|
||||
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
|
||||
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, txt)))
|
||||
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, txt)))
|
||||
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, txt)))
|
||||
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, pdf)))
|
||||
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, pdf)))
|
||||
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, pdf)))
|
||||
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, pdf)))
|
||||
|
||||
# expire draft
|
||||
draft.set_state(State.objects.get(used=True, type="draft", slug="expired"))
|
||||
|
@ -817,8 +804,8 @@ class ExpireIDsTests(DraftFileMixin, TestCase):
|
|||
|
||||
clean_up_draft_files()
|
||||
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, txt)))
|
||||
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, txt)))
|
||||
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, txt)))
|
||||
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, txt)))
|
||||
|
||||
|
||||
class ExpireLastCallTests(TestCase):
|
||||
|
@ -898,6 +885,7 @@ class ExpireLastCallTests(TestCase):
|
|||
class IndividualInfoFormsTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
doc = WgDraftFactory(group__acronym='mars',shepherd=PersonFactory(user__username='plain',name='Plain Man').email_set.first())
|
||||
self.docname = doc.name
|
||||
|
||||
|
@ -1373,6 +1361,7 @@ class IndividualInfoFormsTests(TestCase):
|
|||
class SubmitToIesgTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
role=RoleFactory(group__acronym='mars',name_id='chair',person=PersonFactory(user__username='marschairman'))
|
||||
doc=WgDraftFactory(
|
||||
name='draft-ietf-mars-test',
|
||||
|
@ -1798,7 +1787,7 @@ class ChangeStreamStateTests(TestCase):
|
|||
|
||||
class ChangeReplacesTests(TestCase):
|
||||
def setUp(self):
|
||||
|
||||
super().setUp()
|
||||
role = RoleFactory(name_id='chair',group__acronym='mars',group__list_email='mars-wg@ietf.org',person__user__username='marschairman',person__name='WG Cháir Man')
|
||||
RoleFactory(name_id='delegate',group=role.group,person__user__email='marsdelegate@ietf.org')
|
||||
#draft = WgDraftFactory(group=role.group)
|
||||
|
|
|
@ -424,12 +424,14 @@ class BaseManipulationTests():
|
|||
class IRTFChairTests(BaseManipulationTests, TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.username = 'irtf-chair'
|
||||
self.balloter = ''
|
||||
|
||||
class SecretariatTests(BaseManipulationTests, TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.username = 'secretary'
|
||||
self.balloter = '?balloter={}'.format(Person.objects.get(user__username='irtf-chair').pk)
|
||||
|
||||
|
@ -437,6 +439,7 @@ class SecretariatTests(BaseManipulationTests, TestCase):
|
|||
class IRSGMemberTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.username = get_active_irsg()[0].user.username
|
||||
|
||||
def test_cant_issue_irsg_ballot(self):
|
||||
|
|
|
@ -7,6 +7,7 @@ import shutil
|
|||
import datetime
|
||||
import io
|
||||
|
||||
from pathlib import Path
|
||||
from pyquery import PyQuery
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
@ -25,26 +26,24 @@ from ietf.utils.test_utils import TestCase, login_testing_unauthorized
|
|||
|
||||
|
||||
class GroupMaterialTests(TestCase):
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.materials_dir = self.tempdir("materials")
|
||||
self.slides_dir = os.path.join(self.materials_dir, "slides")
|
||||
if not os.path.exists(self.slides_dir):
|
||||
os.mkdir(self.slides_dir)
|
||||
self.slides_dir = Path(self.materials_dir) / "slides"
|
||||
if not self.slides_dir.exists():
|
||||
self.slides_dir.mkdir()
|
||||
self.saved_document_path_pattern = settings.DOCUMENT_PATH_PATTERN
|
||||
settings.DOCUMENT_PATH_PATTERN = self.materials_dir + "/{doc.type_id}/"
|
||||
|
||||
self.agenda_dir = self.tempdir("agenda")
|
||||
self.meeting_slides_dir = os.path.join(self.agenda_dir, "42", "slides")
|
||||
if not os.path.exists(self.meeting_slides_dir):
|
||||
os.makedirs(self.meeting_slides_dir)
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.agenda_dir
|
||||
self.meeting_slides_dir = Path(settings.AGENDA_PATH) / "42" / "slides"
|
||||
if not self.meeting_slides_dir.exists():
|
||||
self.meeting_slides_dir.mkdir(parents=True)
|
||||
|
||||
def tearDown(self):
|
||||
settings.DOCUMENT_PATH_PATTERN = self.saved_document_path_pattern
|
||||
shutil.rmtree(self.materials_dir)
|
||||
settings.AGENDA_PATH = self.saved_agenda_path
|
||||
shutil.rmtree(self.agenda_dir)
|
||||
super().tearDown()
|
||||
|
||||
def create_slides(self):
|
||||
|
||||
|
|
|
@ -41,6 +41,7 @@ from ietf.utils.text import strip_prefix, xslugify
|
|||
|
||||
class ReviewTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.review_dir = self.tempdir('review')
|
||||
self.old_document_path_pattern = settings.DOCUMENT_PATH_PATTERN
|
||||
settings.DOCUMENT_PATH_PATTERN = self.review_dir + "/{doc.type_id}/"
|
||||
|
@ -52,6 +53,7 @@ class ReviewTests(TestCase):
|
|||
def tearDown(self):
|
||||
shutil.rmtree(self.review_dir)
|
||||
settings.DOCUMENT_PATH_PATTERN = self.old_document_path_pattern
|
||||
super().tearDown()
|
||||
|
||||
def test_request_review(self):
|
||||
doc = WgDraftFactory(group__acronym='mars',rev='01')
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
import io
|
||||
import os
|
||||
import shutil
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
|
@ -441,12 +440,14 @@ class StatusChangeTests(TestCase):
|
|||
self.assertTrue(doc.latest_event(DocEvent,type="added_comment").desc.startswith('Affected RFC list changed.'))
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
IndividualRfcFactory(alias2__name='rfc14',name='draft-was-never-issued',std_level_id='unkn')
|
||||
WgRfcFactory(alias2__name='rfc9999',name='draft-ietf-random-thing',std_level_id='ps')
|
||||
WgRfcFactory(alias2__name='rfc9998',name='draft-ietf-random-other-thing',std_level_id='inf')
|
||||
DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review',notify='notify@example.org')
|
||||
|
||||
class StatusChangeSubmitTests(TestCase):
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['STATUS_CHANGE_PATH']
|
||||
def test_initial_submission(self):
|
||||
doc = Document.objects.get(name='status-change-imaginary-mid-review')
|
||||
url = urlreverse('ietf.doc.views_status_change.submit',kwargs=dict(name=doc.name))
|
||||
|
@ -532,11 +533,5 @@ class StatusChangeSubmitTests(TestCase):
|
|||
self.assertContains(r, "This is the old proposal.")
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
DocumentFactory(type_id='statchg',name='status-change-imaginary-mid-review',notify='notify@example.org')
|
||||
self.test_dir = self.tempdir('status-change')
|
||||
self.saved_status_change_path = settings.STATUS_CHANGE_PATH
|
||||
settings.STATUS_CHANGE_PATH = self.test_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.STATUS_CHANGE_PATH = self.saved_status_change_path
|
||||
shutil.rmtree(self.test_dir)
|
||||
|
|
|
@ -17,6 +17,7 @@ class ActionHoldersTests(TestCase):
|
|||
|
||||
def setUp(self):
|
||||
"""Set up helper for the update_action_holders tests"""
|
||||
super().setUp()
|
||||
self.authors = PersonFactory.create_batch(3)
|
||||
self.ad = Person.objects.get(user__username='ad')
|
||||
self.group = GroupFactory()
|
||||
|
|
|
@ -76,6 +76,7 @@ class StreamTests(TestCase):
|
|||
class GroupDocDependencyGraphTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
set_coverage_checking(False)
|
||||
a = WgDraftFactory()
|
||||
b = WgDraftFactory()
|
||||
|
@ -83,6 +84,7 @@ class GroupDocDependencyGraphTests(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
set_coverage_checking(True)
|
||||
super().tearDown()
|
||||
|
||||
def test_group_document_dependency_dotfile(self):
|
||||
for group in Group.objects.filter(Q(type="wg") | Q(type="rg")):
|
||||
|
@ -123,6 +125,7 @@ class GroupDocDependencyGraphTests(TestCase):
|
|||
|
||||
class GenerateGroupAliasesTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.doc_aliases_file = NamedTemporaryFile(delete=False, mode='w+')
|
||||
self.doc_aliases_file.close()
|
||||
self.doc_virtual_file = NamedTemporaryFile(delete=False, mode='w+')
|
||||
|
@ -137,6 +140,7 @@ class GenerateGroupAliasesTests(TestCase):
|
|||
settings.GROUP_VIRTUAL_PATH = self.saved_draft_virtual_path
|
||||
os.unlink(self.doc_aliases_file.name)
|
||||
os.unlink(self.doc_virtual_file.name)
|
||||
super().tearDown()
|
||||
|
||||
def testManagementCommand(self):
|
||||
a_month_ago = datetime.datetime.now() - datetime.timedelta(30)
|
||||
|
@ -237,6 +241,7 @@ class GenerateGroupAliasesTests(TestCase):
|
|||
class GroupRoleEmailTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
# 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'):
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import calendar
|
||||
import datetime
|
||||
import io
|
||||
import bleach
|
||||
|
||||
from pathlib import Path
|
||||
from pyquery import PyQuery
|
||||
from tempfile import NamedTemporaryFile
|
||||
|
||||
|
@ -52,14 +52,7 @@ def pklist(docs):
|
|||
return [ str(doc.pk) for doc in docs.all() ]
|
||||
|
||||
class GroupPagesTests(TestCase):
|
||||
def setUp(self):
|
||||
self.charter_dir = self.tempdir('charter')
|
||||
self.saved_charter_path = settings.CHARTER_PATH
|
||||
settings.CHARTER_PATH = self.charter_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.CHARTER_PATH = self.saved_charter_path
|
||||
shutil.rmtree(self.charter_dir)
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CHARTER_PATH']
|
||||
|
||||
def test_active_groups(self):
|
||||
area = GroupFactory.create(type_id='area')
|
||||
|
@ -120,7 +113,7 @@ class GroupPagesTests(TestCase):
|
|||
|
||||
chair = Email.objects.filter(role__group=group, role__name="chair")[0]
|
||||
|
||||
with io.open(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev)), "w") as f:
|
||||
with (Path(settings.CHARTER_PATH) / ("%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))).open("w") as f:
|
||||
f.write("This is a charter.")
|
||||
|
||||
url = urlreverse('ietf.group.views.wg_summary_area', kwargs=dict(group_type="wg"))
|
||||
|
@ -252,7 +245,7 @@ class GroupPagesTests(TestCase):
|
|||
group = CharterFactory().group
|
||||
draft = WgDraftFactory(group=group)
|
||||
|
||||
with io.open(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev)), "w") as f:
|
||||
with (Path(settings.CHARTER_PATH) / ("%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))).open("w") as f:
|
||||
f.write("This is a charter.")
|
||||
|
||||
milestone = GroupMilestone.objects.create(
|
||||
|
@ -465,14 +458,7 @@ class GroupPagesTests(TestCase):
|
|||
|
||||
|
||||
class GroupEditTests(TestCase):
|
||||
def setUp(self):
|
||||
self.charter_dir = self.tempdir('charter')
|
||||
self.saved_charter_path = settings.CHARTER_PATH
|
||||
settings.CHARTER_PATH = self.charter_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.CHARTER_PATH = self.saved_charter_path
|
||||
shutil.rmtree(self.charter_dir)
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['CHARTER_PATH']
|
||||
|
||||
def test_create(self):
|
||||
|
||||
|
@ -632,7 +618,7 @@ class GroupEditTests(TestCase):
|
|||
self.assertTrue(len(q('form .has-error')) > 0)
|
||||
|
||||
# edit info
|
||||
with io.open(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev)), "w") as f:
|
||||
with (Path(settings.CHARTER_PATH) / ("%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))).open("w") as f:
|
||||
f.write("This is a charter.")
|
||||
area = group.parent
|
||||
ad = Person.objects.get(name="Areað Irector")
|
||||
|
@ -673,7 +659,7 @@ class GroupEditTests(TestCase):
|
|||
self.assertEqual(group.list_subscribe, "subscribe.mars")
|
||||
self.assertEqual(group.list_archive, "archive.mars")
|
||||
|
||||
self.assertTrue(os.path.exists(os.path.join(self.charter_dir, "%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))))
|
||||
self.assertTrue((Path(settings.CHARTER_PATH) / ("%s-%s.txt" % (group.charter.canonical_name(), group.charter.rev))).exists())
|
||||
self.assertEqual(len(outbox), 2)
|
||||
self.assertTrue('Personnel change' in outbox[0]['Subject'])
|
||||
for prefix in ['ad1','ad2','aread','marschairman','marsdelegate']:
|
||||
|
@ -1558,6 +1544,7 @@ class CustomizeWorkflowTests(TestCase):
|
|||
class EmailAliasesTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
PersonFactory(user__username='plain')
|
||||
GroupFactory(acronym='mars',parent=GroupFactory(type_id='area'))
|
||||
GroupFactory(acronym='ames',parent=GroupFactory(type_id='area'))
|
||||
|
@ -1580,6 +1567,7 @@ expand-ames-chairs@virtual.ietf.org mars_chair@ietf
|
|||
def tearDown(self):
|
||||
settings.GROUP_VIRTUAL_PATH = self.saved_group_virtual_path
|
||||
os.unlink(self.group_alias_file.name)
|
||||
super().tearDown()
|
||||
|
||||
def testAliases(self):
|
||||
url = urlreverse('ietf.group.urls_info_details.redirect.email', kwargs=dict(acronym="mars"))
|
||||
|
@ -1644,6 +1632,7 @@ class AjaxTests(TestCase):
|
|||
class MeetingInfoTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.group = GroupFactory.create(type_id='wg')
|
||||
today = datetime.date.today()
|
||||
SessionFactory.create(meeting__type_id='ietf',group=self.group,meeting__date=today-datetime.timedelta(days=14))
|
||||
|
|
|
@ -3,9 +3,8 @@
|
|||
|
||||
|
||||
import datetime
|
||||
import io
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
|
@ -20,17 +19,8 @@ from ietf.person.factories import PersonFactory, EmailFactory
|
|||
from ietf.utils.test_utils import TestCase
|
||||
|
||||
class IndexTests(TestCase):
|
||||
def setUp(self):
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
settings.INTERNET_DRAFT_PATH = self.id_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
|
||||
shutil.rmtree(self.id_dir)
|
||||
|
||||
def write_draft_file(self, name, size):
|
||||
with io.open(os.path.join(self.id_dir, name), 'w') as f:
|
||||
with (Path(settings.INTERNET_DRAFT_PATH) / name).open('w') as f:
|
||||
f.write("a" * size)
|
||||
|
||||
def test_all_id_txt(self):
|
||||
|
|
|
@ -4,10 +4,9 @@
|
|||
|
||||
import datetime
|
||||
import io
|
||||
import os
|
||||
import shutil
|
||||
import tarfile
|
||||
|
||||
from pathlib import Path
|
||||
from pyquery import PyQuery
|
||||
|
||||
from django.conf import settings
|
||||
|
@ -98,6 +97,7 @@ class IESGTests(TestCase):
|
|||
|
||||
class IESGAgendaTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
mars = GroupFactory(acronym='mars',parent=Group.objects.get(acronym='farfut'))
|
||||
wgdraft = WgDraftFactory(name='draft-ietf-mars-test', group=mars, intended_std_level_id='ps')
|
||||
rfc = IndividualRfcFactory.create(stream_id='irtf', other_aliases=['rfc6666',], states=[('draft','rfc'),('draft-iesg','pub')], std_level_id='inf', )
|
||||
|
@ -122,10 +122,6 @@ class IESGAgendaTests(TestCase):
|
|||
by = Person.objects.get(name="Areað Irector")
|
||||
date = get_agenda_date()
|
||||
|
||||
self.draft_dir = self.tempdir('agenda-draft')
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
settings.INTERNET_DRAFT_PATH = self.draft_dir
|
||||
|
||||
for d in list(self.telechat_docs.values()):
|
||||
TelechatDocEvent.objects.create(type="scheduled_for_telechat",
|
||||
doc=d,
|
||||
|
@ -138,10 +134,6 @@ class IESGAgendaTests(TestCase):
|
|||
for i in range(0, 10):
|
||||
self.mgmt_items.append(IESGMgmtItemFactory())
|
||||
|
||||
def tearDown(self):
|
||||
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
|
||||
shutil.rmtree(self.draft_dir)
|
||||
|
||||
def test_fill_in_agenda_docs(self):
|
||||
draft = self.telechat_docs["ietf_draft"]
|
||||
statchg = self.telechat_docs["statchg"]
|
||||
|
@ -479,7 +471,7 @@ class IESGAgendaTests(TestCase):
|
|||
d1_filename = "%s-%s.txt" % (d1.name, d1.rev)
|
||||
d2_filename = "%s-%s.txt" % (d2.name, d2.rev)
|
||||
|
||||
with io.open(os.path.join(self.draft_dir, d1_filename), "w") as f:
|
||||
with (Path(settings.INTERNET_DRAFT_PATH) / d1_filename).open("w") as f:
|
||||
f.write("test content")
|
||||
|
||||
url = urlreverse("ietf.iesg.views.telechat_docs_tarfile", kwargs=dict(date=get_agenda_date().isoformat()))
|
||||
|
|
|
@ -58,6 +58,7 @@ else:
|
|||
|
||||
class IetfAuthTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.saved_use_python_htdigest = getattr(settings, "USE_PYTHON_HTDIGEST", None)
|
||||
settings.USE_PYTHON_HTDIGEST = True
|
||||
|
||||
|
@ -74,6 +75,7 @@ class IetfAuthTests(TestCase):
|
|||
settings.USE_PYTHON_HTDIGEST = self.saved_use_python_htdigest
|
||||
settings.HTPASSWD_FILE = self.saved_htpasswd_file
|
||||
settings.HTDIGEST_REALM = self.saved_htdigest_realm
|
||||
super().tearDown()
|
||||
|
||||
def test_index(self):
|
||||
self.assertEqual(self.client.get(urlreverse(ietf.ietfauth.views.index)).status_code, 200)
|
||||
|
|
|
@ -44,12 +44,6 @@ def make_data_from_content(content):
|
|||
return data
|
||||
|
||||
class IprTests(TestCase):
|
||||
def setUp(self):
|
||||
pass
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def test_get_genitive(self):
|
||||
self.assertEqual(get_genitive("Cisco"),"Cisco's")
|
||||
self.assertEqual(get_genitive("Ross"),"Ross'")
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
|
||||
import datetime
|
||||
import io
|
||||
import os
|
||||
import shutil
|
||||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.urls import reverse as urlreverse
|
||||
|
@ -260,14 +260,7 @@ class ManagementCommandTests(TestCase):
|
|||
|
||||
|
||||
class LiaisonManagementTests(TestCase):
|
||||
def setUp(self):
|
||||
self.saved_liaison_attach_path = settings.LIAISON_ATTACH_PATH
|
||||
self.liaison_dir = self.tempdir('liaison')
|
||||
settings.LIAISON_ATTACH_PATH = self.liaison_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.LIAISON_ATTACH_PATH = self.saved_liaison_attach_path
|
||||
shutil.rmtree(self.liaison_dir)
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['LIAISON_ATTACH_PATH']
|
||||
|
||||
def test_add_restrictions(self):
|
||||
# incoming restrictions
|
||||
|
@ -443,7 +436,7 @@ class LiaisonManagementTests(TestCase):
|
|||
self.assertEqual(new_liaison.attachments.count(), attachments_before + 1)
|
||||
attachment = new_liaison.attachments.order_by("-name")[0]
|
||||
self.assertEqual(attachment.title, "attachment")
|
||||
with io.open(os.path.join(self.liaison_dir, attachment.uploaded_filename)) as f:
|
||||
with (Path(settings.LIAISON_ATTACH_PATH) / attachment.uploaded_filename).open() as f:
|
||||
written_content = f.read()
|
||||
|
||||
test_file.seek(0)
|
||||
|
@ -747,7 +740,7 @@ class LiaisonManagementTests(TestCase):
|
|||
self.assertEqual(l.attachments.count(), 1)
|
||||
attachment = l.attachments.all()[0]
|
||||
self.assertEqual(attachment.title, "attachment")
|
||||
with io.open(os.path.join(self.liaison_dir, attachment.uploaded_filename)) as f:
|
||||
with (Path(settings.LIAISON_ATTACH_PATH) / attachment.uploaded_filename).open() as f:
|
||||
written_content = f.read()
|
||||
|
||||
test_file.seek(0)
|
||||
|
@ -826,7 +819,7 @@ class LiaisonManagementTests(TestCase):
|
|||
self.assertEqual(l.attachments.count(), 1)
|
||||
attachment = l.attachments.all()[0]
|
||||
self.assertEqual(attachment.title, "attachment")
|
||||
with io.open(os.path.join(self.liaison_dir, attachment.uploaded_filename)) as f:
|
||||
with (Path(settings.LIAISON_ATTACH_PATH) / attachment.uploaded_filename).open() as f:
|
||||
written_content = f.read()
|
||||
|
||||
test_file.seek(0)
|
||||
|
|
|
@ -10,6 +10,7 @@ from ietf.utils.test_utils import TestCase
|
|||
|
||||
class GatherAddressListsTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.doc = WgDraftFactory(group__acronym='mars', rev='01')
|
||||
self.author_address = self.doc.name + '@ietf.org'
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ import debug # pyflakes:ignore
|
|||
|
||||
class ScheduleGeneratorTest(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
# Create a meeting of 2 days, 5 sessions per day, in 2 rooms. There are 3 days
|
||||
# actually created, but sundays are ignored.
|
||||
# Two rooms is a fairly low level of simultaneous schedules, this is needed
|
||||
|
|
|
@ -82,23 +82,19 @@ class BaseMeetingTestCase(TestCase):
|
|||
superclass methods.
|
||||
"""
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.materials_dir = self.tempdir('materials')
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.archive_dir = self.tempdir('id-archive')
|
||||
self.storage_dir = self.tempdir('storage')
|
||||
#
|
||||
os.mkdir(os.path.join(self.archive_dir, "unknown_ids"))
|
||||
os.mkdir(os.path.join(self.archive_dir, "deleted_tombstones"))
|
||||
os.mkdir(os.path.join(self.archive_dir, "expired_without_tombstone"))
|
||||
archive_dir = Path(settings.INTERNET_DRAFT_ARCHIVE_DIR)
|
||||
(archive_dir / "unknown_ids").mkdir()
|
||||
(archive_dir / "deleted_tombstones").mkdir()
|
||||
(archive_dir / "expired_without_tombstone").mkdir()
|
||||
#
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
self.saved_id_dir = settings.INTERNET_DRAFT_PATH
|
||||
self.saved_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
self.saved_meetinghost_logo_path = settings.MEETINGHOST_LOGO_PATH
|
||||
#
|
||||
settings.AGENDA_PATH = self.materials_dir
|
||||
settings.INTERNET_DRAFT_PATH = self.id_dir
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
|
||||
settings.MEETINGHOST_LOGO_PATH = self.storage_dir
|
||||
|
||||
# The FileSystemStorage has already set its location before
|
||||
|
@ -116,14 +112,11 @@ class BaseMeetingTestCase(TestCase):
|
|||
self.patcher.stop()
|
||||
#
|
||||
shutil.rmtree(self.storage_dir)
|
||||
shutil.rmtree(self.id_dir)
|
||||
shutil.rmtree(self.archive_dir)
|
||||
shutil.rmtree(self.materials_dir)
|
||||
#
|
||||
settings.AGENDA_PATH = self.saved_agenda_path
|
||||
settings.INTERNET_DRAFT_PATH = self.saved_id_dir
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.saved_archive_dir
|
||||
settings.MEETINGHOST_LOGO_PATH = self.saved_meetinghost_logo_path
|
||||
super().tearDown()
|
||||
|
||||
def write_materials_file(self, meeting, doc, content):
|
||||
path = os.path.join(self.materials_dir, "%s/%s/%s" % (meeting.number, doc.type_id, doc.uploaded_filename))
|
||||
|
@ -2006,6 +1999,7 @@ class ReorderSlidesTests(TestCase):
|
|||
|
||||
class EditTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
# make sure we have the colors of the area
|
||||
from ietf.group.colors import fg_group_colors, bg_group_colors
|
||||
area_upper = "FARFUT"
|
||||
|
@ -2803,6 +2797,7 @@ class SessionDetailsTests(TestCase):
|
|||
|
||||
class EditScheduleListTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.mtg = MeetingFactory(type_id='ietf')
|
||||
ScheduleFactory(meeting=self.mtg, name='secretary1')
|
||||
|
||||
|
@ -2921,14 +2916,7 @@ class EditScheduleListTests(TestCase):
|
|||
# -------------------------------------------------
|
||||
|
||||
class InterimTests(TestCase):
|
||||
def setUp(self):
|
||||
self.materials_dir = self.tempdir('materials')
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.materials_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.AGENDA_PATH = self.saved_agenda_path
|
||||
shutil.rmtree(self.materials_dir)
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
|
||||
|
||||
# test_interim_announce subsumed by test_appears_on_announce
|
||||
|
||||
|
@ -4299,12 +4287,6 @@ class AjaxTests(TestCase):
|
|||
self.assertEqual(data['utc'], '20:00')
|
||||
|
||||
class FloorPlanTests(TestCase):
|
||||
def setUp(self):
|
||||
pass
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def test_floor_plan_page(self):
|
||||
make_meeting_test_data()
|
||||
meeting = Meeting.objects.filter(type_id='ietf').order_by('id').last()
|
||||
|
@ -4319,12 +4301,6 @@ class FloorPlanTests(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
class IphoneAppJsonTests(TestCase):
|
||||
def setUp(self):
|
||||
pass
|
||||
|
||||
def tearDown(self):
|
||||
pass
|
||||
|
||||
def test_iphone_app_json_interim(self):
|
||||
make_interim_test_data()
|
||||
meeting = Meeting.objects.filter(type_id='interim').order_by('id').last()
|
||||
|
@ -4383,22 +4359,19 @@ class FinalizeProceedingsTests(TestCase):
|
|||
self.assertEqual(meeting.session_set.filter(group__acronym="mars").first().sessionpresentation_set.filter(document__type="draft").first().rev,'00')
|
||||
|
||||
class MaterialsTests(TestCase):
|
||||
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + [
|
||||
'AGENDA_PATH',
|
||||
'SLIDE_STAGING_PATH'
|
||||
]
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.materials_dir = self.tempdir('materials')
|
||||
self.staging_dir = self.tempdir('staging')
|
||||
if not os.path.exists(self.materials_dir):
|
||||
os.mkdir(self.materials_dir)
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.materials_dir
|
||||
self.saved_staging_path = settings.SLIDE_STAGING_PATH
|
||||
settings.SLIDE_STAGING_PATH = self.staging_dir
|
||||
|
||||
def tearDown(self):
|
||||
settings.AGENDA_PATH = self.saved_agenda_path
|
||||
settings.SLIDE_STAGING_PATH = self.saved_staging_path
|
||||
shutil.rmtree(self.materials_dir)
|
||||
shutil.rmtree(self.staging_dir)
|
||||
super().tearDown()
|
||||
|
||||
def crawl_materials(self, url, top):
|
||||
seen = set()
|
||||
|
@ -4926,17 +4899,7 @@ class SessionTests(TestCase):
|
|||
self.assertEqual(len(outbox),1)
|
||||
|
||||
class HasMeetingsTests(TestCase):
|
||||
def setUp(self):
|
||||
self.materials_dir = self.tempdir('materials')
|
||||
#
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
#
|
||||
settings.AGENDA_PATH = self.materials_dir
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.materials_dir)
|
||||
#
|
||||
settings.AGENDA_PATH = self.saved_agenda_path
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
|
||||
|
||||
def do_request_interim(self, url, group, user, meeting_count):
|
||||
login_testing_unauthorized(self,user.username, url)
|
||||
|
|
|
@ -15,6 +15,7 @@ from ietf.utils.test_utils import TestCase, name_of_file_containing
|
|||
@override_settings(ADMINS=(('Some Admin', 'admin@example.com'),))
|
||||
class FeedbackEmailTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.year = 2021
|
||||
self.nomcom = NomComFactory(group__acronym=f'nomcom{self.year}')
|
||||
|
||||
|
|
|
@ -76,6 +76,7 @@ class NomcomViewsTest(TestCase):
|
|||
return response
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
nomcom_test_data()
|
||||
self.cert_file, self.privatekey_file = get_cert_files()
|
||||
|
@ -107,6 +108,7 @@ class NomcomViewsTest(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
super().tearDown()
|
||||
|
||||
def access_member_url(self, url):
|
||||
login_testing_unauthorized(self, COMMUNITY_USER, url)
|
||||
|
@ -954,12 +956,14 @@ class NomineePositionStateSaveTest(TestCase):
|
|||
"""Tests for the NomineePosition save override method"""
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
nomcom_test_data()
|
||||
self.nominee = Nominee.objects.get(email__person__user__username=COMMUNITY_USER)
|
||||
|
||||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
super().tearDown()
|
||||
|
||||
def test_state_autoset(self):
|
||||
"""Verify state is autoset correctly"""
|
||||
|
@ -989,6 +993,7 @@ class NomineePositionStateSaveTest(TestCase):
|
|||
class FeedbackTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
|
||||
nomcom_test_data()
|
||||
|
@ -996,6 +1001,7 @@ class FeedbackTest(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
super().tearDown()
|
||||
|
||||
def test_encrypted_comments(self):
|
||||
|
||||
|
@ -1022,6 +1028,7 @@ class FeedbackTest(TestCase):
|
|||
class ReminderTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
nomcom_test_data()
|
||||
self.nomcom = get_nomcom_by_year(NOMCOM_YEAR)
|
||||
|
@ -1065,6 +1072,7 @@ class ReminderTest(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
super().tearDown()
|
||||
|
||||
def test_is_time_to_send(self):
|
||||
self.nomcom.reminder_interval = 4
|
||||
|
@ -1120,6 +1128,7 @@ class ReminderTest(TestCase):
|
|||
class InactiveNomcomTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
self.nc = NomComFactory.create(**nomcom_kwargs_for_year(group__state_id='conclude'))
|
||||
self.plain_person = PersonFactory.create()
|
||||
|
@ -1128,6 +1137,7 @@ class InactiveNomcomTests(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
super().tearDown()
|
||||
|
||||
def test_feedback_closed(self):
|
||||
for view in ['ietf.nomcom.views.public_feedback', 'ietf.nomcom.views.private_feedback']:
|
||||
|
@ -1314,6 +1324,7 @@ class InactiveNomcomTests(TestCase):
|
|||
class FeedbackLastSeenTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
self.nc = NomComFactory.create(**nomcom_kwargs_for_year())
|
||||
self.author = PersonFactory.create().email_set.first().address
|
||||
|
@ -1334,6 +1345,7 @@ class FeedbackLastSeenTests(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
super().tearDown()
|
||||
|
||||
def test_feedback_index_badges(self):
|
||||
url = reverse('ietf.nomcom.views.view_feedback',kwargs={'year':self.nc.year()})
|
||||
|
@ -1420,6 +1432,7 @@ class FeedbackLastSeenTests(TestCase):
|
|||
class NewActiveNomComTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
self.nc = NomComFactory.create(**nomcom_kwargs_for_year())
|
||||
self.chair = self.nc.group.role_set.filter(name='chair').first().person
|
||||
|
@ -1428,6 +1441,7 @@ class NewActiveNomComTests(TestCase):
|
|||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
settings.DAYS_TO_EXPIRE_NOMINATION_LINK = self.saved_days_to_expire_nomination_link
|
||||
super().tearDown()
|
||||
|
||||
def test_help(self):
|
||||
url = reverse('ietf.nomcom.views.configuration_help',kwargs={'year':self.nc.year()})
|
||||
|
@ -1875,6 +1889,7 @@ Junk body for testing
|
|||
|
||||
class NomComIndexTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
for year in range(2000,2014):
|
||||
NomComFactory.create(**nomcom_kwargs_for_year(year=year,populate_positions=False,populate_personnel=False))
|
||||
|
||||
|
@ -1885,6 +1900,7 @@ class NomComIndexTests(TestCase):
|
|||
|
||||
class NoPublicKeyTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.nc = NomComFactory.create(**nomcom_kwargs_for_year(public_key=None))
|
||||
self.chair = self.nc.group.role_set.filter(name='chair').first().person
|
||||
|
||||
|
@ -1914,6 +1930,7 @@ class NoPublicKeyTests(TestCase):
|
|||
|
||||
class AcceptingTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
self.nc = NomComFactory(**nomcom_kwargs_for_year())
|
||||
self.plain_person = PersonFactory.create()
|
||||
|
@ -1921,6 +1938,7 @@ class AcceptingTests(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
super().tearDown()
|
||||
|
||||
def test_public_accepting_nominations(self):
|
||||
url = reverse('ietf.nomcom.views.public_nominate',kwargs={'year':self.nc.year()})
|
||||
|
@ -2021,12 +2039,14 @@ class AcceptingTests(TestCase):
|
|||
|
||||
class ShowNomineeTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
self.nc = NomComFactory(**nomcom_kwargs_for_year())
|
||||
self.plain_person = PersonFactory.create()
|
||||
|
||||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
super().tearDown()
|
||||
|
||||
def test_feedback_pictures(self):
|
||||
url = reverse('ietf.nomcom.views.public_nominate',kwargs={'year':self.nc.year()})
|
||||
|
@ -2042,6 +2062,7 @@ class ShowNomineeTests(TestCase):
|
|||
|
||||
class TopicTests(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
setup_test_public_keys_dir(self)
|
||||
self.nc = NomComFactory(**nomcom_kwargs_for_year(populate_topics=False))
|
||||
self.plain_person = PersonFactory.create()
|
||||
|
@ -2049,7 +2070,8 @@ class TopicTests(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
teardown_test_public_keys_dir(self)
|
||||
|
||||
super().tearDown()
|
||||
|
||||
def testAddEditListRemoveTopic(self):
|
||||
self.assertFalse(self.nc.topic_set.exists())
|
||||
|
||||
|
@ -2192,6 +2214,7 @@ class EligibilityUnitTests(TestCase):
|
|||
class rfc8713EligibilityTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.nomcom = NomComFactory(group__acronym='nomcom2019', populate_personnel=False, first_call_for_volunteers=datetime.date(2019,5,1))
|
||||
|
||||
meetings = [ MeetingFactory(date=date,type_id='ietf') for date in (
|
||||
|
@ -2249,6 +2272,7 @@ class rfc8713EligibilityTests(TestCase):
|
|||
class rfc8788EligibilityTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.nomcom = NomComFactory(group__acronym='nomcom2020', populate_personnel=False, first_call_for_volunteers=datetime.date(2020,5,1))
|
||||
|
||||
meetings = [MeetingFactory(number=number, date=date, type_id='ietf') for number,date in [
|
||||
|
@ -2286,6 +2310,7 @@ class rfc8788EligibilityTests(TestCase):
|
|||
class rfc8989EligibilityTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.nomcom = NomComFactory(group__acronym='nomcom2021', populate_personnel=False, first_call_for_volunteers=datetime.date(2021,5,15))
|
||||
# make_immutable_test_data makes things this test does not want
|
||||
Role.objects.filter(name_id__in=('chair','secr')).delete()
|
||||
|
|
|
@ -76,7 +76,8 @@ class _Wrapper(TestCase):
|
|||
reviewer_queue_policy_id = ''
|
||||
|
||||
def setUp(self):
|
||||
self.team = ReviewTeamFactory(acronym="rotationteam",
|
||||
super().setUp()
|
||||
self.team = ReviewTeamFactory(acronym="rotationteam",
|
||||
name="Review Team",
|
||||
list_email="rotationteam@ietf.org",
|
||||
parent=Group.objects.get(acronym="farfut"))
|
||||
|
|
|
@ -23,6 +23,7 @@ AD_USER=''
|
|||
|
||||
class SecrAnnouncementTestCase(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
chair = RoleName.objects.get(slug='chair')
|
||||
secr = RoleName.objects.get(slug='secr')
|
||||
ietf = Group.objects.get(acronym='ietf')
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
import datetime
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from pathlib import Path
|
||||
from pyquery import PyQuery
|
||||
from io import StringIO
|
||||
|
||||
|
@ -25,27 +27,25 @@ from ietf.utils.test_utils import TestCase
|
|||
|
||||
|
||||
class SecrMeetingTestCase(TestCase):
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['AGENDA_PATH']
|
||||
def setUp(self):
|
||||
self.proceedings_dir = self.tempdir('proceedings')
|
||||
self.saved_secr_proceedings_dir = settings.SECR_PROCEEDINGS_DIR
|
||||
settings.SECR_PROCEEDINGS_DIR = self.proceedings_dir
|
||||
self.saved_agenda_path = settings.AGENDA_PATH
|
||||
settings.AGENDA_PATH = self.proceedings_dir
|
||||
|
||||
super().setUp()
|
||||
self.bluesheet_dir = self.tempdir('bluesheet')
|
||||
self.bluesheet_path = os.path.join(self.bluesheet_dir,'blue_sheet.rtf')
|
||||
self.saved_secr_blue_sheet_path = settings.SECR_BLUE_SHEET_PATH
|
||||
settings.SECR_BLUE_SHEET_PATH = self.bluesheet_path
|
||||
|
||||
self.materials_dir = self.tempdir('materials')
|
||||
|
||||
# n.b., the bluesheet upload relies on SECR_PROCEEDINGS_DIR being the same
|
||||
# as AGENDA_PATH. This is probably a bug, but may not be worth fixing if
|
||||
# the secr app is on the way out.
|
||||
self.saved_secr_proceedings_dir = settings.SECR_PROCEEDINGS_DIR
|
||||
settings.SECR_PROCEEDINGS_DIR = settings.AGENDA_PATH
|
||||
|
||||
def tearDown(self):
|
||||
settings.SECR_PROCEEDINGS_DIR = self.saved_secr_proceedings_dir
|
||||
settings.AGENDA_PATH = self.saved_agenda_path
|
||||
settings.SECR_BLUE_SHEET_PATH = self.saved_secr_blue_sheet_path
|
||||
shutil.rmtree(self.proceedings_dir)
|
||||
shutil.rmtree(self.bluesheet_dir)
|
||||
shutil.rmtree(self.materials_dir)
|
||||
super().tearDown()
|
||||
|
||||
def test_main(self):
|
||||
"Main Test"
|
||||
|
@ -170,8 +170,8 @@ class SecrMeetingTestCase(TestCase):
|
|||
def test_blue_sheets_upload(self):
|
||||
"Test Bluesheets"
|
||||
meeting = make_meeting_test_data()
|
||||
os.makedirs(os.path.join(self.proceedings_dir,str(meeting.number),'bluesheets'))
|
||||
|
||||
(Path(settings.SECR_PROCEEDINGS_DIR) / str(meeting.number) / 'bluesheets').mkdir(parents=True)
|
||||
|
||||
url = reverse('ietf.secr.meetings.views.blue_sheet',kwargs={'meeting_id':meeting.number})
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
response = self.client.get(url)
|
||||
|
|
|
@ -6,7 +6,6 @@ import debug # pyflakes:ignore
|
|||
import io
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from django.conf import settings
|
||||
from django.urls import reverse
|
||||
|
@ -65,14 +64,7 @@ class VideoRecordingTestCase(TestCase):
|
|||
self.assertEqual(urls[0]['url'],'https://www.youtube.com/watch?v=lhYWB5FFkg4&list=PLC86T-6ZTP5jo6kIuqdyeYYhsKv9sUwG1')
|
||||
|
||||
class RecordingTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.meeting_recordings_dir = self.tempdir('meeting-recordings')
|
||||
self.saved_meeting_recordings_dir = settings.MEETING_RECORDINGS_DIR
|
||||
settings.MEETING_RECORDINGS_DIR = self.meeting_recordings_dir
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.meeting_recordings_dir)
|
||||
settings.MEETING_RECORDINGS_DIR = self.saved_meeting_recordings_dir
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['MEETING_RECORDINGS_DIR']
|
||||
|
||||
def test_page(self):
|
||||
meeting = MeetingFactory(type_id='ietf')
|
||||
|
|
|
@ -15,6 +15,7 @@ SECR_USER='secretary'
|
|||
class SecrRolesMainTestCase(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
GroupFactory(type_id='sdo') # need this for the RoleForm initialization
|
||||
|
||||
def test_main(self):
|
||||
|
|
|
@ -456,6 +456,7 @@ class SubmitRequestCase(TestCase):
|
|||
|
||||
class LockAppTestCase(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.meeting = MeetingFactory(type_id='ietf', date=datetime.date.today(),session_request_lock_message='locked')
|
||||
self.group = GroupFactory(acronym='mars')
|
||||
RoleFactory(name_id='chair', group=self.group, person__user__username='marschairman')
|
||||
|
@ -531,6 +532,7 @@ class RetrievePreviousCase(TestCase):
|
|||
|
||||
class SessionFormTest(TestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.meeting = MeetingFactory(type_id='ietf')
|
||||
self.group1 = GroupFactory()
|
||||
self.group2 = GroupFactory()
|
||||
|
|
|
@ -7,7 +7,6 @@ import email
|
|||
import io
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
import mock
|
||||
|
||||
|
@ -43,6 +42,40 @@ from ietf.utils.models import VersionInfo
|
|||
from ietf.utils.test_utils import login_testing_unauthorized, TestCase
|
||||
from ietf.utils.draft import Draft
|
||||
|
||||
|
||||
class BaseSubmitTestCase(TestCase):
|
||||
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + [
|
||||
'IDSUBMIT_STAGING_PATH',
|
||||
'SUBMIT_YANG_RFC_MODEL_DIR',
|
||||
'SUBMIT_YANG_DRAFT_MODEL_DIR',
|
||||
'SUBMIT_YANG_IANA_MODEL_DIR',
|
||||
'SUBMIT_YANG_CATALOG_DIR',
|
||||
]
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
# The system apparently relies on these paths being equal. If they are not,
|
||||
# old drafts may not be moved out of the way properly.
|
||||
self.saved_repository_path = settings.IDSUBMIT_REPOSITORY_PATH
|
||||
settings.IDSUBMIT_REPOSITORY_PATH = settings.INTERNET_DRAFT_PATH
|
||||
|
||||
def tearDown(self):
|
||||
settings.IDSUBMIT_REPOSITORY_PATH = self.saved_repository_path
|
||||
super().tearDown()
|
||||
|
||||
@property
|
||||
def staging_dir(self):
|
||||
return settings.IDSUBMIT_STAGING_PATH
|
||||
|
||||
@property
|
||||
def repository_dir(self):
|
||||
return settings.IDSUBMIT_REPOSITORY_PATH
|
||||
|
||||
@property
|
||||
def archive_dir(self):
|
||||
return settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
|
||||
def submission_file(name, rev, group, format, templatename, author=None, email=None, title=None, year=None, ascii=True):
|
||||
# construct appropriate text draft
|
||||
f = io.open(os.path.join(settings.BASE_DIR, "submit", templatename))
|
||||
|
@ -112,58 +145,12 @@ def create_draft_submission_with_rev_mismatch(rev='01'):
|
|||
return draft, sub
|
||||
|
||||
|
||||
class SubmitTests(TestCase):
|
||||
class SubmitTests(BaseSubmitTestCase):
|
||||
def setUp(self):
|
||||
self.saved_idsubmit_staging_path = settings.IDSUBMIT_STAGING_PATH
|
||||
self.staging_dir = self.tempdir('submit-staging')
|
||||
settings.IDSUBMIT_STAGING_PATH = self.staging_dir
|
||||
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
self.saved_idsubmit_repository_path = settings.IDSUBMIT_REPOSITORY_PATH
|
||||
self.repository_dir = self.tempdir('submit-repository')
|
||||
settings.INTERNET_DRAFT_PATH = settings.IDSUBMIT_REPOSITORY_PATH = self.repository_dir
|
||||
|
||||
self.saved_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
self.archive_dir = self.tempdir('submit-archive')
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
|
||||
|
||||
self.saved_yang_rfc_model_dir = settings.SUBMIT_YANG_RFC_MODEL_DIR
|
||||
self.yang_rfc_model_dir = self.tempdir('yang-rfc-model')
|
||||
settings.SUBMIT_YANG_RFC_MODEL_DIR = self.yang_rfc_model_dir
|
||||
|
||||
self.saved_yang_draft_model_dir = settings.SUBMIT_YANG_DRAFT_MODEL_DIR
|
||||
self.yang_draft_model_dir = self.tempdir('yang-draft-model')
|
||||
settings.SUBMIT_YANG_DRAFT_MODEL_DIR = self.yang_draft_model_dir
|
||||
|
||||
self.saved_yang_iana_model_dir = settings.SUBMIT_YANG_IANA_MODEL_DIR
|
||||
self.yang_iana_model_dir = self.tempdir('yang-iana-model')
|
||||
settings.SUBMIT_YANG_IANA_MODEL_DIR = self.yang_iana_model_dir
|
||||
|
||||
self.saved_yang_catalog_model_dir = settings.SUBMIT_YANG_CATALOG_MODEL_DIR
|
||||
self.yang_catalog_model_dir = self.tempdir('yang-catalog-model')
|
||||
settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.yang_catalog_model_dir
|
||||
|
||||
super().setUp()
|
||||
# Submit views assume there is a "next" IETF to look for cutoff dates against
|
||||
MeetingFactory(type_id='ietf', date=datetime.date.today()+datetime.timedelta(days=180))
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.staging_dir)
|
||||
shutil.rmtree(self.repository_dir)
|
||||
shutil.rmtree(self.archive_dir)
|
||||
shutil.rmtree(self.yang_rfc_model_dir)
|
||||
shutil.rmtree(self.yang_draft_model_dir)
|
||||
shutil.rmtree(self.yang_iana_model_dir)
|
||||
shutil.rmtree(self.yang_catalog_model_dir)
|
||||
settings.IDSUBMIT_STAGING_PATH = self.saved_idsubmit_staging_path
|
||||
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
|
||||
settings.IDSUBMIT_REPOSITORY_PATH = self.saved_idsubmit_repository_path
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.saved_archive_dir
|
||||
settings.SUBMIT_YANG_RFC_MODEL_DIR = self.saved_yang_rfc_model_dir
|
||||
settings.SUBMIT_YANG_DRAFT_MODEL_DIR = self.saved_yang_draft_model_dir
|
||||
settings.SUBMIT_YANG_IANA_MODEL_DIR = self.saved_yang_iana_model_dir
|
||||
settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.saved_yang_catalog_model_dir
|
||||
|
||||
|
||||
def create_and_post_submission(self, name, rev, author, group=None, formats=("txt",), base_filename=None):
|
||||
"""Helper to create and post a submission
|
||||
|
||||
|
@ -2107,7 +2094,7 @@ class SubmitTests(TestCase):
|
|||
self.assertEqual(len(kept_div('span.label:contains("Removed")')), 0)
|
||||
self.assertEqual(len(kept_div('span.label:contains("New")')), 0)
|
||||
|
||||
class ApprovalsTestCase(TestCase):
|
||||
class ApprovalsTestCase(BaseSubmitTestCase):
|
||||
def test_approvals(self):
|
||||
RoleFactory(name_id='chair',
|
||||
group__acronym='mars',
|
||||
|
@ -2278,7 +2265,7 @@ class ApprovalsTestCase(TestCase):
|
|||
|
||||
self.assertEqual(len(Preapproval.objects.filter(name=preapproval.name)), 0)
|
||||
|
||||
class ManualPostsTestCase(TestCase):
|
||||
class ManualPostsTestCase(BaseSubmitTestCase):
|
||||
def test_manual_posts(self):
|
||||
GroupFactory(acronym='mars')
|
||||
|
||||
|
@ -2723,60 +2710,13 @@ Subject: test
|
|||
|
||||
return r
|
||||
|
||||
class ApiSubmitTests(TestCase):
|
||||
class ApiSubmitTests(BaseSubmitTestCase):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
# break early in case of missing configuration
|
||||
self.assertTrue(os.path.exists(settings.IDSUBMIT_IDNITS_BINARY))
|
||||
|
||||
self.saved_idsubmit_staging_path = settings.IDSUBMIT_STAGING_PATH
|
||||
self.staging_dir = self.tempdir('submit-staging')
|
||||
settings.IDSUBMIT_STAGING_PATH = self.staging_dir
|
||||
|
||||
self.saved_internet_draft_path = settings.INTERNET_DRAFT_PATH
|
||||
self.saved_idsubmit_repository_path = settings.IDSUBMIT_REPOSITORY_PATH
|
||||
self.repository_dir = self.tempdir('submit-repository')
|
||||
settings.INTERNET_DRAFT_PATH = settings.IDSUBMIT_REPOSITORY_PATH = self.repository_dir
|
||||
|
||||
self.saved_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
self.archive_dir = self.tempdir('submit-archive')
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
|
||||
|
||||
self.saved_yang_rfc_model_dir = settings.SUBMIT_YANG_RFC_MODEL_DIR
|
||||
self.rfc_model_dir = self.tempdir('yang-rfcmod')
|
||||
settings.SUBMIT_YANG_RFC_MODEL_DIR = self.rfc_model_dir
|
||||
|
||||
self.saved_yang_draft_model_dir = settings.SUBMIT_YANG_DRAFT_MODEL_DIR
|
||||
self.draft_model_dir = self.tempdir('yang-draftmod')
|
||||
settings.SUBMIT_YANG_DRAFT_MODEL_DIR = self.draft_model_dir
|
||||
|
||||
self.saved_yang_iana_model_dir = settings.SUBMIT_YANG_IANA_MODEL_DIR
|
||||
self.iana_model_dir = self.tempdir('yang-ianamod')
|
||||
settings.SUBMIT_YANG_IANA_MODEL_DIR = self.iana_model_dir
|
||||
|
||||
self.saved_yang_catalog_model_dir = settings.SUBMIT_YANG_CATALOG_MODEL_DIR
|
||||
self.catalog_model_dir = self.tempdir('yang-catalogmod')
|
||||
settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.catalog_model_dir
|
||||
|
||||
MeetingFactory(type_id='ietf', date=datetime.date.today()+datetime.timedelta(days=60))
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.staging_dir)
|
||||
shutil.rmtree(self.repository_dir)
|
||||
shutil.rmtree(self.archive_dir)
|
||||
shutil.rmtree(self.rfc_model_dir)
|
||||
shutil.rmtree(self.draft_model_dir)
|
||||
shutil.rmtree(self.iana_model_dir)
|
||||
shutil.rmtree(self.catalog_model_dir)
|
||||
|
||||
settings.IDSUBMIT_STAGING_PATH = self.saved_idsubmit_staging_path
|
||||
settings.INTERNET_DRAFT_PATH = self.saved_internet_draft_path
|
||||
settings.IDSUBMIT_REPOSITORY_PATH = self.saved_idsubmit_repository_path
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.saved_archive_dir
|
||||
settings.SUBMIT_YANG_RFC_MODEL_DIR = self.saved_yang_rfc_model_dir
|
||||
settings.SUBMIT_YANG_DRAFT_MODEL_DIR = self.saved_yang_draft_model_dir
|
||||
settings.SUBMIT_YANG_IANA_MODEL_DIR = self.saved_yang_iana_model_dir
|
||||
settings.SUBMIT_YANG_CATALOG_MODEL_DIR = self.saved_yang_catalog_model_dir
|
||||
|
||||
def do_post_submission(self, rev, author=None, name=None, group=None, email=None, title=None, year=None):
|
||||
url = urlreverse('ietf.submit.views.api_submit')
|
||||
if author is None:
|
||||
|
@ -2904,7 +2844,7 @@ class ApiSubmitTests(TestCase):
|
|||
)
|
||||
|
||||
|
||||
class RefsTests(TestCase):
|
||||
class RefsTests(BaseSubmitTestCase):
|
||||
|
||||
def test_draft_refs_identification(self):
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@ import io
|
|||
import json
|
||||
import datetime
|
||||
import quopri
|
||||
import shutil
|
||||
|
||||
from django.conf import settings
|
||||
from django.urls import reverse as urlreverse
|
||||
|
@ -219,22 +218,8 @@ ICANN
|
|||
|
||||
|
||||
class RFCSyncTests(TestCase):
|
||||
def setUp(self):
|
||||
self.save_id_dir = settings.INTERNET_DRAFT_PATH
|
||||
self.save_archive_dir = settings.INTERNET_DRAFT_ARCHIVE_DIR
|
||||
self.id_dir = self.tempdir('id')
|
||||
self.archive_dir = self.tempdir('id-archive')
|
||||
settings.INTERNET_DRAFT_PATH = self.id_dir
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.archive_dir
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.id_dir)
|
||||
shutil.rmtree(self.archive_dir)
|
||||
settings.INTERNET_DRAFT_PATH = self.save_id_dir
|
||||
settings.INTERNET_DRAFT_ARCHIVE_DIR = self.save_archive_dir
|
||||
|
||||
def write_draft_file(self, name, size):
|
||||
with io.open(os.path.join(self.id_dir, name), 'w') as f:
|
||||
with io.open(os.path.join(settings.INTERNET_DRAFT_PATH, name), 'w') as f:
|
||||
f.write("a" * size)
|
||||
|
||||
def test_rfc_index(self):
|
||||
|
@ -382,8 +367,8 @@ class RFCSyncTests(TestCase):
|
|||
self.assertEqual(doc.get_state_slug("draft-stream-ise"), "pub")
|
||||
self.assertEqual(doc.std_level_id, "ps")
|
||||
self.assertEqual(doc.pages, 42)
|
||||
self.assertTrue(not os.path.exists(os.path.join(self.id_dir, draft_filename)))
|
||||
self.assertTrue(os.path.exists(os.path.join(self.archive_dir, draft_filename)))
|
||||
self.assertTrue(not os.path.exists(os.path.join(settings.INTERNET_DRAFT_PATH, draft_filename)))
|
||||
self.assertTrue(os.path.exists(os.path.join(settings.INTERNET_DRAFT_ARCHIVE_DIR, draft_filename)))
|
||||
|
||||
# make sure we can apply it again with no changes
|
||||
changed = list(rfceditor.update_docs_from_rfc_index(data, errata, today - datetime.timedelta(days=30)))
|
||||
|
|
|
@ -38,6 +38,7 @@ import os
|
|||
import re
|
||||
import email
|
||||
import html5lib
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
from urllib.parse import unquote
|
||||
|
@ -151,9 +152,27 @@ class ReverseLazyTest(django.test.TestCase):
|
|||
self.assertRedirects(response, "/ipr/", status_code=301)
|
||||
|
||||
class TestCase(django.test.TestCase):
|
||||
"""IETF TestCase class
|
||||
|
||||
Based on django.test.TestCase, but adds a few things:
|
||||
* asserts for html5 validation.
|
||||
* tempdir() convenience method
|
||||
* setUp() and tearDown() that override settings paths with temp directories
|
||||
|
||||
The setUp() and tearDown() methods create / remove temporary paths and override
|
||||
Django's settings with the temp dir names. Subclasses of this class must
|
||||
be sure to call the superclass methods if they are overridden. These are created
|
||||
anew for each test to avoid risk of cross-talk between test cases. Overriding
|
||||
the settings_temp_path_overrides class value will modify which path settings are
|
||||
replaced with temp test dirs.
|
||||
"""
|
||||
Does basically the same as django.test.TestCase, but adds asserts for html5 validation.
|
||||
"""
|
||||
# These settings will be overridden with empty temporary directories
|
||||
settings_temp_path_overrides = [
|
||||
'RFC_PATH',
|
||||
'INTERNET_ALL_DRAFTS_ARCHIVE_DIR',
|
||||
'INTERNET_DRAFT_ARCHIVE_DIR',
|
||||
'INTERNET_DRAFT_PATH',
|
||||
]
|
||||
|
||||
parser = html5lib.HTMLParser(strict=True)
|
||||
|
||||
|
@ -238,4 +257,18 @@ class TestCase(django.test.TestCase):
|
|||
def __str__(self):
|
||||
return u"%s (%s.%s)" % (self._testMethodName, strclass(self.__class__),self._testMethodName)
|
||||
|
||||
|
||||
|
||||
def setUp(self):
|
||||
# Replace settings paths with temporary directories.
|
||||
super().setUp()
|
||||
self._ietf_temp_dirs = {} # trashed during tearDown, DO NOT put paths you care about in this
|
||||
for setting in self.settings_temp_path_overrides:
|
||||
self._ietf_temp_dirs[setting] = self.tempdir(slugify(setting))
|
||||
self._ietf_saved_context = django.test.utils.override_settings(**self._ietf_temp_dirs)
|
||||
self._ietf_saved_context.enable()
|
||||
|
||||
def tearDown(self):
|
||||
self._ietf_saved_context.disable()
|
||||
for dir in self._ietf_temp_dirs.values():
|
||||
shutil.rmtree(dir)
|
||||
super().tearDown()
|
||||
|
|
|
@ -188,6 +188,7 @@ class TemplateChecksTestCase(TestCase):
|
|||
templates = {} # type: Dict[str, Template]
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
set_coverage_checking(False)
|
||||
self.paths = list(get_template_paths())
|
||||
self.paths.sort()
|
||||
|
@ -199,7 +200,7 @@ class TemplateChecksTestCase(TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
set_coverage_checking(True)
|
||||
pass
|
||||
super().tearDown()
|
||||
|
||||
def test_parse_templates(self):
|
||||
errors = []
|
||||
|
@ -294,6 +295,7 @@ class TemplateChecksTestCase(TestCase):
|
|||
class TestWikiGlueManagementCommand(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
# We create temporary wiki and svn directories, and provide them to the management
|
||||
# command through command line switches. We have to do it this way because the
|
||||
# management command reads in its own copy of settings.py in its own python
|
||||
|
@ -310,6 +312,7 @@ class TestWikiGlueManagementCommand(TestCase):
|
|||
shutil.rmtree(os.path.dirname(self.wiki_dir_pattern))
|
||||
shutil.rmtree(os.path.dirname(self.svn_dir_pattern))
|
||||
set_coverage_checking(True)
|
||||
super().tearDown()
|
||||
|
||||
def test_wiki_create_output(self):
|
||||
for group_type in ['wg','rg','ag','area','rag']:
|
||||
|
@ -423,6 +426,7 @@ class TestBowerStaticFiles(TestCase):
|
|||
class DraftTests(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
file,_ = submission_file(name='draft-test-draft-class',rev='00',format='txt',templatename='test_submission.txt',group=None)
|
||||
self.draft = Draft(text=file.getvalue(),source='draft-test-draft-class-00.txt',name_from_source=False)
|
||||
|
||||
|
|
Loading…
Reference in a new issue