Beispiel #1
0
    def test_or(self):
        g = IMAPFilterGenerator()
        ctx = {
            'mime': 'application/pdf',
            'size': 200 * 1024,
            'from': '*****@*****.**',
            'cc': '',
            'subject': 'mako',
            'section': '1.1'
        }
        p = SimpleEvaluator(ctx)

        t = 'from~="test" | mime="application/pdf"'
        self.assertEqual(g.parse(t), '')
        self.assertTrue(p.parse(t))

        t = 'from~="test" | (mime="application/pdf")'
        self.assertEqual(g.parse(t), '')
        self.assertTrue(p.parse(t))
        t = '(mime="application/pdf") | from~="test"'
        self.assertEqual(g.parse(t), '')
        self.assertTrue(p.parse(t))
        t = '(mime="application/pdf") | (from~="test")'
        self.assertEqual(g.parse(t), '')
        self.assertTrue(p.parse(t))

        t = '(mime="application/pdf" & ! from ~= "siska" & ! cc~="nekdo" & size>100k & size<1M) | (mime="image/png")'
        self.assertEqual(g.parse(t), '')
        self.assertTrue(p.parse(t))
Beispiel #2
0
    def test_imap(self):
        g = IMAPFilterGenerator()
        p = SimpleEvaluator(CONTEXT)
        t1 = 'to ~= "myself"'
        self.assertEqual(g.parse(t1), 'TO "myself"')
        self.assertTrue(p.parse(t1))

        t1 = 'to ^= "myself"'
        self.assertEqual(g.parse(t1), 'TO "myself"')
        t1 = 'to $= "myself"'
        self.assertEqual(g.parse(t1), 'TO "myself"')

        t2 = 'mime = "image/png"'
        self.assertEqual(g.parse(t2), '')
        self.assertTrue(p.parse(t2))

        t3 = 'to = "myself"'
        self.assertEqual(g.parse(t3), 'TO "myself"')
        self.assertFalse(p.parse(t3))

        t4 = 'to ~= "myself" & subject ~= "test"'
        self.assertEqual(g.parse(t4), '(TO "myself" SUBJECT "test")')
        self.assertTrue(p.parse(t4))

        t5 = 'to ~= "myself" | subject ~= "test"'
        self.assertEqual(g.parse(t5), '(OR TO "myself" SUBJECT "test")')
        self.assertTrue(p.parse(t5))

        t6 = 'to ~= "myself" & mime ~= "image"'
        self.assertEqual(g.parse(t6), 'TO "myself"')
        self.assertTrue(p.parse(t6))

        t7 = 'mime~="image" & subject ~= "test"'
        self.assertEqual(g.parse(t7), 'SUBJECT "test"')
        self.assertTrue(p.parse(t7))
Beispiel #3
0
 def test_imap(self):
     g=IMAPFilterGenerator()
     p=SimpleEvaluator( CONTEXT)
     t1='to ~= "myself"'
     self.assertEqual(g.parse(t1), 'TO "myself"')
     self.assertTrue(p.parse(t1))
     
     t1='to ^= "myself"'
     self.assertEqual(g.parse(t1), 'TO "myself"')
     t1='to $= "myself"'
     self.assertEqual(g.parse(t1), 'TO "myself"')
     
     t2='mime = "image/png"'
     self.assertEqual(g.parse(t2), '')
     self.assertTrue(p.parse(t2))
     
     t3='to = "myself"'
     self.assertEqual(g.parse(t3), 'TO "myself"')
     self.assertFalse(p.parse(t3))
     
     t4='to ~= "myself" & subject ~= "test"'
     self.assertEqual(g.parse(t4), '(TO "myself" SUBJECT "test")')
     self.assertTrue(p.parse(t4))
     
     t5='to ~= "myself" | subject ~= "test"'
     self.assertEqual(g.parse(t5), '(OR TO "myself" SUBJECT "test")')
     self.assertTrue(p.parse(t5))
     
     t6='to ~= "myself" & mime ~= "image"'
     self.assertEqual(g.parse(t6), 'TO "myself"')
     self.assertTrue(p.parse(t6))
     
     t7='mime~="image" & subject ~= "test"'
     self.assertEqual(g.parse(t7), 'SUBJECT "test"')
     self.assertTrue(p.parse(t7))
Beispiel #4
0
 def test_custom_flags(self):
     g=IMAPFilterGenerator(unsafe=True)
     ctx={'flags':TagList(['$Forwarded', 'NotJunk'])}
     p=SimpleEvaluator(ctx)
     t='flags = "$Forwarded"'
     self.assertEqual(g.parse(t), 'KEYWORD "$Forwarded"')
     self.assertTrue(p.parse(t))
     
     t='flags ^= "$Forwarded"'
     self.assertEqual(g.parse(t), '')
     self.assertTrue(p.parse(t))
Beispiel #5
0
 def test_text(self):
     g=IMAPFilterGenerator(unsafe=True)
     ctx={'mime':'application/pdf', 'name':'soubor.pdf'}
     p=SimpleEvaluator(ctx)
     t='mime="application/pdf" & name ~= "soubor"'
     self.assertEqual(g.parse(t), '(TEXT "application/pdf" TEXT "soubor")')
     self.assertTrue(p.parse(t))
     
     t='mime^="application" & name $= ".pdf"'
     self.assertEqual(g.parse(t), '(TEXT "application" TEXT ".pdf")')
     self.assertTrue(p.parse(t))
Beispiel #6
0
    def test_text(self):
        g = IMAPFilterGenerator(unsafe=True)
        ctx = {'mime': 'application/pdf', 'name': 'soubor.pdf'}
        p = SimpleEvaluator(ctx)
        t = 'mime="application/pdf" & name ~= "soubor"'
        self.assertEqual(g.parse(t), '(TEXT "application/pdf" TEXT "soubor")')
        self.assertTrue(p.parse(t))

        t = 'mime^="application" & name $= ".pdf"'
        self.assertEqual(g.parse(t), '(TEXT "application" TEXT ".pdf")')
        self.assertTrue(p.parse(t))
Beispiel #7
0
    def test_custom_flags(self):
        g = IMAPFilterGenerator(unsafe=True)
        ctx = {'flags': TagList(['$Forwarded', 'NotJunk'])}
        p = SimpleEvaluator(ctx)
        t = 'flags = "$Forwarded"'
        self.assertEqual(g.parse(t), 'KEYWORD "$Forwarded"')
        self.assertTrue(p.parse(t))

        t = 'flags ^= "$Forwarded"'
        self.assertEqual(g.parse(t), '')
        self.assertTrue(p.parse(t))
Beispiel #8
0
 def test_notimap(self):
     g=IMAPFilterGenerator()
     ctx={'mime':'text/plain', 'date': datetime(2015,10,13), 'year':2015, 'subject':'mako','section':'1.1'}
     p=SimpleEvaluator(ctx)
     t='(section="1" | section~="1.")'
     self.assertEqual(g.parse(t), '')
     self.assertEqual(g.parse(t, serialize='list'), [])
     self.assertTrue(p.parse(t))
     t='mime="text/plain" & year=2015 & ! subject^="re:" & (section="1" | section~="1.")'    
     self.assertEqual(g.parse(t), '(SINCE 1-Jan-2015 BEFORE 1-Jan-2016) (NOT SUBJECT "re:")')
     self.assertEqual(g.parse(t, serialize='list'), ['(','SINCE', '1-Jan-2015', 'BEFORE',  '1-Jan-2016', ')', '(', 'NOT', 'SUBJECT', "re:", ')'])
     self.assertTrue(p.parse(t))
Beispiel #9
0
    def test_imap2(self):
        g = IMAPFilterGenerator()
        p = SimpleEvaluator(CONTEXT)

        t8 = 'to ~= "myself" | mime ~= "image"'
        self.assertEqual(g.parse(t8), '')
        self.assertTrue(p.parse(t8))

        t9 = 'mime~="image" | subject ~= "test"'
        self.assertEqual(g.parse(t9), '')
        self.assertTrue(p.parse(t9))

        t10 = '! subject ~= "test"'
        self.assertEqual(g.parse(t10), '(NOT SUBJECT "test")')
        self.assertFalse(p.parse(t10))
