postmaster_filter_regex_operator_spec.rb 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe PostmasterFilterRegexOperator, type: :db_migration do
  4. context 'when postmaster filters needs to be updated' do
  5. let!(:filter) do
  6. create(:postmaster_filter,
  7. match: {
  8. 'subject' => {
  9. 'operator' => 'contains',
  10. 'value' => 'dummy*',
  11. },
  12. 'to' => {
  13. 'operator' => 'contains',
  14. 'value' => 'regex:test.*',
  15. },
  16. 'from' => {
  17. 'operator' => 'contains not',
  18. 'value' => 'x',
  19. },
  20. 'cc' => {
  21. 'operator' => 'contains not',
  22. 'value' => 'regex:^abc.*z$',
  23. },
  24. })
  25. end
  26. it 'does migrate the postmaster filters' do
  27. migrate
  28. expect(filter.reload.match).to eq({
  29. 'subject' => {
  30. 'operator' => 'contains',
  31. 'value' => 'dummy*',
  32. },
  33. 'to' => {
  34. 'operator' => 'matches regex',
  35. 'value' => 'test.*',
  36. },
  37. 'from' => {
  38. 'operator' => 'contains not',
  39. 'value' => 'x',
  40. },
  41. 'cc' => {
  42. 'operator' => 'does not match regex',
  43. 'value' => '^abc.*z$',
  44. },
  45. })
  46. end
  47. end
  48. context 'when monitoring settings needs to be updated' do
  49. before do
  50. %w[nagios icinga monit].each do |monitoring_name|
  51. setting_name = "#{monitoring_name}_sender"
  52. Setting.set(setting_name, 'regex:test.*')
  53. end
  54. end
  55. it 'the regex prefix was removed' do
  56. migrate
  57. %w[nagios icinga monit].each do |monitoring_name|
  58. setting_name = "#{monitoring_name}_sender"
  59. expect(Setting.get(setting_name)).to eq('test.*')
  60. end
  61. end
  62. end
  63. end