Ejemplo n.º 1
0
 def test_properties_on_new_message(self):
     ml = FakeList("example-list")
     ml.display_name = u"name 1"
     ml.subject_prefix = u"[prefix 1]"
     ml.description = u"desc 1"
     kittystore.utils.MM_CLIENT.get_list.side_effect = lambda n: ml
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<dummy>"
     msg.set_payload("Dummy message")
     self.store.add_to_list("example-list", msg)
     ml_db = self.store.get_lists()[0]
     self.assertEqual(ml_db.display_name, "name 1")
     self.assertEqual(ml_db.subject_prefix, "[prefix 1]")
     ml.display_name = u"name 2"
     ml.subject_prefix = u"[prefix 2]"
     ml.description = u"desc 2"
     ml.archive_policy = "private"
     msg.replace_header("Message-ID", "<dummy2>")
     self.store.add_to_list("example-list", msg)
     ml_db = self.store.get_lists()[0]
     #ml_db = self.store.db.find(List).one()
     self.assertEqual(ml_db.display_name, "name 2")
     self.assertEqual(ml_db.subject_prefix, "[prefix 2]")
     self.assertEqual(ml_db.description, "desc 2")
     self.assertEqual(ml_db.archive_policy, ArchivePolicy.private)
Ejemplo n.º 2
0
 def test_vote_cancel(self):
     ml = FakeList("*****@*****.**")
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<msg1>"
     msg.set_payload("Dummy message")
     self.store.add_to_list(ml, msg)
     msg.replace_header("Message-ID", "<msg2>")
     self.store.add_to_list(ml, msg)
     msg1 = self.store.get_message_by_id_from_list("*****@*****.**", "msg1")
     msg1.vote(1, u"testuser")
     msg2 = self.store.get_message_by_id_from_list("*****@*****.**", "msg2")
     msg2.vote(-1, u"testuser")
     self.assertEqual(msg1.likes, 1)
     self.assertEqual(msg2.dislikes, 1)
     for msg in (msg1, msg2):
         url = reverse('message_vote', args=("*****@*****.**",
                       msg.message_id_hash))
         resp = self.client.post(url, {"vote": "0"})
         self.assertEqual(resp.status_code, 200)
         self.assertEqual(msg.likes, 0)
         self.assertEqual(msg.dislikes, 0)
         result = json.loads(resp.content)
         self.assertEqual(result["like"], 0)
         self.assertEqual(result["dislike"], 0)
 def test_properties_on_new_message(self):
     ml = FakeList("example-list")
     ml.display_name = "name 1"
     ml.subject_prefix = "[prefix 1]"
     ml.description = "desc 1"
     kittystore.utils.MM_CLIENT.get_list.side_effect = lambda n: ml
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<dummy>"
     msg.set_payload("Dummy message")
     self.store.add_to_list("example-list", msg)
     ml_db = self.store.get_lists()[0]
     self.assertEqual(ml_db.display_name, "name 1")
     self.assertEqual(ml_db.subject_prefix, "[prefix 1]")
     ml.display_name = "name 2"
     ml.subject_prefix = "[prefix 2]"
     ml.description = "desc 2"
     ml.archive_policy = "private"
     msg.replace_header("Message-ID", "<dummy2>")
     self.store.add_to_list("example-list", msg)
     ml_db = self.store.get_lists()[0]
     #ml_db = self.store.db.find(List).one()
     self.assertEqual(ml_db.display_name, "name 2")
     self.assertEqual(ml_db.subject_prefix, "[prefix 2]")
     self.assertEqual(ml_db.description, "desc 2")
     self.assertEqual(ml_db.archive_policy, ArchivePolicy.private)
Ejemplo n.º 4
0
 def test_vote_cancel(self):
     ml = FakeList("*****@*****.**")
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<msg1>"
     msg.set_payload("Dummy message")
     self.store.add_to_list(ml, msg)
     msg.replace_header("Message-ID", "<msg2>")
     self.store.add_to_list(ml, msg)
     msg1 = self.store.get_message_by_id_from_list("*****@*****.**",
                                                   "msg1")
     msg1.vote(1, u"testuser")
     msg2 = self.store.get_message_by_id_from_list("*****@*****.**",
                                                   "msg2")
     msg2.vote(-1, u"testuser")
     self.assertEqual(msg1.likes, 1)
     self.assertEqual(msg2.dislikes, 1)
     for msg in (msg1, msg2):
         url = reverse('message_vote',
                       args=("*****@*****.**", msg.message_id_hash))
         resp = self.client.post(url, {"vote": "0"})
         self.assertEqual(resp.status_code, 200)
         self.assertEqual(msg.likes, 0)
         self.assertEqual(msg.dislikes, 0)
         result = json.loads(resp.content)
         self.assertEqual(result["like"], 0)
         self.assertEqual(result["dislike"], 0)
Ejemplo n.º 5
0
 def test_duplicate_nonascii(self):
     msg = Message()
     msg["From"] = b"*****@*****.**"
     msg["Message-ID"] = "<dummy>"
     msg.set_payload("Dummy message")
     self.store.add_to_list(FakeList("example-list"), msg)
     self.assertEqual(self.store.get_list_size("example-list"), 1)
     self.assertTrue(self.store.is_message_in_list("example-list", "dummy"))
     msg.replace_header("From", b"dummy-non-ascii\xc3\[email protected]")
     try:
         self.store.add_to_list(FakeList("example-list"), msg)
     except UnicodeDecodeError, e:
         self.fail("Died on a non-ascii header message: %s" % unicode(e))
Ejemplo n.º 6
0
 def test_on_new_thread_invalidate(self):
     # Check that the cache is invalidated on new message
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<dummy>"
     msg.set_payload("Dummy message")
     self.store.add_to_list("example-list", msg)
     msg.replace_header("Message-ID", "<dummy2>")
     msg["In-Reply-To"] = "<dummy>"
     self.store.add_to_list("example-list", msg)
     call_args = [ call[0][0] for call in self.store.db.cache.set.call_args_list ]
     # we have duplicates because both the Storm and the SQLAlchemy model
     # subscribe to the event, so we must deduplicate
     call_args = set(call_args)
     #from pprint import pprint; pprint(call_args)
     #print(repr(call_args))
     self.assertEqual(call_args, set([
         u'list:example-list:thread:QKODQBCADMDSP5YPOPKECXQWEQAMXZL3:subject'
         ]))
Ejemplo n.º 7
0
 def test_on_new_thread_invalidate(self):
     # Check that the cache is invalidated on new message
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<dummy>"
     msg.set_payload("Dummy message")
     self.store.add_to_list("example-list", msg)
     msg.replace_header("Message-ID", "<dummy2>")
     msg["In-Reply-To"] = "<dummy>"
     self.store.add_to_list("example-list", msg)
     call_args = [ call[0][0] for call in self.store.db.cache.set.call_args_list ]
     # we have duplicates because both the Storm and the SQLAlchemy model
     # subscribe to the event, so we must deduplicate
     call_args = set(call_args)
     #from pprint import pprint; pprint(call_args)
     #print(repr(call_args))
     self.assertEqual(call_args, set([
         u'list:example-list:thread:QKODQBCADMDSP5YPOPKECXQWEQAMXZL3:subject'
         ]))