Skip to content

Commit d4b72ae

Browse files
authored
Merge pull request #202 from GeekMasher/octokit-errors-msg
fix: Solve issue with what key is used to find errors
2 parents 76ebdea + 7744dc7 commit d4b72ae

File tree

7 files changed

+156
-78
lines changed

7 files changed

+156
-78
lines changed

Pipfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ twine = "*"
1717
sphinx = "*"
1818
myst-parser = "*"
1919
tomli = "*"
20+
responses = "*"
2021

2122
[scripts]
2223
main = "python -m ghastoolkit"

Pipfile.lock

Lines changed: 81 additions & 72 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "ghastoolkit"
3-
version = "0.12.0"
3+
version = "0.12.1"
44
authors = [{ name = "GeekMasher" }]
55
description = "GitHub Advanced Security Python Toolkit"
66
readme = "README.md"

src/ghastoolkit/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
__name__ = "ghastoolkit"
44
__title__ = "GHAS Toolkit"
55

6-
__version__ = "0.12.0"
6+
__version__ = "0.12.1"
77

88
__description__ = "GitHub Advanced Security Python Toolkit"
99
__summary__ = """\

src/ghastoolkit/octokit/octokit.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,20 +215,22 @@ def get(
215215
if expected and response.status_code != expected:
216216
if display_errors:
217217
logger.error(f"Error code from server :: {response.status_code}")
218-
logger.error(f"Content :: {response_json}")
219218

220219
known_error = __OCTOKIT_ERRORS__.get(response.status_code)
221220
if known_error:
222221
raise Exception(known_error)
223222

224223
# Handle errors in the response
225-
if isinstance(response_json, dict) and response_json.get("errors"):
224+
if isinstance(response_json, dict) and response_json.get("message"):
226225
# Custom error handler callback
227226
if error_handler:
228227
return error_handler(response.status_code, response_json)
229228

230229
# Default error handling
231230
logger.error(response_json.get("message"))
231+
logger.error(
232+
f"Documentation Link :: {response_json.get('documentation_url', '')}"
233+
)
232234
raise Exception("REST Request failed :: non-expected server error")
233235

234236
if isinstance(response_json, dict):

tests/test_octokit.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
from dataclasses import dataclass, is_dataclass
22
import unittest
33

4-
from ghastoolkit.octokit.octokit import OctoItem, Octokit, GraphQLRequest, loadOctoItem
4+
from ghastoolkit.octokit.octokit import (
5+
OctoItem,
6+
Octokit,
7+
GraphQLRequest,
8+
loadOctoItem,
9+
)
510
from ghastoolkit.octokit.github import GitHub
611

712

813
class TestOctokit(unittest.TestCase):
914
def setUp(self) -> None:
10-
GitHub.init(repository="GeekMasher/ghastoolkit@main")
15+
GitHub.init(repository="GeekMasher/ghastoolkit@main", token="1234567890")
1116
return super().setUp()
1217

1318
def test_route(self):

tests/test_restrequest.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"""Test RestRequest class."""
2+
import unittest
3+
import responses
4+
5+
from ghastoolkit.octokit.octokit import RestRequest
6+
from ghastoolkit.octokit.github import GitHub
7+
8+
9+
class TestRestRequest(unittest.TestCase):
10+
def setUp(self) -> None:
11+
GitHub.init(repository="GeekMasher/ghastoolkit@main")
12+
13+
self.rest = RestRequest()
14+
15+
return super().setUp()
16+
17+
@responses.activate
18+
def test_errors(self):
19+
responses.add(
20+
responses.GET,
21+
"https://api.github.com/repos/GeekMasher/ghastoolkit/secret-scanning/alerts",
22+
json={
23+
"message": "Secret scanning is disabled on this repository.",
24+
"documentation_url": "https://docs.github.com/rest/secret-scanning/secret-scanning",
25+
},
26+
status=404,
27+
)
28+
responses.add(
29+
responses.GET,
30+
"https://api.github.com/repos/GeekMasher/ghastoolkit/secret-scanning/alerts/1",
31+
json={
32+
"message": "Not Found",
33+
"documentation_url": "https://docs.github.com/rest/secret-scanning/secret-scanning",
34+
},
35+
status=404,
36+
)
37+
38+
with self.assertRaises(Exception):
39+
self.rest.get("/repos/{owner}/{repo}/secret-scanning/alerts")
40+
41+
with self.assertRaises(Exception):
42+
self.rest.get("/repos/{owner}/{repo}/secret-scanning/alerts/1")
43+
44+
@responses.activate
45+
def test_error_handler(self):
46+
responses.add(
47+
responses.GET,
48+
"https://api.github.com/repos/GeekMasher/ghastoolkit/secret-scanning/alerts",
49+
json={
50+
"message": "Secret scanning is disabled on this repository.",
51+
"documentation_url": "https://docs.github.com/rest/secret-scanning/secret-scanning",
52+
},
53+
status=404,
54+
)
55+
56+
def handle(code, _):
57+
self.assertEqual(code, 404)
58+
59+
self.rest.get(
60+
"/repos/{owner}/{repo}/secret-scanning/alerts", error_handler=handle
61+
)

0 commit comments

Comments
 (0)