# Тестирование расширений

Этот контрольный список поможет вам организовать работу при тестировании расширения перед отправкой его на публикацию.

## Тестирование функциональности расширения

1. Удостоверьтесь в том, что расширение можно корректно установить, обновить и удалить. Для нового расширения обновление можно протестировать путем повторной загрузки расширения.
2. Удостоверьтесь в том, что расширение проверяет, поддерживается ли используемая операционная система. Если нет – расширение должно явно сообщить об этом администратору с помощью удобочитаемого сообщения.
3. Проверьте, что все функции расширения работают, как ожидается, расширение не зависает и не падает.
4. Если расширение использует хранилище пар «ключ-значение» Plesk для хранения данных, удостоверьтесь в том, что оно делает это правильно и эффективно.
5. Если расширение использует базу данных SQLite, проверьте, что она корректно работает с объектами Plesk, защищена от SQL-инъекций и правильно ведет себя при обновлении расширения.
6. Если вы используете Javascript и CSS для изменения страниц Plesk и/или расширения, обратите внимание на то, как это отражается на производительности, и избегайте конфликтов имен.
7. Если расширение использует файл `panel.ini` для хранения каких-либо настроек, удостоверьтесь в том, что эти настройки работают правильно, и проверьте, что удаление расширения не нарушает остального содержимого файла `panel.ini`.
8. Если ваше расширение использует длительные задачи, удостоверьтесь в том, что они не мешают выполнению других длительных задач, и что расширение корректно останавливает длительные задачи. Удостоверьтесь в том, что выполнение длительных задач не снижает производительности сервера.
9. Если расширение позволяет устанавливать дополнительные пакеты, убедитесь, что соответствующие длительные задачи запускаются и работают правильно, в один момент времени выполняется только один процесс установки, зависимости устанавливаются, и любые дополнительные репозитории добавляются корректно. Когда расширение удаляется, оно должно также корректно удалять установленные пакеты и репозитории.
10. Необходимо тщательно проверить интеграцию расширения с внешней службой, а именно: все необходимые объекты и данные должны корректно передаваться из Plesk во внешнюю службу, все изменения на стороне службы должны корректно передаваться в Plesk, расширение должно корректно вести себя в случае недоступности внешней службы.

## Тестирование интерфейса и взаимодействия с пользователем

1. Удостоверьтесь в том, что персональные кнопки, которые ваше расширение добавляет к интерфейсу Plesk, расположены правильно и доступны тогда, когда нужно.
2. Если расширение имеет свой персональный интерфейс, проверьте, что в нем все работает правильно, и что он правильно интегрирован в интерфейс Plesk без нарушения структуры, навигации, стилей и т.п. Время отрисовки персонального интерфейса должно быть оптимизировано.
3. Содержимое информационных промо-блоков должно отображаться корректно, включая значки и локализованный текст. Ссылки должны работать.
4. Удостоверьтесь в том, что интерфейс расширения предоставляет достаточно информации, чтобы помочь пользователю, когда это необходимо. Он может включать в себя описания, подсказки, ссылки на файлы справки, инструкции по получению поддержки и т.д.

## Тестирование поддержки функциональности расширения для различных типов доменов

1. Создайте домены разных типов и протестируйте на них функциональность расширения.
2. Протестируйте функциональность расширения на различных типах доменов: подписки (основные домены), дополнительные домены, субдомены с собственной зоной DNS, субдомены с родительской зоной DNS, подстановочные субдомены, псевдонимы доменов, перенаправления доменов, домены без хостинга.
3. Протестируйте расширение на доменах в разных статусах: активен, отключен, приостановлен.
4. Протестируйте расширение на доменах с различными характеристиками, например: на доменах с IDN; на доменах, использующих IPv6; на доменах, имена которых содержат символы в разном регистре; на доменах с веб-приложениями, установленными в папках, отличных от корневой, или с несколькими веб-приложениями.
5. Проверьте, что персональные кнопки расширения недоступны для типов доменов, которые не поддерживаются расширением.
6. Удостоверьтесь в том, что все операции с доменами корректно поддерживаются расширением, и внешней службой, с которым оно интегрировано, в частности: добавление и удаление домена, отключение и активация, приостановка и активация, редактирование настроек хостинга домена.

## Тестирование доступа пользователей к функциональности расширения

1. Удостоверьтесь в том, что пользователи с различными ролями (администратор, реселлер, клиент) имеют доступ к тем и только к тем функциям и данным, к которым должны его иметь.
2. Удостоверьтесь в том, что клиенты и реселлеры не могут получить доступ к функциям и данным администратора, вводя URL-адреса страниц напрямую.
3. Удостоверьтесь в том, что у реселлеров есть доступ к доменам, принадлежащим им и их клиентам, но нет доступа к доменам, принадлежащим клиентам других реселлеров.
4. Расширение должно определять, когда администратор работает от имени реселлера или клиента, и работать в этом случае корректно. Например, если администратор выполняет вход от имени реселлера, у него должны быть права реселлера (а не администратора) управления подписками, доменами и прочими объектами реселлера.
5. Когда удаляется учетная запись пользователя, все связанные с ней настройки и данные, хранимые расширением, должны быть также удалены. Необходимо предотвращать возможные проблемы безопасности в случае, когда учетная запись пользователя с таким же именем создается повторно.

## Тестирование лицензирования

Когда расширение использует инфраструктуру лицензирования Plesk, применимы следующие инструкции. Их также можно применять с некоторыми изменениями в случае персонального лицензирования.

1. Удостоверьтесь в том, что кнопка или ссылка для покупки лицензии в интерфейсе расширения доступна администратору и только администратору.
2. Проверьте, что в файле meta.xml корректно записан URL-адрес магазина, и что для получения URL-адресов для покупки и обновления лицензии используются нужные методы SDK.
3. Запросите и установите тестовый лицензионный ключ.
4. Проверьте, что данные и функции, к которым предоставляет доступ лицензия, недоступны без ее установки. Проверьте, что данные и функции, к которым предоставляет доступ лицензия, доступны после ее установки.
5. Если у расширения есть пробный период, проверьте, что оно работает во время этого пробного периода и перестает работать, когда он заканчивается. Удостоверьтесь в том, что пользователи видят корректное сообщение, сообщающее о действии пробного периода.
6. Расширение может предоставлять различные комбинации функций и данных как разные продукты, доступные с разными лицензиями. Проверьте, что разные лицензии дают доступ к соответствующим продуктам.