graphene
graphene copied to clipboard
Unable to add token headers to graphene-django test using pytest
I am trying to add token to graphene-django headers using pytest. But It always return that user is anonymous as shown at the end but it should return user as token is added in fixture
@pytest.fixture
def create_candidate(candidate_factory):
candidate = []
for _ in range(5):
can = candidate_factory.create()
token, __ = Token.objects.get_or_create(user=can.user)
candidate.append(can)
return candidate
**This is the test**
@pytest.mark.django_db
def test_get_login_candidate(client_query, create_candidate):
headers = {"Authorization": f"Token {create_candidate[0].user.auth_token}"}
response = client_query(
"""
query {
loginCandidate{
id,
}
}
""",
headers=headers,
)
result = json.loads(response.content)
print(result)
This is the output
{'errors': [{'message': "'AnonymousUser' object is not iterable", 'locations': [{'line': 3, 'column': 11}], 'path': ['loginCandidate']}], 'data': {'loginCandidate': None}}
import pytest
from base.middlewares import DataLoaderMiddleware
from django.test import RequestFactory, TestCase
from graphene.test import Client
from mixer.backend.django import mixer
from wheretheschema import schema
ME = """
query me {
me {
id
firstName
lastName
phone
token
}
}
"""
@pytest.mark.django_db
class TestExampleGithub(TestCase):
def setUp(self):
request_factory = RequestFactory()
self.client = Client(schema)
self.my_request = request_factory.get("/api/")
self.user = mixer.blend(User, phone="123456789")
def test_me(self):
self.my_request.user = self.waiter
response = self.client.execute(
ME, context_value=self.my_request, middleware=[DataLoaderMiddleware()]
)
data = response.get("data").get("me")
assert data.get("phone") == "123456789"
assert data.get("token") is not None
If that works with you this is how I'm doing this.
I do not think this is an issue it will be more a doubt than an issue I hope it works for you