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