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 27047f9a91e refactor: Improved assertions (#60106)
27047f9a91e is described below
commit 27047f9a91e212908ffd25f613f391eb5b17161b
Author: David Blain <[email protected]>
AuthorDate: Sun Jan 4 23:04:06 2026 +0100
refactor: Improved assertions (#60106)
---
.../core_api/routes/public/test_task_instances.py | 405 ++++++++++++++++-----
1 file changed, 322 insertions(+), 83 deletions(-)
diff --git
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
index 8499a637069..5fef690549b 100644
---
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
+++
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
@@ -189,11 +189,20 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
response = test_client.get(
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context"
)
-
+ response_data = response.json()
assert response.status_code == 200
- assert response.json() == {
+ assert response_data == {
"dag_id": "example_python_operator",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"dag_display_name": "example_python_operator",
"duration": 10000.0,
"end_date": "2020-01-03T00:00:00Z",
@@ -201,7 +210,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
"executor": None,
"executor_config": "{}",
"hostname": "",
- "id": mock.ANY,
+ "id": response_data["id"],
"map_index": -1,
"max_tries": 0,
"note": "placeholder-note",
@@ -266,10 +275,10 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
):
mock_hasattr.return_value = False
response =
test_client.get(f"/dags/dag_with_multiple_versions/dagRuns/{run_id}/taskInstances/task1")
-
+ response_data = response.json()
assert response.status_code == 200
- assert response.json() == {
- "id": mock.ANY,
+ assert response_data == {
+ "id": response_data["id"],
"task_id": "task1",
"dag_id": "dag_with_multiple_versions",
"dag_run_id": run_id,
@@ -303,14 +312,14 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
"trigger": None,
"triggerer_job": None,
"dag_version": {
- "id": mock.ANY,
+ "id": response_data["dag_version"]["id"],
"version_number": expected_version_number,
"dag_id": "dag_with_multiple_versions",
"dag_display_name": "dag_with_multiple_versions",
"bundle_name": "dag_maker",
"bundle_version": f"some_commit_hash{expected_version_number}",
"bundle_url":
f"http://test_host.github.com/tree/some_commit_hash{expected_version_number}/dags",
- "created_at": mock.ANY,
+ "created_at": response_data["dag_version"]["created_at"],
},
}
@@ -328,7 +337,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
response = test_client.get(
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context"
)
- data = response.json()
+ response_data = response.json()
# this logic in effect replicates mock.ANY for these values
values_to_ignore = {
@@ -337,12 +346,21 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
}
for k, v in values_to_ignore.items():
for elem in v:
- del data[k][elem]
+ del response_data[k][elem]
assert response.status_code == 200
- assert data == {
+ assert response_data == {
"dag_id": "example_python_operator",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"dag_display_name": "example_python_operator",
"duration": 10000.0,
"end_date": "2020-01-03T00:00:00Z",
@@ -350,7 +368,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
"executor": None,
"executor_config": "{}",
"hostname": "",
- "id": mock.ANY,
+ "id": response_data["id"],
"map_index": -1,
"max_tries": 0,
"note": "placeholder-note",
@@ -393,10 +411,20 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
response = test_client.get(
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context"
)
+ response_data = response.json()
assert response.status_code == 200
- assert response.json() == {
+ assert response_data == {
"dag_id": "example_python_operator",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"dag_display_name": "example_python_operator",
"duration": 10000.0,
"end_date": "2020-01-03T00:00:00Z",
@@ -404,7 +432,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
"executor": None,
"executor_config": "{}",
"hostname": "",
- "id": mock.ANY,
+ "id": response_data["id"],
"map_index": -1,
"max_tries": 0,
"note": "placeholder-note",
@@ -440,11 +468,20 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
response = test_client.get(
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context"
)
+ response_data = response.json()
assert response.status_code == 200
-
assert response.json() == {
"dag_id": "example_python_operator",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"dag_display_name": "example_python_operator",
"duration": 10000.0,
"end_date": "2020-01-03T00:00:00Z",
@@ -452,7 +489,7 @@ class TestGetTaskInstance(TestTaskInstanceEndpoint):
"executor": None,
"executor_config": "{}",
"hostname": "",
- "id": mock.ANY,
+ "id": response_data["id"],
"map_index": -1,
"max_tries": 0,
"note": "placeholder-note",
@@ -551,11 +588,20 @@ class TestGetMappedTaskInstance(TestTaskInstanceEndpoint):
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances"
f"/print_the_context/{map_index}",
)
+ response_data = response.json()
assert response.status_code == 200
-
- assert response.json() == {
+ assert response_data == {
"dag_id": "example_python_operator",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"dag_display_name": "example_python_operator",
"duration": 10000.0,
"end_date": "2020-01-03T00:00:00Z",
@@ -563,7 +609,7 @@ class TestGetMappedTaskInstance(TestTaskInstanceEndpoint):
"executor": None,
"executor_config": "{}",
"hostname": "",
- "id": mock.ANY,
+ "id": response_data["id"],
"map_index": map_index,
"max_tries": 0,
"note": "placeholder-note",
@@ -2009,8 +2055,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
response = test_client.get(
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries/1"
)
+ response_data = response.json()
assert response.status_code == 200
- assert response.json() == {
+ assert response_data == {
"dag_id": "example_python_operator",
"dag_display_name": "example_python_operator",
"duration": 10000.0,
@@ -2036,7 +2083,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
"try_number": 1,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
}
@@ -2046,9 +2102,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
response = test_client.get(
f"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries/{try_number}",
)
-
+ response_data = response.json()
assert response.status_code == 200
- assert response.json() == {
+ assert response_data == {
"dag_id": "example_python_operator",
"dag_display_name": "example_python_operator",
"duration": 10000.0,
@@ -2074,7 +2130,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
"try_number": try_number,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
}
@@ -2115,9 +2180,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances"
f"/print_the_context/{map_index}/tries/{try_number}",
)
+ response_data = response.json()
assert response.status_code == 200
-
- assert response.json() == {
+ assert response_data == {
"dag_id": "example_python_operator",
"dag_display_name": "example_python_operator",
"duration": 10000.0,
@@ -2143,7 +2208,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
"try_number": try_number,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
}
@@ -2179,10 +2253,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
response = test_client.get(
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries/1",
)
+ response_data = response.json()
assert response.status_code == 200
- data = response.json()
-
- assert data == {
+ assert response_data == {
"dag_id": "example_python_operator",
"dag_display_name": "example_python_operator",
"duration": 10000.0,
@@ -2208,7 +2281,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
"try_number": 1,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
}
@@ -2219,9 +2301,9 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
response = test_client.get(
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries/1",
)
+ response_data = response.json()
assert response.status_code == 200
-
- assert response.json() == {
+ assert response_data == {
"dag_id": "example_python_operator",
"dag_display_name": "example_python_operator",
"duration": 10000.0,
@@ -2247,7 +2329,16 @@ class TestGetTaskInstanceTry(TestTaskInstanceEndpoint):
"try_number": 1,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_data["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_data["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
}
@@ -3110,20 +3201,29 @@ class
TestPostClearTaskInstances(TestTaskInstanceEndpoint):
f"/dags/{dag_id}/clearTaskInstances",
json=payload,
)
- assert response.status_code == 200
+ response_data = response.json()
expected_response = [
{
"dag_id": "example_python_operator",
"dag_display_name": "example_python_operator",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][0]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][0]["dag_version"]["id"],
+ "version_number": 1,
+ },
"dag_run_id": "TEST_DAG_RUN_ID_0",
"task_id": "print_the_context",
- "duration": mock.ANY,
- "end_date": mock.ANY,
+ "duration": response_data["task_instances"][0]["duration"],
+ "end_date": response_data["task_instances"][0]["end_date"],
"executor": None,
"executor_config": "{}",
"hostname": "",
- "id": mock.ANY,
+ "id": response_data["task_instances"][0]["id"],
"logical_date": response_logical_date,
"map_index": -1,
"max_tries": 0,
@@ -3146,11 +3246,12 @@ class
TestPostClearTaskInstances(TestTaskInstanceEndpoint):
"trigger": None,
"triggerer_job": None,
"try_number": 0,
- "unixname": mock.ANY,
+ "unixname": getuser(),
},
]
- assert response.json()["task_instances"] == expected_response
- assert response.json()["total_entries"] == 1
+ assert response.status_code == 200
+ assert response_data["task_instances"] == expected_response
+ assert response_data["total_entries"] == 1
def test_should_respond_200_with_include_past(self, test_client, session):
dag_id = "example_python_operator"
@@ -3483,10 +3584,11 @@ class
TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
response = test_client.get(
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries"
)
+ response_data = response.json()
assert response.status_code == 200
- assert response.json()["total_entries"] == 2 # The task instance and
its history
- assert len(response.json()["task_instances"]) == 2
- assert response.json() == {
+ assert response_data["total_entries"] == 2 # The task instance and
its history
+ assert len(response_data["task_instances"]) == 2
+ assert response_data == {
"task_instances": [
{
"dag_id": "example_python_operator",
@@ -3514,7 +3616,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
"try_number": 1,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][0]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][0]["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
},
{
@@ -3543,7 +3654,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
"try_number": 2,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][1]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][1]["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
},
],
@@ -3650,10 +3770,11 @@ class
TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
response = test_client.get(
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances/print_the_context/tries"
)
+ response_data = response.json()
assert response.status_code == 200
- assert response.json()["total_entries"] == 1
- assert len(response.json()["task_instances"]) == 1
- assert response.json() == {
+ assert response_data["total_entries"] == 1
+ assert len(response_data["task_instances"]) == 1
+ assert response_data == {
"task_instances": [
{
"dag_id": "example_python_operator",
@@ -3681,7 +3802,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
"try_number": 1,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][0]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][0]["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
},
],
@@ -3722,12 +3852,13 @@ class
TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
"/dags/example_python_operator/dagRuns/TEST_DAG_RUN_ID/taskInstances"
f"/print_the_context/{map_index}/tries",
)
+ response_data = response.json()
assert response.status_code == 200
assert (
- response.json()["total_entries"] == 2
+ response_data["total_entries"] == 2
) # the mapped task was cleared. So both the task instance and
its history
- assert len(response.json()["task_instances"]) == 2
- assert response.json() == {
+ assert len(response_data["task_instances"]) == 2
+ assert response_data == {
"task_instances": [
{
"dag_id": "example_python_operator",
@@ -3755,7 +3886,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
"try_number": 1,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][0]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][0]["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
},
{
@@ -3784,7 +3924,16 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
"try_number": 2,
"unixname": getuser(),
"dag_run_id": "TEST_DAG_RUN_ID",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][1]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][1]["dag_version"]["id"],
+ "version_number": 1,
+ },
"hitl_detail": None,
},
],
@@ -3819,9 +3968,9 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
response = test_client.get(
f"/dags/dag_with_multiple_versions/dagRuns/{run_id}/taskInstances/task1/tries"
)
+ response_data = response.json()
assert response.status_code == 200
-
- assert response.json()["task_instances"][0] == {
+ assert response_data["task_instances"][0] == {
"task_id": "task1",
"dag_id": "dag_with_multiple_versions",
"dag_display_name": "dag_with_multiple_versions",
@@ -3876,7 +4025,6 @@ class TestGetTaskInstanceTries(TestTaskInstanceEndpoint):
f"/dags/dag_with_multiple_versions/dagRuns/{run_id}/taskInstances/task1/tries"
)
assert response.status_code == 200
-
assert response.json()["task_instances"][0] == {
"task_id": "task1",
"dag_id": "dag_with_multiple_versions",
@@ -3977,13 +4125,23 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
"new_state": self.NEW_STATE,
},
)
+ response_data = response.json()
assert response.status_code == 200
- assert response.json() == {
+ assert response_data == {
"task_instances": [
{
"dag_id": self.DAG_ID,
"dag_display_name": self.DAG_DISPLAY_NAME,
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][0]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][0]["dag_version"]["id"],
+ "version_number": 1,
+ },
"dag_run_id": self.RUN_ID,
"logical_date": "2020-01-01T00:00:00Z",
"task_id": self.TASK_ID,
@@ -3992,7 +4150,7 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
"executor": None,
"executor_config": "{}",
"hostname": "",
- "id": mock.ANY,
+ "id": response_data["task_instances"][0]["id"],
"map_index": -1,
"max_tries": 0,
"note": "placeholder-note",
@@ -4248,7 +4406,16 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
{
"dag_id": "example_python_operator",
"dag_display_name": "example_python_operator",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": mock.ANY,
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": mock.ANY,
+ "version_number": 1,
+ },
"dag_run_id": "TEST_DAG_RUN_ID",
"logical_date": "2020-01-01T00:00:00Z",
"task_id": "print_the_context",
@@ -4333,8 +4500,17 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
"new_state": new_state,
},
)
+ response_data = response.json()
+ if expected_status_code == 200:
+ expected_json["task_instances"][0]["dag_version"]["created_at"] =
response_data["task_instances"][
+ 0
+ ]["dag_version"]["created_at"]
+ expected_json["task_instances"][0]["dag_version"]["id"] =
response_data["task_instances"][0][
+ "dag_version"
+ ]["id"]
+ expected_json["task_instances"][0]["id"] =
response_data["task_instances"][0]["id"]
assert response.status_code == expected_status_code
- assert response.json() == expected_json
+ assert response_data == expected_json
assert mock_set_ti_state.call_count == set_ti_state_call_count
@pytest.mark.parametrize(
@@ -4366,11 +4542,20 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
{
"dag_id": self.DAG_ID,
"dag_display_name": self.DAG_DISPLAY_NAME,
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][0]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][0]["dag_version"]["id"],
+ "version_number": 1,
+ },
"duration": 10000.0,
"end_date": "2020-01-03T00:00:00Z",
"logical_date": "2020-01-01T00:00:00Z",
- "id": mock.ANY,
+ "id": response_data["task_instances"][0]["id"],
"executor": None,
"executor_config": "{}",
"hostname": "",
@@ -4418,11 +4603,20 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
{
"dag_id": self.DAG_ID,
"dag_display_name": self.DAG_DISPLAY_NAME,
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][0]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][0]["dag_version"]["id"],
+ "version_number": 1,
+ },
"duration": 10000.0,
"end_date": "2020-01-03T00:00:00Z",
"logical_date": "2020-01-01T00:00:00Z",
- "id": mock.ANY,
+ "id": response_data["task_instances"][0]["id"],
"executor": None,
"executor_config": "{}",
"hostname": "",
@@ -4483,17 +4677,25 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
)
assert response.status_code == 200, response.text
response_data = response.json()
-
assert response_data == {
"task_instances": [
{
"dag_id": self.DAG_ID,
"dag_display_name": self.DAG_DISPLAY_NAME,
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][0]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][0]["dag_version"]["id"],
+ "version_number": 1,
+ },
"duration": 10000.0,
"end_date": "2020-01-03T00:00:00Z",
"logical_date": "2020-01-01T00:00:00Z",
- "id": mock.ANY,
+ "id": response_data["task_instances"][0]["id"],
"executor": None,
"executor_config": "{}",
"hostname": "",
@@ -4561,11 +4763,20 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
assert response_ti == {
"dag_id": self.DAG_ID,
"dag_display_name": self.DAG_DISPLAY_NAME,
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": response_ti["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": response_ti["dag_version"]["id"],
+ "version_number": 1,
+ },
"duration": 10000.0,
"end_date": "2020-01-03T00:00:00Z",
"logical_date": "2020-01-01T00:00:00Z",
- "id": mock.ANY,
+ "id": response_ti["id"],
"executor": None,
"executor_config": "{}",
"hostname": "",
@@ -4661,13 +4872,23 @@ class
TestPatchTaskInstanceDryRun(TestTaskInstanceEndpoint):
"new_state": self.NEW_STATE,
},
)
+ response_data = response.json()
assert response.status_code == 200
- assert response.json() == {
+ assert response_data == {
"task_instances": [
{
"dag_id": self.DAG_ID,
"dag_display_name": self.DAG_DISPLAY_NAME,
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at":
response_data["task_instances"][0]["dag_version"]["created_at"],
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id":
response_data["task_instances"][0]["dag_version"]["id"],
+ "version_number": 1,
+ },
"dag_run_id": self.RUN_ID,
"logical_date": "2020-01-01T00:00:00Z",
"task_id": self.TASK_ID,
@@ -4676,7 +4897,7 @@ class
TestPatchTaskInstanceDryRun(TestTaskInstanceEndpoint):
"executor": None,
"executor_config": "{}",
"hostname": "",
- "id": mock.ANY,
+ "id": response_data["task_instances"][0]["id"],
"map_index": -1,
"max_tries": 0,
"note": "placeholder-note",
@@ -4944,7 +5165,16 @@ class
TestPatchTaskInstanceDryRun(TestTaskInstanceEndpoint):
{
"dag_id": "example_python_operator",
"dag_display_name": "example_python_operator",
- "dag_version": mock.ANY,
+ "dag_version": {
+ "bundle_name": "dags-folder",
+ "bundle_url": None,
+ "bundle_version": None,
+ "created_at": mock.ANY,
+ "dag_display_name": "example_python_operator",
+ "dag_id": "example_python_operator",
+ "id": mock.ANY,
+ "version_number": 1,
+ },
"dag_run_id": "TEST_DAG_RUN_ID",
"logical_date": "2020-01-01T00:00:00Z",
"task_id": "print_the_context",
@@ -5029,8 +5259,17 @@ class
TestPatchTaskInstanceDryRun(TestTaskInstanceEndpoint):
"new_state": new_state,
},
)
+ response_data = response.json()
+ if expected_status_code == 200:
+ expected_json["task_instances"][0]["dag_version"]["created_at"] =
response_data["task_instances"][
+ 0
+ ]["dag_version"]["created_at"]
+ expected_json["task_instances"][0]["dag_version"]["id"] =
response_data["task_instances"][0][
+ "dag_version"
+ ]["id"]
+ expected_json["task_instances"][0]["id"] =
response_data["task_instances"][0]["id"]
assert response.status_code == expected_status_code
- assert response.json() == expected_json
+ assert response_data == expected_json
assert mock_set_ti_state.call_count == set_ti_state_call_count
@mock.patch("airflow.serialization.definitions.dag.SerializedDAG.set_task_instance_state")