Преглед изворни кода

Added check on required properties and check storage type of s3_object

FORCHA PEARL пре 1 година
родитељ
комит
d576c23875
1 измењених фајлова са 25 додато и 1 уклоњено
  1. 25 1
      tests/core/config/checkers/test_data_node_config_checker.py

+ 25 - 1
tests/core/config/checkers/test_data_node_config_checker.py

@@ -88,7 +88,7 @@ class TestDataNodeConfigChecker:
         assert len(Config._collector.errors) == 1
         assert len(Config._collector.errors) == 1
         expected_error_message = (
         expected_error_message = (
             "`storage_type` field of DataNodeConfig `new` must be either csv, sql_table,"
             "`storage_type` field of DataNodeConfig `new` must be either csv, sql_table,"
-            " sql, mongo_collection, pickle, excel, generic, json, parquet, or in_memory."
+            " sql, mongo_collection, pickle, excel, generic, json, parquet, s3_object, or in_memory."
             ' Current value of property `storage_type` is "bar".'
             ' Current value of property `storage_type` is "bar".'
         )
         )
         assert expected_error_message in caplog.text
         assert expected_error_message in caplog.text
@@ -170,6 +170,19 @@ class TestDataNodeConfigChecker:
         ]
         ]
         assert all(message in caplog.text for message in expected_error_messages)
         assert all(message in caplog.text for message in expected_error_messages)
 
 
+        config._sections[DataNodeConfig.name]["new"].storage_type = "s3_object"
+        with pytest.raises(SystemExit):
+            Config._collector = IssueCollector()
+            Config.check()
+        assert len(Config._collector.errors) == 4
+        expected_error_messages = [
+            "DataNodeConfig `new` is missing the required property `aws_access_key` for type `s3_object`.",
+            "DataNodeConfig `new` is missing the required property `aws_secret_access_key` for type `s3_object`.",
+            "DataNodeConfig `new` is missing the required property `aws_s3_bucket_name` for type `s3_object`.",
+            "DataNodeConfig `new` is missing the required property `aws_s3_object_key` for type `s3_object`.",
+        ]
+        assert all(message in caplog.text for message in expected_error_messages)    
+    
     def test_check_properties_of_sqlite_engine(self, caplog):
     def test_check_properties_of_sqlite_engine(self, caplog):
         config = Config._applied_config
         config = Config._applied_config
         Config._compile_configs()
         Config._compile_configs()
@@ -353,6 +366,17 @@ class TestDataNodeConfigChecker:
         Config.check()
         Config.check()
         assert len(Config._collector.errors) == 0
         assert len(Config._collector.errors) == 0
 
 
+        config._sections[DataNodeConfig.name]["new"].storage_type = "s3_object"
+        config._sections[DataNodeConfig.name]["new"].properties = {
+            "aws_access_key": "access_key",
+            "aws_secret_access_key": "secret_acces_key",
+            "aws_s3_bucket_name": "s3_bucket_name",
+            "aws_s3_object_key": "s3_object_key",
+        }
+        Config._collector = IssueCollector()
+        Config.check()
+        assert len(Config._collector.errors) == 0
+        
         config._sections[DataNodeConfig.name]["new"].storage_type = "excel"
         config._sections[DataNodeConfig.name]["new"].storage_type = "excel"
         Config._collector = IssueCollector()
         Config._collector = IssueCollector()
         Config.check()
         Config.check()