Skip to content

Commit

Permalink
refactor(test): make api client fixture authorized
Browse files Browse the repository at this point in the history
  • Loading branch information
mattwang44 committed Apr 15, 2024
1 parent 54cff1b commit e062b01
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 16 deletions.
8 changes: 5 additions & 3 deletions src/attendee/tests.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import pytest
from django.conf import settings
from registry.helper import reg
from rest_framework.test import APIClient

from attendee.models import Attendee
from core.models import Token
Expand All @@ -13,9 +14,10 @@
('1234', 200, 2),
])
@pytest.mark.django_db
def test_attendee(drf_api_client, bare_user, attendee_token, status, num_channel):
def test_attendee(bare_user, attendee_token, status, num_channel):
api_client = APIClient()
token = Token.objects.get_or_create(user=bare_user)
drf_api_client.credentials(HTTP_AUTHORIZATION="Token " + str(token[0]))
api_client.credentials(HTTP_AUTHORIZATION="Token " + str(token[0]))
attendee = Attendee(token="1234")
attendee.save() # insert to database
# add slug
Expand All @@ -25,7 +27,7 @@ def test_attendee(drf_api_client, bare_user, attendee_token, status, num_channel
reg[f"{key_prefix}r{i}"] = f"video_id_{i}"

# test
response = drf_api_client.post('/api/attendee/verify/', data={"token": attendee_token})
response = api_client.post('/api/attendee/verify/', data={"token": attendee_token})
assert response.status_code == status
if status == 200:
assert len(response.json()["youtube_infos"]) == num_channel
10 changes: 7 additions & 3 deletions src/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
from django.test.html import parse_html
from rest_framework.test import APIClient

from core.models import Token
from proposals.models import TalkProposal
from users.models import CocRecord
from users.models import CocRecord, User


class HTMLParser:
Expand Down Expand Up @@ -206,5 +207,8 @@ def accepted_talk_proposal(talk_proposal):


@pytest.fixture
def drf_api_client():
return APIClient()
def api_client(bare_user: User) -> APIClient:
api_client = APIClient()
token, _ = Token.objects.get_or_create(user=bare_user)
api_client.credentials(HTTP_AUTHORIZATION=f"Token {token.key}")
yield api_client
7 changes: 2 additions & 5 deletions src/events/tests/api/test_list_speeches.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import pytest
from django.urls import reverse

from core.models import Token
from events.models import ProposedTalkEvent, ProposedTutorialEvent, SponsoredEvent


Expand Down Expand Up @@ -34,11 +33,9 @@
"INTNL",
],
)
def test_list_speeches_by_category(category, bare_user, drf_api_client):
def test_list_speeches_by_category(category, api_client):
url = reverse("events:speeches-category", kwargs={"category": category})
token = Token.objects.get_or_create(user=bare_user)
drf_api_client.credentials(HTTP_AUTHORIZATION="Token " + str(token[0]))
response = drf_api_client.get(url)
response = api_client.get(url)

for event in response.json():
assert event["category"] == category
Expand Down
10 changes: 5 additions & 5 deletions src/proposals/tests/api/test_proposals_summary.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
from rest_framework.test import APIClient

endpoint = "/api/proposals/summary/"


def test_proposals_summary(
user,
drf_api_client,
api_client, # authorized
talk_proposal,
tutorial_proposal,
stage_1_review,
stage_2_review,
):
response = drf_api_client.get(endpoint)
response = APIClient().get(endpoint)
assert response.status_code == 401

drf_api_client.force_authenticate(user=user)
response = drf_api_client.get(endpoint)
response = api_client.get(endpoint)
data = response.data

assert data["num_proposed_talk"] == 1
Expand Down

0 comments on commit e062b01

Please sign in to comment.