Skip to content

Commit

Permalink
Merge pull request #136 from tdameros/103-tournament-use-the-authenti…
Browse files Browse the repository at this point in the history
…cate_user-function-in-the-common-folder

use of the common folder for tournament and fix admin username in `GET /tournament`
  • Loading branch information
EthanDelage authored Feb 2, 2024
2 parents 2a032fb + 17d1ddc commit cb3dcf0
Show file tree
Hide file tree
Showing 14 changed files with 381 additions and 352 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/tournament.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ jobs:
pip install isort
pip install -r tournament/docker/requirements.txt
- name: Copy common
working-directory: tournament/src/
run: |
cp -r ../../common .
- name: Run PEP8 check
working-directory: tournament/src/
run: |
Expand All @@ -49,11 +54,6 @@ jobs:
run: |
isort . --check-only
- name: Copy common
working-directory: tournament/src/
run: |
cp -r ../../common .
- name: Run Django migrations
working-directory: tournament/src/
env:
Expand Down
71 changes: 44 additions & 27 deletions tournament/src/api/tests/test_manage_tournament.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django.urls import reverse

from api.models import Player, Tournament
from api.tests.utils import get_fake_headers


class GetTournamentTest(TestCase):
Expand All @@ -27,10 +28,12 @@ def get_tournament(self, tournament_id: int):

return response, body

@patch('api.views.manage_tournament_views.authenticate_request')
def test_get_tournament(self, mock_authenticate_request):
@patch('api.views.manage_tournament_views.get_username_by_id')
@patch('common.src.jwt_managers.UserAccessJWTDecoder.authenticate')
def test_get_tournament(self, mock_authenticate_request, mock_get_username_by_id):
user = {'id': 1, 'username': 'admin'}
mock_authenticate_request.return_value = (user, None)
mock_authenticate_request.return_value = (True, user, None)
mock_get_username_by_id.return_value = user['username']
response, body = self.get_tournament(1)

self.assertEqual(response.status_code, 200)
Expand All @@ -46,10 +49,12 @@ def test_get_tournament(self, mock_authenticate_request):
'user-id': i
} for i in range(1, 14)])

@patch('api.views.manage_tournament_views.authenticate_request')
def test_get_tournament_with_deadline(self, mock_authenticate_request):
@patch('api.views.manage_tournament_views.get_username_by_id')
@patch('common.src.jwt_managers.UserAccessJWTDecoder.authenticate')
def test_get_tournament_with_deadline(self, mock_authenticate_request, mock_get_username_by_id):
user = {'id': 1, 'username': 'admin'}
mock_authenticate_request.return_value = (user, None)
mock_authenticate_request.return_value = (True, user, None)
mock_get_username_by_id.return_value = user['username']
response, body = self.get_tournament(3)

self.assertEqual(response.status_code, 200)
Expand All @@ -68,19 +73,23 @@ def test_get_tournament_with_deadline(self, mock_authenticate_request):
} for i in range(1, 3)
])

@patch('api.views.manage_tournament_views.authenticate_request')
def test_get_tournament_not_found(self, mock_authenticate_request):
@patch('api.views.manage_tournament_views.get_username_by_id')
@patch('common.src.jwt_managers.UserAccessJWTDecoder.authenticate')
def test_get_tournament_not_found(self, mock_authenticate_request, mock_get_username_by_id):
user = {'id': 1, 'username': 'admin'}
mock_authenticate_request.return_value = (user, None)
mock_authenticate_request.return_value = (True, user, None)
mock_get_username_by_id.return_value = user['username']
response, body = self.get_tournament(50)

self.assertEqual(response.status_code, 404)
self.assertEqual(body['errors'], ['tournament with id `50` does not exist'])

@patch('api.views.manage_tournament_views.authenticate_request')
def test_get_tournament_no_player(self, mock_authenticate_request):
@patch('api.views.manage_tournament_views.get_username_by_id')
@patch('common.src.jwt_managers.UserAccessJWTDecoder.authenticate')
def test_get_tournament_no_player(self, mock_authenticate_request, mock_get_username_by_id):
user = {'id': 1, 'username': 'admin'}
mock_authenticate_request.return_value = (user, None)
mock_authenticate_request.return_value = (True, user, None)
mock_get_username_by_id.return_value = user['username']
response, body = self.get_tournament(2)

