|
10 | 10 | import bibtexparser |
11 | 11 | import mock |
12 | 12 |
|
13 | | - |
14 | 13 | from http.cookies import SimpleCookie |
15 | 14 | from pyquery import PyQuery |
16 | 15 | from urllib.parse import urlparse, parse_qs |
17 | 16 | from tempfile import NamedTemporaryFile |
18 | 17 |
|
| 18 | +from django.core.management import call_command |
19 | 19 | from django.urls import reverse as urlreverse |
20 | 20 | from django.conf import settings |
21 | 21 |
|
@@ -1371,7 +1371,123 @@ def test_references(self): |
1371 | 1371 | r = self.client.get(url) |
1372 | 1372 | self.assertEqual(r.status_code, 200) |
1373 | 1373 | self.assertContains(r, doc1.name) |
1374 | | - |
| 1374 | + |
| 1375 | +class GenerateDraftAliasesTests(TestCase): |
| 1376 | + def setUp(self): |
| 1377 | + self.doc_aliases_file = NamedTemporaryFile(delete=False, mode='w+') |
| 1378 | + self.doc_aliases_file.close() |
| 1379 | + self.doc_virtual_file = NamedTemporaryFile(delete=False, mode='w+') |
| 1380 | + self.doc_virtual_file.close() |
| 1381 | + self.saved_draft_aliases_path = settings.DRAFT_ALIASES_PATH |
| 1382 | + self.saved_draft_virtual_path = settings.DRAFT_VIRTUAL_PATH |
| 1383 | + settings.DRAFT_ALIASES_PATH = self.doc_aliases_file.name |
| 1384 | + settings.DRAFT_VIRTUAL_PATH = self.doc_virtual_file.name |
| 1385 | + |
| 1386 | + def tearDown(self): |
| 1387 | + settings.DRAFT_ALIASES_PATH = self.saved_draft_aliases_path |
| 1388 | + settings.DRAFT_VIRTUAL_PATH = self.saved_draft_virtual_path |
| 1389 | + os.unlink(self.doc_aliases_file.name) |
| 1390 | + os.unlink(self.doc_virtual_file.name) |
| 1391 | + |
| 1392 | + def testManagementCommand(self): |
| 1393 | + a_month_ago = datetime.datetime.now() - datetime.timedelta(30) |
| 1394 | + ad = RoleFactory(name_id='ad', group__type_id='area', group__state_id='active').person |
| 1395 | + shepherd = PersonFactory() |
| 1396 | + author1 = PersonFactory() |
| 1397 | + author2 = PersonFactory() |
| 1398 | + author3 = PersonFactory() |
| 1399 | + author4 = PersonFactory() |
| 1400 | + author5 = PersonFactory() |
| 1401 | + author6 = PersonFactory() |
| 1402 | + mars = GroupFactory(type_id='wg', acronym='mars') |
| 1403 | + marschairman = PersonFactory(user__username='marschairman') |
| 1404 | + mars.role_set.create(name_id='chair', person=marschairman, email=marschairman.email()) |
| 1405 | + doc1 = IndividualDraftFactory(authors=[author1], shepherd=shepherd.email(), ad=ad) |
| 1406 | + doc2 = WgDraftFactory(name='draft-ietf-mars-test', group__acronym='mars', authors=[author2], ad=ad) |
| 1407 | + doc3 = WgRfcFactory.create(name='draft-ietf-mars-finished', group__acronym='mars', authors=[author3], ad=ad, std_level_id='ps', states=[('draft','rfc'),('draft-iesg','pub')], time=a_month_ago) |
| 1408 | + DocEventFactory.create(doc=doc3, type='published_rfc', time=a_month_ago.strftime("%Y-%m-%d")) |
| 1409 | + doc4 = WgRfcFactory.create(authors=[author4,author5], ad=ad, std_level_id='ps', states=[('draft','rfc'),('draft-iesg','pub')], time=datetime.datetime(2010,10,10)) |
| 1410 | + DocEventFactory.create(doc=doc4, type='published_rfc', time = '2010-10-10') |
| 1411 | + doc5 = IndividualDraftFactory(authors=[author6]) |
| 1412 | + |
| 1413 | + args = [ ] |
| 1414 | + kwargs = { } |
| 1415 | + out = io.StringIO() |
| 1416 | + call_command("generate_draft_aliases", *args, **kwargs, stdout=out, stderr=out) |
| 1417 | + self.assertFalse(out.getvalue()) |
| 1418 | + |
| 1419 | + with open(settings.DRAFT_ALIASES_PATH) as afile: |
| 1420 | + acontent = afile.read() |
| 1421 | + self.assertTrue(all([x in acontent for x in [ |
| 1422 | + 'xfilter-' + doc1.name, |
| 1423 | + 'xfilter-' + doc1.name + '.ad', |
| 1424 | + 'xfilter-' + doc1.name + '.authors', |
| 1425 | + 'xfilter-' + doc1.name + '.shepherd', |
| 1426 | + 'xfilter-' + doc1.name + '.all', |
| 1427 | + 'xfilter-' + doc2.name, |
| 1428 | + 'xfilter-' + doc2.name + '.ad', |
| 1429 | + 'xfilter-' + doc2.name + '.authors', |
| 1430 | + 'xfilter-' + doc2.name + '.chairs', |
| 1431 | + 'xfilter-' + doc2.name + '.all', |
| 1432 | + 'xfilter-' + doc3.name, |
| 1433 | + 'xfilter-' + doc3.name + '.ad', |
| 1434 | + 'xfilter-' + doc3.name + '.authors', |
| 1435 | + 'xfilter-' + doc3.name + '.chairs', |
| 1436 | + 'xfilter-' + doc5.name, |
| 1437 | + 'xfilter-' + doc5.name + '.authors', |
| 1438 | + 'xfilter-' + doc5.name + '.all', |
| 1439 | + ]])) |
| 1440 | + self.assertFalse(all([x in acontent for x in [ |
| 1441 | + 'xfilter-' + doc1.name + '.chairs', |
| 1442 | + 'xfilter-' + doc2.name + '.shepherd', |
| 1443 | + 'xfilter-' + doc3.name + '.shepherd', |
| 1444 | + 'xfilter-' + doc4.name, |
| 1445 | + 'xfilter-' + doc5.name + '.shepherd', |
| 1446 | + 'xfilter-' + doc5.name + '.ad', |
| 1447 | + ]])) |
| 1448 | + |
| 1449 | + with open(settings.DRAFT_VIRTUAL_PATH) as vfile: |
| 1450 | + vcontent = vfile.read() |
| 1451 | + self.assertTrue(all([x in vcontent for x in [ |
| 1452 | + ad.email_address(), |
| 1453 | + shepherd.email_address(), |
| 1454 | + marschairman.email_address(), |
| 1455 | + author1.email_address(), |
| 1456 | + author2.email_address(), |
| 1457 | + author3.email_address(), |
| 1458 | + author6.email_address(), |
| 1459 | + ]])) |
| 1460 | + self.assertFalse(all([x in vcontent for x in [ |
| 1461 | + author4.email_address(), |
| 1462 | + author5.email_address(), |
| 1463 | + ]])) |
| 1464 | + self.assertTrue(all([x in vcontent for x in [ |
| 1465 | + 'xfilter-' + doc1.name, |
| 1466 | + 'xfilter-' + doc1.name + '.ad', |
| 1467 | + 'xfilter-' + doc1.name + '.authors', |
| 1468 | + 'xfilter-' + doc1.name + '.shepherd', |
| 1469 | + 'xfilter-' + doc1.name + '.all', |
| 1470 | + 'xfilter-' + doc2.name, |
| 1471 | + 'xfilter-' + doc2.name + '.ad', |
| 1472 | + 'xfilter-' + doc2.name + '.authors', |
| 1473 | + 'xfilter-' + doc2.name + '.chairs', |
| 1474 | + 'xfilter-' + doc2.name + '.all', |
| 1475 | + 'xfilter-' + doc3.name, |
| 1476 | + 'xfilter-' + doc3.name + '.ad', |
| 1477 | + 'xfilter-' + doc3.name + '.authors', |
| 1478 | + 'xfilter-' + doc3.name + '.chairs', |
| 1479 | + 'xfilter-' + doc5.name, |
| 1480 | + 'xfilter-' + doc5.name + '.authors', |
| 1481 | + 'xfilter-' + doc5.name + '.all', |
| 1482 | + ]])) |
| 1483 | + self.assertFalse(all([x in vcontent for x in [ |
| 1484 | + 'xfilter-' + doc1.name + '.chairs', |
| 1485 | + 'xfilter-' + doc2.name + '.shepherd', |
| 1486 | + 'xfilter-' + doc3.name + '.shepherd', |
| 1487 | + 'xfilter-' + doc4.name, |
| 1488 | + 'xfilter-' + doc5.name + '.shepherd', |
| 1489 | + 'xfilter-' + doc5.name + '.ad', |
| 1490 | + ]])) |
1375 | 1491 |
|
1376 | 1492 | class EmailAliasesTests(TestCase): |
1377 | 1493 |
|
|
0 commit comments