This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 6d5d3555cb REST API set description on POST to `/variables` endpoint
(#36820)
6d5d3555cb is described below
commit 6d5d3555cbd22a3223e6fc14888442ad5b588e2e
Author: Andrey Anshin <[email protected]>
AuthorDate: Wed Jan 17 02:35:48 2024 +0400
REST API set description on POST to `/variables` endpoint (#36820)
---
airflow/api_connexion/endpoints/variable_endpoint.py | 3 +--
.../endpoints/test_variable_endpoint.py | 20 ++++++++++++++------
2 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/airflow/api_connexion/endpoints/variable_endpoint.py
b/airflow/api_connexion/endpoints/variable_endpoint.py
index d7ee84c793..a59aa2f4c1 100644
--- a/airflow/api_connexion/endpoints/variable_endpoint.py
+++ b/airflow/api_connexion/endpoints/variable_endpoint.py
@@ -137,8 +137,7 @@ def post_variables() -> Response:
"""Create a variable."""
try:
data = variable_schema.load(get_json_request_dict())
-
except ValidationError as err:
raise BadRequest("Invalid Variable schema", detail=str(err.messages))
- Variable.set(data["key"], data["val"])
+ Variable.set(data["key"], data["val"], description=data.get("description",
None))
return variable_schema.dump(data)
diff --git a/tests/api_connexion/endpoints/test_variable_endpoint.py
b/tests/api_connexion/endpoints/test_variable_endpoint.py
index 3b75254774..ab9dddf454 100644
--- a/tests/api_connexion/endpoints/test_variable_endpoint.py
+++ b/tests/api_connexion/endpoints/test_variable_endpoint.py
@@ -335,13 +335,21 @@ class TestPatchVariable(TestVariableEndpoint):
class TestPostVariables(TestVariableEndpoint):
- def test_should_create_variable(self, session):
+ @pytest.mark.parametrize(
+ "description",
+ [
+ pytest.param(None, id="not-set"),
+ pytest.param("", id="empty"),
+ pytest.param("Spam Egg", id="desc-set"),
+ ],
+ )
+ def test_should_create_variable(self, description, session):
+ payload = {"key": "var_create", "value": "{}"}
+ if description is not None:
+ payload["description"] = description
response = self.client.post(
"/api/v1/variables",
- json={
- "key": "var_create",
- "value": "{}",
- },
+ json=payload,
environ_overrides={"REMOTE_USER": "test"},
)
assert response.status_code == 200
@@ -350,7 +358,7 @@ class TestPostVariables(TestVariableEndpoint):
assert response.json == {
"key": "var_create",
"value": "{}",
- "description": None,
+ "description": description,
}
def test_should_reject_invalid_request(self, session):