Testing Extensions
The following checklist will help you organize your work testing your extension before submitting it for publishing.
Testing Extension’s Functionality
-
Make sure the extension can be correctly installed, upgraded and uninstalled. For a new extension, upgrading can be tested by uploading it one more time.
-
To see all extension errors, change the default PHP error reporting. To do so, make sure that the
error_reporting
directive in the Pleskphp.ini
file has the following value:error_reporting = E_ALL & ~E_STRICT & ~E_DEPRECATED
php.ini
is located as follows:- (Plesk for Linux)
/usr/local/psa/admin/conf/php.ini
- (Plesk for Windows)
%plesk_dir%admin\conf\php.ini
- (Plesk for Linux)
-
Make sure that the extension checks whether the operating system used is supported by it. In case it is not, the extension must explicitly inform the administrator with a human-readable message.
-
Check that all extension’s functions work as expected, the extension does not hang or crash.
-
If the extension is using an SQLite database, check that it correctly works with Plesk objects, that it is secured against SQL injections, and correctly handles an extension upgrade.
-
If the extension uses
panel.ini
to store certain configuration settings, make sure those settings are working correctly, and check that uninstalling the extension does not break the rest of thepanel.ini
contents. -
If your extension is using long tasks, make sure they do not interfere with other long tasks’ execution, the extension must handle stopping long tasks correctly. Check that the long task execution does not degrade the server performance.
Testing UX and UI
- Make sure the custom buttons your extension adds to Plesk UI are placed correctly and are accessible only when appropriate.
- If the extension implements custom UI, check that works correctly, that it integrates with Plesk UI without breaking layout, navigation, styles, etc. Rendering time of the custom UI should be optimized.
- Promotional info blocks contents should be displayed correctly, including icons, localized texts, the links must work.
- Make sure the extension’s UI provides sufficient information to assist the user when necessary. It may include descriptions, tooltips, links to help files, instructions for contacting customer support, etc.
Testing Extension’s Functionality Support for Different Types of Domains
- Create the different types of domains and test the extension’s functionality.
- Test the extension’s functionality on different types of domains: subscriptions (main domains), addon domains, subdomains with own DNS zone, subdomains with parent DNS zone, wildcard subdomains, domain aliases, domain forwarding, no hosting domains.
- Test the extension on domains in their different statuses: active, disabled, suspended.
- Test the extension on domains with special characteristics, such as: domains with IDN, domains using IPv6, domains with names containing mixed case characters, domains that contain web applications installed in directories other than in the doc root or multiple web applications.
- Check that the extension’s custom buttons are not acessible for the types of domains not supported by extension.
- Make sure all operations on domains are correctly supported by the extension and the external service it integrates with, in particular: adding and removing a domain, disabling and activating, suspending and activating, editing domain’s hosting settings.
Testing Users’ Access to Extension’s Functionality
- Make sure users with different roles (admin, reseller, client) have access to those and only those functions and data that they should.
- Make sure clients and resellers cannot access admin’s functions and data by typing in page URLs directly.
- Make sure resellers have access to domains that belong to them and their customers but not to those belonging to other reseller’s clients.
- The extension must check and work correctly when the admin is impersonating a reseller or a customer. For example, if the admin logs in as a reseller, they should exercise the reseller’s (not admin’s) privileges over the given reseller’s subscriptions, domains, etc.
- When a user’s account is removed, all relevant settings and data stored by the extension must be removed as well. This is necessary to avoid possible security issues, should a user account with the same name be created again.
Testing Licensing Implementation
The following instructions are applicable when the extension is using Plesk licensing infrastructure. They can also apply for custom licensing implementation with some adjustments.
- Make sure the license purchase button or link is available and accessible for the admin, and only admin, in the extension UI.
- Check that the store URL is correctly entered in meta.xml, and that the appropriate SDK methods are used to retrieve the URLs for purchasing and upgrading a license.
- Request and install a test license key.
- Check that the data and functions restricted by license are not accessible without an installed license. Check that the data and functions restricted by license are accessible with a license installed.
- If the extension implements a trial period, check that it works during the trial period and that it stops working when the trial period is over. Make sure there is an appropriate message explaining the trial period.
- An extension may provide varying combinations of functions and data forming different products, which are enabled by the different licenses. Check that the different licenses enable the corresponding products correctly.