юзер делает покупку лицензии для продукта, получает письмо с лицензией, и может скачать файл лицензии, который в последующем будет использован для активации десктопного ПО. Моя задача убедиться что:
- пользователь после успешной покупки получил письмо с файлом лицензии.
- id лицензии в теле письма соответствует id лицензии в приаттаченном файле и соответствует id лицензии на сайте в личных данных аккаунта.
- И в идеале убедиться, что пользователь может скачать и сохранить локально файл лицензии (а заодно и проверить вес файла). Т.к. в последующем мне нужно будет этот файл скармливать десктопному ПО.
Но, этот сценарий актуален для тестового сервера, т.к. на тестовом серваке файл лицензии содержит id лицензии.
На продакшине файл лицензии содержит зашифрованную информацию, соответственно никакой id из него достать не получится. Поэтому, для продакшина мне куда важнее иметь возможность скачать/сохранить файл и проверить его вес. (+ в последующем опять таки, скармливать этот файл десктопному ПО). Единственное, что я сейчас делаю для продакшина - это проверяю, что содержимое приаттаченного файла на продакшине не пустое и не содержит данные, как в файле на тестовом сервере.
Такие дела… ну и в общем, мне что на тестовом, что на продакшине, в дальнейшем, нужно будет кормить ПО этим файлом, поэтому, так или иначе, его нужно будет скачивать. Так что, текущая моя реализация, можно сказать - дополнительная проверка + временная заглушка вместо скачивания.
вот кейворд, выполняющий это:
Check license from email
[Arguments] ${my_email} ${environment}
Open Mailbox server=${mail_server} user=${mail_server_username} password=${mail_server_password}
${latest_mail}= Wait for Email fromEmail=${cr_email} toEmail=${my_email} status=UNSEEN timeout=300
${parts} = Walk Multipart Email ${latest_mail}
ignore part null
Walk Multipart Email ${latest_mail}
${part_null} = Get Multipart Payload decode=True
body
Walk Multipart Email ${latest_mail}
${email_license_id} = Get Multipart Payload decode=True
${email_license_id} = Fetch From Right ${email_license_id} ${l_marker_body}
${email_license_id} = Fetch From Left ${email_license_id} ${r_marker_body}
log ${email_license_id}
attachment
Walk Multipart Email ${latest_mail}
${file_license_id} = Get Multipart Payload decode=True
${file_license_id} = Fetch From Right ${file_license_id} ${l_marker_file}
log ${file_license_id}
Run Keyword if “${environment}” == “test_environment” Run Keywords Should be equal ${email_license_id} ${file_license_id} AND Should be equal ${email_license_id} ${account_license_id}
Run Keyword if “${environment}” == “production” Run Keywords Should not be empty ${email_license_id} msg=Mail is empty AND Should not be empty ${file_license_id} msg=License file is empty AND Should not Contains ${file_license_id} TEST_MODE license msg=WARNING! Staging License on production! AND Should be equal ${email_license_id} ${account_license_id}
Close mailbox
Проблему можно решить деревянным способом - открывать почту в браузере, а не коннектится напрямую к почтовому серваку, и кликать по приаттаченному файлу, чтобы скачать его. Но, я не хочу идти таким путем. Это увеличит время выполнения теста (а с учетом того, что тестов на покупку сотни, то это очень сильно увеличит время выполнения)