Testing if app has automatically logged out.

20 views
Skip to first unread message

Meg Bledsoe

unread,
Dec 3, 2015, 7:09:24 AM12/3/15
to Django users
My teammates copy and pasted this code into an app for our project.
lass AutoLogout:
  def process_request(self, request):
    if not request.user.is_authenticated() :
      #Can't log out if not logged in
      return

    try:
      if datetime.now() - request.session['last_touch'] > timedelta( 0, settings.AUTO_LOGOUT_DELAY * 60, 0):
        auth.logout(request)
        del request.session['last_touch']
        return
    except KeyError:
      pass

    request.session['last_touch'] = datetime.now()


I'm trying to write a test to make sure this works. So far I've tried a lot of things, but I don't have much experience with testing. This is what I have, but I don't know how to fix it.

class AutoLogoutTest(unittest.TestCase):

    def setUp(self):
        self.loggedout = AutoLogout()
        self.request = Mock()
        self.client = Client()
        self.user = User.objects.create_user(username='testuser', password='pass')
        self.client.login(username='testuser', password='pass')

    def test_auto_logout(self):
        session['last_touch'] = timedelta(31*60)
        response = self.client.get('/logout/', follow=True)
        self.assertRedirects(response, '/')
        message = list(response.context['messages'])
        self.assertEqual(str(message[0]), 'You have successfully logged out.')
        self.assertNotIn('_auth_user_id', self.client.session)

Any help would be appreciated.

Reply all
Reply to author
Forward
0 new messages