Beispiel #10
0
 def test_imap2(self):
     g=IMAPFilterGenerator()
     p=SimpleEvaluator( CONTEXT)
        
     t8='to ~= "myself" | mime ~= "image"'
     self.assertEqual(g.parse(t8), '')
     self.assertTrue(p.parse(t8))
     
     t9='mime~="image" | subject ~= "test"'
     self.assertEqual(g.parse(t9), '')
     self.assertTrue(p.parse(t9))
     
     t10='! subject ~= "test"'
     self.assertEqual(g.parse(t10), '(NOT SUBJECT "test")')
     self.assertFalse(p.parse(t10))
Beispiel #11
0
 def test_imap4(self):
     g=IMAPFilterGenerator()
     p=SimpleEvaluator( CONTEXT)
     
     t='subject~= "test" & mime ~= "image" |  to ~= "myself"'
     self.assertEqual(g.parse(t), '(OR SUBJECT "test" TO "myself")')
     self.assertTrue(p.parse(t))
     
     t='subject~= "test" |  mime ~= "image" &  to ~= "myself"'
     self.assertEqual(g.parse(t), '(OR SUBJECT "test" TO "myself")')
     self.assertTrue(p.parse(t))
     
     t='subject~="test" & seen | to~="myself" &  ! recent'
     self.assertEqual( g.parse(t), '(OR (SUBJECT "test" SEEN) (TO "myself" (NOT RECENT)))')
     self.assertTrue(p.parse(t))
Beispiel #12
0
 def test_list(self):
     g=IMAPFilterGenerator()
     t1='to ~= "myself"'
     self.assertEqual(g.parse(t1, serialize='list'), ['TO', "myself"])
     
     t10='! subject ~= "test"'
     self.assertEqual(g.parse(t10, serialize='list'), ['(','NOT', 'SUBJECT', "test",')'])
     
     
     
     t="date <= 2015-11-15"
     self.assertEqual(g.parse(t,  serialize='list'), ['(','OR', 'BEFORE', '15-Nov-2015',  'ON', '15-Nov-2015', ')'])
     
     t='(! subject ~= "test" | from ~= "example.com") & ( ! recent |  seen)'
     self.assertEqual(g.parse(t, serialize = 'list'),['(','(','(','OR', '(' ,'NOT', 'SUBJECT', "test",')', 'FROM', "example.com",')',')', '(','(','OR', '(', 'NOT', 'RECENT',')', 'SEEN',')',')',')'])
Beispiel #13
0
 def test_imap3(self):
     g=IMAPFilterGenerator()
     p=SimpleEvaluator( CONTEXT)    
     
     t='(! subject ~= "test" | from ~= "example.com") & ( ! recent |  seen)'
     self.assertEqual(g.parse(t),'(((OR (NOT SUBJECT "test") FROM "example.com")) ((OR (NOT RECENT) SEEN)))')
     self.assertTrue(p.parse(t))
     
     
     t='subject ~= "test" & from ~= "example.com" & to ~= "myself"' 
     self.assertEqual(g.parse(t), '(SUBJECT "test" FROM "example.com" TO "myself")')
     self.assertTrue(p.parse(t))
     
     t='subject ~= "test" | from ~= "example.com" | to ~= "myself"' 
     self.assertEqual(g.parse(t), '(OR SUBJECT "test" (OR FROM "example.com" TO "myself"))')
     self.assertTrue(p.parse(t))
