1818
1919import urllib
2020from collections .abc import Generator
21+ from datetime import datetime
2122from unittest import mock
2223
2324import pytest
3940
4041from tests_common .test_utils .asserts import assert_queries_count
4142from tests_common .test_utils .db import clear_db_assets , clear_db_runs
43+ from tests_common .test_utils .format_datetime import from_datetime_to_zulu_without_ms
44+
45+ DEFAULT_DATE = datetime (2020 , 6 , 11 , 18 , 0 , 0 , tzinfo = timezone .utc )
4246
4347pytestmark = [pytest .mark .db_test , pytest .mark .skip_if_database_isolation_mode ]
4448
4549
4650def _create_assets (session , num : int = 2 ) -> None :
47- default_time = "2020-06-11T18:00:00+00:00"
4851 assets = [
4952 AssetModel (
5053 id = i ,
5154 name = f"simple{ i } " ,
5255 uri = f"s3://bucket/key/{ i } " ,
5356 group = "asset" ,
5457 extra = {"foo" : "bar" },
55- created_at = timezone . parse ( default_time ) ,
56- updated_at = timezone . parse ( default_time ) ,
58+ created_at = DEFAULT_DATE ,
59+ updated_at = DEFAULT_DATE ,
5760 )
5861 for i in range (1 , 1 + num )
5962 ]
@@ -62,16 +65,15 @@ def _create_assets(session, num: int = 2) -> None:
6265
6366
6467def _create_assets_with_sensitive_extra (session , num : int = 2 ) -> None :
65- default_time = "2020-06-11T18:00:00+00:00"
6668 assets = [
6769 AssetModel (
6870 id = i ,
6971 name = f"sensitive{ i } " ,
7072 uri = f"s3://bucket/key/{ i } " ,
7173 group = "asset" ,
7274 extra = {"password" : "bar" },
73- created_at = timezone . parse ( default_time ) ,
74- updated_at = timezone . parse ( default_time ) ,
75+ created_at = DEFAULT_DATE ,
76+ updated_at = DEFAULT_DATE ,
7577 )
7678 for i in range (1 , 1 + num )
7779 ]
@@ -85,7 +87,6 @@ def _create_provided_asset(session, asset: AssetModel) -> None:
8587
8688
8789def _create_assets_events (session , num : int = 2 ) -> None :
88- default_time = "2020-06-11T18:00:00+00:00"
8990 assets_events = [
9091 AssetEvent (
9192 id = i ,
@@ -94,7 +95,7 @@ def _create_assets_events(session, num: int = 2) -> None:
9495 source_task_id = "source_task_id" ,
9596 source_dag_id = "source_dag_id" ,
9697 source_run_id = f"source_run_id_{ i } " ,
97- timestamp = timezone . parse ( default_time ) ,
98+ timestamp = DEFAULT_DATE ,
9899 )
99100 for i in range (1 , 1 + num )
100101 ]
@@ -103,7 +104,6 @@ def _create_assets_events(session, num: int = 2) -> None:
103104
104105
105106def _create_assets_events_with_sensitive_extra (session , num : int = 2 ) -> None :
106- default_time = "2020-06-11T18:00:00+00:00"
107107 assets_events = [
108108 AssetEvent (
109109 id = i ,
@@ -112,7 +112,7 @@ def _create_assets_events_with_sensitive_extra(session, num: int = 2) -> None:
112112 source_task_id = "source_task_id" ,
113113 source_dag_id = "source_dag_id" ,
114114 source_run_id = f"source_run_id_{ i } " ,
115- timestamp = timezone . parse ( default_time ) ,
115+ timestamp = DEFAULT_DATE ,
116116 )
117117 for i in range (1 , 1 + num )
118118 ]
@@ -126,22 +126,21 @@ def _create_provided_asset_event(session, asset_event: AssetEvent) -> None:
126126
127127
128128def _create_dag_run (session , num : int = 2 ):
129- default_time = "2020-06-11T18:00:00+00:00"
130129 dag_runs = [
131130 DagRun (
132131 dag_id = "source_dag_id" ,
133132 run_id = f"source_run_id_{ i } " ,
134133 run_type = DagRunType .MANUAL ,
135- logical_date = timezone . parse ( default_time ) ,
136- start_date = timezone . parse ( default_time ) ,
137- data_interval = (timezone . parse ( default_time ), timezone . parse ( default_time ) ),
134+ logical_date = DEFAULT_DATE ,
135+ start_date = DEFAULT_DATE ,
136+ data_interval = (DEFAULT_DATE , DEFAULT_DATE ),
138137 external_trigger = True ,
139138 state = DagRunState .SUCCESS ,
140139 )
141140 for i in range (1 , 1 + num )
142141 ]
143142 for dag_run in dag_runs :
144- dag_run .end_date = timezone . parse ( default_time )
143+ dag_run .end_date = DEFAULT_DATE
145144 session .add_all (dag_runs )
146145 session .commit ()
147146
@@ -156,11 +155,9 @@ def _create_asset_dag_run(session, num: int = 2):
156155
157156
158157class TestAssets :
159- default_time = "2020-06-11T18:00:00+00:00"
160-
161158 @pytest .fixture
162159 def time_freezer (self ) -> Generator :
163- freezer = time_machine .travel (self . default_time , tick = False )
160+ freezer = time_machine .travel (DEFAULT_DATE , tick = False )
164161 freezer .start ()
165162
166163 yield
@@ -218,7 +215,7 @@ def test_should_respond_200(self, test_client, session):
218215 response = test_client .get ("/public/assets" )
219216 assert response .status_code == 200
220217 response_data = response .json ()
221- tz_datetime_format = self . default_time . replace ( "+00:00" , "Z" )
218+ tz_datetime_format = from_datetime_to_zulu_without_ms ( DEFAULT_DATE )
222219 assert response_data == {
223220 "assets" : [
224221 {
@@ -402,15 +399,15 @@ def test_should_respond_200(self, test_client, session):
402399 {
403400 "run_id" : "source_run_id_1" ,
404401 "dag_id" : "source_dag_id" ,
405- "logical_date" : "2020-06-11T18:00:00Z" ,
406- "start_date" : "2020-06-11T18:00:00Z" ,
407- "end_date" : "2020-06-11T18:00:00Z" ,
402+ "logical_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
403+ "start_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
404+ "end_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
408405 "state" : "success" ,
409- "data_interval_start" : "2020-06-11T18:00:00Z" ,
410- "data_interval_end" : "2020-06-11T18:00:00Z" ,
406+ "data_interval_start" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
407+ "data_interval_end" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
411408 }
412409 ],
413- "timestamp" : "2020-06-11T18:00:00Z" ,
410+ "timestamp" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
414411 },
415412 {
416413 "id" : 2 ,
@@ -425,15 +422,15 @@ def test_should_respond_200(self, test_client, session):
425422 {
426423 "run_id" : "source_run_id_2" ,
427424 "dag_id" : "source_dag_id" ,
428- "logical_date" : "2020-06-11T18:00:00Z" ,
429- "start_date" : "2020-06-11T18:00:00Z" ,
430- "end_date" : "2020-06-11T18:00:00Z" ,
425+ "logical_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
426+ "start_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
427+ "end_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
431428 "state" : "success" ,
432- "data_interval_start" : "2020-06-11T18:00:00Z" ,
433- "data_interval_end" : "2020-06-11T18:00:00Z" ,
429+ "data_interval_start" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
430+ "data_interval_end" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
434431 }
435432 ],
436- "timestamp" : "2020-06-11T18:00:00Z" ,
433+ "timestamp" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
437434 },
438435 ],
439436 "total_entries" : 2 ,
@@ -514,15 +511,15 @@ def test_should_mask_sensitive_extra(self, test_client, session):
514511 {
515512 "run_id" : "source_run_id_1" ,
516513 "dag_id" : "source_dag_id" ,
517- "logical_date" : "2020-06-11T18:00:00Z" ,
518- "start_date" : "2020-06-11T18:00:00Z" ,
519- "end_date" : "2020-06-11T18:00:00Z" ,
514+ "logical_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
515+ "start_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
516+ "end_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
520517 "state" : "success" ,
521- "data_interval_start" : "2020-06-11T18:00:00Z" ,
522- "data_interval_end" : "2020-06-11T18:00:00Z" ,
518+ "data_interval_start" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
519+ "data_interval_end" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
523520 }
524521 ],
525- "timestamp" : "2020-06-11T18:00:00Z" ,
522+ "timestamp" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
526523 },
527524 {
528525 "id" : 2 ,
@@ -537,15 +534,15 @@ def test_should_mask_sensitive_extra(self, test_client, session):
537534 {
538535 "run_id" : "source_run_id_2" ,
539536 "dag_id" : "source_dag_id" ,
540- "logical_date" : "2020-06-11T18:00:00Z" ,
541- "start_date" : "2020-06-11T18:00:00Z" ,
542- "end_date" : "2020-06-11T18:00:00Z" ,
537+ "logical_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
538+ "start_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
539+ "end_date" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
543540 "state" : "success" ,
544- "data_interval_start" : "2020-06-11T18:00:00Z" ,
545- "data_interval_end" : "2020-06-11T18:00:00Z" ,
541+ "data_interval_start" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
542+ "data_interval_end" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
546543 }
547544 ],
548- "timestamp" : "2020-06-11T18:00:00Z" ,
545+ "timestamp" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ) ,
549546 },
550547 ],
551548 "total_entries" : 2 ,
@@ -566,7 +563,7 @@ class TestGetAssetEndpoint(TestAssets):
566563 def test_should_respond_200 (self , test_client , url , session ):
567564 self .create_assets (num = 1 )
568565 assert session .query (AssetModel ).count () == 1
569- tz_datetime_format = self . default_time . replace ( "+00:00" , "Z" )
566+ tz_datetime_format = from_datetime_to_zulu_without_ms ( DEFAULT_DATE )
570567 with assert_queries_count (6 ):
571568 response = test_client .get (
572569 f"/public/assets/{ url } " ,
@@ -596,7 +593,7 @@ def test_should_respond_404(self, test_client):
596593 @pytest .mark .enable_redact
597594 def test_should_mask_sensitive_extra (self , test_client , session ):
598595 self .create_assets_with_sensitive_extra ()
599- tz_datetime_format = self . default_time . replace ( "+00:00" , "Z" )
596+ tz_datetime_format = from_datetime_to_zulu_without_ms ( DEFAULT_DATE )
600597 uri = "s3://bucket/key/1"
601598 response = test_client .get (
602599 f"/public/assets/{ uri } " ,
@@ -641,7 +638,7 @@ def test_should_respond_200(self, test_client, session, create_dummy_dag):
641638 assert response .json () == {
642639 "queued_events" : [
643640 {
644- "created_at" : self . default_time . replace ( "+00:00" , "Z" ),
641+ "created_at" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ),
645642 "uri" : "s3://bucket/key/1" ,
646643 "dag_id" : "dag" ,
647644 }
@@ -721,7 +718,7 @@ def test_should_respond_200(self, test_client, session):
721718 "source_run_id" : None ,
722719 "source_map_index" : - 1 ,
723720 "created_dagruns" : [],
724- "timestamp" : self . default_time . replace ( "+00:00" , "Z" ),
721+ "timestamp" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ),
725722 }
726723
727724 def test_invalid_attr_not_allowed (self , test_client , session ):
@@ -748,7 +745,7 @@ def test_should_mask_sensitive_extra(self, test_client, session):
748745 "source_run_id" : None ,
749746 "source_map_index" : - 1 ,
750747 "created_dagruns" : [],
751- "timestamp" : self . default_time . replace ( "+00:00" , "Z" ),
748+ "timestamp" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ),
752749 }
753750
754751
@@ -769,7 +766,7 @@ def test_should_respond_200(self, test_client, session, create_dummy_dag):
769766 assert response .json () == {
770767 "queued_events" : [
771768 {
772- "created_at" : self . default_time . replace ( "+00:00" , "Z" ),
769+ "created_at" : from_datetime_to_zulu_without_ms ( DEFAULT_DATE ),
773770 "uri" : "s3://bucket/key/1" ,
774771 "dag_id" : "dag" ,
775772 }
0 commit comments