self.assertEqual(response.status_code, 200)
Expand All @@ -92,10 +101,12 @@ def test_get_tournament_no_player(self, mock_authenticate_request):
self.assertEqual(body['status'], 'Created')
self.assertEqual(body['players'], [])

@patch('api.views.manage_tournament_views.authenticate_request')
def test_get_tournament_finished(self, mock_authenticate_request):
@patch('api.views.manage_tournament_views.get_username_by_id')
@patch('common.src.jwt_managers.UserAccessJWTDecoder.authenticate')
def test_get_tournament_finished(self, mock_authenticate_request, mock_get_username_by_id):
user = {'id': 1, 'username': 'admin'}
mock_authenticate_request.return_value = (user, None)
mock_authenticate_request.return_value = (True, user, None)
mock_get_username_by_id.return_value = user['username']
response, body = self.get_tournament(4)

self.assertEqual(response.status_code, 200)
Expand All @@ -113,38 +124,44 @@ def setUp(self):
Tournament.objects.create(id=1, name='Test1', admin_id=1)
Tournament.objects.create(id=2, name='Test2', admin_id=2)

@patch('api.views.manage_tournament_views.authenticate_request')
def test_delete_tournament(self, mock_authenticate_request):
@patch('api.views.manage_tournament_views.get_username_by_id')
@patch('common.src.jwt_managers.UserAccessJWTDecoder.authenticate')
def test_delete_tournament(self, mock_authenticate_request, mock_get_username_by_id):
user = {'id': 1, 'username': 'admin'}
mock_authenticate_request.return_value = (user, None)
mock_authenticate_request.return_value = (True, user, None)
mock_get_username_by_id.return_value = user['username']
url = reverse('manage-tournament', args=[1])
response = self.client.delete(url)
response = self.client.delete(url, headers=get_fake_headers(1))

body = json.loads(response.content.decode('utf-8'))

self.assertEqual(response.status_code, 200)
self.assertEqual(Tournament.objects.count(), 1)
self.assertEqual(body['message'], 'tournament `Test1` successfully deleted')

@patch('api.views.manage_tournament_views.authenticate_request')
def test_delete_tournament_not_found(self, mock_authenticate_request):
@patch('api.views.manage_tournament_views.get_username_by_id')
@patch('common.src.jwt_managers.UserAccessJWTDecoder.authenticate')
def test_delete_tournament_not_found(self, mock_authenticate_request, mock_get_username_by_id):
user = {'id': 1, 'username': 'admin'}
mock_authenticate_request.return_value = (user, None)
mock_authenticate_request.return_value = (True, user, None)
mock_get_username_by_id.return_value = user['username']
url = reverse('manage-tournament', args=[3])
response = self.client.delete(url)
response = self.client.delete(url, headers=get_fake_headers(1))

body = json.loads(response.content.decode('utf-8'))

self.assertEqual(response.status_code, 404)
self.assertEqual(Tournament.objects.count(), 2)
self.assertEqual(body['errors'], ['tournament with id `3` does not exist'])

@patch('api.views.manage_tournament_views.authenticate_request')
def test_delete_tournament_not_owner(self, mock_authenticate_request):
@patch('api.views.manage_tournament_views.get_username_by_id')
@patch('common.src.jwt_managers.UserAccessJWTDecoder.authenticate')
def test_delete_tournament_not_owner(self, mock_authenticate_request, mock_get_username_by_id):
user = {'id': 1, 'username': 'admin'}
mock_authenticate_request.return_value = (user, None)
mock_authenticate_request.return_value = (True, user, None)
mock_get_username_by_id.return_value = user['username']
url = reverse('manage-tournament', args=[2])
response = self.client.delete(url)
response = self.client.delete(url, headers=get_fake_headers(1))

body = json.loads(response.content.decode('utf-8'))

Expand Down
Loading

0 comments on commit cb3dcf0

Please sign in to comment.