|
7 | 7 |
|
8 | 8 | import valhallaAPI.valhalla as valhalla_module |
9 | 9 | import valhallaAPI.valhalla_cli as valhalla_cli |
10 | | -from valhallaAPI.valhalla import ValhallaAPI |
| 10 | +from valhallaAPI.valhalla import ValhallaAPI, ApiError |
11 | 11 | from valhallaAPI.version import __version__ |
12 | 12 |
|
13 | 13 | DEMO_KEY = ValhallaAPI.DEMO_KEY |
@@ -75,6 +75,44 @@ def fake_post(url, data=None, proxies=None, headers=None): |
75 | 75 | ] |
76 | 76 |
|
77 | 77 |
|
| 78 | +def test_sigma_json_error_response_does_not_keyerror(monkeypatch): |
| 79 | + def fake_post(url, data=None, proxies=None, headers=None): |
| 80 | + assert url.endswith("/getsigma") |
| 81 | + return MockResponse( |
| 82 | + { |
| 83 | + "status": "error", |
| 84 | + "message": "demo failure", |
| 85 | + } |
| 86 | + ) |
| 87 | + |
| 88 | + monkeypatch.setattr(valhalla_module.requests, "post", fake_post) |
| 89 | + v = ValhallaAPI(api_key=DEMO_KEY) |
| 90 | + |
| 91 | + response = v.get_sigma_rules_json(search="suspicious", private_only=True) |
| 92 | + |
| 93 | + assert response["status"] == "error" |
| 94 | + assert v.last_retrieved_rules_count == 0 |
| 95 | + |
| 96 | + |
| 97 | +def test_sigma_zip_raises_api_error_on_error_response(monkeypatch): |
| 98 | + def fake_post(url, data=None, proxies=None, headers=None): |
| 99 | + assert url.endswith("/getsigma") |
| 100 | + return MockResponse( |
| 101 | + { |
| 102 | + "status": "error", |
| 103 | + "message": "demo failure", |
| 104 | + } |
| 105 | + ) |
| 106 | + |
| 107 | + monkeypatch.setattr(valhalla_module.requests, "post", fake_post) |
| 108 | + v = ValhallaAPI(api_key=DEMO_KEY) |
| 109 | + |
| 110 | + with pytest.raises(ApiError) as exc: |
| 111 | + v.get_sigma_rules_zip(search="suspicious", private_only=True) |
| 112 | + |
| 113 | + assert exc.value.message == "demo failure" |
| 114 | + |
| 115 | + |
78 | 116 | @pytest.mark.integration |
79 | 117 | def test_sigma_zip_updates_retrieved_rule_count_live_demo(): |
80 | 118 | v = ValhallaAPI(api_key=DEMO_KEY) |
|
0 commit comments