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')