Changeset View
Changeset View
Standalone View
Standalone View
apps/kolab_guam/test/kolab_guam_rules_SUITE.erl
Show First 20 Lines • Show All 88 Lines • ▼ Show 20 Lines | kolab_guam_rule_filter_groupware_responsefiltering_test(_TestConfig) -> | ||||
%% run the dataset through the rule | %% run the dataset through the rule | ||||
lists:foreach(fun({ Blacklist, Input, Filtered }) -> | lists:foreach(fun({ Blacklist, Input, Filtered }) -> | ||||
BlacklistState = ReadyState#state{ blacklist = Blacklist }, | BlacklistState = ReadyState#state{ blacklist = Blacklist }, | ||||
{ Filtered, _NewState } = kolab_guam_rule_filter_groupware:apply_to_server_message(ImapSession, Input, BlacklistState) end, | { Filtered, _NewState } = kolab_guam_rule_filter_groupware:apply_to_server_message(ImapSession, Input, BlacklistState) end, | ||||
Data). | Data). | ||||
kolab_guam_rule_filter_groupware_responsefiltering_multipacket_test(_TestConfig) -> | kolab_guam_rule_filter_groupware_responsefiltering_multipacket_test(_TestConfig) -> | ||||
%% Data to be fed into the test, one tuple per iteration | %% Data to be fed into the test, one tuple per iteration | ||||
%% Tuple format: { [ input_packets ] = complete_message, correct_output } | %% Tuple format: { [] = folder_blacklist, [] = input_data_packets, correct_output } | ||||
Data = [ | Data = [ | ||||
{ | { | ||||
[ | [ | ||||
{<<"Calendar">>, <<"Calendar/">>}, | {<<"Calendar">>, <<"Calendar/">>}, | ||||
{<<"Calendar/Personal Calendar">>, <<"Calendar/Personal Calendar/">>}, | {<<"Calendar/Personal Calendar">>, <<"Calendar/Personal Calendar/">>}, | ||||
{<<"Configuration">>, <<"Configuration/">>}, | {<<"Configuration">>, <<"Configuration/">>}, | ||||
{<<"Contacts">>, <<"Contacts/">>}, | {<<"Contacts">>, <<"Contacts/">>}, | ||||
{<<"Contacts/Personal Contacts">>, <<"Contacts/Personal Contacts/">>}, | {<<"Contacts/Personal Contacts">>, <<"Contacts/Personal Contacts/">>}, | ||||
{<<"Files">>, <<"Files/">>}, | {<<"Files">>, <<"Files/">>}, | ||||
{<<"Journal">>, <<"Journal/">>}, | {<<"Journal">>, <<"Journal/">>}, | ||||
{<<"Notes">>, <<"Notes/">>}, | {<<"Notes">>, <<"Notes/">>}, | ||||
{<<"Tasks">>, <<"Tasks/">>} | {<<"Tasks">>, <<"Tasks/">>} | ||||
], | ], | ||||
[ | [ | ||||
<<"* LIST (\\Noinferiors \\Subscribed) \"/\" INBOX\r\n* LIST (\\Subscribed) \"/\" Archive\r\n* LIST (\\Subscribed \\HasChildren) \"/\" Calendar\r\n* LIST (\\Subscribed) \"/\" \"Calendar/Personal Calendar\"\r\n* LIST (\\Subscribed) \"/\" Configuration\r\n* LIST (\\Subscribed \\HasChildren) \"/\" Contacts\r\n* LIST (\\Subscribed) \"/\" \"Contacts/Personal Contacts\"\r\n* LIST (\\Subscribed) \"/\" Drafts\r\n* LIST (\\Subscribed) \"/\" Files\r\n* LIST (\\Subscribed) \"/\" Journal\r\n* LIST (\\Subscribed)">>, | <<"* LIST (\\Noinferiors \\Subscribed) \"/\" INBOX\r\n* LIST (\\Subscribed) \"/\" Archive\r\n* LIST (\\Subscribed \\HasChildren) \"/\" Calendar\r\n* LIST (\\Subscribed) \"/\" \"Calendar/Personal Calendar\"\r\n* LIST (\\Subscribed) \"/\" Configuration\r\n* LIST (\\Subscribed \\HasChildren) \"/\" Contacts\r\n* LIST (\\Subscribed) \"/\" \"Contacts/Personal Contacts\"\r\n* LIST (\\Subscribed) \"/\" Drafts\r\n* LIST (\\Subscribed) \"/\" Files\r\n* LIST (\\Subscribed) \"/\" Journal\r\n* LIST (\\Subscribed)">>, | ||||
<<"\"/\" Notes\r\n* LIST (\\Subscribed) \"/\" Sent\r\n* LIST (\\Subscribed) \"/\" Spam\r\n* LIST (\\Subscribed) \"/\" Tasks\r\n* LIST (\\Subscribed) \"/\" Trash\r\n7 OK Completed (0.000 secs 15 calls)\r\n">> | <<" \"/\" Notes\r\n* LIST (\\Subscribed) \"/\" Sent\r\n* LIST (\\Subscribed) \"/\" Spam\r\n* LIST (\\Subscribed) \"/\" Tasks\r\n* LIST (\\Subscribed) \"/\" Trash\r\n7 OK Completed (0.000 secs 15 calls)\r\n">> | ||||
], | ], | ||||
<<"* LIST (\\Noinferiors \\Subscribed) \"/\" INBOX\r\n* LIST (\\Subscribed) \"/\" Archive\r\n* LIST (\\Subscribed) \"/\" Drafts\r\n* LIST (\\Subscribed) \"/\" Sent\r\n* LIST (\\Subscribed) \"/\" Spam\r\n* LIST (\\Subscribed) \"/\" Trash\r\n7 OK Completed (0.000 secs 15 calls)\r\n">> | <<"* LIST (\\Noinferiors \\Subscribed) \"/\" INBOX\r\n* LIST (\\Subscribed) \"/\" Archive\r\n* LIST (\\Subscribed) \"/\" Drafts\r\n* LIST (\\Subscribed) \"/\" Sent\r\n* LIST (\\Subscribed) \"/\" Spam\r\n* LIST (\\Subscribed) \"/\" Trash\r\n7 OK Completed (0.000 secs 15 calls)\r\n">> | ||||
}, | }, | ||||
%Filter complete packet | %Filter complete packet | ||||
{ | { | ||||
[ | [ | ||||
{<<"Calendar">>, <<"Calendar/">>} | {<<"Calendar">>, <<"Calendar/">>} | ||||
], | ], | ||||
[ | [ | ||||
<<"* LIST (\\Subscribed \\HasChildren) \"/\" Calendar\r\n">>, | <<"* LIST (\\Subscribed \\HasChildren) \"/\" Calendar\r\n">>, | ||||
<<"7 OK Completed (0.000 secs 15 calls)\r\n">> | <<"7 OK Completed (0.000 secs 15 calls)\r\n">> | ||||
], | ], | ||||
<<"7 OK Completed (0.000 secs 15 calls)\r\n">> | <<"7 OK Completed (0.000 secs 15 calls)\r\n">> | ||||
}, | |||||
%Test folder names with square brackes | |||||
{ | |||||
[ | |||||
{<<"[Calendar]">>,<<"[Calendar]/">>} | |||||
], | |||||
[ | |||||
<<"* LSUB () \".\" INBOX\r\n* LSUB () \".\" \"[Stuff].Sent Mail.Sent\"\r\n* LSUB () \".\" [Calendar]\r\nwgku OK Lsub completed (0.001 + 0.000 secs).\r\n">> | |||||
], | |||||
<<"* LSUB () \".\" INBOX\r\n* LSUB () \".\" \"[Stuff].Sent Mail.Sent\"\r\nwgku OK Lsub completed (0.001 + 0.000 secs).\r\n">> | |||||
}, | |||||
%Split CR and LF | |||||
{ | |||||
[ | |||||
{<<"Calendar">>, <<"Calendar/">>} | |||||
], | |||||
[ | |||||
<<"* LIST (\\Noinferiors \\Subscribed) \"/\" INBOX\r">>, | |||||
<<"\n* LIST (\\Subscribed \\HasChildren) \"/\" Calendar\r">>, | |||||
<<"\n7 OK Completed (0.000 secs 15 calls)\r\n">> | |||||
], | |||||
<<"* LIST (\\Noinferiors \\Subscribed) \"/\" INBOX\r\n7 OK Completed (0.000 secs 15 calls)\r\n">> | |||||
}, | |||||
%Numeric folders | |||||
{ | |||||
[ | |||||
], | |||||
[ | |||||
<<"* LIST () \"/\" 2017\r\n">>, | |||||
<<"7 OK Completed (0.000 secs 15 calls)\r\n">> | |||||
], | |||||
<<"* LIST () \"/\" 2017\r\n7 OK Completed (0.000 secs 15 calls)\r\n">> | |||||
}, | |||||
%LIST-EXTENDED + LIST-STATUS response (as used by evolution) | |||||
{ | |||||
[ | |||||
{<<"Calendar">>, <<"Calendar/">>}, | |||||
{<<"Calendar/Calendar2/">>, <<"Calendar/Calendar2/">>} | |||||
], | |||||
[ | |||||
<<"* LIST (\\Noinferiors \\Subscribed) \"/\" INBOX\r\n">>, | |||||
<<"* STATUS \"INBOX\" (MESSAGES 17 UNSEEN 16)\r\n">>, | |||||
<<"* LIST (\\Subscribed \\HasChildren) \"/\" Calendar (CHILDINFO (\"SUBSCRIBED\"))\r\n">>, | |||||
<<"* STATUS \"Calendar\" (MESSAGES 17 UNSEEN 16)\r\n">>, | |||||
<<"* LIST (\\Subscribed \\HasNoChildren) \"/\" Calendar/Calendar2\r\n">>, | |||||
<<"* STATUS \"Calendar/Calendar2\" (MESSAGES 17 UNSEEN 16)\r\n">>, | |||||
<<"7 OK Completed (0.000 secs 15 calls)\r\n">> | |||||
], | |||||
<<"* LIST (\\Noinferiors \\Subscribed) \"/\" INBOX\r\n* STATUS \"INBOX\" (MESSAGES 17 UNSEEN 16)\r\n7 OK Completed (0.000 secs 15 calls)\r\n">> | |||||
}, | |||||
%String literals | |||||
%Filtering on string literals is broken, it will attempt to filter on {8}Calendar | |||||
{ | |||||
[ | |||||
%{<<"Calendar">>, <<"Calendar/">>} | |||||
], | |||||
[ | |||||
%<<"* LIST (\Subscribed) \"/\" {8}Calendar\r\n">>, | |||||
<<"* LIST (\Subscribed) \"/\" {6}\r\n">>, | |||||
<<"Folder\r\n">> | |||||
], | |||||
<<"* LIST (\Subscribed) \"/\" {6}\r\nFolder\r\n">> | |||||
} | } | ||||
], | ], | ||||
%% setup boilerplate | %% setup boilerplate | ||||
Config = {}, %%TODO? | Config = {}, %%TODO? | ||||
State = kolab_guam_rule_filter_groupware:new(Config), | State = kolab_guam_rule_filter_groupware:new(Config), | ||||
ServerConfig = kolab_guam_sup:default_imap_server_config(), | ServerConfig = kolab_guam_sup:default_imap_server_config(), | ||||
{ ok, ImapSession } = eimap:start_link(ServerConfig), | { ok, ImapSession } = eimap:start_link(ServerConfig), | ||||
Show All 16 Lines |