Перейти к содержанию

Тестирование электронной почты (библиотека ИнтернетПочта)

Gherkin-шаги для проверки писем через платформенный объект ИнтернетПочта (SMTP — отправка, IMAP — чтение). Типовое применение — проверить письма, которые шлёт тестируемая конфигурация (уведомления, задачи по почте), против локального тестового почтового сервера (GreenMail, smtp4dev и т.п.).

Мини-пример

Контекст:
    Допустим пользователь SMTP 'user@localhost'
    И пользователь IMAP 'user@localhost'

Сценарий: письмо доходит до ящика
    Допустим Я отправляю письмо от имени 'user@localhost' по адресу 'user@localhost' с темой 'Привет'
    Тогда в ящике 'INBOX' есть сообщения
    И темой сообщения 'Привет'
    Затем я отключаюсь от почтового сервера

Шаги

Шаг Назначение
пользователь SMTP/IMAP '...' Логин (пароль = логину); смена учётных данных разрывает активное подключение
Я отправляю письмо от имени '...' по адресу '...' с темой '...' Отправка письма; шаг падает, если письмо не доставлено хотя бы одному получателю
я создаю ящик '...' / я очищаю ящик '...' от сообщений Подготовка почтовых ящиков
в ящике '...' есть сообщения [с темой\|с текстом\|от\|для] '...' Серверные отборы (IMAP SEARCH); проверка с повторами (доставка асинхронна)
темой / текстом / заголовком сообщения '...', сообщения от / для '...', текстом вложения сообщения '...' Клиентские дофильтры по уже отобранному списку; читают письма в режиме PEEK — не помечают прочитанными
я отвечаю на это сообщение Ответ на первое отобранное письмо (In-Reply-To и References по RFC 5322)
я отключаюсь от почтового сервера Явное отключение в конце сценария

Ограничения

  • Серверные отборы по Теме и Тексту работают только с ASCII; кириллицу проверяйте клиентскими дофильтрами (темой сообщения, текстом сообщения).
  • Отборы по отправителю и получателю — по полному адресу (подстрока или домен не находят).
  • Шаги не работают в веб-клиенте.
  • Шаг в ящике '...' есть новые сообщения нестабилен: опирается на IMAP-флаг \Recent, который сбрасывается любым обращением к ящику. В новых сценариях не используйте.

Исходник библиотеки: features/Libraries/ИнтернетПочта/. История изменений — Changelog.