Skip to content

Commit 602327f

Browse files
ref: get_jwt returns a str not bytes (#70379)
split out from my "enable bytes warnings" branch I also needed to add some `responses` mocks as these tests were hitting public github (!!!) <!-- Describe your PR here. -->
1 parent abf1a07 commit 602327f

File tree

10 files changed

+54
-50
lines changed

10 files changed

+54
-50
lines changed

src/sentry_plugins/github/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ def get_token(self):
9494

9595
return self.token
9696

97-
def get_jwt(self):
97+
def get_jwt(self) -> str:
9898
exp_dt = datetime.datetime.utcnow() + datetime.timedelta(minutes=10)
9999
exp = calendar.timegm(exp_dt.timetuple())
100100
# Generate the JWT

tests/sentry/integrations/github/test_client.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939

4040
class GitHubAppsClientTest(TestCase):
41-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
41+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
4242
def setUp(self, get_jwt):
4343
ten_days = timezone.now() + timedelta(days=10)
4444
self.integration = self.create_integration(
@@ -77,7 +77,7 @@ def test_get_rate_limit(self):
7777
},
7878
},
7979
)
80-
with mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1"):
80+
with mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1"):
8181
gh_rate_limit = self.github_client.get_rate_limit()
8282
assert gh_rate_limit.limit == 5000
8383
assert gh_rate_limit.remaining == 4999
@@ -101,7 +101,7 @@ def test_get_rate_limit_non_existent_resource(self):
101101
with pytest.raises(AssertionError):
102102
self.github_client.get_rate_limit("foo")
103103

104-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
104+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
105105
@responses.activate
106106
def test_check_file(self, get_jwt):
107107
path = "src/sentry/integrations/github/client.py"
@@ -118,7 +118,7 @@ def test_check_file(self, get_jwt):
118118
assert isinstance(resp, BaseApiResponse)
119119
assert resp.status_code == 200
120120

121-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
121+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
122122
@responses.activate
123123
def test_check_no_file(self, get_jwt):
124124
path = "src/santry/integrations/github/client.py"
@@ -131,7 +131,7 @@ def test_check_no_file(self, get_jwt):
131131
self.github_client.check_file(self.repo, path, version)
132132
assert responses.calls[0].response.status_code == 404
133133

134-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
134+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
135135
@responses.activate
136136
def test_get_stacktrace_link(self, get_jwt):
137137
path = "/src/sentry/integrations/github/client.py"
@@ -152,7 +152,7 @@ def test_get_stacktrace_link(self, get_jwt):
152152
== "https://github.com/Test-Organization/foo/blob/master/src/sentry/integrations/github/client.py"
153153
)
154154

155-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
155+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
156156
@responses.activate
157157
def test_get_with_pagination(self, get_jwt):
158158
url = f"https://api.github.com/repos/{self.repo.name}/assignees?per_page={self.github_client.page_size}"
@@ -188,7 +188,7 @@ def test_get_with_pagination(self, get_jwt):
188188
assert len(responses.calls) == 4
189189
assert responses.calls[0].response.status_code == 200
190190

191-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
191+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
192192
@responses.activate
193193
def test_get_with_pagination_only_one_page(self, get_jwt):
194194
url = f"https://api.github.com/repos/{self.repo.name}/assignees?per_page={self.github_client.page_size}"
@@ -203,7 +203,7 @@ def test_get_with_pagination_only_one_page(self, get_jwt):
203203
"sentry.integrations.github.integration.GitHubIntegration.check_file",
204204
return_value=GITHUB_CODEOWNERS["html_url"],
205205
)
206-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
206+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
207207
@responses.activate
208208
def test_get_codeowner_file(self, mock_jwt, mock_check_file):
209209
self.config = self.create_code_mapping(
@@ -235,7 +235,7 @@ def test_get_cached_repo_files_caching_functionality(self):
235235
)
236236
repo_key = f"github:repo:{self.repo.name}:source-code"
237237
assert cache.get(repo_key) is None
238-
with mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1"):
238+
with mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1"):
239239
files = self.github_client.get_cached_repo_files(self.repo.name, "master")
240240
assert cache.get(repo_key) == files
241241
# Calling a second time should work
@@ -262,11 +262,11 @@ def test_get_cached_repo_files_with_all_files(self):
262262
)
263263
repo_key = f"github:repo:{self.repo.name}:all"
264264
assert cache.get(repo_key) is None
265-
with mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1"):
265+
with mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1"):
266266
files = self.github_client.get_cached_repo_files(self.repo.name, "master")
267267
assert files == ["src/foo.py"]
268268

