# -*- coding: utf-8 -*- # # ITerativ GmbH # http://www.iterativ.ch/ # # Copyright (c) 2019 ITerativ GmbH. All rights reserved. # # Created on 2019-10-02 # @author: chrigu from unittest.mock import MagicMock from django.contrib.sessions.middleware import SessionMiddleware from django.test import TestCase, RequestFactory from graphene.test import Client from api.schema_public import schema from core.factories import UserFactory from users.models import Role class BetaLoginTests(TestCase): def setUp(self): get_response = MagicMock() self.user = UserFactory(username="aschi@iterativ.ch", email="aschi@iterativ.ch") self.teacher_role = Role.objects.create( key=Role.objects.TEACHER_KEY, name="Teacher Role" ) request = RequestFactory().post("/") # adding session middleware = SessionMiddleware(get_response) middleware.process_request(request) request.session.save() self.client = Client(schema=schema, context_value=request) def make_login_mutation(self, username, password): mutation = """ mutation BetaLogin($input: BetaLoginInput!){ betaLogin(input: $input) { success } } """ return self.client.execute( mutation, variables={"input": {"usernameInput": username, "passwordInput": password}}, ) def test_user_can_login(self): password = "test123" self.user.set_password(password) self.user.save() result = self.make_login_mutation(self.user.email, password) self.assertTrue(result.get("data").get("betaLogin").get("success")) self.assertTrue(self.user.is_authenticated) def test_user_cannot_login_with_invalid_password(self): password = "test123" self.user.set_password(password) self.user.save() result = self.make_login_mutation(self.user.email, "test1234") self.assertEqual(result.get("errors")[0].get("message"), "invalid_credentials")