Skip to content
Snippets Groups Projects
Commit 9b756e99 authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'fix-hook-endpoint-error' into 'master'

Return a 403 when there are no OAuthCredentials for the push hook

Closes #609

See merge request !1244
parents 0bd968ac 5ba84fec
No related branches found
No related tags found
1 merge request!1244Return a 403 when there are no OAuthCredentials for the push hook
......@@ -505,7 +505,8 @@ class GitRepositoryImportHook(APIView):
def post(self, request, pk=None, **kwargs):
repo = get_object_or_404(Repository, id=pk)
assert repo.enabled, 'No credentials available'
if not repo.enabled:
raise PermissionDenied(detail='No credentials available for this repository.')
repo.provider_class(credentials=repo.credentials).handle_webhook(repo, request)
return Response(status=status.HTTP_204_NO_CONTENT)
......
......@@ -33,6 +33,15 @@ class TestProviders(FixtureAPITestCase):
glp = GitLabProvider(credentials=self.creds, url='something')
self.assertEqual(glp.url, 'something')
@patch('arkindex.dataimport.api.Repository.provider_class')
def test_webhook_no_credentials(self, provider_class):
self.client.force_login(self.user)
self.repo.credentials = None
self.repo.save()
response = self.client.post(reverse('api:import-hook', kwargs={'pk': self.repo.id}))
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertDictEqual(response.json(), {'detail': 'No credentials available for this repository.'})
@patch('arkindex.dataimport.api.Repository.provider_class')
def test_webhook(self, provider_class):
self.client.force_login(self.user)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment