Skip to content

Commit e1319f5

Browse files
authored
initial commit (#2400)
1 parent 41583db commit e1319f5

12 files changed

Lines changed: 108 additions & 6 deletions

File tree

integrations/github/src/haystack_integrations/components/connectors/github/file_editor.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,9 @@ def _get_request_headers(self) -> dict:
115115
"""
116116
headers = self.base_headers.copy()
117117
if self.github_token is not None:
118-
headers["Authorization"] = f"Bearer {self.github_token.resolve_value()}"
118+
token_value = self.github_token.resolve_value()
119+
if token_value:
120+
headers["Authorization"] = f"Bearer {token_value}"
119121
return headers
120122

121123
def _get_file_content(self, owner: str, repo: str, path: str, branch: str) -> tuple[str, str]:

integrations/github/src/haystack_integrations/components/connectors/github/issue_commenter.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ def _get_request_headers(self) -> dict:
6767
"""
6868
headers = self.base_headers.copy()
6969
if self.github_token is not None:
70-
headers["Authorization"] = f"Bearer {self.github_token.resolve_value()}"
70+
token_value = self.github_token.resolve_value()
71+
if token_value:
72+
headers["Authorization"] = f"Bearer {token_value}"
7173
return headers
7274

7375
def _parse_github_url(self, url: str) -> tuple[str, str, int]:

integrations/github/src/haystack_integrations/components/connectors/github/issue_viewer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,9 @@ def _get_request_headers(self) -> dict:
6666
"""
6767
headers = self.base_headers.copy()
6868
if self.github_token:
69-
headers["Authorization"] = f"Bearer {self.github_token.resolve_value()}"
69+
token_value = self.github_token.resolve_value()
70+
if token_value:
71+
headers["Authorization"] = f"Bearer {token_value}"
7072
return headers
7173

7274
def _parse_github_url(self, url: str) -> tuple[str, str, int]:

integrations/github/src/haystack_integrations/components/connectors/github/pr_creator.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ def _get_request_headers(self) -> dict:
6565
"""
6666
headers = self.base_headers.copy()
6767
if self.github_token is not None:
68-
headers["Authorization"] = f"Bearer {self.github_token.resolve_value()}"
68+
token_value = self.github_token.resolve_value()
69+
if token_value:
70+
headers["Authorization"] = f"Bearer {token_value}"
6971
return headers
7072

7173
def _parse_issue_url(self, issue_url: str) -> tuple[str, str, str]:

integrations/github/src/haystack_integrations/components/connectors/github/repo_forker.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,9 @@ def _get_request_headers(self) -> dict:
8585
"""
8686
headers = self.base_headers.copy()
8787
if self.github_token is not None:
88-
headers["Authorization"] = f"Bearer {self.github_token.resolve_value()}"
88+
token_value = self.github_token.resolve_value()
89+
if token_value:
90+
headers["Authorization"] = f"Bearer {token_value}"
8991
return headers
9092

9193
def _parse_github_url(self, url: str) -> tuple[str, str, str]:

integrations/github/src/haystack_integrations/components/connectors/github/repo_viewer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ def _get_request_headers(self) -> dict:
109109
"""
110110
headers = self.base_headers.copy()
111111
if self.github_token is not None:
112-
headers["Authorization"] = f"Bearer {self.github_token.resolve_value()}"
112+
token_value = self.github_token.resolve_value()
113+
if token_value:
114+
headers["Authorization"] = f"Bearer {token_value}"
113115
return headers
114116

115117
def to_dict(self) -> Dict[str, Any]:

integrations/github/tests/test_file_editor.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,3 +269,14 @@ def test_run_error_handling(self, mock_get, monkeypatch):
269269
repo="owner/repo",
270270
branch="main",
271271
)
272+
273+
def test_get_request_headers_with_empty_token(self, monkeypatch):
274+
monkeypatch.setenv("GITHUB_TOKEN", "")
275+
276+
editor = GitHubFileEditor()
277+
278+
headers = editor._get_request_headers()
279+
280+
assert "Authorization" not in headers
281+
assert headers["Accept"] == "application/vnd.github.v3+json"
282+
assert headers["User-Agent"] == "Haystack/GitHubFileEditor"

integrations/github/tests/test_issue_commenter.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,14 @@ def test_parse_github_url(self, monkeypatch):
114114

115115
with pytest.raises(ValueError):
116116
commenter._parse_github_url("https://github.com/invalid/url")
117+
118+
def test_get_request_headers_with_empty_token(self, monkeypatch):
119+
monkeypatch.setenv("GITHUB_TOKEN", "")
120+
121+
commenter = GitHubIssueCommenter()
122+
123+
headers = commenter._get_request_headers()
124+
125+
assert "Authorization" not in headers
126+
assert headers["Accept"] == "application/vnd.github.v3+json"
127+
assert headers["User-Agent"] == "Haystack/GitHubIssueCommenter"

integrations/github/tests/test_issue_viewer.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,3 +150,37 @@ def test_parse_github_url(self, monkeypatch):
150150

151151
with pytest.raises(ValueError):
152152
viewer._parse_github_url("https://github.com/invalid/url")
153+
154+
def test_get_request_headers_with_valid_token(self, monkeypatch):
155+
monkeypatch.setenv("GITHUB_TOKEN", "test-token-value")
156+
157+
token = Secret.from_env_var("GITHUB_TOKEN")
158+
viewer = GitHubIssueViewer(github_token=token)
159+
160+
headers = viewer._get_request_headers()
161+
162+
assert "Authorization" in headers
163+
assert headers["Authorization"] == "Bearer test-token-value"
164+
assert headers["Accept"] == "application/vnd.github.v3+json"
165+
assert headers["User-Agent"] == "Haystack/GitHubIssueViewer"
166+
167+
def test_get_request_headers_without_token(self):
168+
viewer = GitHubIssueViewer(github_token=None)
169+
170+
headers = viewer._get_request_headers()
171+
172+
assert "Authorization" not in headers
173+
assert headers["Accept"] == "application/vnd.github.v3+json"
174+
assert headers["User-Agent"] == "Haystack/GitHubIssueViewer"
175+
176+
def test_get_request_headers_with_empty_token(self, monkeypatch):
177+
monkeypatch.setenv("GITHUB_TOKEN", "")
178+
179+
token = Secret.from_env_var("GITHUB_TOKEN")
180+
viewer = GitHubIssueViewer(github_token=token)
181+
182+
headers = viewer._get_request_headers()
183+
184+
assert "Authorization" not in headers
185+
assert headers["Accept"] == "application/vnd.github.v3+json"
186+
assert headers["User-Agent"] == "Haystack/GitHubIssueViewer"

integrations/github/tests/test_pr_creator.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,3 +132,14 @@ def test_run_error_handling(self, _, mock_get, monkeypatch):
132132
branch="feature-branch",
133133
base="main",
134134
)
135+
136+
def test_get_request_headers_with_empty_token(self, monkeypatch):
137+
monkeypatch.setenv("GITHUB_TOKEN", "")
138+
139+
pr_creator = GitHubPRCreator()
140+
141+
headers = pr_creator._get_request_headers()
142+
143+
assert "Authorization" not in headers
144+
assert headers["Accept"] == "application/vnd.github.v3+json"
145+
assert headers["User-Agent"] == "Haystack/GitHubPRCreator"

0 commit comments

Comments
 (0)