Beispiel #14
0
    def test_imap4(self):
        g = IMAPFilterGenerator()
        p = SimpleEvaluator(CONTEXT)

        t = 'subject~= "test" & mime ~= "image" |  to ~= "myself"'
        self.assertEqual(g.parse(t), '(OR SUBJECT "test" TO "myself")')
        self.assertTrue(p.parse(t))

        t = 'subject~= "test" |  mime ~= "image" &  to ~= "myself"'
        self.assertEqual(g.parse(t), '(OR SUBJECT "test" TO "myself")')
        self.assertTrue(p.parse(t))

        t = 'subject~="test" & seen | to~="myself" &  ! recent'
        self.assertEqual(
            g.parse(t),
            '(OR (SUBJECT "test" SEEN) (TO "myself" (NOT RECENT)))')
        self.assertTrue(p.parse(t))
Beispiel #15
0
    def test_size(self):
        g = IMAPFilterGenerator()
        ctx = {'size': 5 * 1024}
        p = SimpleEvaluator(ctx)

        t = "size > 4k"
        self.assertEqual(g.parse(t), "LARGER %d" % (4 * 1024))
        self.assertTrue(p.parse(t))

        t = "size >= 4k"
        self.assertEqual(g.parse(t), "LARGER %d" % (4 * 1024))
        self.assertTrue(p.parse(t))

        t = "size < 4k"
        self.assertEqual(g.parse(t), '')
        self.assertFalse(p.parse(t))

        t = "size <= 4k"
        self.assertEqual(g.parse(t), '')
        self.assertFalse(p.parse(t))
Beispiel #16
0
    def test_list(self):
        g = IMAPFilterGenerator()
        t1 = 'to ~= "myself"'
        self.assertEqual(g.parse(t1, serialize='list'), ['TO', "myself"])

        t10 = '! subject ~= "test"'
        self.assertEqual(g.parse(t10, serialize='list'),
                         ['(', 'NOT', 'SUBJECT', "test", ')'])

        t = "date <= 2015-11-15"
        self.assertEqual(
            g.parse(t, serialize='list'),
            ['(', 'OR', 'BEFORE', '15-Nov-2015', 'ON', '15-Nov-2015', ')'])

        t = '(! subject ~= "test" | from ~= "example.com") & ( ! recent |  seen)'
        self.assertEqual(g.parse(t, serialize='list'), [
            '(', '(', '(', 'OR', '(', 'NOT', 'SUBJECT', "test", ')', 'FROM',
            "example.com", ')', ')', '(', '(', 'OR', '(', 'NOT', 'RECENT', ')',
            'SEEN', ')', ')', ')'
        ])
Beispiel #17
0
 def test_size(self):
     g=IMAPFilterGenerator()
     ctx={'size' : 5 * 1024}
     p=SimpleEvaluator(ctx)
     
     t="size > 4k"
     self.assertEqual(g.parse(t), "LARGER %d"% (4*1024))
     self.assertTrue(p.parse(t))
     
     t="size >= 4k"
     self.assertEqual(g.parse(t), "LARGER %d"% (4*1024))
     self.assertTrue(p.parse(t))
     
     t="size < 4k"
     self.assertEqual(g.parse(t), '')
     self.assertFalse(p.parse(t))
     
     t="size <= 4k"
     self.assertEqual(g.parse(t), '')
     self.assertFalse(p.parse(t))
Beispiel #18
0
    def test_imap3(self):
        g = IMAPFilterGenerator()
        p = SimpleEvaluator(CONTEXT)

        t = '(! subject ~= "test" | from ~= "example.com") & ( ! recent |  seen)'
        self.assertEqual(
            g.parse(t),
            '(((OR (NOT SUBJECT "test") FROM "example.com")) ((OR (NOT RECENT) SEEN)))'
        )
        self.assertTrue(p.parse(t))

        t = 'subject ~= "test" & from ~= "example.com" & to ~= "myself"'
        self.assertEqual(g.parse(t),
                         '(SUBJECT "test" FROM "example.com" TO "myself")')
        self.assertTrue(p.parse(t))

        t = 'subject ~= "test" | from ~= "example.com" | to ~= "myself"'
        self.assertEqual(
            g.parse(t),
            '(OR SUBJECT "test" (OR FROM "example.com" TO "myself"))')
        self.assertTrue(p.parse(t))
