| 
									
										
										
										
											2022-07-26 15:42:40 +02:00
										 |  |  | #  Copyright 2022 Collate | 
					
						
							|  |  |  | #  Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  | #  you may not use this file except in compliance with the License. | 
					
						
							|  |  |  | #  You may obtain a copy of the License at | 
					
						
							|  |  |  | #  http://www.apache.org/licenses/LICENSE-2.0 | 
					
						
							|  |  |  | #  Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  | #  distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  | #  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  | #  See the License for the specific language governing permissions and | 
					
						
							|  |  |  | #  limitations under the License. | 
					
						
							| 
									
										
										
										
											2023-05-19 09:43:11 +02:00
										 |  |  | import os | 
					
						
							|  |  |  | from unittest import TestCase, mock | 
					
						
							| 
									
										
										
										
											2022-07-26 15:42:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | from metadata.generated.schema.entity.services.connections.metadata.openMetadataConnection import ( | 
					
						
							|  |  |  |     OpenMetadataConnection, | 
					
						
							| 
									
										
										
										
											2022-08-22 08:43:23 +02:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2023-05-19 09:43:11 +02:00
										 |  |  | from metadata.generated.schema.security.secrets.secretsManagerClientLoader import ( | 
					
						
							|  |  |  |     SecretsManagerClientLoader, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2022-11-18 11:35:08 +01:00
										 |  |  | from metadata.generated.schema.security.secrets.secretsManagerProvider import ( | 
					
						
							|  |  |  |     SecretsManagerProvider, | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2023-12-19 12:08:48 +01:00
										 |  |  | from metadata.ingestion.ometa.auth_provider import OpenMetadataAuthenticationProvider | 
					
						
							| 
									
										
										
										
											2022-07-26 15:42:40 +02:00
										 |  |  | from metadata.ingestion.ometa.ometa_api import OpenMetadata | 
					
						
							| 
									
										
										
										
											2022-08-19 16:15:40 +02:00
										 |  |  | from metadata.utils.secrets.aws_secrets_manager import AWSSecretsManager | 
					
						
							| 
									
										
										
										
											2023-12-18 06:43:20 +01:00
										 |  |  | from metadata.utils.secrets.noop_secrets_manager import DBSecretsManager | 
					
						
							| 
									
										
										
										
											2022-11-11 09:59:15 +01:00
										 |  |  | from metadata.utils.singleton import Singleton | 
					
						
							| 
									
										
										
										
											2022-07-26 15:42:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class OMetaSecretManagerTest(TestCase): | 
					
						
							|  |  |  |     metadata: OpenMetadata | 
					
						
							|  |  |  |     aws_server_config: OpenMetadataConnection | 
					
						
							|  |  |  |     local_server_config: OpenMetadataConnection | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @classmethod | 
					
						
							|  |  |  |     def setUp(cls) -> None: | 
					
						
							| 
									
										
										
										
											2022-11-11 09:59:15 +01:00
										 |  |  |         Singleton.clear_all() | 
					
						
							| 
									
										
										
										
											2022-07-26 15:42:40 +02:00
										 |  |  |         cls.local_server_config = OpenMetadataConnection( | 
					
						
							|  |  |  |             hostPort="http://localhost:8585/api", | 
					
						
							|  |  |  |             enableVersionValidation=False, | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         cls.aws_server_config = OpenMetadataConnection( | 
					
						
							|  |  |  |             hostPort="http://localhost:8585/api", | 
					
						
							|  |  |  |             secretsManagerProvider=SecretsManagerProvider.aws, | 
					
						
							| 
									
										
										
										
											2023-05-19 09:43:11 +02:00
										 |  |  |             secretsManagerLoader=SecretsManagerClientLoader.noop, | 
					
						
							| 
									
										
										
										
											2022-07-26 15:42:40 +02:00
										 |  |  |             enableVersionValidation=False, | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def test_ometa_with_local_secret_manager(self): | 
					
						
							|  |  |  |         self._init_local_secret_manager() | 
					
						
							| 
									
										
										
										
											2023-12-18 06:43:20 +01:00
										 |  |  |         assert type(self.metadata.secrets_manager_client) is DBSecretsManager | 
					
						
							| 
									
										
										
										
											2023-12-19 12:08:48 +01:00
										 |  |  |         assert type(self.metadata._auth_provider) is OpenMetadataAuthenticationProvider | 
					
						
							| 
									
										
										
										
											2022-07-26 15:42:40 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-05-19 09:43:11 +02:00
										 |  |  |     @mock.patch.dict(os.environ, {"AWS_DEFAULT_REGION": "us-east-2"}, clear=True) | 
					
						
							| 
									
										
										
										
											2022-07-26 15:42:40 +02:00
										 |  |  |     def test_ometa_with_aws_secret_manager(self): | 
					
						
							|  |  |  |         self._init_aws_secret_manager() | 
					
						
							|  |  |  |         assert type(self.metadata.secrets_manager_client) is AWSSecretsManager | 
					
						
							| 
									
										
										
										
											2023-12-19 12:08:48 +01:00
										 |  |  |         assert type(self.metadata._auth_provider) is OpenMetadataAuthenticationProvider | 
					
						
							| 
									
										
										
										
											2022-07-26 15:42:40 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def _init_local_secret_manager(self): | 
					
						
							|  |  |  |         self.metadata = OpenMetadata(self.local_server_config) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def _init_aws_secret_manager(self): | 
					
						
							|  |  |  |         self.metadata = OpenMetadata(self.aws_server_config) |