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

Merge branch 'add-gitlab-token-retrieve-repo' into 'master'

Add gitlab_token attribute on RetrieveRepository endpoint

Closes #288

See merge request !786
parents 8faed992 dd075319
No related branches found
No related tags found
1 merge request!786Add gitlab_token attribute on RetrieveRepository endpoint
......@@ -68,6 +68,12 @@ class RepositorySerializer(serializers.ModelSerializer):
Serialize a repository
"""
enabled = serializers.BooleanField(read_only=True)
gitlab_token = serializers.SerializerMethodField()
def get_gitlab_token(self, repository):
if self.context['request'].user.is_internal:
return repository.credentials.token
return None
class Meta:
model = Repository
......@@ -76,6 +82,7 @@ class RepositorySerializer(serializers.ModelSerializer):
'url',
'enabled',
'corpus',
'gitlab_token',
)
extra_kwargs = {
'id': {'read_only': True},
......
......@@ -5,6 +5,7 @@ from ponos.models import Workflow
from arkindex_common.enums import DataImportMode
from arkindex.project.tests import FixtureTestCase
from arkindex.dataimport.models import Repository, DataImport
from arkindex.users.models import User
class TestRepositories(FixtureTestCase):
......@@ -61,6 +62,55 @@ class TestRepositories(FixtureTestCase):
self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
self.assertEqual(Workflow.objects.count(), 0)
def test_repository_retrieve_requires_login(self):
response = self.client.get(
reverse('api:repository-retrieve', kwargs={'pk': str(self.repo.id)})
)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_repository_retrieve_wrong_id(self):
self.client.force_login(self.user)
response = self.client.get(
reverse('api:repository-retrieve', kwargs={'pk': '12341234-1234-1234-1234-123412341234'})
)
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertEqual(response.json(), {'detail': 'Not found.'})
def test_repository_retrieve_external_user(self):
self.client.force_login(self.user)
self.assertFalse(self.user.is_internal)
response = self.client.get(
reverse('api:repository-retrieve', kwargs={'pk': str(self.repo.id)})
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertDictEqual(data, {
'id': str(self.repo.id),
'corpus': str(self.repo.corpus.id),
'enabled': True,
'gitlab_token': None,
'url': self.repo.url,
})
def test_repository_retrieve_internal_user(self):
internal_user = User.objects.create_internal_user('internal@test.com')
internal_user.verified_email = True
internal_user.save()
self.assertTrue(internal_user.is_internal)
self.client.force_login(internal_user)
response = self.client.get(
reverse('api:repository-retrieve', kwargs={'pk': str(self.repo.id)})
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertDictEqual(data, {
'id': str(self.repo.id),
'corpus': str(self.repo.corpus.id),
'enabled': True,
'gitlab_token': 'oauth-token',
'url': self.repo.url,
})
def test_revision_retrieve_requires_login(self):
response = self.client.get(
reverse('api:revision-retrieve', kwargs={'pk': str(self.rev.id)})
......@@ -82,9 +132,12 @@ class TestRepositories(FixtureTestCase):
)
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertEqual(data['id'], str(self.rev.id))
self.assertEqual(data['hash'], self.rev.hash)
self.assertEqual(data['author'], self.rev.author)
self.assertEqual(data['message'], self.rev.message)
self.assertEqual(data['commit_url'], self.rev.commit_url)
self.assertEqual(data['repo_id'], str(self.repo.id))
del data['date']
self.assertDictEqual(data, {
'id': str(self.rev.id),
'hash': self.rev.hash,
'author': self.rev.author,
'message': self.rev.message,
'commit_url': self.rev.commit_url,
'repo_id': str(self.repo.id),
})
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