Beispiel #19
0
 def test_date(self):
     
     g=IMAPFilterGenerator()
     ctx={'date' : datetime(2015,11,15)}
     p=SimpleEvaluator(ctx)
     t="date = 2015-11-15"
     self.assertEqual(g.parse(t), "ON 15-Nov-2015")
     self.assertTrue(p.parse(t))
     
     t="date < 2015-11-14"
     self.assertEqual(g.parse(t), 'BEFORE 14-Nov-2015')
     self.assertFalse(p.parse(t))
     
     t="date > 2015-11-14"
     self.assertEqual(g.parse(t), '(OR SINCE 14-Nov-2015 NOT (ON 14-Nov-2015))')
     self.assertTrue(p.parse(t))
     
     t="date <= 2015-11-15"
     self.assertEqual(g.parse(t), '(OR BEFORE 15-Nov-2015 ON 15-Nov-2015)')
     self.assertTrue(p.parse(t))
     
     t="date >= 2015-11-15"
     self.assertEqual(g.parse(t), 'SINCE 15-Nov-2015')
     self.assertTrue(p.parse(t))
     
     p=SimpleEvaluator({'date' : datetime(2015,11,15,15,10)})
     t="date <= 2015-11-15"
     self.assertEqual(g.parse(t), '(OR BEFORE 15-Nov-2015 ON 15-Nov-2015)')
     self.assertTrue(p.parse(t))
Beispiel #20
0
    def test_date(self):

        g = IMAPFilterGenerator()
        ctx = {'date': datetime(2015, 11, 15)}
        p = SimpleEvaluator(ctx)
        t = "date = 2015-11-15"
        self.assertEqual(g.parse(t), "ON 15-Nov-2015")
        self.assertTrue(p.parse(t))

        t = "date < 2015-11-14"
        self.assertEqual(g.parse(t), 'BEFORE 14-Nov-2015')
        self.assertFalse(p.parse(t))

        t = "date > 2015-11-14"
        self.assertEqual(g.parse(t),
                         '(OR SINCE 14-Nov-2015 NOT (ON 14-Nov-2015))')
        self.assertTrue(p.parse(t))

        t = "date <= 2015-11-15"
        self.assertEqual(g.parse(t), '(OR BEFORE 15-Nov-2015 ON 15-Nov-2015)')
        self.assertTrue(p.parse(t))

        t = "date >= 2015-11-15"
        self.assertEqual(g.parse(t), 'SINCE 15-Nov-2015')
        self.assertTrue(p.parse(t))

        p = SimpleEvaluator({'date': datetime(2015, 11, 15, 15, 10)})
        t = "date <= 2015-11-15"
        self.assertEqual(g.parse(t), '(OR BEFORE 15-Nov-2015 ON 15-Nov-2015)')
        self.assertTrue(p.parse(t))
Beispiel #21
0
 def test_or(self):
     g=IMAPFilterGenerator()
     ctx={'mime':'application/pdf', 'size': 200*1024, 'from':'*****@*****.**', 'cc':'','subject':'mako','section':'1.1'}
     p=SimpleEvaluator(ctx)
     
     t='from~="test" | mime="application/pdf"'
     self.assertEqual(g.parse(t), '')
     self.assertTrue(p.parse(t))
     
     t='from~="test" | (mime="application/pdf")'
     self.assertEqual(g.parse(t), '')
     self.assertTrue(p.parse(t))
     t='(mime="application/pdf") | from~="test"'
     self.assertEqual(g.parse(t), '')
     self.assertTrue(p.parse(t))
     t='(mime="application/pdf") | (from~="test")'
     self.assertEqual(g.parse(t), '')
     self.assertTrue(p.parse(t))
     
     t='(mime="application/pdf" & ! from ~= "siska" & ! cc~="nekdo" & size>100k & size<1M) | (mime="image/png")'
     self.assertEqual(g.parse(t), '')
     self.assertTrue(p.parse(t))
