##// END OF EJS Templates
Adds a setting to remove incoming emails body after a delimiter (#4409)....
Jean-Philippe Lang -
r3112:a54fa93b2e28
parent child
Show More
@@ -136,7 +136,6 class MailHandler < ActionMailer::Base
136 if issue.subject.blank?
136 if issue.subject.blank?
137 issue.subject = '(no subject)'
137 issue.subject = '(no subject)'
138 end
138 end
139 issue.description = plain_text_body
140 # custom fields
139 # custom fields
141 issue.custom_field_values = issue.available_custom_fields.inject({}) do |h, c|
140 issue.custom_field_values = issue.available_custom_fields.inject({}) do |h, c|
142 if value = get_keyword(c.name, :override => true)
141 if value = get_keyword(c.name, :override => true)
@@ -144,6 +143,7 class MailHandler < ActionMailer::Base
144 end
143 end
145 h
144 h
146 end
145 end
146 issue.description = cleaned_up_text_body
147 # add To and Cc as watchers before saving so the watchers can reply to Redmine
147 # add To and Cc as watchers before saving so the watchers can reply to Redmine
148 add_watchers(issue)
148 add_watchers(issue)
149 issue.save!
149 issue.save!
@@ -174,7 +174,7 class MailHandler < ActionMailer::Base
174 end
174 end
175
175
176 # add the note
176 # add the note
177 journal = issue.init_journal(user, plain_text_body)
177 journal = issue.init_journal(user, cleaned_up_text_body)
178 add_attachments(issue)
178 add_attachments(issue)
179 # check workflow
179 # check workflow
180 if status && issue.new_statuses_allowed_to(user).include?(status)
180 if status && issue.new_statuses_allowed_to(user).include?(status)
@@ -205,7 +205,7 class MailHandler < ActionMailer::Base
205
205
206 if !message.locked?
206 if !message.locked?
207 reply = Message.new(:subject => email.subject.gsub(%r{^.*msg\d+\]}, '').strip,
207 reply = Message.new(:subject => email.subject.gsub(%r{^.*msg\d+\]}, '').strip,
208 :content => plain_text_body)
208 :content => cleaned_up_text_body)
209 reply.author = user
209 reply.author = user
210 reply.board = message.board
210 reply.board = message.board
211 message.children << reply
211 message.children << reply
@@ -276,6 +276,9 class MailHandler < ActionMailer::Base
276 @plain_text_body
276 @plain_text_body
277 end
277 end
278
278
279 def cleaned_up_text_body
280 cleanup_body(plain_text_body)
281 end
279
282
280 def self.full_sanitizer
283 def self.full_sanitizer
281 @full_sanitizer ||= HTML::FullSanitizer.new
284 @full_sanitizer ||= HTML::FullSanitizer.new
@@ -299,4 +302,16 class MailHandler < ActionMailer::Base
299 user.save ? user : nil
302 user.save ? user : nil
300 end
303 end
301 end
304 end
305
306 private
307
308 # Removes the email body of text after the truncation configurations.
309 def cleanup_body(body)
310 delimiters = Setting.mail_handler_body_delimiters.to_s.split(/[\r\n]+/).reject(&:blank?).map {|s| Regexp.escape(s)}
311 unless delimiters.empty?
312 regex = Regexp.new("^(#{ delimiters.join('|') })\s*$.*", Regexp::MULTILINE)
313 body = body.gsub(regex, '')
314 end
315 body.strip
316 end
302 end
317 end
@@ -1,6 +1,13
1 <% form_tag({:action => 'edit', :tab => 'mail_handler'}) do %>
1 <% form_tag({:action => 'edit', :tab => 'mail_handler'}) do %>
2
2
3 <div class="box tabular settings">
3 <div class="box tabular settings">
4 <p>
5 <%= setting_text_area :mail_handler_body_delimiters, :rows => 5 %>
6 <br /><em><%= l(:text_line_separated) %></em>
7 </p>
8 </div>
9
10 <div class="box tabular settings">
4 <p><%= setting_check_box :mail_handler_api_enabled,
11 <p><%= setting_check_box :mail_handler_api_enabled,
5 :onclick => "if (this.checked) { Form.Element.enable('settings_mail_handler_api_key'); } else { Form.Element.disable('settings_mail_handler_api_key'); }"%></p>
12 :onclick => "if (this.checked) { Form.Element.enable('settings_mail_handler_api_key'); } else { Form.Element.disable('settings_mail_handler_api_key'); }"%></p>
6
13
@@ -12,4 +19,5
12 </div>
19 </div>
13
20
14 <%= submit_tag l(:button_save) %>
21 <%= submit_tag l(:button_save) %>
22
15 <% end %>
23 <% end %>
@@ -865,3 +865,5 bg:
865 label_missing_api_access_key: Missing an API access key
865 label_missing_api_access_key: Missing an API access key
866 label_missing_feeds_access_key: Missing a RSS access key
866 label_missing_feeds_access_key: Missing a RSS access key
867 button_show: Show
867 button_show: Show
868 text_line_separated: Multiple values allowed (one line for each value).
869 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -889,3 +889,5 bs:
889 label_missing_api_access_key: Missing an API access key
889 label_missing_api_access_key: Missing an API access key
890 label_missing_feeds_access_key: Missing a RSS access key
890 label_missing_feeds_access_key: Missing a RSS access key
891 button_show: Show
891 button_show: Show
892 text_line_separated: Multiple values allowed (one line for each value).
893 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -868,3 +868,5 ca:
868 label_missing_api_access_key: Missing an API access key
868 label_missing_api_access_key: Missing an API access key
869 label_missing_feeds_access_key: Missing a RSS access key
869 label_missing_feeds_access_key: Missing a RSS access key
870 button_show: Show
870 button_show: Show
871 text_line_separated: Multiple values allowed (one line for each value).
872 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -871,3 +871,5 cs:
871 label_missing_api_access_key: Missing an API access key
871 label_missing_api_access_key: Missing an API access key
872 label_missing_feeds_access_key: Missing a RSS access key
872 label_missing_feeds_access_key: Missing a RSS access key
873 button_show: Show
873 button_show: Show
874 text_line_separated: Multiple values allowed (one line for each value).
875 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -891,3 +891,5 da:
891 label_missing_api_access_key: Missing an API access key
891 label_missing_api_access_key: Missing an API access key
892 label_missing_feeds_access_key: Missing a RSS access key
892 label_missing_feeds_access_key: Missing a RSS access key
893 button_show: Show
893 button_show: Show
894 text_line_separated: Multiple values allowed (one line for each value).
895 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -891,3 +891,5 de:
891 label_missing_api_access_key: Missing an API access key
891 label_missing_api_access_key: Missing an API access key
892 label_missing_feeds_access_key: Missing a RSS access key
892 label_missing_feeds_access_key: Missing a RSS access key
893 button_show: Show
893 button_show: Show
894 text_line_separated: Multiple values allowed (one line for each value).
895 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -871,3 +871,5 el:
871 label_missing_api_access_key: Missing an API access key
871 label_missing_api_access_key: Missing an API access key
872 label_missing_feeds_access_key: Missing a RSS access key
872 label_missing_feeds_access_key: Missing a RSS access key
873 button_show: Show
873 button_show: Show
874 text_line_separated: Multiple values allowed (one line for each value).
875 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -308,6 +308,7 en:
308 setting_activity_days_default: Days displayed on project activity
308 setting_activity_days_default: Days displayed on project activity
309 setting_display_subprojects_issues: Display subprojects issues on main projects by default
309 setting_display_subprojects_issues: Display subprojects issues on main projects by default
310 setting_enabled_scm: Enabled SCM
310 setting_enabled_scm: Enabled SCM
311 setting_mail_handler_body_delimiters: "Truncate emails after one of these lines"
311 setting_mail_handler_api_enabled: Enable WS for incoming emails
312 setting_mail_handler_api_enabled: Enable WS for incoming emails
312 setting_mail_handler_api_key: API key
313 setting_mail_handler_api_key: API key
313 setting_sequential_project_identifiers: Generate sequential project identifiers
314 setting_sequential_project_identifiers: Generate sequential project identifiers
@@ -812,6 +813,7 en:
812 text_tracker_no_workflow: No workflow defined for this tracker
813 text_tracker_no_workflow: No workflow defined for this tracker
813 text_unallowed_characters: Unallowed characters
814 text_unallowed_characters: Unallowed characters
814 text_comma_separated: Multiple values allowed (comma separated).
815 text_comma_separated: Multiple values allowed (comma separated).
816 text_line_separated: Multiple values allowed (one line for each value).
815 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
817 text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages
816 text_issue_added: "Issue {{id}} has been reported by {{author}}."
818 text_issue_added: "Issue {{id}} has been reported by {{author}}."
817 text_issue_updated: "Issue {{id}} has been updated by {{author}}."
819 text_issue_updated: "Issue {{id}} has been updated by {{author}}."
@@ -912,3 +912,5 es:
912 label_missing_api_access_key: Missing an API access key
912 label_missing_api_access_key: Missing an API access key
913 label_missing_feeds_access_key: Missing a RSS access key
913 label_missing_feeds_access_key: Missing a RSS access key
914 button_show: Show
914 button_show: Show
915 text_line_separated: Multiple values allowed (one line for each value).
916 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -901,3 +901,5 fi:
901 label_missing_api_access_key: Missing an API access key
901 label_missing_api_access_key: Missing an API access key
902 label_missing_feeds_access_key: Missing a RSS access key
902 label_missing_feeds_access_key: Missing a RSS access key
903 button_show: Show
903 button_show: Show
904 text_line_separated: Multiple values allowed (one line for each value).
905 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -330,6 +330,7 fr:
330 setting_activity_days_default: Nombre de jours affichés sur l'activité des projets
330 setting_activity_days_default: Nombre de jours affichés sur l'activité des projets
331 setting_display_subprojects_issues: Afficher par défaut les demandes des sous-projets sur les projets principaux
331 setting_display_subprojects_issues: Afficher par défaut les demandes des sous-projets sur les projets principaux
332 setting_enabled_scm: SCM activés
332 setting_enabled_scm: SCM activés
333 setting_mail_handler_body_delimiters: "Tronquer les emails après l'une de ces lignes"
333 setting_mail_handler_api_enabled: "Activer le WS pour la réception d'emails"
334 setting_mail_handler_api_enabled: "Activer le WS pour la réception d'emails"
334 setting_mail_handler_api_key: Clé de protection de l'API
335 setting_mail_handler_api_key: Clé de protection de l'API
335 setting_sequential_project_identifiers: Générer des identifiants de projet séquentiels
336 setting_sequential_project_identifiers: Générer des identifiants de projet séquentiels
@@ -820,6 +821,7 fr:
820 text_tracker_no_workflow: Aucun worflow n'est défini pour ce tracker
821 text_tracker_no_workflow: Aucun worflow n'est défini pour ce tracker
821 text_unallowed_characters: Caractères non autorisés
822 text_unallowed_characters: Caractères non autorisés
822 text_comma_separated: Plusieurs valeurs possibles (séparées par des virgules).
823 text_comma_separated: Plusieurs valeurs possibles (séparées par des virgules).
824 text_line_separated: Plusieurs valeurs possibles (une valeur par ligne).
823 text_issues_ref_in_commit_messages: Référencement et résolution des demandes dans les commentaires de commits
825 text_issues_ref_in_commit_messages: Référencement et résolution des demandes dans les commentaires de commits
824 text_issue_added: "La demande {{id}} a été soumise par {{author}}."
826 text_issue_added: "La demande {{id}} a été soumise par {{author}}."
825 text_issue_updated: "La demande {{id}} a été mise à jour par {{author}}."
827 text_issue_updated: "La demande {{id}} a été mise à jour par {{author}}."
@@ -891,3 +891,5 gl:
891 label_missing_api_access_key: Missing an API access key
891 label_missing_api_access_key: Missing an API access key
892 label_missing_feeds_access_key: Missing a RSS access key
892 label_missing_feeds_access_key: Missing a RSS access key
893 button_show: Show
893 button_show: Show
894 text_line_separated: Multiple values allowed (one line for each value).
895 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -875,3 +875,5 he:
875 label_missing_api_access_key: Missing an API access key
875 label_missing_api_access_key: Missing an API access key
876 label_missing_feeds_access_key: Missing a RSS access key
876 label_missing_feeds_access_key: Missing a RSS access key
877 button_show: Show
877 button_show: Show
878 text_line_separated: Multiple values allowed (one line for each value).
879 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -896,3 +896,5
896 label_missing_api_access_key: Missing an API access key
896 label_missing_api_access_key: Missing an API access key
897 label_missing_feeds_access_key: Missing a RSS access key
897 label_missing_feeds_access_key: Missing a RSS access key
898 button_show: Show
898 button_show: Show
899 text_line_separated: Multiple values allowed (one line for each value).
900 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -878,3 +878,5 it:
878 label_missing_api_access_key: Missing an API access key
878 label_missing_api_access_key: Missing an API access key
879 label_missing_feeds_access_key: Missing a RSS access key
879 label_missing_feeds_access_key: Missing a RSS access key
880 button_show: Show
880 button_show: Show
881 text_line_separated: Multiple values allowed (one line for each value).
882 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -900,3 +900,5 ja:
900 label_missing_api_access_key: Missing an API access key
900 label_missing_api_access_key: Missing an API access key
901 label_missing_feeds_access_key: Missing a RSS access key
901 label_missing_feeds_access_key: Missing a RSS access key
902 button_show: Show
902 button_show: Show
903 text_line_separated: Multiple values allowed (one line for each value).
904 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -931,3 +931,5 ko:
931 label_missing_api_access_key: Missing an API access key
931 label_missing_api_access_key: Missing an API access key
932 label_missing_feeds_access_key: Missing a RSS access key
932 label_missing_feeds_access_key: Missing a RSS access key
933 button_show: Show
933 button_show: Show
934 text_line_separated: Multiple values allowed (one line for each value).
935 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -939,3 +939,5 lt:
939 label_missing_api_access_key: Missing an API access key
939 label_missing_api_access_key: Missing an API access key
940 label_missing_feeds_access_key: Missing a RSS access key
940 label_missing_feeds_access_key: Missing a RSS access key
941 button_show: Show
941 button_show: Show
942 text_line_separated: Multiple values allowed (one line for each value).
943 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -853,3 +853,5 nl:
853 label_missing_api_access_key: Missing an API access key
853 label_missing_api_access_key: Missing an API access key
854 label_missing_feeds_access_key: Missing a RSS access key
854 label_missing_feeds_access_key: Missing a RSS access key
855 button_show: Show
855 button_show: Show
856 text_line_separated: Multiple values allowed (one line for each value).
857 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -866,3 +866,5
866 label_missing_api_access_key: Missing an API access key
866 label_missing_api_access_key: Missing an API access key
867 label_missing_feeds_access_key: Missing a RSS access key
867 label_missing_feeds_access_key: Missing a RSS access key
868 button_show: Show
868 button_show: Show
869 text_line_separated: Multiple values allowed (one line for each value).
870 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -894,3 +894,5 pl:
894 label_missing_api_access_key: Missing an API access key
894 label_missing_api_access_key: Missing an API access key
895 label_missing_feeds_access_key: Missing a RSS access key
895 label_missing_feeds_access_key: Missing a RSS access key
896 button_show: Show
896 button_show: Show
897 text_line_separated: Multiple values allowed (one line for each value).
898 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -899,3 +899,5 pt-BR:
899 label_missing_api_access_key: Missing an API access key
899 label_missing_api_access_key: Missing an API access key
900 label_missing_feeds_access_key: Missing a RSS access key
900 label_missing_feeds_access_key: Missing a RSS access key
901 button_show: Show
901 button_show: Show
902 text_line_separated: Multiple values allowed (one line for each value).
903 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -883,3 +883,5 pt:
883 label_missing_api_access_key: Missing an API access key
883 label_missing_api_access_key: Missing an API access key
884 label_missing_feeds_access_key: Missing a RSS access key
884 label_missing_feeds_access_key: Missing a RSS access key
885 button_show: Show
885 button_show: Show
886 text_line_separated: Multiple values allowed (one line for each value).
887 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -868,3 +868,5 ro:
868 label_missing_api_access_key: Missing an API access key
868 label_missing_api_access_key: Missing an API access key
869 label_missing_feeds_access_key: Missing a RSS access key
869 label_missing_feeds_access_key: Missing a RSS access key
870 button_show: Show
870 button_show: Show
871 text_line_separated: Multiple values allowed (one line for each value).
872 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -979,3 +979,5 ru:
979 label_missing_api_access_key: Missing an API access key
979 label_missing_api_access_key: Missing an API access key
980 label_missing_feeds_access_key: Missing a RSS access key
980 label_missing_feeds_access_key: Missing a RSS access key
981 button_show: Show
981 button_show: Show
982 text_line_separated: Multiple values allowed (one line for each value).
983 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -870,3 +870,5 sk:
870 label_missing_api_access_key: Missing an API access key
870 label_missing_api_access_key: Missing an API access key
871 label_missing_feeds_access_key: Missing a RSS access key
871 label_missing_feeds_access_key: Missing a RSS access key
872 button_show: Show
872 button_show: Show
873 text_line_separated: Multiple values allowed (one line for each value).
874 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -867,3 +867,5 sl:
867 label_missing_api_access_key: Missing an API access key
867 label_missing_api_access_key: Missing an API access key
868 label_missing_feeds_access_key: Missing a RSS access key
868 label_missing_feeds_access_key: Missing a RSS access key
869 button_show: Show
869 button_show: Show
870 text_line_separated: Multiple values allowed (one line for each value).
871 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -886,3 +886,5
886 label_missing_api_access_key: Missing an API access key
886 label_missing_api_access_key: Missing an API access key
887 label_missing_feeds_access_key: Missing a RSS access key
887 label_missing_feeds_access_key: Missing a RSS access key
888 button_show: Show
888 button_show: Show
889 text_line_separated: Multiple values allowed (one line for each value).
890 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -920,3 +920,5 sv:
920 label_missing_api_access_key: Missing an API access key
920 label_missing_api_access_key: Missing an API access key
921 label_missing_feeds_access_key: Missing a RSS access key
921 label_missing_feeds_access_key: Missing a RSS access key
922 button_show: Show
922 button_show: Show
923 text_line_separated: Multiple values allowed (one line for each value).
924 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -868,3 +868,5 th:
868 label_missing_api_access_key: Missing an API access key
868 label_missing_api_access_key: Missing an API access key
869 label_missing_feeds_access_key: Missing a RSS access key
869 label_missing_feeds_access_key: Missing a RSS access key
870 button_show: Show
870 button_show: Show
871 text_line_separated: Multiple values allowed (one line for each value).
872 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -898,3 +898,5 tr:
898 label_missing_api_access_key: Missing an API access key
898 label_missing_api_access_key: Missing an API access key
899 label_missing_feeds_access_key: Missing a RSS access key
899 label_missing_feeds_access_key: Missing a RSS access key
900 button_show: Show
900 button_show: Show
901 text_line_separated: Multiple values allowed (one line for each value).
902 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -867,3 +867,5 uk:
867 label_missing_api_access_key: Missing an API access key
867 label_missing_api_access_key: Missing an API access key
868 label_missing_feeds_access_key: Missing a RSS access key
868 label_missing_feeds_access_key: Missing a RSS access key
869 button_show: Show
869 button_show: Show
870 text_line_separated: Multiple values allowed (one line for each value).
871 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -930,3 +930,5 vi:
930 label_missing_api_access_key: Missing an API access key
930 label_missing_api_access_key: Missing an API access key
931 label_missing_feeds_access_key: Missing a RSS access key
931 label_missing_feeds_access_key: Missing a RSS access key
932 button_show: Show
932 button_show: Show
933 text_line_separated: Multiple values allowed (one line for each value).
934 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -964,3 +964,5
964 label_missing_api_access_key: Missing an API access key
964 label_missing_api_access_key: Missing an API access key
965 label_missing_feeds_access_key: Missing a RSS access key
965 label_missing_feeds_access_key: Missing a RSS access key
966 button_show: Show
966 button_show: Show
967 text_line_separated: Multiple values allowed (one line for each value).
968 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -895,3 +895,5 zh:
895 label_missing_api_access_key: Missing an API access key
895 label_missing_api_access_key: Missing an API access key
896 label_missing_feeds_access_key: Missing a RSS access key
896 label_missing_feeds_access_key: Missing a RSS access key
897 button_show: Show
897 button_show: Show
898 text_line_separated: Multiple values allowed (one line for each value).
899 setting_mail_handler_body_delimiters: Truncate emails after one of these lines
@@ -116,6 +116,8 notified_events:
116 default:
116 default:
117 - issue_added
117 - issue_added
118 - issue_updated
118 - issue_updated
119 mail_handler_body_delimiters:
120 default: ''
119 mail_handler_api_enabled:
121 mail_handler_api_enabled:
120 default: 0
122 default: 0
121 mail_handler_api_key:
123 mail_handler_api_key:
@@ -370,6 +370,7 input#time_entry_comments { width: 90%;}
370
370
371 .tabular.settings p{ padding-left: 300px; }
371 .tabular.settings p{ padding-left: 300px; }
372 .tabular.settings label{ margin-left: -300px; width: 295px; }
372 .tabular.settings label{ margin-left: -300px; width: 295px; }
373 .tabular.settings textarea { width: 99%; }
373
374
374 fieldset.settings label { display: block; }
375 fieldset.settings label { display: block; }
375
376
@@ -26,10 +26,22 in urna sed tellus aliquet lobortis. Morbi scelerisque tortor in dolor. Cras
26 sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
26 sagittis odio eu lacus. Aliquam sem tortor, consequat sit amet, vestibulum
27 id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
27 id, iaculis at, lectus. Fusce tortor libero, congue ut, euismod nec, luctus
28 eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
28 eget, eros. Pellentesque tortor enim, feugiat in, dignissim eget, tristique
29 sed, mauris. Pellentesque habitant morbi tristique senectus et netus et
29 sed, mauris --- Pellentesque habitant morbi tristique senectus et netus et
30 malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
30 malesuada fames ac turpis egestas. Quisque sit amet libero. In hac habitasse
31 platea dictumst.
31 platea dictumst.
32
32
33 --- This line starts with a delimiter and should not be stripped
34
35 This paragraph is before delimiters.
36
37 BREAK
38
39 This paragraph is between delimiters.
40
41 ---
42
43 This paragraph is after the delimiter so it shouldn't appear.
44
33 Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
45 Nulla et nunc. Duis pede. Donec et ipsum. Nam ut dui tincidunt neque
34 sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
46 sollicitudin iaculis. Duis vitae dolor. Vestibulum eget massa. Sed lorem.
35 Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
47 Nullam volutpat cursus erat. Cras felis dolor, lacinia quis, rutrum et,
@@ -279,10 +279,62 class MailHandlerTest < ActiveSupport::TestCase
279 assert_equal 'This is a html-only email.', issue.description
279 assert_equal 'This is a html-only email.', issue.description
280 end
280 end
281
281
282 context "truncate emails based on the Setting" do
283 context "with no setting" do
284 setup do
285 Setting.mail_handler_body_delimiters = ''
286 end
287
288 should "add the entire email into the issue" do
289 issue = submit_email('ticket_on_given_project.eml')
290 assert_issue_created(issue)
291 assert issue.description.include?('---')
292 assert issue.description.include?('This paragraph is after the delimiter')
293 end
294 end
295
296 context "with a single string" do
297 setup do
298 Setting.mail_handler_body_delimiters = '---'
299 end
300
301 should "truncate the email at the delimiter for the issue" do
302 issue = submit_email('ticket_on_given_project.eml')
303 assert_issue_created(issue)
304 assert issue.description.include?('This paragraph is before delimiters')
305 assert issue.description.include?('--- This line starts with a delimiter')
306 assert !issue.description.match(/^---$/)
307 assert !issue.description.include?('This paragraph is after the delimiter')
308 end
309 end
310
311 context "with multiple strings" do
312 setup do
313 Setting.mail_handler_body_delimiters = "---\nBREAK"
314 end
315
316 should "truncate the email at the first delimiter found (BREAK)" do
317 issue = submit_email('ticket_on_given_project.eml')
318 assert_issue_created(issue)
319 assert issue.description.include?('This paragraph is before delimiters')
320 assert !issue.description.include?('BREAK')
321 assert !issue.description.include?('This paragraph is between delimiters')
322 assert !issue.description.match(/^---$/)
323 assert !issue.description.include?('This paragraph is after the delimiter')
324 end
325 end
326 end
327
282 private
328 private
283
329
284 def submit_email(filename, options={})
330 def submit_email(filename, options={})
285 raw = IO.read(File.join(FIXTURES_PATH, filename))
331 raw = IO.read(File.join(FIXTURES_PATH, filename))
286 MailHandler.receive(raw, options)
332 MailHandler.receive(raw, options)
287 end
333 end
334
335 def assert_issue_created(issue)
336 assert issue.is_a?(Issue)
337 assert !issue.new_record?
338 issue.reload
339 end
288 end
340 end
General Comments 0
You need to be logged in to leave comments. Login now