Ver Fonte

refactor(api/core/workflow/nodes/http_request): Remove `mask_authorization_header` because its alwary true. (#6379)

-LAN- há 9 meses atrás
pai
commit
fc37887a21

+ 0 - 1
api/core/workflow/nodes/http_request/entities.py

@@ -58,4 +58,3 @@ class HttpRequestNodeData(BaseNodeData):
     params: str
     body: Optional[HttpRequestNodeBody] = None
     timeout: Optional[HttpRequestNodeTimeout] = None
-    mask_authorization_header: Optional[bool] = True

+ 10 - 11
api/core/workflow/nodes/http_request/http_executor.py

@@ -283,7 +283,7 @@ class HttpExecutor:
         # validate response
         return self._validate_and_parse_response(response)
 
-    def to_raw_request(self, mask_authorization_header: Optional[bool] = True) -> str:
+    def to_raw_request(self) -> str:
         """
         convert to raw request
         """
@@ -295,16 +295,15 @@ class HttpExecutor:
 
         headers = self._assembling_headers()
         for k, v in headers.items():
-            if mask_authorization_header:
-                # get authorization header
-                if self.authorization.type == 'api-key':
-                    authorization_header = 'Authorization'
-                    if self.authorization.config and self.authorization.config.header:
-                        authorization_header = self.authorization.config.header
-
-                    if k.lower() == authorization_header.lower():
-                        raw_request += f'{k}: {"*" * len(v)}\n'
-                        continue
+            # get authorization header
+            if self.authorization.type == 'api-key':
+                authorization_header = 'Authorization'
+                if self.authorization.config and self.authorization.config.header:
+                    authorization_header = self.authorization.config.header
+
+                if k.lower() == authorization_header.lower():
+                    raw_request += f'{k}: {"*" * len(v)}\n'
+                    continue
 
             raw_request += f'{k}: {v}\n'
 

+ 2 - 6
api/core/workflow/nodes/http_request/http_request_node.py

@@ -65,9 +65,7 @@ class HttpRequestNode(BaseNode):
             process_data = {}
             if http_executor:
                 process_data = {
-                    'request': http_executor.to_raw_request(
-                        mask_authorization_header=node_data.mask_authorization_header
-                    ),
+                    'request': http_executor.to_raw_request(),
                 }
             return NodeRunResult(
                 status=WorkflowNodeExecutionStatus.FAILED,
@@ -86,9 +84,7 @@ class HttpRequestNode(BaseNode):
                 'files': files,
             },
             process_data={
-                'request': http_executor.to_raw_request(
-                    mask_authorization_header=node_data.mask_authorization_header,
-                ),
+                'request': http_executor.to_raw_request(),
             },
         )
 

+ 6 - 1
api/core/workflow/utils/variable_template_parser.py

@@ -1,4 +1,6 @@
 import re
+from collections.abc import Mapping
+from typing import Any
 
 from core.workflow.entities.variable_entities import VariableSelector
 
@@ -77,7 +79,7 @@ class VariableTemplateParser:
 
         return variable_selectors
 