Beispiel #22
0
 def test_notimap(self):
     g = IMAPFilterGenerator()
     ctx = {
         'mime': 'text/plain',
         'date': datetime(2015, 10, 13),
         'year': 2015,
         'subject': 'mako',
         'section': '1.1'
     }
     p = SimpleEvaluator(ctx)
     t = '(section="1" | section~="1.")'
     self.assertEqual(g.parse(t), '')
     self.assertEqual(g.parse(t, serialize='list'), [])
     self.assertTrue(p.parse(t))
     t = 'mime="text/plain" & year=2015 & ! subject^="re:" & (section="1" | section~="1.")'
     self.assertEqual(
         g.parse(t),
         '(SINCE 1-Jan-2015 BEFORE 1-Jan-2016) (NOT SUBJECT "re:")')
     self.assertEqual(g.parse(t, serialize='list'), [
         '(', 'SINCE', '1-Jan-2015', 'BEFORE', '1-Jan-2016', ')', '(',
         'NOT', 'SUBJECT', "re:", ')'
     ])
     self.assertTrue(p.parse(t))
Beispiel #23
0
 def test_year(self):
     g=IMAPFilterGenerator(unsafe=True)
     ctx={'year':2015}
     p=SimpleEvaluator(ctx)
     
     t='year=2015'
     self.assertEqual(g.parse(t), '(SINCE 1-Jan-2015 BEFORE 1-Jan-2016)')
     self.assertTrue(p.parse(t))
     
     t='year>2015'
     self.assertEqual(g.parse(t), 'SINCE 1-Jan-2016')
     self.assertFalse(p.parse(t))
     
     t='year>=2015'
     self.assertEqual(g.parse(t), 'SINCE 1-Jan-2015')
     self.assertTrue(p.parse(t))
     
     t='year<2016'
     self.assertEqual(g.parse(t), 'BEFORE 1-Jan-2016')
     self.assertTrue(p.parse(t))
     
     t='year<=2016'
     self.assertEqual(g.parse(t), 'BEFORE 1-Jan-2017')
     self.assertTrue(p.parse(t))
Beispiel #24
0
    def test_year(self):
        g = IMAPFilterGenerator(unsafe=True)
        ctx = {'year': 2015}
        p = SimpleEvaluator(ctx)

        t = 'year=2015'
        self.assertEqual(g.parse(t), '(SINCE 1-Jan-2015 BEFORE 1-Jan-2016)')
        self.assertTrue(p.parse(t))

        t = 'year>2015'
        self.assertEqual(g.parse(t), 'SINCE 1-Jan-2016')
        self.assertFalse(p.parse(t))

        t = 'year>=2015'
        self.assertEqual(g.parse(t), 'SINCE 1-Jan-2015')
        self.assertTrue(p.parse(t))

        t = 'year<2016'
        self.assertEqual(g.parse(t), 'BEFORE 1-Jan-2016')
        self.assertTrue(p.parse(t))

        t = 'year<=2016'
        self.assertEqual(g.parse(t), 'BEFORE 1-Jan-2017')
        self.assertTrue(p.parse(t))
Beispiel #25
0
 def test_flags(self):
     g=IMAPFilterGenerator()
     ctx={
          'recent': True,
       'seen': True,
       'answered' : True,
       'flagged': True,
       'deleted': True,
       'draft' : True,
       
          }
     p=SimpleEvaluator(ctx)
     t="recent & seen & answered & flagged & deleted & draft"
     self.assertEqual(g.parse(t), "(RECENT SEEN ANSWERED FLAGGED DELETED DRAFT)")
     self.assertTrue(p.parse(t))
Beispiel #26
0
 def test_flags(self):
     g = IMAPFilterGenerator()
     ctx = {
         'recent': True,
         'seen': True,
         'answered': True,
         'flagged': True,
         'deleted': True,
         'draft': True,
     }
     p = SimpleEvaluator(ctx)
     t = "recent & seen & answered & flagged & deleted & draft"
     self.assertEqual(g.parse(t),
                      "(RECENT SEEN ANSWERED FLAGGED DELETED DRAFT)")
     self.assertTrue(p.parse(t))