diff --git a/jabber/storage.py b/jabber/storage.py
index 9653e7f..805bfcc 100644
--- a/jabber/storage.py
+++ b/jabber/storage.py
@@ -123,12 +123,12 @@ class DBMStorage(Storage):
print >>sys.stderr, e
def __setitem__(self, pk_tuple, obj):
- print "Adding " + "#".join(pk_tuple) + " = " + str(obj)
+# print "Adding " + "#".join(pk_tuple) + " = " + str(obj)
self.__str_registered["#".join(pk_tuple)] = str(obj)
self.sync()
def __getitem__(self, pk_tuple):
- print "Getting " + "#".join(pk_tuple)
+# print "Getting " + "#".join(pk_tuple)
if len(pk_tuple) == self.nb_pk_fields:
return mailconnection_factory.str_to_mail_connection(self.__str_registered["#".join(pk_tuple)])
else:
@@ -139,7 +139,7 @@ class DBMStorage(Storage):
if regexp.search(key)]
def __delitem__(self, pk_tuple):
- print "Deleting " + "#".join(pk_tuple)
+# print "Deleting " + "#".join(pk_tuple)
del self.__str_registered["#".join(pk_tuple)]
self.sync()
diff --git a/run_test.py b/run_test.py
index 4b97f72..a281fa2 100644
--- a/run_test.py
+++ b/run_test.py
@@ -59,7 +59,7 @@ if __name__ == '__main__':
component2_suite, \
storage_suite, \
dbmstorage_suite))
- test_support.run_suite(component_suite)
+ test_support.run_suite(component2_suite)
# coverage.stop()
# coverage.analysis(jabber.mailconnection_factory)
diff --git a/tests/dummy_server.py b/tests/dummy_server.py
index fba36cb..4235cef 100644
--- a/tests/dummy_server.py
+++ b/tests/dummy_server.py
@@ -24,6 +24,7 @@ import sys
import time
import traceback
import re
+import os
import socket
import types
import select
@@ -114,7 +115,7 @@ class XMLDummyServer(DummyServer):
# received size is based on the expected size in self.queries
data = conn.recv(1024 + len(self.queries[idx]))
if data:
- print "-----------RECEIVE " + data
+# print "-----------RECEIVE " + data
r = self._reader.feed(data)
except:
type, value, stack = sys.exc_info()
@@ -131,7 +132,7 @@ class XMLDummyServer(DummyServer):
else:
response = self.responses[idx]
if response is not None:
- print >>sys.stderr, '---------SENDING : ', response
+# print >>sys.stderr, '---------SENDING : ', response
conn.send(response)
conn.close()
except:
@@ -143,15 +144,21 @@ class XMLDummyServer(DummyServer):
def verify_queries(self):
result = True
queries_len = len(self.queries)
- if queries_len == len(self.real_queries):
+ if queries_len == len(self.real_queries):
+ full_real_queries = ""
+ full_recv_queries = ""
for idx in range(queries_len):
- real_query = xml.dom.minidom.parseString(self.real_queries[idx])
- recv_query = xml.dom.minidom.parseString(self.queries[idx])
- if not utils.xmldiff(real_query, recv_query):
- result = False
- print >>sys.stderr, "Unexpected query :\n" + \
- "Expected query : _" + self.queries[idx] + "_\n" + \
- "Receive query : _" + self.real_queries[idx] + "_\n"
+ full_real_queries += self.real_queries[idx].rstrip(os.linesep)
+ full_recv_queries += self.queries[idx].rstrip(os.linesep)
+ # Do not receive it but add it so that xml parsing can succeed
+ full_real_queries += ""
+ real_query = xml.dom.minidom.parseString(full_real_queries)
+ recv_query = xml.dom.minidom.parseString(full_recv_queries)
+ try:
+ utils.xmldiff(real_query, recv_query)
+ except Exception, msg:
+ result = False
+ print >>sys.stderr, msg
else:
result = False
print >>sys.stderr, "Expected " + str(queries_len) + \
diff --git a/tests/test_component.py b/tests/test_component.py
index cce9c71..013083c 100644
--- a/tests/test_component.py
+++ b/tests/test_component.py
@@ -70,11 +70,8 @@ class MailComponent_TestCase_Basic(unittest.TestCase):
def test_run(self):
self.server.responses = ["", \
""]
- # TODO : concatenate all queries to parse xml
self.server.queries = ["", \
- ""]
-# self.server.queries = ["<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>\s", \
-# "\s*"]
+ "[0-9abcdef]*"]
self.mail_component.run(1)
self.failUnless(self.server.verify_queries())
# TODO : more assertion
@@ -82,9 +79,9 @@ class MailComponent_TestCase_Basic(unittest.TestCase):
class MailComponent_TestCase_NoReg(unittest.TestCase):
def setUp(self):
self.handler = TestStreamHandler()
- logger = logging.getLogger()
- logger.addHandler(logging.StreamHandler())
- logger.setLevel(logging.DEBUG)
+# logger = logging.getLogger()
+# logger.addHandler(logging.StreamHandler())
+# logger.setLevel(logging.DEBUG)
self.mail_component = MailComponent(Config("tests/jmc-test.xml"))
self.server = dummy_server.XMLDummyServer("localhost", 55555, None, self.handler)
thread.start_new_thread(self.server.serve, ())
@@ -97,10 +94,10 @@ class MailComponent_TestCase_NoReg(unittest.TestCase):
self.server.responses = ["", \
"", \
""]
- self.server.queries = ["<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>\s?" + \
+ self.server.queries = ["" + \
"", \
- "\s*", \
- ""]
+ "[0-9abcdef]*", \
+ ""]
self.mail_component.run(1)
self.failUnless(self.server.verify_queries())
@@ -109,102 +106,103 @@ class MailComponent_TestCase_NoReg(unittest.TestCase):
self.server.responses = ["", \
"", \
""]
- self.server.queries = ["<\?xml version=\"1.0\" encoding=\"UTF-8\"\?>\s?" + \
+ self.server.queries = ["" + \
"", \
- "\s*", \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "Jabber Mail connection registration\s?" + \
- "Enter anything below\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "INBOX\s?" + \
- "\s?" + \
- "\s?" + \
- "2\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "2\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "1\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "1\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "0\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- "5\s?" + \
- "\s?" + \
- "\s?" + \
- "\s?" + \
- ""]
+ "[0-9abcdef]*", \
+ "" + \
+ "" + \
+ "" + \
+ "Jabber Mail connection registration" + \
+ "Enter anything below" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "INBOX" + \
+ "" + \
+ "" + \
+ "2" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "2" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "1" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "1" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "0" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ "5" + \
+ "" + \
+ "" + \
+ "" + \
+ "" + \
+ ""]
self.mail_component.run(1)
self.failUnless(self.server.verify_queries())
diff --git a/tests/test_mailconnection.py b/tests/test_mailconnection.py
index 9844682..00f4935 100644
--- a/tests/test_mailconnection.py
+++ b/tests/test_mailconnection.py
@@ -213,7 +213,7 @@ class IMAPConnection_TestCase(unittest.TestCase):
if core:
core(self)
self.imap_connection.disconnect()
- self.failUnless(self.server.verify_queries("Sended queries does not match expected queries."))
+ self.failUnless(self.server.verify_queries())
return inner
test_connection = make_test()
diff --git a/tests/test_mailconnection_factory.py b/tests/test_mailconnection_factory.py
index 1d0ad5f..8cbbfdf 100644
--- a/tests/test_mailconnection_factory.py
+++ b/tests/test_mailconnection_factory.py
@@ -22,6 +22,7 @@
import unittest
from jabber.mailconnection_factory import *
+from jabber import mailconnection
class MailConnectionFactory_TestCase(unittest.TestCase):
def test_new_mail_connection_imap(self):
@@ -41,56 +42,56 @@ class MailConnectionFactory_TestCase(unittest.TestCase):
self.assertEquals(mc, mc)
def test_str_to_mail_connection_imap(self):
- mc = str_to_mail_connection("imap#login#passwd#host#193#nothing#nothing#nothing#nothing#retrieve#INBOX")
+ mc = str_to_mail_connection("imap#login#passwd#host#193#0#0#0#1#2#INBOX")
self.assertEquals(mc.get_type(), "imap")
self.assertEquals(mc.login, "login")
self.assertEquals(mc.password, "passwd")
self.assertEquals(mc.host, "host")
self.assertEquals(mc.port, 193)
self.assertEquals(mc.mailbox, "INBOX")
- self.assertEquals(mc.ffc_action, "nothing")
- self.assertEquals(mc.online_action, "nothing")
- self.assertEquals(mc.away_action, "nothing")
- self.assertEquals(mc.ea_action, "nothing")
- self.assertEquals(mc.offline_action, "retrieve")
+ self.assertEquals(mc.ffc_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.online_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.away_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.ea_action, mailconnection.DIGEST)
+ self.assertEquals(mc.offline_action, mailconnection.RETRIEVE)
def test_str_to_mail_connection_imaps(self):
- mc = str_to_mail_connection("imaps#login#passwd#host#993#nothing#nothing#nothing#nothing#retrieve#INBOX.SubDir")
+ mc = str_to_mail_connection("imaps#login#passwd#host#993#0#0#0#1#2#INBOX.SubDir")
self.assertEquals(mc.get_type(), "imaps")
self.assertEquals(mc.login, "login")
self.assertEquals(mc.password, "passwd")
self.assertEquals(mc.host, "host")
self.assertEquals(mc.port, 993)
self.assertEquals(mc.mailbox, "INBOX.SubDir")
- self.assertEquals(mc.ffc_action, "nothing")
- self.assertEquals(mc.online_action, "nothing")
- self.assertEquals(mc.away_action, "nothing")
- self.assertEquals(mc.ea_action, "nothing")
- self.assertEquals(mc.offline_action, "retrieve")
+ self.assertEquals(mc.ffc_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.online_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.away_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.ea_action, mailconnection.DIGEST)
+ self.assertEquals(mc.offline_action, mailconnection.RETRIEVE)
def test_str_to_mail_connection_pop3(self):
- mc = str_to_mail_connection("pop3#login#passwd#host#110#nothing#nothing#nothing#nothing#retrieve")
+ mc = str_to_mail_connection("pop3#login#passwd#host#110#0#0#0#1#2")
self.assertEquals(mc.get_type(), "pop3")
self.assertEquals(mc.login, "login")
self.assertEquals(mc.password, "passwd")
self.assertEquals(mc.host, "host")
self.assertEquals(mc.port, 110)
- self.assertEquals(mc.ffc_action, "nothing")
- self.assertEquals(mc.online_action, "nothing")
- self.assertEquals(mc.away_action, "nothing")
- self.assertEquals(mc.ea_action, "nothing")
- self.assertEquals(mc.offline_action, "retrieve")
+ self.assertEquals(mc.ffc_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.online_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.away_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.ea_action, mailconnection.DIGEST)
+ self.assertEquals(mc.offline_action, mailconnection.RETRIEVE)
def test_str_to_mail_connection_pop3s(self):
- mc = str_to_mail_connection("pop3s#login#passwd#host#995#nothing#nothing#nothing#nothing#retrieve")
+ mc = str_to_mail_connection("pop3s#login#passwd#host#995#0#0#0#1#2")
self.assertEquals(mc.get_type(), "pop3s")
self.assertEquals(mc.login, "login")
self.assertEquals(mc.password, "passwd")
self.assertEquals(mc.host, "host")
self.assertEquals(mc.port, 995)
- self.assertEquals(mc.ffc_action, "nothing")
- self.assertEquals(mc.online_action, "nothing")
- self.assertEquals(mc.away_action, "nothing")
- self.assertEquals(mc.ea_action, "nothing")
- self.assertEquals(mc.offline_action, "retrieve")
+ self.assertEquals(mc.ffc_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.online_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.away_action, mailconnection.DO_NOTHING)
+ self.assertEquals(mc.ea_action, mailconnection.DIGEST)
+ self.assertEquals(mc.offline_action, mailconnection.RETRIEVE)
diff --git a/tests/utils.py b/tests/utils.py
index a24f93f..4537e79 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -21,80 +21,75 @@
##
import xml.dom.minidom
-
-#document = ""
-# document = """\
-#
-# Demo slideshow
-# Slide title
-# This is a demo
-# Of a program for processing slides
-#
-
-# Another demo slide
-# It is important
-# To have more than
-# one slide
-#
-#
-# """
-
-# document1 = """\
-#
-# Demo slideshow
-# Slide title
-# This is a demo
-# Of a program for processing slides
-#
-
-# Another demo slide
-# It is important1
-# To have more than
-# one slide
-#
-#
-# """
-
-#dom = xml.dom.minidom.parseString(document)
-#dom1 = xml.dom.minidom.parseString(document)
-
-# def getText(nodelist):
-# rc = ""
-# for node in nodelist:
-# if node.nodeType == node.TEXT_NODE:
-# rc = rc + node.data
-# return rc
+import re
def xmldiff(node1, node2):
if node1.nodeType == node1.TEXT_NODE:
if not node2.nodeType == node2.TEXT_NODE \
- or node1.data != node2.data:
- return False
+ or re.compile(node2.data + "$").match(node1.data) is None:
+ raise Exception("data in text node " + node1.data + " does not match " + node2.data)
elif node1.nodeType == node1.DOCUMENT_NODE:
if not node2.nodeType == node2.DOCUMENT_NODE:
- return False
+ raise Exception("node1 is Document but not node2 (" + node2.nodeType + ")")
elif node1.tagName != node2.tagName:
- return False
+ raise Exception("Different tag name : " + node1.tagName + " != " + node2.tagName)
else:
for attr in node1._get_attributes().keys():
if not node2.hasAttribute(attr) \
or node1.getAttribute(attr) != node2.getAttribute(attr):
- return False
+ raise Exception("(" + node1.tagName + ") Different attributes : " + node1.getAttribute(attr) + " != " + node2.getAttribute(attr))
+ if len(node1.childNodes) != len(node2.childNodes):
+ raise Exception("(" + node1.tagName + ") Different children number : " + str(len(node1.childNodes)) + " != " + str(len(node2.childNodes)))
for i in range(len(node1.childNodes)):
- if not xmldiff(node1.childNodes[i], node2.childNodes[i]):
- return False
- return True
+ xmldiff(node1.childNodes[i], node2.childNodes[i])
-#print xmldiff(dom, dom1)
+# def xmldiff(events1, events2):
+# for (event1, node1) in events1:
+# (event2, node2) = events2.next()
+# print event1 + " " + str(node1)
+# if not (event1 == event2) or not xml_diff_nodes(node1, node2):
+# return False
+# return True
-# def nodediff(node1, node2):
-# if not node1.name == node2.name:
-# return False
-# for properties in node1.properties:
-# if node2.hasAttribute(attr):
-
-# def xmldiff(xpath, node1, node2):
-# if not nodediff(node1, node2):
-# return False
-# for child in node1.children:
+if __name__ == "__main__":
+ document1 = """\
+
+ Demo slideshow
+ Slide title
+ This is a demo
+ Of a program for processing slides
+
+
+ Another demo slide
+ It is important
+ To have more than
+ one slide
+
+
+ """
+
+ document2 = """\
+
+ Demo slideshow
+ Slide title
+ This is a demo
+ Of a program for processing slides
+
+
+ Another demo slide
+ It is important
+ To have more than
+ one slide
+
+
+ """
+
+ dom1 = xml.dom.minidom.parseString(document1)
+ dom2 = xml.dom.minidom.parseString(document2)
+
+ try:
+ xmldiff(dom1, dom2)
+ except Exception, msg:
+ print msg
+