Ticket #1105: twistedmail-imap-flags-anywhere-test.diff

File twistedmail-imap-flags-anywhere-test.diff, 4.4 KB (added by jhohm, 12 years ago)

Test FLAGS anywhere inside FETCH response

  • TwistedMail-0.4.0/twisted/mail/test/test_imap.py

    old new  
    18421842            ).addCallback(strip(fetch)
    18431843            ).addCallback(test)
    18441844
     1845    def testFlagsChangedInsideFetchSpecificResponse(self):
     1846
     1847        class StillSimplerClient(imap4.IMAP4Client):
     1848            events = []
     1849            def flagsChanged(self, newFlags):
     1850                self.events.append(['flagsChanged', newFlags])
     1851
     1852        transport = StringTransport()
     1853        c = StillSimplerClient()
     1854        c.makeConnection(transport)
     1855        c.lineReceived('* OK [IMAP4rev1]')
     1856
     1857        def login():
     1858            d = c.login('blah', 'blah')
     1859            c.dataReceived('0001 OK LOGIN\r\n')
     1860            return d
     1861        def select():
     1862            d = c.select('inbox')
     1863            c.lineReceived('0002 OK SELECT')
     1864            return d
     1865        def fetch():
     1866            d = c.fetchSpecific('1:*',
     1867                headerType='HEADER.FIELDS',
     1868                headerArgs=['SUBJECT'])
     1869            c.dataReceived('* 1 FETCH (BODY[HEADER.FIELDS ("SUBJECT")] {38}\r\n')
     1870            c.dataReceived('Subject: Suprise for your woman...\r\n')
     1871            c.dataReceived('\r\n')
     1872            c.dataReceived(' FLAGS (\Seen))\r\n')
     1873            c.dataReceived('* 2 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS ("SUBJECT")] {75}\r\n')
     1874            c.dataReceived('Subject: What you been doing. Order your meds here . ,. handcuff madsen\r\n')
     1875            c.dataReceived('\r\n')
     1876            c.dataReceived(')\r\n')
     1877            c.dataReceived('0003 OK FETCH completed\r\n')
     1878            return d
     1879        def test(res):
     1880            self.assertEquals(res, {
     1881                1: [['BODY', ['HEADER.FIELDS', ['SUBJECT']],
     1882                    'Subject: Suprise for your woman...\r\n\r\n']],
     1883                2: [['BODY', ['HEADER.FIELDS', ['SUBJECT']],
     1884                    'Subject: What you been doing. Order your meds here . ,. handcuff madsen\r\n\r\n']]
     1885            })
     1886
     1887            self.assertEquals(c.events, [
     1888                ['flagsChanged', {1: ['\\Seen']}],
     1889                ['flagsChanged', {2: ['\\Seen']}]
     1890            ])
     1891
     1892        return login(
     1893            ).addCallback(strip(select)
     1894            ).addCallback(strip(fetch)
     1895            ).addCallback(test)
     1896
     1897    def testFlagsChangedInsideFetchMessageResponse(self):
     1898
     1899        class StillSimplerClient(imap4.IMAP4Client):
     1900            events = []
     1901            def flagsChanged(self, newFlags):
     1902                self.events.append(['flagsChanged', newFlags])
     1903
     1904        transport = StringTransport()
     1905        c = StillSimplerClient()
     1906        c.makeConnection(transport)
     1907        c.lineReceived('* OK [IMAP4rev1]')
     1908
     1909        def login():
     1910            d = c.login('blah', 'blah')
     1911            c.dataReceived('0001 OK LOGIN\r\n')
     1912            return d
     1913        def select():
     1914            d = c.select('inbox')
     1915            c.lineReceived('0002 OK SELECT')
     1916            return d
     1917        def fetch():
     1918            d = c.fetchMessage('1:*')
     1919            c.dataReceived('* 1 FETCH (RFC822 {38}\r\n')
     1920            c.dataReceived('Subject: Suprise for your woman...\r\n')
     1921            c.dataReceived('\r\n')
     1922            c.dataReceived(' FLAGS (\Seen))\r\n')
     1923            c.dataReceived('* 2 FETCH (FLAGS (\Recent \Seen) RFC822 {75}\r\n')
     1924            c.dataReceived('Subject: What you been doing. Order your meds here . ,. handcuff madsen\r\n')
     1925            c.dataReceived('\r\n')
     1926            c.dataReceived(')\r\n')
     1927            c.dataReceived('0003 OK FETCH completed\r\n')
     1928            return d
     1929        def test(res):
     1930            self.assertEquals(res, {
     1931                1: {'RFC822': 'Subject: Suprise for your woman...\r\n\r\n',
     1932                    'FLAGS': ['\\Seen']
     1933                    },
     1934                2: {'RFC822': 'Subject: What you been doing. Order your meds here . ,. handcuff madsen\r\n\r\n',
     1935                    'FLAGS': ['\\Recent', '\\Seen']
     1936                    },
     1937            })
     1938
     1939            self.assertEquals(c.events, [
     1940                ['flagsChanged', {1: ['\\Seen']}],
     1941                ['flagsChanged', {2: ['\\Recent', '\\Seen']}]
     1942            ])
     1943
     1944        return login(
     1945            ).addCallback(strip(select)
     1946            ).addCallback(strip(fetch)
     1947            ).addCallback(test)
     1948
    18451949class FakeyServer(imap4.IMAP4Server):
    18461950    state = 'select'
    18471951    timeout = None