2016-04-17 09:39:08 -05:00
|
|
|
|
pgAdmin 4 Test Framework
|
|
|
|
|
========================
|
|
|
|
|
|
2016-07-18 08:50:21 -05:00
|
|
|
|
This regression framework is designed to execute unit tests for all modules to
|
|
|
|
|
help catch regressions in the code.
|
2016-04-17 09:39:08 -05:00
|
|
|
|
|
|
|
|
|
Assumptions
|
|
|
|
|
-----------
|
|
|
|
|
|
2016-07-27 09:35:11 -05:00
|
|
|
|
- pgAdmin must have SMTP configured if SERVER_MODE == True.
|
2016-04-17 09:39:08 -05:00
|
|
|
|
- There should be a single server group present in the browser.
|
|
|
|
|
- Currently each module will have testcases related to ONLY GET, POST, PUT,
|
|
|
|
|
and DELETE api’s.
|
|
|
|
|
|
|
|
|
|
General Information
|
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
|
|
1) The required test cases should be placed under the /tests directory of the
|
|
|
|
|
respective module.
|
|
|
|
|
|
|
|
|
|
- 'pgadmin/browser/tests' directory contains test-cases for following
|
|
|
|
|
modules:
|
|
|
|
|
|
|
|
|
|
1. Login Page
|
|
|
|
|
2. Reset Password Page
|
|
|
|
|
3. Change Password Page
|
|
|
|
|
4. Logout Page
|
|
|
|
|
|
|
|
|
|
- 'pgAdmin4/web/pgadmin/browser/server_groups/tests/' shows an example of
|
|
|
|
|
tree traversal of the pgAdmin modules and how the test folder is required
|
|
|
|
|
for each individual module.
|
|
|
|
|
|
|
|
|
|
- 'pgadmin/browser/server_groups/servers/tests/' directory will have separate
|
|
|
|
|
file for each test-case:
|
|
|
|
|
|
|
|
|
|
1. test_server_add.py
|
|
|
|
|
2. test_server_delete.py
|
|
|
|
|
3. test_server_get.py
|
|
|
|
|
4. test_server_update.py
|
|
|
|
|
|
2016-07-18 08:50:21 -05:00
|
|
|
|
2) The pgAdmin4 source tree includes 2 different configuration file templates.
|
|
|
|
|
One file template for the server configuration
|
|
|
|
|
named ‘test_config.json.in' and another for test configuration named
|
|
|
|
|
'test_advanced_config.json.in' in the ‘pgAdmin4/web/regression’ directory.
|
|
|
|
|
After completing the pgAdmin4 configuration, you must make a working copy of
|
|
|
|
|
the templates called test_config.json and test_advance_config.json
|
|
|
|
|
before modifying the file contents.
|
2016-04-17 09:39:08 -05:00
|
|
|
|
|
2016-07-18 08:50:21 -05:00
|
|
|
|
2a) The following command copies the test_config.json.in file, creating a
|
|
|
|
|
configuration file named test_config.json (same way user can copy
|
|
|
|
|
test_advance_config.json.in file into test_advance_config.json)
|
2016-04-17 09:39:08 -05:00
|
|
|
|
|
2016-07-18 08:50:21 -05:00
|
|
|
|
$ cp pgadmin4/web/regression/test_config.json.in \
|
|
|
|
|
pgadmin4/web/regression/test_config.json
|
2016-04-17 09:39:08 -05:00
|
|
|
|
|
2016-07-18 08:50:21 -05:00
|
|
|
|
2b) After creating the server and test configuration file, add (or modify)
|
|
|
|
|
parameter values as per requirements. The pgAdmin4 regression framework expects
|
|
|
|
|
to find the files in the directory '/<installation dir>/web/regression/'.
|
|
|
|
|
If you move the file to another location, you must create a symbolic
|
|
|
|
|
link that specifies the new location.
|
2016-04-17 09:39:08 -05:00
|
|
|
|
|
2016-07-18 08:50:21 -05:00
|
|
|
|
2c) Specifying Server Configuration file:
|
|
|
|
|
|
|
|
|
|
Server details and connection properties as per their local setup. The
|
|
|
|
|
test_config file is in JSON format and property values are
|
|
|
|
|
case-sensitive.
|
|
|
|
|
|
|
|
|
|
2d) Specifying the Test Configuration file:
|
|
|
|
|
|
|
|
|
|
The user can add/change test data as per their need. The
|
|
|
|
|
test_advanced_config file is in JSON format and property values are
|
|
|
|
|
case-sensitive.
|
2016-04-17 09:39:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Test Data Details
|
|
|
|
|
-----------------
|
|
|
|
|
|
2016-08-09 10:05:40 -05:00
|
|
|
|
"pgAdmin4 Login Credentials" (used to login to pgAdmin):
|
|
|
|
|
|
|
|
|
|
login_username = login id
|
|
|
|
|
login_password = login password
|
|
|
|
|
new_password = new login password
|
|
|
|
|
|
|
|
|
|
"pgAdmin4 Test User Credentials" (dummy user used for testing user management):
|
|
|
|
|
|
|
|
|
|
login_username = login id
|
|
|
|
|
login_password = login password
|
|
|
|
|
new_password = new login password
|
|
|
|
|
|
|
|
|
|
"server_credentials":
|
|
|
|
|
|
|
|
|
|
name = Server/database Name
|
|
|
|
|
db_username = Database Username
|
|
|
|
|
host = IP Address of Server
|
|
|
|
|
db_password = Database Password
|
|
|
|
|
db_port = Database Port
|
|
|
|
|
maintenance_db = Maintenance Database
|
|
|
|
|
sslmode = SSL Mode
|
|
|
|
|
comment = Any Comments to add
|
|
|
|
|
tablespace_path = A path under which a tablespace can be created
|
2016-04-17 09:39:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Execution:
|
|
|
|
|
-----------
|
2016-07-18 08:50:21 -05:00
|
|
|
|
|
2016-04-17 09:39:08 -05:00
|
|
|
|
- The test framework is modular and pluggable and dynamically locates tests
|
|
|
|
|
for modules which are discovered at runtime. All test cases are found
|
|
|
|
|
and registered automatically by its module name in
|
|
|
|
|
'pgadmin4/web/pgadmin/utils/test.py' file.
|
|
|
|
|
|
2016-07-18 08:50:21 -05:00
|
|
|
|
- Execute the test framework for all nodes
|
|
|
|
|
run 'regression/runtests.py --pkg all' or just:
|
|
|
|
|
'regression/runtests.py'
|
|
|
|
|
|
|
|
|
|
- Execute test framework for single node at a time
|
|
|
|
|
|
|
|
|
|
Example 1) Run test framework for 'browser' node
|
|
|
|
|
run 'regression/runtests.py --pkg browser'
|
2016-04-17 09:39:08 -05:00
|
|
|
|
|
2016-07-18 08:50:21 -05:00
|
|
|
|
Example 2) Run test framework for 'database' node
|
|
|
|
|
run 'regression/runtests.py --pkg browser.server_groups.servers.databases'
|