From b2034fdfec040a67988e543a911208ef2491ce7a Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Sun, 22 Feb 2015 12:58:46 +0100 Subject: New RoundCube Plugins Git folder --- managesieve/tests/Managesieve.php | 23 ++++++++++ managesieve/tests/Parser.php | 62 +++++++++++++++++++++++++ managesieve/tests/Tokenizer.php | 33 ++++++++++++++ managesieve/tests/Vacation.php | 66 +++++++++++++++++++++++++++ managesieve/tests/src/parser | 52 +++++++++++++++++++++ managesieve/tests/src/parser.out | 52 +++++++++++++++++++++ managesieve/tests/src/parser_body | 17 +++++++ managesieve/tests/src/parser_date | 21 +++++++++ managesieve/tests/src/parser_enotify_a | 19 ++++++++ managesieve/tests/src/parser_enotify_b | 18 ++++++++ managesieve/tests/src/parser_imapflags | 7 +++ managesieve/tests/src/parser_include | 7 +++ managesieve/tests/src/parser_index | 24 ++++++++++ managesieve/tests/src/parser_kep14 | 2 + managesieve/tests/src/parser_kep14.out | 3 ++ managesieve/tests/src/parser_notify_a | 18 ++++++++ managesieve/tests/src/parser_notify_b | 17 +++++++ managesieve/tests/src/parser_prefix | 5 ++ managesieve/tests/src/parser_relational | 6 +++ managesieve/tests/src/parser_subaddress | 11 +++++ managesieve/tests/src/parser_vacation | 12 +++++ managesieve/tests/src/parser_vacation_seconds | 12 +++++ managesieve/tests/src/parser_variables | 12 +++++ 23 files changed, 499 insertions(+) create mode 100644 managesieve/tests/Managesieve.php create mode 100644 managesieve/tests/Parser.php create mode 100644 managesieve/tests/Tokenizer.php create mode 100644 managesieve/tests/Vacation.php create mode 100644 managesieve/tests/src/parser create mode 100644 managesieve/tests/src/parser.out create mode 100644 managesieve/tests/src/parser_body create mode 100644 managesieve/tests/src/parser_date create mode 100644 managesieve/tests/src/parser_enotify_a create mode 100644 managesieve/tests/src/parser_enotify_b create mode 100644 managesieve/tests/src/parser_imapflags create mode 100644 managesieve/tests/src/parser_include create mode 100644 managesieve/tests/src/parser_index create mode 100644 managesieve/tests/src/parser_kep14 create mode 100644 managesieve/tests/src/parser_kep14.out create mode 100644 managesieve/tests/src/parser_notify_a create mode 100644 managesieve/tests/src/parser_notify_b create mode 100644 managesieve/tests/src/parser_prefix create mode 100644 managesieve/tests/src/parser_relational create mode 100644 managesieve/tests/src/parser_subaddress create mode 100644 managesieve/tests/src/parser_vacation create mode 100644 managesieve/tests/src/parser_vacation_seconds create mode 100644 managesieve/tests/src/parser_variables (limited to 'managesieve/tests') diff --git a/managesieve/tests/Managesieve.php b/managesieve/tests/Managesieve.php new file mode 100644 index 0000000..6e930b8 --- /dev/null +++ b/managesieve/tests/Managesieve.php @@ -0,0 +1,23 @@ +api); + + $this->assertInstanceOf('managesieve', $plugin); + $this->assertInstanceOf('rcube_plugin', $plugin); + } +} + diff --git a/managesieve/tests/Parser.php b/managesieve/tests/Parser.php new file mode 100644 index 0000000..33edce0 --- /dev/null +++ b/managesieve/tests/Parser.php @@ -0,0 +1,62 @@ +as_text(); + + $this->assertEquals(trim($result), trim($output), $message); + } + + /** + * Data provider for test_parser() + */ + function data_parser() + { + $dir_path = realpath(__DIR__ . '/src'); + $dir = opendir($dir_path); + $result = array(); + + while ($file = readdir($dir)) { + if (preg_match('/^[a-z0-9_]+$/', $file)) { + $input = file_get_contents($dir_path . '/' . $file); + + if (file_exists($dir_path . '/' . $file . '.out')) { + $output = file_get_contents($dir_path . '/' . $file . '.out'); + } + else { + $output = $input; + } + + $result[] = array( + 'input' => $input, + 'output' => $output, + 'message' => "Error in parsing '$file' file", + ); + } + } + + return $result; + } +} diff --git a/managesieve/tests/Tokenizer.php b/managesieve/tests/Tokenizer.php new file mode 100644 index 0000000..f50ed75 --- /dev/null +++ b/managesieve/tests/Tokenizer.php @@ -0,0 +1,33 @@ +assertEquals(trim($res), trim($output)); + } +} diff --git a/managesieve/tests/Vacation.php b/managesieve/tests/Vacation.php new file mode 100644 index 0000000..942525c --- /dev/null +++ b/managesieve/tests/Vacation.php @@ -0,0 +1,66 @@ +assertInstanceOf('rcube_sieve_vacation', $vacation); + } + + function test_build_regexp_tests() + { + $tests = rcube_sieve_vacation::build_regexp_tests('2014-02-20', '2014-03-05', $error); + + $this->assertCount(2, $tests); + $this->assertSame('header', $tests[0]['test']); + $this->assertSame('regex', $tests[0]['type']); + $this->assertSame('received', $tests[0]['arg1']); + $this->assertSame('(20|21|22|23|24|25|26|27|28) Feb 2014', $tests[0]['arg2']); + $this->assertSame('header', $tests[1]['test']); + $this->assertSame('regex', $tests[1]['type']); + $this->assertSame('received', $tests[1]['arg1']); + $this->assertSame('([ 0]1|[ 0]2|[ 0]3|[ 0]4|[ 0]5) Mar 2014', $tests[1]['arg2']); + + $tests = rcube_sieve_vacation::build_regexp_tests('2014-02-20', '2014-01-05', $error); + + $this->assertSame(null, $tests); + $this->assertSame('managesieve.invaliddateformat', $error); + } + + function test_parse_regexp_tests() + { + $tests = array( + array( + 'test' => 'header', + 'type' => 'regex', + 'arg1' => 'received', + 'arg2' => '(20|21|22|23|24|25|26|27|28) Feb 2014', + ), + array( + 'test' => 'header', + 'type' => 'regex', + 'arg1' => 'received', + 'arg2' => '([ 0]1|[ 0]2|[ 0]3|[ 0]4|[ 0]5) Mar 2014', + ) + ); + + $result = rcube_sieve_vacation::parse_regexp_tests($tests); + + $this->assertCount(2, $result); + $this->assertSame('20 Feb 2014', $result['from']); + $this->assertSame('05 Mar 2014', $result['to']); + } +} + diff --git a/managesieve/tests/src/parser b/managesieve/tests/src/parser new file mode 100644 index 0000000..c99b498 --- /dev/null +++ b/managesieve/tests/src/parser @@ -0,0 +1,52 @@ +require ["fileinto","reject","envelope"]; +# rule:[spam] +if anyof (header :contains "X-DSPAM-Result" "Spam") +{ + fileinto "Spam"; + stop; +} +# rule:[test1] +if anyof (header :contains :comparator "i;ascii-casemap" ["From","To"] "test@domain.tld") +{ + discard; + stop; +} +# rule:[test2] +if anyof (not header :contains :comparator "i;octet" ["Subject"] "[test]", header :contains "Subject" "[test2]") +{ + fileinto "test"; + stop; +} +# rule:[comments] +if anyof (true) /* comment + * "comment" #comment */ { + /* comment */ stop; +# comment +} +# rule:[reject] +if size :over 5000K { + reject "Message over 5MB size limit. Please contact me before sending this."; +} +# rule:[false] +if false # size :over 5000K +{ + stop; /* rule disabled */ +} +# rule:[true] +if true +{ + stop; +} +fileinto "Test"; +# rule:[address test] +if address :all :is "From" "nagios@domain.tld" +{ + fileinto "domain.tld"; + stop; +} +# rule:[envelope test] +if envelope :domain :is "From" "domain.tld" +{ + fileinto "domain.tld"; + stop; +} diff --git a/managesieve/tests/src/parser.out b/managesieve/tests/src/parser.out new file mode 100644 index 0000000..796343d --- /dev/null +++ b/managesieve/tests/src/parser.out @@ -0,0 +1,52 @@ +require ["envelope","fileinto","reject"]; +# rule:[spam] +if header :contains "X-DSPAM-Result" "Spam" +{ + fileinto "Spam"; + stop; +} +# rule:[test1] +if header :contains ["From","To"] "test@domain.tld" +{ + discard; + stop; +} +# rule:[test2] +if anyof (not header :contains :comparator "i;octet" "Subject" "[test]", header :contains "Subject" "[test2]") +{ + fileinto "test"; + stop; +} +# rule:[comments] +if true +{ + stop; +} +# rule:[reject] +if size :over 5000K +{ + reject "Message over 5MB size limit. Please contact me before sending this."; +} +# rule:[false] +if false # size :over 5000K +{ + stop; +} +# rule:[true] +if true +{ + stop; +} +fileinto "Test"; +# rule:[address test] +if address :is "From" "nagios@domain.tld" +{ + fileinto "domain.tld"; + stop; +} +# rule:[envelope test] +if envelope :domain :is "From" "domain.tld" +{ + fileinto "domain.tld"; + stop; +} diff --git a/managesieve/tests/src/parser_body b/managesieve/tests/src/parser_body new file mode 100644 index 0000000..bd142ed --- /dev/null +++ b/managesieve/tests/src/parser_body @@ -0,0 +1,17 @@ +require ["body","fileinto"]; +if body :raw :contains "MAKE MONEY FAST" +{ + stop; +} +if body :content "text" :contains ["missile","coordinates"] +{ + fileinto "secrets"; +} +if body :content "audio/mp3" :contains "" +{ + fileinto "jukebox"; +} +if body :text :contains "project schedule" +{ + fileinto "project/schedule"; +} diff --git a/managesieve/tests/src/parser_date b/managesieve/tests/src/parser_date new file mode 100644 index 0000000..06b0033 --- /dev/null +++ b/managesieve/tests/src/parser_date @@ -0,0 +1,21 @@ +require ["comparator-i;ascii-numeric","date","fileinto","relational"]; +# rule:[date] +if allof (date :originalzone :value "ge" :comparator "i;ascii-numeric" "date" "hour" "09") +{ + fileinto "urgent"; +} +# rule:[date-weekday] +if date :is "received" "weekday" "0" +{ + fileinto "weekend"; +} +# rule:[date-zone] +if date :zone "-0500" :value "gt" :comparator "i;ascii-numeric" "received" "iso8601" "2007-02-26T09:00:00-05:00" +{ + stop; +} +# rule:[currentdate] +if anyof (currentdate :is "weekday" "0", currentdate :value "lt" :comparator "i;ascii-numeric" "hour" "09", currentdate :value "ge" :comparator "i;ascii-numeric" "date" "2007-06-30") +{ + stop; +} diff --git a/managesieve/tests/src/parser_enotify_a b/managesieve/tests/src/parser_enotify_a new file mode 100644 index 0000000..68a9ef5 --- /dev/null +++ b/managesieve/tests/src/parser_enotify_a @@ -0,0 +1,19 @@ +require ["enotify","variables"]; +# rule:[notify1] +if header :contains "from" "boss@example.org" +{ + notify :importance "1" :message "This is probably very important" "mailto:alm@example.com"; + stop; +} +# rule:[subject] +if header :matches "Subject" "*" +{ + set "subject" "${1}"; +} +# rule:[from notify2] +if header :matches "From" "*" +{ + set "from" "${1}"; + notify :importance "3" :message "${from}: ${subject}" "mailto:alm@example.com"; +} + diff --git a/managesieve/tests/src/parser_enotify_b b/managesieve/tests/src/parser_enotify_b new file mode 100644 index 0000000..a3011ba --- /dev/null +++ b/managesieve/tests/src/parser_enotify_b @@ -0,0 +1,18 @@ +require ["enotify","envelope","variables"]; +# rule:[from] +if envelope :matches "from" "*" +{ + set "env_from" " [really: ${1}]"; +} +# rule:[subject] +if header :matches "Subject" "*" +{ + set "subject" "${1}"; +} +# rule:[from notify] +if address :matches "from" "*" +{ + set "from_addr" "${1}"; + notify :message "${from_addr}${env_from}: ${subject}" "mailto:alm@example.com"; +} + diff --git a/managesieve/tests/src/parser_imapflags b/managesieve/tests/src/parser_imapflags new file mode 100644 index 0000000..e67bf7c --- /dev/null +++ b/managesieve/tests/src/parser_imapflags @@ -0,0 +1,7 @@ +require ["imap4flags"]; +# rule:[imapflags] +if header :matches "Subject" "^Test$" +{ + setflag "\\Seen"; + addflag ["\\Answered","\\Deleted"]; +} diff --git a/managesieve/tests/src/parser_include b/managesieve/tests/src/parser_include new file mode 100644 index 0000000..b5585a4 --- /dev/null +++ b/managesieve/tests/src/parser_include @@ -0,0 +1,7 @@ +require ["include"]; +include "script.sieve"; +# rule:[two] +if true +{ + include :optional "second.sieve"; +} diff --git a/managesieve/tests/src/parser_index b/managesieve/tests/src/parser_index new file mode 100644 index 0000000..ca9f86d --- /dev/null +++ b/managesieve/tests/src/parser_index @@ -0,0 +1,24 @@ +require ["comparator-i;ascii-numeric","date","fileinto","index","relational"]; +# rule:[index-header1] +if header :index 1 :last :contains "X-DSPAM-Result" "Spam" +{ + fileinto "Spam"; + stop; +} +# rule:[index-header2] +if header :index 2 :contains ["From","To"] "test@domain.tld" +{ + discard; + stop; +} +# rule:[index-address] +if address :index 1 :is "From" "nagios@domain.tld" +{ + fileinto "domain.tld"; + stop; +} +# rule:[index-date] +if date :index 1 :last :zone "-0500" :value "gt" :comparator "i;ascii-numeric" "received" "iso8601" "2007-02-26T09:00:00-05:00" +{ + stop; +} diff --git a/managesieve/tests/src/parser_kep14 b/managesieve/tests/src/parser_kep14 new file mode 100644 index 0000000..1ded8d8 --- /dev/null +++ b/managesieve/tests/src/parser_kep14 @@ -0,0 +1,2 @@ +# EDITOR Roundcube +# EDITOR_VERSION 123 diff --git a/managesieve/tests/src/parser_kep14.out b/managesieve/tests/src/parser_kep14.out new file mode 100644 index 0000000..cb7faa7 --- /dev/null +++ b/managesieve/tests/src/parser_kep14.out @@ -0,0 +1,3 @@ +require ["variables"]; +set "EDITOR" "Roundcube"; +set "EDITOR_VERSION" "123"; diff --git a/managesieve/tests/src/parser_notify_a b/managesieve/tests/src/parser_notify_a new file mode 100644 index 0000000..e51e2aa --- /dev/null +++ b/managesieve/tests/src/parser_notify_a @@ -0,0 +1,18 @@ +require ["notify","variables"]; +# rule:[notify1] +if header :contains "from" "boss@example.org" +{ + notify :low :message "This is probably very important"; + stop; +} +# rule:[subject] +if header :matches "Subject" "*" +{ + set "subject" "${1}"; +} +# rule:[from notify2] +if header :matches "From" "*" +{ + set "from" "${1}"; + notify :high :method "mailto" :options "test@example.org" :message "${from}: ${subject}"; +} diff --git a/managesieve/tests/src/parser_notify_b b/managesieve/tests/src/parser_notify_b new file mode 100644 index 0000000..f942e15 --- /dev/null +++ b/managesieve/tests/src/parser_notify_b @@ -0,0 +1,17 @@ +require ["envelope","notify","variables"]; +# rule:[from] +if envelope :matches "from" "*" +{ + set "env_from" " [really: ${1}]"; +} +# rule:[subject] +if header :matches "Subject" "*" +{ + set "subject" "${1}"; +} +# rule:[from notify] +if address :matches "from" "*" +{ + set "from_addr" "${1}"; + notify :method "sms" :options "1234567890" :message "${from_addr}${env_from}: ${subject}"; +} diff --git a/managesieve/tests/src/parser_prefix b/managesieve/tests/src/parser_prefix new file mode 100644 index 0000000..9f6a33a --- /dev/null +++ b/managesieve/tests/src/parser_prefix @@ -0,0 +1,5 @@ +# this is a comment +# and the second line + +require ["variables"]; +set "b" "c"; diff --git a/managesieve/tests/src/parser_relational b/managesieve/tests/src/parser_relational new file mode 100644 index 0000000..92c5e1a --- /dev/null +++ b/managesieve/tests/src/parser_relational @@ -0,0 +1,6 @@ +require ["comparator-i;ascii-numeric","relational"]; +# rule:[redirect] +if header :value "ge" :comparator "i;ascii-numeric" "X-Spam-score" "14" +{ + redirect "test@test.tld"; +} diff --git a/managesieve/tests/src/parser_subaddress b/managesieve/tests/src/parser_subaddress new file mode 100644 index 0000000..e445550 --- /dev/null +++ b/managesieve/tests/src/parser_subaddress @@ -0,0 +1,11 @@ +require ["envelope","fileinto","subaddress"]; +if envelope :user "To" "postmaster" +{ + fileinto "postmaster"; + stop; +} +if envelope :detail :is "To" "mta-filters" +{ + fileinto "mta-filters"; + stop; +} diff --git a/managesieve/tests/src/parser_vacation b/managesieve/tests/src/parser_vacation new file mode 100644 index 0000000..93026db --- /dev/null +++ b/managesieve/tests/src/parser_vacation @@ -0,0 +1,12 @@ +require ["vacation"]; +# rule:[test-vacation] +if header :contains "Subject" "vacation" +{ + vacation :days 1 text: +# test +test test /* test */ +test +. +; + stop; +} diff --git a/managesieve/tests/src/parser_vacation_seconds b/managesieve/tests/src/parser_vacation_seconds new file mode 100644 index 0000000..75cbcae --- /dev/null +++ b/managesieve/tests/src/parser_vacation_seconds @@ -0,0 +1,12 @@ +require ["vacation-seconds"]; +# rule:[test-vacation] +if header :contains "Subject" "vacation" +{ + vacation :seconds 0 text: +# test +test test /* test */ +test +. +; + stop; +} diff --git a/managesieve/tests/src/parser_variables b/managesieve/tests/src/parser_variables new file mode 100644 index 0000000..bd5941c --- /dev/null +++ b/managesieve/tests/src/parser_variables @@ -0,0 +1,12 @@ +require ["variables"]; +set "honorific" "Mr"; +set "vacation" text: +Dear ${HONORIFIC} ${last_name}, +I am out, please leave a message after the meep. +. +; +set :length "b" "${a}"; +set :lower "b" "${a}"; +set :upperfirst "b" "${a}"; +set :upperfirst :lower "b" "${a}"; +set :quotewildcard "b" "Rock*"; -- cgit v1.2.3