Exemplo n.º 1
0
def get_setting(section: str, key: str) -> str:
    """
    Gets the value of the key from the section.
    """
    return str(
        CONFIG.get(section, key, raw=True)
    )  # raw=True to allow strings with special characters to be passed


SETTINGS_FACTORY = ClientSettingsFactory()

ICAT_SETTINGS = SETTINGS_FACTORY.create(
    'icat',
    username=get_setting('ICAT', 'user'),
    password=get_setting('ICAT', 'password'),
    host=get_setting('ICAT', 'host'),
    port='',
    authentication_type=get_setting('ICAT', 'auth'))

MYSQL_SETTINGS = SETTINGS_FACTORY.create(
    'database',
    username=get_setting('DATABASE', 'user'),
    password=get_setting('DATABASE', 'password'),
    host=get_setting('DATABASE', 'host'),
    port=get_setting('DATABASE', 'port'),
    database_name=get_setting('DATABASE', 'name'))

ACTIVEMQ_SETTINGS = SETTINGS_FACTORY.create(
    'queue',
    username=get_setting('QUEUE', 'user'),
class TestClientSettingsFactory(unittest.TestCase):
    def setUp(self):
        self.factory = ClientSettingsFactory()

    def test_create_database(self):
        actual = self.factory.create('database',
                                     username='******',
                                     password='******',
                                     host='test-host',
                                     port='test-port',
                                     database_name='test-name')
        self.assertIsInstance(actual, MySQLSettings)
        self.assertEqual(actual.username, 'test-user')
        self.assertEqual(actual.password, 'test-pass')
        self.assertEqual(actual.host, 'test-host')
        self.assertEqual(actual.port, 'test-port')
        self.assertEqual(actual.database, 'test-name')
        self.assertEqual(
            actual.get_full_connection_string(),
            'mysql+mysqldb://test-user:test-pass@test-host/test-name')

    def test_create_queue(self):
        actual = self.factory.create('queue',
                                     username='******',
                                     password='******',
                                     host='test-host',
                                     port='test-port',
                                     data_ready='test-dr')
        self.assertIsInstance(actual, ActiveMQSettings)
        self.assertEqual(actual.username, 'test-user')
        self.assertEqual(actual.password, 'test-pass')
        self.assertEqual(actual.host, 'test-host')
        self.assertEqual(actual.port, 'test-port')
        self.assertEqual(actual.data_ready, 'test-dr')

    def test_create_icat(self):
        actual = self.factory.create('icat',
                                     username='******',
                                     password='******',
                                     host='test-host',
                                     port='test-port',
                                     authentication_type='test-auth')
        self.assertIsInstance(actual, ICATSettings)
        self.assertEqual(actual.username, 'test-user')
        self.assertEqual(actual.password, 'test-pass')
        self.assertEqual(actual.host, 'test-host')
        self.assertEqual(actual.port, 'test-port')
        self.assertEqual(actual.auth, 'test-auth')

    def test_invalid_not_a_factory(self):
        self.assertRaisesRegex(
            ValueError, f"Factories creation settings type must be one of:"
            f"{','.join(self.factory.valid_types)}", self.factory.create,
            'not-factory', 'user', 'pass', 'host', 'port')

    def test_invalid_database_args(self):
        self.assertRaisesRegex(ValueError,
                               "database_invalid is not a recognised key "
                               "word argument.",
                               self.factory.create,
                               'database',
                               'user',
                               'pass',
                               'host',
                               'port',
                               database_invalid='invalid')

    def test_invalid_queue_args(self):
        self.assertRaisesRegex(
            ValueError,
            "queue_invalid is not a recognised key word argument.",
            self.factory.create,
            'queue',
            'user',
            'pass',
            'host',
            'port',
            queue_invalid='invalid')

    def test_invalid_icat_args(self):
        self.assertRaisesRegex(
            ValueError,
            "icat_invalid is not a recognised key word argument.",
            self.factory.create,
            'icat',
            'user',
            'pass',
            'host',
            'port',
            icat_invalid='invalid')