pop3_spec.rb 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Channel::Driver::Pop3 do
  4. describe '#check_configuration' do
  5. before do
  6. stub_const('MockedMessage', Struct.new(:pop))
  7. allow_any_instance_of(Net::POP3)
  8. .to receive(:start)
  9. allow_any_instance_of(Net::POP3)
  10. .to receive(:finish)
  11. allow_any_instance_of(Net::POP3)
  12. .to receive(:enable_ssl)
  13. allow_any_instance_of(Net::POP3)
  14. .to receive(:mails)
  15. .and_return(message_ids)
  16. end
  17. def mock_a_message(verify: false)
  18. attrs = {
  19. from: Faker::Internet.unique.email,
  20. to: Faker::Internet.unique.email,
  21. body: Faker::Lorem.sentence,
  22. content_type: 'text/html',
  23. }
  24. if verify
  25. attrs[:'X-Zammad-Ignore'] = 'true'
  26. attrs[:'X-Zammad-Verify'] = 'true'
  27. attrs[:'X-Zammad-Verify-Time'] = Time.current.to_s
  28. end
  29. Channel::EmailBuild.build(**attrs).to_s
  30. end
  31. context 'when no messages exist' do
  32. let(:message_ids) { [] }
  33. it 'finds no content messages' do
  34. response = described_class
  35. .new
  36. .check_configuration({})
  37. expect(response).to include(
  38. result: 'ok',
  39. content_messages: be_zero,
  40. )
  41. end
  42. end
  43. context 'when a verify message exist' do
  44. let(:message_ids) do
  45. [
  46. MockedMessage.new(mock_a_message(verify: true)),
  47. ]
  48. end
  49. it 'finds no content messages' do
  50. response = described_class
  51. .new
  52. .check_configuration({})
  53. expect(response).to include(
  54. result: 'ok',
  55. content_messages: be_zero,
  56. )
  57. end
  58. end
  59. context 'when some content messages exist' do
  60. let(:message_ids) do
  61. [
  62. MockedMessage.new(mock_a_message),
  63. MockedMessage.new(mock_a_message),
  64. MockedMessage.new(mock_a_message),
  65. ]
  66. end
  67. it 'finds content messages' do
  68. response = described_class
  69. .new
  70. .check_configuration({})
  71. expect(response).to include(
  72. result: 'ok',
  73. content_messages: 3,
  74. )
  75. end
  76. end
  77. context 'when a verify and a content message exists' do
  78. let(:message_ids) do
  79. [
  80. MockedMessage.new(mock_a_message(verify: true)),
  81. MockedMessage.new(mock_a_message),
  82. ]
  83. end
  84. it 'finds content messages' do
  85. response = described_class
  86. .new
  87. .check_configuration({})
  88. expect(response).to include(
  89. result: 'ok',
  90. content_messages: 2,
  91. )
  92. end
  93. end
  94. end
  95. end