Hi,

PFA patch to add SSL support for database connection.
RM#2170

Included test to check if current connection is using SSL or not.


--
Regards,
Murtuza Zabuawala
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py
 
b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py
index cf1dc9f..cae1df0 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_add.py
@@ -52,7 +52,8 @@ class CastsAddTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         cast_utils.drop_cast(connection, self.data["srctyp"],
                              self.data["trgtyp"])
         database_utils.disconnect_database(self, self.server_id,
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py
 
b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py
index 210e49d..5925a20 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_delete.py
@@ -48,7 +48,8 @@ class CastsDeleteTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         response = cast_utils.verify_cast(connection, self.source_type,
                                           self.target_type)
         if len(response) == 0:
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py
 
b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py
index 814508b..f734884 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/test_cast_get.py
@@ -58,7 +58,8 @@ class CastsGetTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         cast_utils.drop_cast(connection, self.source_type,
                              self.target_type)
         database_utils.disconnect_database(self, self.server_id,
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/utils.py 
b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/utils.py
index b1875c0..ea49828 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/casts/tests/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/casts/tests/utils.py
@@ -43,7 +43,8 @@ def create_cast(server, source_type, target_type):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/utils.py
index 1e4040d..ae6b1d7 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/event_triggers/tests/utils.py
@@ -37,7 +37,8 @@ def create_event_trigger(server, db_name, schema_name, 
func_name,
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -77,7 +78,8 @@ def verify_event_trigger(server, db_name, trigger_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute(
             "SELECT oid FROM pg_event_trigger WHERE evtname = '%s'"
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/utils.py 
b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/utils.py
index 1bf1216..fa4faba 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/extensions/tests/utils.py
@@ -43,7 +43,8 @@ def create_extension(server, db_name, extension_name, 
schema_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -83,7 +84,8 @@ def verify_extension(server, db_name, extension_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
 
         pg_cursor.execute(
@@ -111,7 +113,8 @@ def drop_extension(server, db_name, extension_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute(
             "SELECT * FROM pg_extension WHERE extname='%s'"
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/utils.py
index affeac3..dd79134 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/tests/utils.py
@@ -31,7 +31,8 @@ def create_fsrv(server, db_name, fsrv_name, fdw_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -67,7 +68,8 @@ def verify_fsrv(server, db_name , fsrv_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
 
         pg_cursor.execute(
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/utils.py
index ee13329..3ff2b18 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/foreign_servers/user_mapping/tests/utils.py
@@ -33,7 +33,8 @@ def create_user_mapping(server, db_name, fsrv_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -73,7 +74,8 @@ def verify_user_mapping(server, db_name, fsrv_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute(
             "select umid from pg_user_mappings where srvname = '%s' order by"
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/utils.py
index 6f429a7..d8a9e0b 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/foreign_data_wrappers/tests/utils.py
@@ -58,7 +58,8 @@ def create_fdw(server, db_name, fdw_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -96,7 +97,8 @@ def verify_fdw(server, db_name, fdw_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute(
             "SELECT oid FROM pg_foreign_data_wrapper WHERE fdwname = '%s'"
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/utils.py 
b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/utils.py
index a1ef6f9..01125c0 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/languages/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/languages/tests/utils.py
@@ -32,7 +32,8 @@ def create_language(server, db_name, lang_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
 
         pg_cursor = connection.cursor()
         query = ("CREATE TRUSTED PROCEDURAL LANGUAGE %s "
@@ -67,7 +68,8 @@ def verify_language(server, db_name, lang_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("SELECT oid from pg_language where lanname='%s'" %
                           lang_name)
@@ -94,7 +96,8 @@ def delete_language(server, db_name, lang_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("SELECT * from pg_language where lanname='%s'" %
                           lang_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py
index 5f675c3..ee283aa 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/test_collation_add.py
@@ -35,7 +35,8 @@ class CollationAddTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         self.schema_details = schema_utils.create_schema(connection,
                                                          self.schema_name)
 
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/utils.py
index 98bab96..7a55785 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/collations/tests/utils.py
@@ -22,7 +22,8 @@ def create_collation(server, schema_name, coll_name, db_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute('CREATE COLLATION %s.%s FROM pg_catalog."POSIX"' %
                           (schema_name, coll_name))
@@ -46,7 +47,8 @@ def verify_collation(server, db_name, coll_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         # Get 'oid' from newly created database
         pg_cursor.execute("SELECT coll.oid, coll.collname FROM"
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/utils.py
index 4175b19..4e4fd00 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_configurations/tests/utils.py
@@ -27,7 +27,8 @@ def create_fts_configuration(server, db_name, schema_name, 
fts_conf_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
 
         query = "CREATE TEXT SEARCH CONFIGURATION " + schema_name + "." + 
fts_conf_name + \
@@ -69,7 +70,8 @@ def verify_fts_configuration(server, db_name, fts_conf_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
 
         pg_cursor.execute(
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/utils.py
index f2a5780..0fcfff8 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_dictionaries/tests/utils.py
@@ -26,7 +26,8 @@ def create_fts_dictionary(server, db_name, schema_name, 
fts_dict_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
 
         query = "CREATE TEXT SEARCH DICTIONARY %s.%s (TEMPLATE = simple)" % (
@@ -68,7 +69,8 @@ def verify_fts_dict(server, db_name, fts_dict_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
 
         pg_cursor.execute(
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/tests/utils.py
index 728f551..72ee282 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_parser/tests/utils.py
@@ -26,7 +26,8 @@ def create_fts_parser(server, db_name, schema_name, 
fts_parser_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
 
         query = "DROP TEXT SEARCH PARSER IF EXISTS " + schema_name + "." + 
fts_parser_name
@@ -72,7 +73,8 @@ def verify_fts_parser(server, db_name, fts_parser_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
 
         pg_cursor.execute(
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/utils.py
index 619fbd6..7fd0873 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/fts_templates/tests/utils.py
@@ -26,7 +26,8 @@ def create_fts_template(server, db_name, schema_name, 
fts_temp_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
 
         query = "DROP TEXT SEARCH TEMPLATE IF EXISTS " + schema_name + "." + 
fts_temp_name
@@ -69,7 +70,8 @@ def verify_fts_template(server, db_name, fts_temp_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         pg_cursor = connection.cursor()
 
         pg_cursor.execute(
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/utils.py
index 74344f1..77abe53 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/functions/tests/utils.py
@@ -23,7 +23,8 @@ def create_trigger_function(server, db_name, schema_name, 
func_name,
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         r_type = "event_trigger"
         if server_version != 0:
@@ -53,7 +54,8 @@ def create_trigger_function_with_trigger(server, db_name, 
schema_name,
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         query = "CREATE FUNCTION "+schema_name+"."+func_name+"()" \
                 " RETURNS trigger LANGUAGE 'plpgsql' STABLE LEAKPROOF" \
@@ -78,7 +80,8 @@ def verify_trigger_function(server, db_name, func_name):
                                          server['username'],
                                          server['db_password'],
                                          server['host'],
-                                         server['port'])
+                                         server['port'],
+                                         server['sslmode'])
     pg_cursor = connection.cursor()
     pg_cursor.execute("SELECT pro.oid, pro.proname FROM"
                       " pg_proc pro WHERE pro.proname='%s'" %
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/utils.py
index 24187d6..22ca08c 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/packages/tests/utils.py
@@ -34,7 +34,8 @@ def create_package(server, db_name, schema_name, pkg_name, 
proc_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         query = "CREATE OR REPLACE PACKAGE %s.%s IS PROCEDURE %s(); END %s; " \
                 "CREATE OR REPLACE PACKAGE BODY %s.%s IS PROCEDURE %s() IS 
BEGIN " \
@@ -71,7 +72,8 @@ def verify_package(server, db_name, pkg_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("SELECT oid FROM pg_namespace WHERE nspname='%s'" %
                           pkg_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/utils.py
index d114d50..bec063e 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/sequences/tests/utils.py
@@ -34,7 +34,8 @@ def create_sequences(server, db_name, schema_name, 
sequence_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         query = "CREATE SEQUENCE %s.%s START 101" % (schema_name,
                                                      sequence_name)
@@ -70,7 +71,8 @@ def verify_sequence(server, db_name, sequence_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("select * from pg_class where relname='%s'" %
                           sequence_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/tests/utils.py
index 103ee78..48ba5d3 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/column/tests/utils.py
@@ -36,7 +36,8 @@ def create_column(server, db_name, schema_name, table_name, 
col_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -76,7 +77,8 @@ def verify_column(server, db_name, col_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("select * from pg_attribute where attname='%s'" %
                           col_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/utils.py
index 6ee4947..7471094 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/foreign_key/tests/utils.py
@@ -37,7 +37,8 @@ def create_foreignkey(server, db_name, schema_name, 
local_table_name,
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -78,7 +79,8 @@ def verify_foreignkey(server, db_name, local_table_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute(
             "SELECT oid FROM pg_constraint where conname='%s_id_fkey'" %
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/utils.py
index af3cf0c..f9d7fe5 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/constraints/index_constraint/tests/utils.py
@@ -39,7 +39,8 @@ def create_index_constraint(server, db_name, schema_name, 
table_name,
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -76,7 +77,8 @@ def verify_index_constraint(server, db_name, table_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute(
             "SELECT oid FROM pg_constraint where conname='%s'" %
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/utils.py
index 1386068..07d310b 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/indexes/tests/utils.py
@@ -39,7 +39,8 @@ def create_index(server, db_name, schema_name, table_name, 
index_name,
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -80,7 +81,8 @@ def verify_index(server, db_name, index_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("select * from pg_class where relname='%s'" %
                           index_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/utils.py
index 611c6b3..e59701c 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/rules/tests/utils.py
@@ -36,7 +36,8 @@ def create_rule(server, db_name, schema_name, table_name, 
rule_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -76,7 +77,8 @@ def verify_rule(server, db_name, rule_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("select * from pg_rewrite where rulename='%s'" %
                           rule_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py
index 0c7aede..017de86 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/tests/utils.py
@@ -34,7 +34,8 @@ def create_table(server, db_name, schema_name, table_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -75,7 +76,8 @@ def verify_table(server, db_name, table_id):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("SELECT * FROM pg_class tb WHERE tb.oid=%s" %
                           table_id)
@@ -107,7 +109,8 @@ def create_table_for_partition(server, db_name, 
schema_name, table_name,
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/utils.py
index b5b042e..05b257c 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tables/triggers/tests/utils.py
@@ -39,7 +39,8 @@ def create_trigger(server, db_name, schema_name, table_name, 
trigger_name,
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -80,7 +81,8 @@ def verify_trigger(server, db_name, trigger_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("SELECT oid FROM pg_trigger where tgname='%s'" %
                           trigger_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py
index 8835c52..33af1af 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/test_schema_put.py
@@ -34,7 +34,8 @@ class SchemaPutTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         self.schema_details = schema_utils.create_schema(connection,
                                                          self.schema_name)
 
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/utils.py 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/utils.py
index fca2add..2061406 100644
--- a/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/databases/schemas/tests/utils.py
@@ -75,7 +75,8 @@ def verify_schemas(server, db_name, schema_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("SELECT * FROM pg_namespace sch"
                           " WHERE sch.nspname='%s'" % schema_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/utils.py
 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/utils.py
index 11e8f73..35b8f10 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/utils.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/schemas/views/tests/utils.py
@@ -36,7 +36,8 @@ def create_view(server, db_name, schema_name, sql_query, 
view_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -74,7 +75,8 @@ def verify_view(server, db_name, view_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("select oid from pg_class where relname='%s'" %
                           view_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_delete.py 
b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_delete.py
index e9f3946..4fe684c 100644
--- 
a/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_delete.py
+++ 
b/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_delete.py
@@ -50,5 +50,6 @@ class DatabaseDeleteTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         utils.drop_database(connection, self.db_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_add.py
 
b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_add.py
index ab69f0d..740f2cf 100644
--- 
a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_add.py
+++ 
b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_add.py
@@ -58,6 +58,7 @@ class ResourceGroupsAddTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         resource_groups_utils.delete_resource_group(connection,
                                                     self.resource_group)
diff --git 
a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_delete.py
 
b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_delete.py
index 3ce9b79..19fea8c 100644
--- 
a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_delete.py
+++ 
b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_delete.py
@@ -60,6 +60,7 @@ class ResourceGroupsDeleteTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         resource_groups_utils.delete_resource_group(connection,
                                                     self.resource_group)
diff --git 
a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_put.py
 
b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_put.py
index 51a80f8..3a97b55 100644
--- 
a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_put.py
+++ 
b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/test_resource_groups_put.py
@@ -65,6 +65,7 @@ class ResourceGroupsPutTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         resource_groups_utils.delete_resource_group(connection,
                                                     self.resource_group_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/tests_resource_groups_get.py
 
b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/tests_resource_groups_get.py
index 1cae34e..57e7879 100644
--- 
a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/tests_resource_groups_get.py
+++ 
b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/tests_resource_groups_get.py
@@ -60,6 +60,7 @@ class ResourceGroupsGetTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         resource_groups_utils.delete_resource_group(connection,
                                                     self.resource_group)
diff --git 
a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/utils.py 
b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/utils.py
index 82ff963..5758e5f 100644
--- a/web/pgadmin/browser/server_groups/servers/resource_groups/tests/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/resource_groups/tests/utils.py
@@ -30,7 +30,8 @@ def create_resource_groups(server, resource_group_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -64,7 +65,8 @@ def verify_resource_group(server, resource_group_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("SELECT * FROM edb_resource_group WHERE "
                           "rgrpname='%s'" % resource_group_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_add.py 
b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_add.py
index 03cbd46..b944ab9 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_add.py
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_add.py
@@ -53,5 +53,6 @@ class LoginRoleAddTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         roles_utils.delete_role(connection, self.role_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_delete.py 
b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_delete.py
index 6084b8f..adbb4e6 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_delete.py
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_delete.py
@@ -44,6 +44,7 @@ class LoginRoleDeleteTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         roles_utils.delete_role(connection, self.role_name)
 
diff --git 
a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_get.py 
b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_get.py
index 2a816bb..eddd499 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_get.py
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_get.py
@@ -44,5 +44,6 @@ class LoginRoleGetTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         roles_utils.delete_role(connection, self.role_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_put.py 
b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_put.py
index 0b7aa5a..a5ed81c 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_put.py
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/test_role_put.py
@@ -53,6 +53,7 @@ class LoginRolePutTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         roles_utils.delete_role(connection, self.role_name)
 
diff --git a/web/pgadmin/browser/server_groups/servers/roles/tests/utils.py 
b/web/pgadmin/browser/server_groups/servers/roles/tests/utils.py
index 24d2879..74b21f5 100644
--- a/web/pgadmin/browser/server_groups/servers/roles/tests/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/roles/tests/utils.py
@@ -36,7 +36,8 @@ def verify_role(server, role_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute(
             "SELECT * from pg_catalog.pg_roles pr WHERE pr.rolname='%s'" %
@@ -100,7 +101,8 @@ def create_role(server, role_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("CREATE ROLE %s LOGIN" % role_name)
         connection.commit()
diff --git 
a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_add.py 
b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_add.py
index b5a1b83..da29b8c 100644
--- 
a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_add.py
+++ 
b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_add.py
@@ -68,5 +68,6 @@ class TableSpaceAddTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         tablespace_utils.delete_tablespace(connection, self.tablespace_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_delete.py
 
b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_delete.py
index 16a37d8..615d298 100644
--- 
a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_delete.py
+++ 
b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_delete.py
@@ -62,6 +62,7 @@ class TableSpaceDeleteTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         tablespace_utils.delete_tablespace(connection, self.tablespace_name)
 
diff --git 
a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_get.py 
b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_get.py
index 11bd616..ca322d3 100644
--- 
a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_get.py
+++ 
b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_get.py
@@ -62,5 +62,6 @@ class TablespaceGetTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         tablespace_utils.delete_tablespace(connection, self.tablespace_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_put.py 
b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_put.py
index 5926342..31ea6ab 100644
--- 
a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_put.py
+++ 
b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/test_tbspc_put.py
@@ -63,5 +63,6 @@ class TableSpaceUpdateTestCase(BaseTestGenerator):
                                              self.server['username'],
                                              self.server['db_password'],
                                              self.server['host'],
-                                             self.server['port'])
+                                             self.server['port'],
+                                             self.server['sslmode'])
         tablespace_utils.delete_tablespace(connection, self.tablespace_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/utils.py 
b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/utils.py
index 865531e..eb16beb 100644
--- a/web/pgadmin/browser/server_groups/servers/tablespaces/tests/utils.py
+++ b/web/pgadmin/browser/server_groups/servers/tablespaces/tests/utils.py
@@ -50,7 +50,8 @@ def create_tablespace(server, test_tablespace_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -88,7 +89,8 @@ def verify_table_space(server, test_tablespace_name):
                                              server['username'],
                                              server['db_password'],
                                              server['host'],
-                                             server['port'])
+                                             server['port'],
+                                             server['sslmode'])
         pg_cursor = connection.cursor()
         pg_cursor.execute("SELECT * FROM pg_tablespace ts WHERE"
                           " ts.spcname='%s'" % test_tablespace_name)
diff --git 
a/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py 
b/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py
index 418bc39..b31fcc1 100644
--- a/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py
+++ b/web/pgadmin/browser/server_groups/servers/tests/test_check_recovery.py
@@ -16,7 +16,8 @@ class TestCheckRecovery(BaseTestGenerator):
                                               self.server['username'],
                                               self.server['db_password'],
                                               self.server['host'],
-                                              self.server['port']).cursor()
+                                              self.server['port'],
+                                              self.server['sslmode']).cursor()
 
         if cursor is not None and cursor.connection is not None:
             server_version = cursor.connection.server_version
diff --git 
a/web/pgadmin/browser/server_groups/servers/tests/test_check_ssl_connection.py 
b/web/pgadmin/browser/server_groups/servers/tests/test_check_ssl_connection.py
new file mode 100644
index 0000000..00041dd
--- /dev/null
+++ 
b/web/pgadmin/browser/server_groups/servers/tests/test_check_ssl_connection.py
@@ -0,0 +1,46 @@
+##########################################################################
+#
+# pgAdmin 4 - PostgreSQL Tools
+#
+# Copyright (C) 2013 - 2017, The pgAdmin Development Team
+# This software is released under the PostgreSQL Licence
+#
+##########################################################################
+
+import sys
+import traceback
+
+from pgadmin.utils.route import BaseTestGenerator
+from regression.python_test_utils import test_utils
+
+
+class TestSSLConnectionCheck(BaseTestGenerator):
+    """This will check if SSL is used in our database connection"""
+    scenarios = [
+        ("Test for SSL connection check", dict())
+    ]
+
+    def runTest(self):
+        if hasattr(self, "ignore_test"):
+            return
+        supported_modes = ['require', 'verify-ca', 'verify-full']
+        try:
+            if self.server['sslmode'] in supported_modes:
+                with test_utils.Database(self.server) as (
+                        connection, database_name
+                ):
+
+                    cursor = connection.cursor()
+                    cursor.execute("CREATE EXTENSION sslinfo")
+                    connection.commit()
+                    cursor.execute("SELECT ssl_is_used()")
+                    is_ssl_used = cursor.fetchone()[0]
+                    self.assertEquals(True, is_ssl_used)
+            else:
+                self.skipTest("Cannot run SSL connection check test "
+                              "with '{0}' sslmode".format(
+                    self.server['sslmode']
+                ))
+        except:
+            traceback.print_exc(file=sys.stderr)
+            raise
diff --git a/web/pgadmin/feature_tests/connect_to_server_feature_test.py 
b/web/pgadmin/feature_tests/connect_to_server_feature_test.py
index 28a6df6..97e96f2 100644
--- a/web/pgadmin/feature_tests/connect_to_server_feature_test.py
+++ b/web/pgadmin/feature_tests/connect_to_server_feature_test.py
@@ -28,7 +28,8 @@ class ConnectsToServerFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
         test_utils.create_database(self.server, "acceptance_test_db")
         test_utils.create_table(self.server, "acceptance_test_db", 
"test_table")
@@ -49,7 +50,8 @@ class ConnectsToServerFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
 
     def _connects_to_server(self):
diff --git 
a/web/pgadmin/feature_tests/copy_selected_query_results_feature_test.py 
b/web/pgadmin/feature_tests/copy_selected_query_results_feature_test.py
index fc754c7..1809d45 100644
--- a/web/pgadmin/feature_tests/copy_selected_query_results_feature_test.py
+++ b/web/pgadmin/feature_tests/copy_selected_query_results_feature_test.py
@@ -31,7 +31,8 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
         test_utils.create_database(self.server, "acceptance_test_db")
         test_utils.create_table(self.server, "acceptance_test_db", 
"test_table")
@@ -170,5 +171,6 @@ class CopySelectedQueryResultsFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
diff --git a/web/pgadmin/feature_tests/pg_datatype_validation_test.py 
b/web/pgadmin/feature_tests/pg_datatype_validation_test.py
index 26c787b..149a496 100644
--- a/web/pgadmin/feature_tests/pg_datatype_validation_test.py
+++ b/web/pgadmin/feature_tests/pg_datatype_validation_test.py
@@ -31,7 +31,8 @@ class PGDataypeFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
         test_utils.create_database(self.server, "acceptance_test_db")
 
@@ -50,7 +51,8 @@ class PGDataypeFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
 
     def _connects_to_server(self):
diff --git a/web/pgadmin/feature_tests/query_tool_tests.py 
b/web/pgadmin/feature_tests/query_tool_tests.py
index c058287..495e049 100644
--- a/web/pgadmin/feature_tests/query_tool_tests.py
+++ b/web/pgadmin/feature_tests/query_tool_tests.py
@@ -33,7 +33,8 @@ class QueryToolFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
         test_utils.create_database(self.server, "acceptance_test_db")
         self.page.wait_for_spinner_to_disappear()
@@ -132,7 +133,8 @@ class QueryToolFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
 
     def _connects_to_server(self):
diff --git a/web/pgadmin/feature_tests/table_ddl_feature_test.py 
b/web/pgadmin/feature_tests/table_ddl_feature_test.py
index 9fb90d6..6d38db2 100644
--- a/web/pgadmin/feature_tests/table_ddl_feature_test.py
+++ b/web/pgadmin/feature_tests/table_ddl_feature_test.py
@@ -23,7 +23,8 @@ class TableDdlFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
 
         test_utils.create_database(self.server, "acceptance_test_db")
@@ -51,5 +52,6 @@ class TableDdlFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
diff --git a/web/pgadmin/feature_tests/view_data_dml_queries.py 
b/web/pgadmin/feature_tests/view_data_dml_queries.py
index 6454a3e..622387e 100644
--- a/web/pgadmin/feature_tests/view_data_dml_queries.py
+++ b/web/pgadmin/feature_tests/view_data_dml_queries.py
@@ -80,7 +80,8 @@ CREATE TABLE public.defaults
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
         test_utils.create_database(self.server, "acceptance_test_db")
 
@@ -114,7 +115,8 @@ CREATE TABLE public.defaults
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
 
     @staticmethod
diff --git a/web/pgadmin/feature_tests/xss_checks_panels_and_query_tool_test.py 
b/web/pgadmin/feature_tests/xss_checks_panels_and_query_tool_test.py
index ac50ea1..0b4f28b 100644
--- a/web/pgadmin/feature_tests/xss_checks_panels_and_query_tool_test.py
+++ b/web/pgadmin/feature_tests/xss_checks_panels_and_query_tool_test.py
@@ -39,7 +39,8 @@ class CheckForXssFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
         test_utils.create_database(self.server, "acceptance_test_db")
         test_utils.create_table(self.server, "acceptance_test_db",
@@ -70,7 +71,8 @@ class CheckForXssFeatureTest(BaseFeatureTest):
                                                   self.server['username'],
                                                   self.server['db_password'],
                                                   self.server['host'],
-                                                  self.server['port'])
+                                                  self.server['port'],
+                                                  self.server['sslmode'])
         test_utils.drop_database(connection, "acceptance_test_db")
 
     def _connects_to_server(self):
diff --git a/web/regression/python_test_utils/test_utils.py 
b/web/regression/python_test_utils/test_utils.py
index f3e7ed0..8f1d15a 100644
--- a/web/regression/python_test_utils/test_utils.py
+++ b/web/regression/python_test_utils/test_utils.py
@@ -25,13 +25,16 @@ SERVER_GROUP = test_setup.config_data['server_group']
 file_name = os.path.realpath(__file__)
 
 
-def get_db_connection(db, username, password, host, port):
+def get_db_connection(db, username, password, host, port, sslmode="prefer"):
     """This function returns the connection object of psycopg"""
-    connection = psycopg2.connect(database=db,
-                                  user=username,
-                                  password=password,
-                                  host=host,
-                                  port=port)
+    connection = psycopg2.connect(
+        database=db,
+        user=username,
+        password=password,
+        host=host,
+        port=port,
+        sslmode=sslmode
+    )
     return connection
 
 
@@ -116,7 +119,8 @@ def create_database(server, db_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -154,7 +158,8 @@ def create_table(server, db_name, table_name):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -191,7 +196,8 @@ def create_table_with_query(server, db_name, query):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -211,7 +217,8 @@ def create_constraint(
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -234,7 +241,8 @@ def create_debug_function(server, db_name, 
function_name="test_func"):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -267,7 +275,8 @@ def drop_debug_function(server, db_name, 
function_name="test_func"):
                                        server['username'],
                                        server['db_password'],
                                        server['host'],
-                                       server['port'])
+                                       server['port'],
+                                       server['sslmode'])
         old_isolation_level = connection.isolation_level
         connection.set_isolation_level(0)
         pg_cursor = connection.cursor()
@@ -390,7 +399,8 @@ def create_parent_server_node(server_info):
                                    server_info['username'],
                                    server_info['db_password'],
                                    server_info['host'],
-                                   server_info['port'])
+                                   server_info['port'],
+                                   server_info['sslmode'])
 
     schema = regression.schema_utils.create_schema(connection, schema_name)
     add_schema_to_parent_node_dict(srv_id, db_id, schema[0],
@@ -413,7 +423,8 @@ def delete_test_server(tester):
                                                servers_dict['username'],
                                                servers_dict['db_password'],
                                                servers_dict['host'],
-                                               servers_dict['port'])
+                                               servers_dict['port'],
+                                               servers_dict['sslmode'])
                 database_name = database["db_name"]
                 # Drop database
                 drop_database(connection, database_name)
@@ -422,7 +433,8 @@ def delete_test_server(tester):
                                                servers_dict['username'],
                                                servers_dict['db_password'],
                                                servers_dict['host'],
-                                               servers_dict['port'])
+                                               servers_dict['port'],
+                                               servers_dict['sslmode'])
                 # Delete role
                 regression.roles_utils.delete_role(connection,
                                                    role["role_name"])
@@ -431,7 +443,8 @@ def delete_test_server(tester):
                                                servers_dict['username'],
                                                servers_dict['db_password'],
                                                servers_dict['host'],
-                                               servers_dict['port'])
+                                               servers_dict['port'],
+                                               servers_dict['sslmode'])
                 # Delete tablespace
                 regression.tablespace_utils.delete_tablespace(
                     connection, tablespace["tablespace_name"])
@@ -462,7 +475,7 @@ def get_db_server(sid):
     conn = sqlite3.connect(config.TEST_SQLITE_PATH)
     cur = conn.cursor()
     server = cur.execute('SELECT name, host, port, maintenance_db,'
-                         ' username FROM server where id=%s' % sid)
+                         ' username, ssl_mode FROM server where id=%s' % sid)
     server = server.fetchone()
     if server:
         name = server[0]
@@ -470,6 +483,7 @@ def get_db_server(sid):
         db_port = server[2]
         db_name = server[3]
         username = server[4]
+        ssl_mode = server[5]
         config_servers = test_setup.config_data['server_credentials']
         # Get the db password from config file for appropriate server
         db_password = get_db_password(config_servers, name, host, db_port)
@@ -479,7 +493,8 @@ def get_db_server(sid):
                                            username,
                                            db_password,
                                            host,
-                                           db_port)
+                                           db_port,
+                                           ssl_mode)
     conn.close()
     return connection
 
@@ -625,19 +640,23 @@ class Database:
 
     def __enter__(self):
         self.name = "test_db_{0}".format(str(uuid.uuid4())[0:7])
-        self.maintenance_connection = get_db_connection(self.server['db'],
-                                                        self.server[
-                                                            'username'],
-                                                        self.server[
-                                                            'db_password'],
-                                                        self.server['host'],
-                                                        self.server['port'])
+        self.maintenance_connection = get_db_connection(
+            self.server['db'],
+            self.server['username'],
+            self.server['db_password'],
+            self.server['host'],
+            self.server['port'],
+            self.server['sslmode']
+        )
         create_database(self.server, self.name)
-        self.connection = get_db_connection(self.name,
-                                            self.server['username'],
-                                            self.server['db_password'],
-                                            self.server['host'],
-                                            self.server['port'])
+        self.connection = get_db_connection(
+            self.name,
+            self.server['username'],
+            self.server['db_password'],
+            self.server['host'],
+            self.server['port'],
+            self.server['sslmode']
+        )
         return self.connection, self.name
 
     def __exit__(self, type, value, traceback):

Reply via email to