-    def format(self, inputs: dict, remove_template_variables: bool = True) -> str:
+    def format(self, inputs: Mapping[str, Any], remove_template_variables: bool = True) -> str:
         """
         Formats the template string by replacing the template variables with their corresponding values.
 
@@ -91,6 +93,9 @@ class VariableTemplateParser:
         def replacer(match):
             key = match.group(1)
             value = inputs.get(key, match.group(0))  # return original matched string if key not found
+
+            if value is None:
+                value = ''
             # convert the value to string
             if isinstance(value, list | dict | bool | int | float):
                 value = str(value)

+ 0 - 16
api/tests/integration_tests/workflow/nodes/test_http.py

@@ -43,7 +43,6 @@ def test_get(setup_http_mock):
             'headers': 'X-Header:123',
             'params': 'A:b',
             'body': None,
-            'mask_authorization_header': False,
         }
     }, **BASIC_NODE_DATA)
 
@@ -52,7 +51,6 @@ def test_get(setup_http_mock):
     data = result.process_data.get('request', '')
 
     assert '?A=b' in data
-    assert 'api-key: Basic ak-xxx' in data
     assert 'X-Header: 123' in data
 
 
@@ -103,7 +101,6 @@ def test_custom_authorization_header(setup_http_mock):
             'headers': 'X-Header:123',
             'params': 'A:b',
             'body': None,
-            'mask_authorization_header': False,
         }
     }, **BASIC_NODE_DATA)
 
@@ -113,7 +110,6 @@ def test_custom_authorization_header(setup_http_mock):
 
     assert '?A=b' in data
     assert 'X-Header: 123' in data
-    assert 'X-Auth: Auth' in data
 
 
 @pytest.mark.parametrize('setup_http_mock', [['none']], indirect=True)
@@ -136,7 +132,6 @@ def test_template(setup_http_mock):
             'headers': 'X-Header:123\nX-Header2:{{#a.b123.args2#}}',
             'params': 'A:b\nTemplate:{{#a.b123.args2#}}',
             'body': None,
-            'mask_authorization_header': False,
         }
     }, **BASIC_NODE_DATA)
 
@@ -145,7 +140,6 @@ def test_template(setup_http_mock):
 
     assert '?A=b' in data
     assert 'Template=2' in data
-    assert 'api-key: Basic ak-xxx' in data
     assert 'X-Header: 123' in data
     assert 'X-Header2: 2' in data
 
@@ -173,7 +167,6 @@ def test_json(setup_http_mock):
                 'type': 'json',
                 'data': '{"a": "{{#a.b123.args1#}}"}'
             },
-            'mask_authorization_header': False,
         }
     }, **BASIC_NODE_DATA)
 
@@ -181,7 +174,6 @@ def test_json(setup_http_mock):
     data = result.process_data.get('request', '')
 
     assert '{"a": "1"}' in data
-    assert 'api-key: Basic ak-xxx' in data
     assert 'X-Header: 123' in data
 
 
@@ -207,7 +199,6 @@ def test_x_www_form_urlencoded(setup_http_mock):
                 'type': 'x-www-form-urlencoded',
                 'data': 'a:{{#a.b123.args1#}}\nb:{{#a.b123.args2#}}'
             },
-            'mask_authorization_header': False,
         }
     }, **BASIC_NODE_DATA)
 
@@ -215,7 +206,6 @@ def test_x_www_form_urlencoded(setup_http_mock):
     data = result.process_data.get('request', '')
 
     assert 'a=1&b=2' in data
-    assert 'api-key: Basic ak-xxx' in data
     assert 'X-Header: 123' in data
 
 
@@ -241,7 +231,6 @@ def test_form_data(setup_http_mock):
                 'type': 'form-data',
                 'data': 'a:{{#a.b123.args1#}}\nb:{{#a.b123.args2#}}'
             },
-            'mask_authorization_header': False,
         }
     }, **BASIC_NODE_DATA)
 
@@ -252,7 +241,6 @@ def test_form_data(setup_http_mock):
     assert '1' in data
     assert 'form-data; name="b"' in data
     assert '2' in data
-    assert 'api-key: Basic ak-xxx' in data
     assert 'X-Header: 123' in data
 
 
@@ -278,14 +266,12 @@ def test_none_data(setup_http_mock):
                 'type': 'none',
                 'data': '123123123'
             },
-            'mask_authorization_header': False,
         }
     }, **BASIC_NODE_DATA)
 
     result = node.run(pool)
     data = result.process_data.get('request', '')
 
-    assert 'api-key: Basic ak-xxx' in data
     assert 'X-Header: 123' in data
     assert '123123123' not in data
 
@@ -305,7 +291,6 @@ def test_mock_404(setup_http_mock):
             'body': None,
             'params': '',
             'headers': 'X-Header:123',
-            'mask_authorization_header': False,
         }
     }, **BASIC_NODE_DATA)
 
@@ -334,7 +319,6 @@ def test_multi_colons_parse(setup_http_mock):
                 'type': 'form-data',
                 'data': 'Referer:http://example5.com\nRedirect:http://example6.com'
             },
-            'mask_authorization_header': False,
         }
     }, **BASIC_NODE_DATA)