17db96d56Sopenharmony_ciimport unittest 27db96d56Sopenharmony_ciimport textwrap 37db96d56Sopenharmony_ciimport copy 47db96d56Sopenharmony_ciimport pickle 57db96d56Sopenharmony_ciimport email 67db96d56Sopenharmony_ciimport email.message 77db96d56Sopenharmony_cifrom email import policy 87db96d56Sopenharmony_cifrom email.headerregistry import HeaderRegistry 97db96d56Sopenharmony_cifrom test.test_email import TestEmailBase, parameterize 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci@parameterize 137db96d56Sopenharmony_ciclass TestPickleCopyHeader(TestEmailBase): 147db96d56Sopenharmony_ci 157db96d56Sopenharmony_ci header_factory = HeaderRegistry() 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_ci unstructured = header_factory('subject', 'this is a test') 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ci header_params = { 207db96d56Sopenharmony_ci 'subject': ('subject', 'this is a test'), 217db96d56Sopenharmony_ci 'from': ('from', 'frodo@mordor.net'), 227db96d56Sopenharmony_ci 'to': ('to', 'a: k@b.com, y@z.com;, j@f.com'), 237db96d56Sopenharmony_ci 'date': ('date', 'Tue, 29 May 2012 09:24:26 +1000'), 247db96d56Sopenharmony_ci } 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci def header_as_deepcopy(self, name, value): 277db96d56Sopenharmony_ci header = self.header_factory(name, value) 287db96d56Sopenharmony_ci h = copy.deepcopy(header) 297db96d56Sopenharmony_ci self.assertEqual(str(h), str(header)) 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci def header_as_pickle(self, name, value): 327db96d56Sopenharmony_ci header = self.header_factory(name, value) 337db96d56Sopenharmony_ci for proto in range(pickle.HIGHEST_PROTOCOL + 1): 347db96d56Sopenharmony_ci p = pickle.dumps(header, proto) 357db96d56Sopenharmony_ci h = pickle.loads(p) 367db96d56Sopenharmony_ci self.assertEqual(str(h), str(header)) 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci@parameterize 407db96d56Sopenharmony_ciclass TestPickleCopyMessage(TestEmailBase): 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ci # Message objects are a sequence, so we have to make them a one-tuple in 437db96d56Sopenharmony_ci # msg_params so they get passed to the parameterized test method as a 447db96d56Sopenharmony_ci # single argument instead of as a list of headers. 457db96d56Sopenharmony_ci msg_params = {} 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci # Note: there will be no custom header objects in the parsed message. 487db96d56Sopenharmony_ci msg_params['parsed'] = (email.message_from_string(textwrap.dedent("""\ 497db96d56Sopenharmony_ci Date: Tue, 29 May 2012 09:24:26 +1000 507db96d56Sopenharmony_ci From: frodo@mordor.net 517db96d56Sopenharmony_ci To: bilbo@underhill.org 527db96d56Sopenharmony_ci Subject: help 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci I think I forgot the ring. 557db96d56Sopenharmony_ci """), policy=policy.default),) 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci msg_params['created'] = (email.message.Message(policy=policy.default),) 587db96d56Sopenharmony_ci msg_params['created'][0]['Date'] = 'Tue, 29 May 2012 09:24:26 +1000' 597db96d56Sopenharmony_ci msg_params['created'][0]['From'] = 'frodo@mordor.net' 607db96d56Sopenharmony_ci msg_params['created'][0]['To'] = 'bilbo@underhill.org' 617db96d56Sopenharmony_ci msg_params['created'][0]['Subject'] = 'help' 627db96d56Sopenharmony_ci msg_params['created'][0].set_payload('I think I forgot the ring.') 637db96d56Sopenharmony_ci 647db96d56Sopenharmony_ci def msg_as_deepcopy(self, msg): 657db96d56Sopenharmony_ci msg2 = copy.deepcopy(msg) 667db96d56Sopenharmony_ci self.assertEqual(msg2.as_string(), msg.as_string()) 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci def msg_as_pickle(self, msg): 697db96d56Sopenharmony_ci for proto in range(pickle.HIGHEST_PROTOCOL + 1): 707db96d56Sopenharmony_ci p = pickle.dumps(msg, proto) 717db96d56Sopenharmony_ci msg2 = pickle.loads(p) 727db96d56Sopenharmony_ci self.assertEqual(msg2.as_string(), msg.as_string()) 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ciif __name__ == '__main__': 767db96d56Sopenharmony_ci unittest.main() 77