def test_prototype_no_url(self): # The prototype archiver is not web-based, it must not return URLs config.push('archiver', """ [archiver.prototype] enable: yes """) self.addCleanup(config.pop, 'archiver') rfc_2369.process(self._mlist, self._msg, {}) self.assertNotIn('Archived-At', self._msg) self.assertNotIn('List-Archive', self._msg)
def test_not_archived(self): # Messages sent to non-archived lists must not get the added headers. self._mlist.archive_policy = ArchivePolicy.never config.push('archiver', """ [archiver.dummy] class: {}.DummyArchiver enable: yes """.format(DummyArchiver.__module__)) self.addCleanup(config.pop, 'archiver') rfc_2369.process(self._mlist, self._msg, {}) self.assertNotIn('List-Archive', self._msg) self.assertNotIn('Archived-At', self._msg)
def test_add_headers(self): # Test the addition of the Archived-At and List-Archive headers. config.push('archiver', """ [archiver.dummy] class: {}.DummyArchiver enable: yes """.format(DummyArchiver.__module__)) self.addCleanup(config.pop, 'archiver') rfc_2369.process(self._mlist, self._msg, {}) self.assertEqual( self._msg.get_all('List-Archive'), ['<http://example.com>']) self.assertEqual( self._msg.get_all('Archived-At'), ['<http://example.com/4CMWUN6BHVCMHMDAOSJZ2Q72G5M32MWB>'])
def test_add_headers(self): # Test the addition of the Archived-At and List-Archive headers. config.push('archiver', """ [archiver.dummy] class: {}.DummyArchiver enable: yes """.format(DummyArchiver.__module__)) self.addCleanup(config.pop, 'archiver') rfc_2369.process(self._mlist, self._msg, {}) self.assertEqual( self._msg.get_all('List-Archive'), ['<http://lists.example.com>']) self.assertEqual( self._msg.get_all('Archived-At'), ['<http://lists.example.com/4CMWUN6BHVCMHMDAOSJZ2Q72G5M32MWB>'])
def test_broken_archiver(self): # GL issue #208 - IArchive messages raise exceptions, breaking the # rfc-2369 handler and shunting messages. config.push('archiver', """ [archiver.broken] class: {}.BrokenArchiver enable: yes """.format(BrokenArchiver.__module__)) self.addCleanup(config.pop, 'archiver') mark = LogFileMark('mailman.archiver') rfc_2369.process(self._mlist, self._msg, {}) log_messages = mark.read() # Because .list_url() was broken, there will be no List-Archive header. self.assertIsNone(self._msg.get('list-archive')) self.assertIn('Exception in "broken" archiver', log_messages) self.assertIn('RuntimeError: Cannot get list URL', log_messages) # Because .permalink() was broken, there will be no Archived-At header. self.assertIsNone(self._msg.get('archived-at')) self.assertIn('Exception in "broken" archiver', log_messages) self.assertIn('RuntimeError: Cannot get permalink', log_messages)