簡體   English   中英

如何在 graphene-django GraphQLTestCase 中使用 django-grahql-jwt 進行身份驗證?

[英]How to authenticate with django-grahql-jwt in a graphene-django GraphQLTestCase?

我正在嘗試根據石墨烯 django 文檔測試我的突變。 突變適用於@login_required裝飾器,並且存在問題,因為任何登錄測試方法都不起作用。 我試過self.client.loginself.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM