def test_force_login_change(self, patched_send_lti_received):
        self.assertFalse(User.objects.exclude(id=1))
        payload = self.get_correct_lti_payload()
        request = self.send_lti_request(payload, client=RequestFactory())
        engine = import_module(settings.SESSION_ENGINE)
        request.session = engine.SessionStore()
        request.user = None
        user = self._authentication_hook(request, username='******')
        request.session.save()
        self.assertEqual(request.user, user)
        LTIView.as_view()(request)
        # New user creation not actually available during tests.
        self.assertTrue(request.user)
        new_user = User.objects.exclude(username='******')[0]
        self.assertEqual(request.user, new_user)

        # Verify a new user is not created with the same data if re-visiting.
        request = self.send_lti_request(payload, client=RequestFactory())
        request.session = engine.SessionStore()
        request.user = None
        user = authenticate(username=new_user.username, password='******')
        self.assertTrue(user)
        login(request, user)
        LTIView.as_view()(request)
        self.assertEqual(request.user, user)
        self.assertEqual(user, new_user)

        self.assertEqual(LtiUserData.objects.all().count(), 1)
    def test_force_login_change(self, patched_send_lti_received):
        self.assertFalse(User.objects.exclude(id=1))
        payload = self.get_correct_lti_payload()
        request = self.send_lti_request(payload, client=RequestFactory())
        engine = import_module(settings.SESSION_ENGINE)
        request.session = engine.SessionStore()
        request.user = None
        user = authentication_hook(request, username='******')
        request.session.save()
        self.assertEqual(request.user, user)
        LTIView.as_view()(request)
        # New user creation not actually available during tests.
        self.assertTrue(request.user)
        new_user = User.objects.exclude(username='******')[0]
        self.assertEqual(request.user, new_user)

        # Verify a new user is not created with the same data if re-visiting.
        request = self.send_lti_request(payload, client=RequestFactory())
        request.session = engine.SessionStore()
        request.user = None
        user = authenticate(username=new_user.username, password='******')
        self.assertTrue(user)
        login(request, user)
        LTIView.as_view()(request)
        self.assertEqual(request.user, user)
        self.assertEqual(user, new_user)

        self.assertEqual(LtiUserData.objects.all().count(), 1)