|
22 | 22 |
|
23 | 23 | TEST_SESSION_ID = "123-session-1" |
24 | 24 | DATETIME_INSTANT = datetime(2024, 1, 1, tzinfo=timezone.utc) |
25 | | -POSIX_TS = int(DATETIME_INSTANT.timestamp()) |
| 25 | +POSIX_TS = int(DATETIME_INSTANT.timestamp()) * 1000 |
| 26 | +START_DATE = "2024-12-19" |
| 27 | +START_TIMESTAMP = 1734566400000 # in ms |
| 28 | +END_DATE = "2024-12-20" |
| 29 | +END_TIMESTAMP = 1734652800000 # in ms |
26 | 30 |
|
27 | 31 | TEST_SESSION = { |
28 | 32 | "actorId": TEST_SESSION_ID, |
@@ -157,6 +161,49 @@ def test_get_page_when_custom_params_returns_expected_data(httpserver_auth: HTTP |
157 | 161 | assert page.items[0].json() == json.dumps(TEST_SESSION) |
158 | 162 | assert len(page.items) == 1 == page.total_count |
159 | 163 |
|
| 164 | +def test_get_page_when_given_date_uses_correct_timestamp(httpserver_auth: HTTPServer): |
| 165 | + query = { |
| 166 | + "actor_id": "actor-id", |
| 167 | + "on_or_after": START_TIMESTAMP, |
| 168 | + "before": END_TIMESTAMP, |
| 169 | + "has_alerts": "false", |
| 170 | + "risk_indicators": ["risk-indicator"], |
| 171 | + "state": ["OPEN"], |
| 172 | + "severity": [3], |
| 173 | + "rule_id": ["rule-id"], |
| 174 | + "watchlist_id": ["watchlist-id"], |
| 175 | + "content_inspection_status": "PENDING", |
| 176 | + "order_by": "score", |
| 177 | + "sort_direction": "desc", |
| 178 | + "page_number": 2, |
| 179 | + "page_size": 10, |
| 180 | + } |
| 181 | + sessions_page = {"items": [TEST_SESSION], "totalCount": 1} |
| 182 | + httpserver_auth.expect_request( |
| 183 | + "/v1/sessions", method="GET", query_string=urlencode(query, doseq=True) |
| 184 | + ).respond_with_json(sessions_page) |
| 185 | + |
| 186 | + client = Client() |
| 187 | + page = client.sessions.v1.get_page( |
| 188 | + actor_id="actor-id", |
| 189 | + start_time=START_DATE, |
| 190 | + end_time=END_DATE, |
| 191 | + has_alerts=False, |
| 192 | + sort_key=SortKeys.SCORE, |
| 193 | + risk_indicators=["risk-indicator"], |
| 194 | + sort_dir=SortDirection.DESC, |
| 195 | + states=SessionStates.OPEN, |
| 196 | + severities=3, |
| 197 | + rule_ids="rule-id", |
| 198 | + watchlist_ids="watchlist-id", |
| 199 | + page_num=2, |
| 200 | + page_size=10, |
| 201 | + content_inspection_status=ContentInspectionStatuses.PENDING, |
| 202 | + ) |
| 203 | + assert isinstance(page, SessionsPage) |
| 204 | + assert page.items[0].json() == json.dumps(TEST_SESSION) |
| 205 | + assert len(page.items) == 1 == page.total_count |
| 206 | + |
160 | 207 |
|
161 | 208 | def test_iter_all_when_default_params_returns_expected_data( |
162 | 209 | httpserver_auth: HTTPServer, |
@@ -356,6 +403,53 @@ def test_update_state_by_criteria_makes_expected_calls(httpserver_auth: HTTPServ |
356 | 403 | for response in responses: |
357 | 404 | assert response.status_code == 200 |
358 | 405 |
|
| 406 | +def test_update_state_by_criteria_when_given_date_uses_correct_timestamp(httpserver_auth: HTTPServer): |
| 407 | + query = { |
| 408 | + "actor_id": "actor-id", |
| 409 | + "on_or_after": START_TIMESTAMP, |
| 410 | + "before": END_TIMESTAMP, |
| 411 | + "has_alerts": "false", |
| 412 | + "risk_indicators": ["risk-indicator"], |
| 413 | + "state": ["OPEN"], |
| 414 | + "severity": [3], |
| 415 | + "rule_id": ["rule-id"], |
| 416 | + "watchlist_id": ["watchlist-id"], |
| 417 | + "content_inspection_status": "PENDING", |
| 418 | + } |
| 419 | + |
| 420 | + token = "123-token" |
| 421 | + httpserver_auth.expect_request( |
| 422 | + "/v1/sessions/change-states", |
| 423 | + query_string=urlencode(query, doseq=True), |
| 424 | + method="POST", |
| 425 | + json={"continuationToken": None, "newState": "CLOSED"}, |
| 426 | + ).respond_with_json({"continuationToken": token}) |
| 427 | + httpserver_auth.expect_request( |
| 428 | + "/v1/sessions/change-states", |
| 429 | + query_string=urlencode(query, doseq=True), |
| 430 | + method="POST", |
| 431 | + json={"continuationToken": token, "newState": "CLOSED"}, |
| 432 | + ).respond_with_json({"continuationToken": None}) |
| 433 | + |
| 434 | + client = Client() |
| 435 | + responses = client.sessions.v1.update_state_by_criteria( |
| 436 | + new_state=SessionStates.CLOSED, |
| 437 | + actor_id="actor-id", |
| 438 | + start_time=START_DATE, |
| 439 | + end_time=END_DATE, |
| 440 | + has_alerts=False, |
| 441 | + risk_indicators=["risk-indicator"], |
| 442 | + states=SessionStates.OPEN, |
| 443 | + severities=3, |
| 444 | + rule_ids="rule-id", |
| 445 | + watchlist_ids="watchlist-id", |
| 446 | + content_inspection_status=ContentInspectionStatuses.PENDING, |
| 447 | + ) |
| 448 | + assert responses[0].json()["continuationToken"] == token |
| 449 | + assert responses[1].json()["continuationToken"] is None |
| 450 | + for response in responses: |
| 451 | + assert response.status_code == 200 |
| 452 | + |
359 | 453 |
|
360 | 454 | # ************************************************ CLI ************************************************ |
361 | 455 |
|
|
0 commit comments