123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- """
- ***************************************************************************
- connector_test.py
- ---------------------
- Date : May 2017
- Copyright : (C) 2017, Sandro Santilli
- Email : strk at kbt dot io
- ***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************
- """
- __author__ = 'Sandro Santilli'
- __date__ = 'May 2017'
- __copyright__ = '(C) 2017, Sandro Santilli'
- import os
- import qgis
- import unittest
- from qgis.testing import start_app, QgisTestCase
- from qgis.core import QgsDataSourceUri
- from qgis.utils import iface
- from qgis.PyQt.QtCore import QObject
- start_app()
- from db_manager.db_plugins.postgis.connector import PostGisDBConnector
- class TestDBManagerPostgisConnector(QgisTestCase):
- # def setUpClass():
- def _getUser(self, connector):
- r = connector._execute(None, "SELECT USER")
- val = connector._fetchone(r)[0]
- connector._close_cursor(r)
- return val
- def _getDatabase(self, connector):
- r = connector._execute(None, "SELECT current_database()")
- val = connector._fetchone(r)[0]
- connector._close_cursor(r)
- return val
- # See https://github.com/qgis/QGIS/issues/24525
- # and https://github.com/qgis/QGIS/issues/19005
- def test_dbnameLessURI(self):
- obj = QObject() # needs to be kept alive
- obj.connectionName = lambda: 'fake'
- obj.providerName = lambda: 'postgres'
- c = PostGisDBConnector(QgsDataSourceUri(), obj)
- self.assertIsInstance(c, PostGisDBConnector)
- uri = c.uri()
- # No username was passed, so we expect it to be taken
- # from PGUSER or USER environment variables
- expected_user = os.environ.get('PGUSER') or os.environ.get('USER')
- actual_user = self._getUser(c)
- self.assertEqual(actual_user, expected_user)
- # No database was passed, so we expect it to be taken
- # from PGDATABASE or expected user
- expected_db = os.environ.get('PGDATABASE') or expected_user
- actual_db = self._getDatabase(c)
- self.assertEqual(actual_db, expected_db)
- # TODO: add service-only test (requires a ~/.pg_service.conf file)
- if __name__ == '__main__':
- unittest.main()
|