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