@@ -23,17 +23,18 @@ def test_create_audit_trail_event_succeeds(self, mock_request_method):
2323 "actor_id" : "user_12345" ,
2424 "target_name" : "Ryota Yamasato" ,
2525 "target_id" : "user_67890" ,
26- "occurred_at" : datetime .utcnow ().isoformat (),
26+ "occurred_at" : datetime .now ().isoformat (),
2727 "metadata" : {"a" : "b" },
2828 }
2929 mock_response = Response ()
3030 mock_response .status_code = 200
3131 mock_request_method ("post" , mock_response , 200 )
32- response = self .audit_trail .create_event (event )
33- assert response .status_code == 200
32+
33+ result = self .audit_trail .create_event (event )
34+ assert result == True
3435
3536 def test_create_audit_trail_event_fails_with_long_metadata (self ):
36- with pytest .raises (Exception , match = r"Number of metadata keys exceeds .*" ):
37+ with pytest .raises (ValueError , match = r"Number of metadata keys exceeds .*" ):
3738 metadata = {str (num ): num for num in range (51 )}
3839 event = {
3940 "group" : "Terrace House" ,
@@ -48,3 +49,155 @@ def test_create_audit_trail_event_fails_with_long_metadata(self):
4849 "metadata" : metadata ,
4950 }
5051 self .audit_trail .create_event (event )
52+
53+ def test_get_events_succeeds (self , mock_request_method ):
54+ event = {
55+ "id" : "evt_123" ,
56+ "group" : "Terrace House" ,
57+ "location" : "1.1.1.1" ,
58+ "latitude" : None ,
59+ "longitude" : None ,
60+ "action" : {
61+ "id" : "evt_action_123" ,
62+ "name" : "house.created" ,
63+ "project_id" : "project_123" ,
64+ },
65+ "type" : "C" ,
66+ "actor_name" : "Daiki Miyagi" ,
67+ "actor_id" : "user_12345" ,
68+ "target_name" : "Ryota Yamasato" ,
69+ "target_id" : "user_67890" ,
70+ "occurred_at" : datetime .now ().isoformat (),
71+ "metadata" : {"a" : "b" },
72+ }
73+
74+ response = {
75+ "data" : [event ,],
76+ "listMetadata" : {"before" : None , "after" : None ,},
77+ }
78+ mock_request_method ("get" , response , 200 )
79+
80+ events , before , after = self .audit_trail .get_events ()
81+ assert events [0 ].to_dict () == event
82+
83+ def test_get_events_raises_valueerror_when_before_and_after_provided (self ):
84+ with pytest .raises (ValueError ):
85+ self .audit_trail .get_events (before = "evt_123" , after = "evt_456" )
86+
87+ def test_get_events_correctly_includes_occured_at_filter (
88+ self , capture_and_mock_request
89+ ):
90+ event = {
91+ "id" : "evt_123" ,
92+ "group" : "Terrace House" ,
93+ "location" : "1.1.1.1" ,
94+ "latitude" : None ,
95+ "longitude" : None ,
96+ "action" : {
97+ "id" : "evt_action_123" ,
98+ "name" : "house.created" ,
99+ "project_id" : "project_123" ,
100+ },
101+ "type" : "C" ,
102+ "actor_name" : "Daiki Miyagi" ,
103+ "actor_id" : "user_12345" ,
104+ "target_name" : "Ryota Yamasato" ,
105+ "target_id" : "user_67890" ,
106+ "occurred_at" : datetime .now ().isoformat (),
107+ "metadata" : {"a" : "b" },
108+ }
109+
110+ response = {
111+ "data" : [event ,],
112+ "listMetadata" : {"before" : None , "after" : None ,},
113+ }
114+ request_args , request_kwargs = capture_and_mock_request ("get" , response , 200 )
115+
116+ self .audit_trail .get_events (
117+ occurred_at = datetime .now (),
118+ occurred_at_gte = datetime .now (),
119+ occurred_at_gt = datetime .now (),
120+ occurred_at_lte = datetime .now ,
121+ occurred_at_lt = datetime .now (),
122+ )
123+
124+ request_params = request_kwargs ["params" ]
125+ assert "occurred_at" in request_params
126+ assert "occurred_at_gte" not in request_params
127+ assert "occurred_at_gt" not in request_params
128+ assert "occurred_at_lte" not in request_params
129+ assert "occurred_at_lt" not in request_params
130+
131+ def test_get_events_correctly_includes_occurred_at_gte (
132+ self , capture_and_mock_request
133+ ):
134+ event = {
135+ "id" : "evt_123" ,
136+ "group" : "Terrace House" ,
137+ "location" : "1.1.1.1" ,
138+ "latitude" : None ,
139+ "longitude" : None ,
140+ "action" : {
141+ "id" : "evt_action_123" ,
142+ "name" : "house.created" ,
143+ "project_id" : "project_123" ,
144+ },
145+ "type" : "C" ,
146+ "actor_name" : "Daiki Miyagi" ,
147+ "actor_id" : "user_12345" ,
148+ "target_name" : "Ryota Yamasato" ,
149+ "target_id" : "user_67890" ,
150+ "occurred_at" : datetime .now ().isoformat (),
151+ "metadata" : {"a" : "b" },
152+ }
153+
154+ response = {
155+ "data" : [event ,],
156+ "listMetadata" : {"before" : None , "after" : None ,},
157+ }
158+ request_args , request_kwargs = capture_and_mock_request ("get" , response , 200 )
159+
160+ self .audit_trail .get_events (
161+ occurred_at_gte = datetime .now (), occurred_at_gt = datetime .now (),
162+ )
163+
164+ request_params = request_kwargs ["params" ]
165+ assert "occurred_at_gte" in request_params
166+ assert "occurred_at_gt" not in request_params
167+
168+ def test_get_events_correctly_includes_occured_at_lte (
169+ self , capture_and_mock_request
170+ ):
171+ event = {
172+ "id" : "evt_123" ,
173+ "group" : "Terrace House" ,
174+ "location" : "1.1.1.1" ,
175+ "latitude" : None ,
176+ "longitude" : None ,
177+ "action" : {
178+ "id" : "evt_action_123" ,
179+ "name" : "house.created" ,
180+ "project_id" : "project_123" ,
181+ },
182+ "type" : "C" ,
183+ "actor_name" : "Daiki Miyagi" ,
184+ "actor_id" : "user_12345" ,
185+ "target_name" : "Ryota Yamasato" ,
186+ "target_id" : "user_67890" ,
187+ "occurred_at" : datetime .now ().isoformat (),
188+ "metadata" : {"a" : "b" },
189+ }
190+
191+ response = {
192+ "data" : [event ,],
193+ "listMetadata" : {"before" : None , "after" : None ,},
194+ }
195+ request_args , request_kwargs = capture_and_mock_request ("get" , response , 200 )
196+
197+ self .audit_trail .get_events (
198+ occurred_at_lte = datetime .now , occurred_at_lt = datetime .now ()
199+ )
200+
201+ request_params = request_kwargs ["params" ]
202+ assert "occurred_at_lte" in request_params
203+ assert "occurred_at_lt" not in request_params
0 commit comments