Skip to content

Instantly share code, notes, and snippets.

@artbear
Created August 9, 2018 08:55
Show Gist options
  • Save artbear/033715e140299bb908895cc90ec9ef01 to your computer and use it in GitHub Desktop.
Save artbear/033715e140299bb908895cc90ec9ef01 to your computer and use it in GitHub Desktop.
Контроль отправления почты (mock SMTP моки)

Источник https://gitter.im/silverbulleters/vanessa-behavior?at=5b697f7774470f5c985e9fe7 Andrey @KrapivinAndrey авг. 07 14:16 Лень писать статью на Infostart. Может кому пригодится. https://github.com/KrapivinAndrey/VanessaFakeMail Мне потребовалось автоматизировать контроль отправления почты. А то третий раз уже ломают. Это микробиблиотека

Infactum @Infactum авг. 07 14:39 С чего вы решили, что если отправить письмо, то до получателя оно дойдет? Странный способ тестирования.. зачем оно? Это я про

Допустим отправляю уведомления на почту
    Тогда пришло письмо
        Тогда в ящике есть новые письма
        И письма для "user@fakemail.com"
        И темой письма "SPAM!!!"

Andrey @KrapivinAndrey авг. 07 15:02 В этих строках обращение к SMTP серверу. Так что проверяется что "пули ушли" Но чтобы аналитику было понятно, пришлось использовать такой текст Проблема в том что иногда все ломалось и письма не уходили

Infactum @Infactum авг. 07 15:06 Имхо тест должен быть таким

Допустим я настроил отправку уведомлений на почту
И я выполняю какое-то действие
И уведомление передано SMTP серверу

далее не проблема 1С и еще проверку настроек можно в другом тесте. Что установка каких-то там настроек системы уведомлений приводит к верной комбианции параметров SMTP

Andrey @KrapivinAndrey авг. 07 15:21 @Infactum Так и выглядело в начале. Но с т.з. читабельности - не айс

Infactum @Infactum авг. 07 15:22 Так смысл другой в тесте совсем. И библиотека не нужна. Зачем эмулировать работу SMTP вообще?

Andrey @KrapivinAndrey авг. 07 15:23

Когда Администратор открывает обработку
        Дано Я открыл сеанс TestClient от имени "Администратор (ФедоровБМ)" с паролем "" или подключаю уже существующий
        И   Я закрыл все окна клиентского приложения
        И запускаю обработку КФокус из дополнительных отчетов и обработок
    И настраивает Наблюдение
        И я нажимаю на кнопку 'Наблюдение'
        Тогда открылось окно 'Хранение данных и наблюдение: Контур.Фокус'
        Тогда указываю параметры почты
            И в поле 'Адрес эл.почты' я ввожу текст 'focus@mycompany.com'
            И в поле 'Сервер SMTP' я ввожу текст 'localhost'
            И в поле 'Порт SMTP' я ввожу текст '1025'
    Тогда проверяю что все настроено корректно
        Когда я нажимаю на кнопку 'Проверить настройки учетной записи'
        Тогда открылось окно 'Укажите email для проверки:'
        И в поле 'InputFld' я ввожу текст 'admin@mycompany.com'
        И я нажимаю на кнопку 'OK'
        Тогда я получаю письмо от системы
            Тогда в ящике есть новые письма
            И темой письма "Контур.Фокус: тестовое письмо"
            И письма для "admin"
    И сохраняем настройки
        Тогда открылось окно 'Хранение данных и наблюдение: Контур.Фокус *'
        И я нажимаю на кнопку 'Сохранить'
    Тогда я закрываю TestClient "Этот клиент"

Infactum @Infactum авг. 07 15:25 И в итоге тест не работы уведомлений, а уведомлений + smtp (и то частично). А если письмо не дошло, из-за блока по спаму? Или принимающий сервере лежит? и т.д..

Andrey @KrapivinAndrey авг. 07 15:26 Это уже не наши проблемы как раз. Наша задача чтобы отработало уведомление корректно

Infactum @Infactum авг. 07 15:26 Но вы же не можете это гарантировать) Вы можете только отдать его SMTP.. не более

Andrey @KrapivinAndrey авг. 07 15:27 Тестировать не зависящий от нас транспорт - странная задача. Вдруг по mail.ru работает, а gmail.com нет. Все почтовые сервера не протестируешь

Infactum @Infactum авг. 07 15:27 А ваш тест именно это и описывает

Andrey @KrapivinAndrey авг. 07 15:28 тест описывает что данные переданы в транспорт.

Infactum @Infactum авг. 07 15:28

Тогда я получаю письмо от системы
            Тогда в ящике есть новые письма
            И темой письма "Контур.Фокус: тестовое письмо"
            И письма для "admin"

Andrey @KrapivinAndrey авг. 07 15:29 и? у пользователя в итоге может быть совсем другое название почты У меня тиражное решение.

Infactum @Infactum авг. 07 15:29 Тест проверяет, что вы получили письмо. Но это как раз то, что проверить нельзя (сами выше и написали). Нужно проверить, что письмо отдано SMTP с верными настройками. Или предполагается, что у вас пользователи так проверяют работу уведомлений на своих серверах?)

Andrey @KrapivinAndrey авг. 07 15:30 Тест не проверять что я его получил. Я согласен. но! Для читабельности решили оставить так. И стабильности Не предполагается. Это реальный кейс по настройке уведомления. Есть еще более большой сценарий по срабатыванию этих уведомлений.

Infactum @Infactum авг. 07 15:33 Вот не помню я с кем подобный кейс обсуждали не так давно. Я тогда советовал просто объект ИнтернетПочта подменить. Имхо проще. Но дело ваше.

Andrey @KrapivinAndrey авг. 07 15:35 Кодить меньше)

Infactum @Infactum авг. 07 15:36 Это еще вопрос где кодить меньше :)

Andrey @KrapivinAndrey авг. 07 15:38 да не вопрос) если б это была конфига - да. А у меня обработка. делать фасад в МодулеОбъекта - не очень благодарное дело.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment