# -*- 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 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 registration.factories import LicenseTypeFactory, LicenseFactory from users.models import Role class PasswordResetTests(TestCase): def setUp(self): 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") self.teacher_license_type = LicenseTypeFactory(for_role=self.teacher_role) request = RequestFactory().post('/') # adding session middleware = SessionMiddleware() middleware.process_request(request) request.session.save() self.client = Client(schema=schema, context_value=request) def make_login_mutation(self, username, password): mutation = ''' mutation Login($input: LoginInput!){ login(input: $input) { success errors { field } } } ''' 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('login').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.assertFalse(result.get('data').get('login').get('success')) def test_user_with_active_license_can_login(self): password = 'test123' self.user.set_password(password) self.user.save() LicenseFactory(license_type=self.teacher_license_type, licensee=self.user) result = self.make_login_mutation(self.user.email, password) self.assertTrue(result.get('data').get('login').get('success')) def test_user_with_inactive_license_cannot_login(self): password = 'test123' self.user.set_password(password) self.user.save() self.teacher_license_type.active = False self.teacher_license_type.save() LicenseFactory(license_type=self.teacher_license_type, licensee=self.user) result = self.make_login_mutation(self.user.email, password) self.assertFalse(result.get('data').get('login').get('success'))