269-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
269+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
270270
@responses.activate
271271
def test_update_comment(self, get_jwt):
272272
responses.add(
@@ -309,7 +309,7 @@ def test_update_comment(self, get_jwt):
309309
assert responses.calls[1].response.status_code == 200
310310
assert responses.calls[1].request.body == b'{"body": "world"}'
311311

312-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
312+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
313313
@responses.activate
314314
def test_get_comment_reactions(self, get_jwt):
315315
comment_reactions = {
@@ -549,7 +549,7 @@ def assert_proxy_request(self, request, is_proxy=True):
549549

550550

551551
class GitHubClientFileBlameBase(TestCase):
552-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
552+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
553553
def setUp(self, get_jwt):
554554
integration = self.create_integration(
555555
organization=self.organization,
@@ -614,7 +614,7 @@ def setUp(self, get_jwt):
614614

615615

616616
class GitHubClientFileBlameIntegrationDisableTest(TestCase):
617-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
617+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
618618
def setUp(self, get_jwt):
619619
ten_days = timezone.now() + timedelta(days=10)
620620
self.integration = self.create_integration(
@@ -787,7 +787,7 @@ class GitHubClientFileBlameQueryBuilderTest(GitHubClientFileBlameBase):
787787
def setUp(self):
788788
super().setUp()
789789

790-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
790+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
791791
@responses.activate
792792
def test_get_blame_for_files_same_repo(self, get_jwt):
793793
"""
@@ -877,7 +877,7 @@ def test_get_blame_for_files_same_repo(self, get_jwt):
877877
"path_0_0_1": "src/sentry/integrations/github/client_2.py",
878878
}
879879

880-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
880+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
881881
@responses.activate
882882
def test_get_blame_for_files_different_repos(self, get_jwt):
883883
"""
@@ -995,7 +995,7 @@ def test_get_blame_for_files_different_repos(self, get_jwt):
995995
"path_1_0_0": "src/getsentry/file.py",
996996
}
997997

998-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
998+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
999999
@responses.activate
10001000
def test_get_blame_for_files_different_refs(self, get_jwt):
10011001
"""
@@ -1092,7 +1092,7 @@ def test_get_blame_for_files_different_refs(self, get_jwt):
10921092
"path_0_1_0": "src/sentry/integrations/github/client.py",
10931093
}
10941094

1095-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
1095+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
10961096
@responses.activate
10971097
def test_trim_file_path_for_query(self, get_jwt):
10981098
"""
@@ -1247,7 +1247,7 @@ def setUp(self):
12471247
}
12481248
}
12491249

1250-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
1250+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
12511251
@responses.activate
12521252
def test_get_blame_for_files_full_response(self, get_jwt):
12531253
"""
@@ -1302,7 +1302,7 @@ def test_get_blame_for_files_full_response(self, get_jwt):
13021302
],
13031303
)
13041304

1305-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
1305+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
13061306
@responses.activate
13071307
def test_get_cached_blame_for_files_full_response(self, get_jwt):
13081308
"""
@@ -1379,7 +1379,7 @@ def test_get_cached_blame_for_files_full_response(self, get_jwt):
13791379
self.github_client.get_blame_for_files([self.file1, self.file2], extra={}) != response
13801380
)
13811381

1382-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
1382+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
13831383
@responses.activate
13841384
def test_get_blame_for_files_response_partial_data(self, get_jwt):
13851385
"""
@@ -1467,7 +1467,7 @@ def test_get_blame_for_files_response_partial_data(self, get_jwt):
14671467
)
14681468

14691469
@mock.patch("sentry.integrations.github.client.logger.error")
1470-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
1470+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
14711471
@responses.activate
14721472
def test_get_blame_for_files_invalid_commit(self, get_jwt, mock_logger_error):
14731473
"""
@@ -1611,7 +1611,7 @@ def setUp(self):
16111611
)
16121612

16131613
@mock.patch("sentry.integrations.github.client.logger.error")
1614-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
1614+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
16151615
@responses.activate
16161616
def test_rate_limit_exceeded(self, get_jwt, mock_logger_error):
16171617
with pytest.raises(ApiRateLimitedError):
@@ -1627,7 +1627,7 @@ def test_rate_limit_exceeded(self, get_jwt, mock_logger_error):
16271627
},
16281628
)
16291629

