* check_stanza does not require stanza_class parameter. Introspection! * check_message, check_iq, and check_presence removed -- use check instead. * stream_send_stanza, stream_send_message, stream_send_iq, and stream_send_presence removed -- use send instead. * Use recv instead of recv_message, recv_presence, etc. * check_jid instead of check_JID * stream_start may accept multi=True to return a new SleekTest instance for testing multiple streams at once.
		
			
				
	
	
		
			89 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from sleekxmpp.test import *
 | 
						|
import sleekxmpp.plugins.gmail_notify as gmail
 | 
						|
 | 
						|
 | 
						|
class TestGmail(SleekTest):
 | 
						|
 | 
						|
    def setUp(self):
 | 
						|
        register_stanza_plugin(Iq, gmail.GmailQuery)
 | 
						|
        register_stanza_plugin(Iq, gmail.MailBox)
 | 
						|
        register_stanza_plugin(Iq, gmail.NewMail)
 | 
						|
 | 
						|
    def testCreateQuery(self):
 | 
						|
        """Testing querying Gmail for emails."""
 | 
						|
 | 
						|
        iq = self.Iq()
 | 
						|
        iq['type'] = 'get'
 | 
						|
        iq['gmail']['search'] = 'is:starred'
 | 
						|
        iq['gmail']['newer-than-time'] = '1140638252542'
 | 
						|
        iq['gmail']['newer-than-tid'] = '11134623426430234'
 | 
						|
 | 
						|
        self.check(iq, """
 | 
						|
          <iq type="get">
 | 
						|
            <query xmlns="google:mail:notify"
 | 
						|
                   newer-than-time="1140638252542"
 | 
						|
                   newer-than-tid="11134623426430234"
 | 
						|
                   q="is:starred" />
 | 
						|
          </iq>
 | 
						|
        """, use_values=False)
 | 
						|
 | 
						|
    def testMailBox(self):
 | 
						|
        """Testing reading from Gmail mailbox result"""
 | 
						|
 | 
						|
        # Use the example from Google's documentation at
 | 
						|
        # http://code.google.com/apis/talk/jep_extensions/gmail.html#notifications
 | 
						|
        xml = ET.fromstring("""
 | 
						|
          <iq type="result">
 | 
						|
            <mailbox xmlns="google:mail:notify"
 | 
						|
                     result-time='1118012394209'
 | 
						|
                     url='http://mail.google.com/mail'
 | 
						|
                     total-matched='95'
 | 
						|
                     total-estimate='0'>
 | 
						|
              <mail-thread-info tid='1172320964060972012'
 | 
						|
                                participation='1'
 | 
						|
                                messages='28'
 | 
						|
                                date='1118012394209'
 | 
						|
                                url='http://mail.google.com/mail?view=cv'>
 | 
						|
                <senders>
 | 
						|
                  <sender name='Me' address='romeo@gmail.com' originator='1' />
 | 
						|
                  <sender name='Benvolio' address='benvolio@gmail.com' />
 | 
						|
                  <sender name='Mercutio' address='mercutio@gmail.com' unread='1'/>
 | 
						|
                </senders>
 | 
						|
                <labels>act1scene3</labels>
 | 
						|
                <subject>Put thy rapier up.</subject>
 | 
						|
                <snippet>Ay, ay, a scratch, a scratch; marry, 'tis enough.</snippet>
 | 
						|
              </mail-thread-info>
 | 
						|
            </mailbox>
 | 
						|
          </iq>
 | 
						|
        """)
 | 
						|
 | 
						|
        iq = self.Iq(xml=xml)
 | 
						|
        mailbox = iq['mailbox']
 | 
						|
        self.failUnless(mailbox['result-time'] == '1118012394209', "result-time doesn't match")
 | 
						|
        self.failUnless(mailbox['url'] == 'http://mail.google.com/mail', "url doesn't match")
 | 
						|
        self.failUnless(mailbox['matched'] == '95', "total-matched incorrect")
 | 
						|
        self.failUnless(mailbox['estimate'] == False, "total-estimate incorrect")
 | 
						|
        self.failUnless(len(mailbox['threads']) == 1, "could not extract message threads")
 | 
						|
 | 
						|
        thread = mailbox['threads'][0]
 | 
						|
        self.failUnless(thread['tid'] == '1172320964060972012', "thread tid doesn't match")
 | 
						|
        self.failUnless(thread['participation'] == '1', "thread participation incorrect")
 | 
						|
        self.failUnless(thread['messages'] == '28', "thread message count incorrect")
 | 
						|
        self.failUnless(thread['date'] == '1118012394209', "thread date doesn't match")
 | 
						|
        self.failUnless(thread['url'] == 'http://mail.google.com/mail?view=cv', "thread url doesn't match")
 | 
						|
        self.failUnless(thread['labels'] == 'act1scene3', "thread labels incorrect")
 | 
						|
        self.failUnless(thread['subject'] == 'Put thy rapier up.', "thread subject doesn't match")
 | 
						|
        self.failUnless(thread['snippet'] == "Ay, ay, a scratch, a scratch; marry, 'tis enough.", "snippet doesn't match")
 | 
						|
        self.failUnless(len(thread['senders']) == 3, "could not extract senders")
 | 
						|
 | 
						|
        sender1 = thread['senders'][0]
 | 
						|
        self.failUnless(sender1['name'] == 'Me', "sender name doesn't match")
 | 
						|
        self.failUnless(sender1['address'] == 'romeo@gmail.com', "sender address doesn't match")
 | 
						|
        self.failUnless(sender1['originator'] == True, "sender originator incorrect")
 | 
						|
        self.failUnless(sender1['unread'] == False, "sender unread incorrectly True")
 | 
						|
 | 
						|
        sender2 = thread['senders'][2]
 | 
						|
        self.failUnless(sender2['unread'] == True, "sender unread incorrectly False")
 | 
						|
 | 
						|
suite = unittest.TestLoader().loadTestsFromTestCase(TestGmail)
 |