[英]How to authenticate with django-grahql-jwt in a graphene-django GraphQLTestCase?
我正在嘗試根據石墨烯 django 文檔測試我的突變。 突變適用於@login_required
裝飾器,並且存在問題,因為任何登錄測試方法都不起作用。 我試過self.client.login
, self.client.force_login
。 我什至做了一個 tokenAuth 突變,並在那里硬編碼了一些憑據,但它也不起作用; 用戶仍然是匿名的。
def test_create_member_mutation(self):
response = self.query(
'''
mutation createMember($firstName: String) {
createMember(firstName: $firstName) {
member {
id
}
}
}
''',
op_name='createMember',
variables={'firstName': 'Foo'}
)
self.assertResponseNoErrors(response)
這就是我在測試中解決它的方式。
您可以在self.query()
的headers
關鍵字參數中傳遞為測試用戶制作的令牌:
from django.contrib.auth import get_user_model
from graphene_django.utils import GraphQLTestCase
from graphql_jwt.shortcuts import get_token
class ExampleTests(GraphQLTestCase):
def test_create_member_mutation(self):
user = get_user_model().objects.get(pk=1)
token = get_token(user)
headers = {"HTTP_AUTHORIZATION": f"JWT {token}"}
graphql = '''
mutation createMember($firstName: String) {
createMember(firstName: $firstName) {
member {
id
}
}
}
'''
respsone = self.query(
graphql,
op_name='createMember',
variables={'firstName': 'Foo'},
headers=headers,
)
self.assertResponseNoErrors(response)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.