1630-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
1630+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
16311631
@responses.activate
16321632
def test_no_rate_limiting(self, get_jwt):
16331633
"""

tests/sentry/integrations/github/test_installation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def setUp(self):
2323
options.set("github-app.webhook-secret", self.secret)
2424

2525
@responses.activate
26-
@patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
26+
@patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
2727
def test_installation_endpoint(self, get_jwt):
2828
# add installation via GitHub webhook
2929
responses.add(

tests/sentry/integrations/github/test_repository.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def test_build_repository_config(self):
7474
"url": "https://github.com/getsentry/example-repo",
7575
}
7676

77-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
77+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
7878
@responses.activate
7979
def test_compare_commits_no_start(self, get_jwt):
8080
responses.add(
@@ -101,7 +101,7 @@ def test_compare_commits_no_start_failure(self):
101101
with pytest.raises(IntegrationError):
102102
self.provider.compare_commits(self.repository, None, "abcdef")
103103

104-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
104+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
105105
@responses.activate
106106
def test_compare_commits(self, get_jwt):
107107
responses.add(
@@ -118,7 +118,7 @@ def test_compare_commits(self, get_jwt):
118118
for commit in result:
119119
assert_commit_shape(commit)
120120

121-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
121+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
122122
@responses.activate
123123
def test_compare_commits_patchset_handling(self, get_jwt):
124124
responses.add(
@@ -140,7 +140,7 @@ def test_compare_commits_patchset_handling(self, get_jwt):
140140
assert patchset[3] == {"path": "old_name.txt", "type": "D"}
141141
assert patchset[4] == {"path": "renamed.txt", "type": "A"}
142142

143-
@mock.patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
143+
@mock.patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
144144
@responses.activate
145145
def test_patchset_caching(self, get_jwt):
146146
responses.add(

tests/sentry/integrations/github/test_webhooks.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def setUp(self):
7878
options.set("github-app.webhook-secret", self.secret)
7979

8080
@responses.activate
81-
@patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
81+
@patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
8282
def test_installation_created(self, get_jwt):
8383
responses.add(
8484
method=responses.GET,
@@ -115,7 +115,7 @@ def setUp(self):
115115
self.secret = "b3002c3e321d4b7880360d397db2ccfd"
116116
options.set("github-app.webhook-secret", self.secret)
117117

118-
@patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
118+
@patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
119119
def test_installation_deleted(self, get_jwt):
120120
project = self.project # force creation
121121

@@ -156,7 +156,7 @@ def test_installation_deleted(self, get_jwt):
156156
repo.refresh_from_db()
157157
assert repo.status == ObjectStatus.DISABLED
158158

159-
@patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
159+
@patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
160160
def test_installation_deleted_no_org_integration(self, get_jwt):
161161
project = self.project # force creation
162162

@@ -221,6 +221,7 @@ def _setup_repo_test(self, project):
221221

222222
assert response.status_code == 204
223223

224+
@responses.activate
224225
def test_simple(self):
225226
project = self.project # force creation
226227

@@ -267,6 +268,7 @@ def test_simple(self):
267268
repo.refresh_from_db()
268269
assert set(repo.languages) == {"python", "javascript"}
269270

271+
@responses.activate
270272
@patch("sentry.integrations.github.webhook.metrics")
271273
def test_creates_missing_repo(self, mock_metrics):
272274
project = self.project # force creation
@@ -349,6 +351,7 @@ def test_anonymous_lookup(self):
349351
repo.refresh_from_db()
350352
assert set(repo.languages) == {"python", "javascript"}
351353

354+
@responses.activate
352355
def test_multiple_orgs(self):
353356
project = self.project # force creation
354357

@@ -414,6 +417,7 @@ def test_multiple_orgs(self):
414417
)
415418
assert len(commit_list) == 0
416419

420+
@responses.activate
417421
@patch("sentry.integrations.github.webhook.metrics")
418422
def test_multiple_orgs_creates_missing_repos(self, mock_metrics):
419423
project = self.project # force creation

tests/sentry/integrations/github_enterprise/test_webhooks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def test_simple(self, mock_get_installation_metadata, mock_get_jwt):
117117
status=204,
118118
)
119119

120-
mock_get_jwt.return_value = b""
120+
mock_get_jwt.return_value = ""
121121
mock_get_installation_metadata.return_value = self.metadata
122122

123123
self.create_integration(
@@ -240,7 +240,7 @@ def test_multiple_orgs(self, mock_get_installation_metadata, mock_get_jwt):
240240
status=204,
241241
)
242242

243-
mock_get_jwt.return_value = b""
243+
mock_get_jwt.return_value = ""
244244
mock_get_installation_metadata.return_value = self.metadata
245245

246246
self.create_integration(

tests/sentry/plugins/test_integration_repository.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from sentry.testutils.cases import TestCase
1414

1515

16-
@patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
16+
@patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
1717
class IntegrationRepositoryTestCase(TestCase):
1818
@responses.activate
1919
def setUp(self):

tests/sentry/tasks/integrations/github/test_pr_comment.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def setUp(self):
8888
self.pr_key = 1
8989
self.commit_sha = 1
9090
self.fingerprint = 1
91-
patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1").start()
91+
patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1").start()
9292

9393
def add_commit_to_repo(self, repo, user, project):
9494
if user not in self.user_to_commit_author_map:

tests/sentry/tasks/integrations/test_link_all_repos.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515

1616
@control_silo_test
17-
@patch("sentry.integrations.github.client.get_jwt", return_value=b"jwt_token_1")
17+
@patch("sentry.integrations.github.client.get_jwt", return_value="jwt_token_1")
1818
class LinkAllReposTestCase(IntegrationTestCase):
1919
provider = GitHubIntegrationProvider
2020
base_url = "https://api.github.com"

0 commit comments

Comments
 (0)