Пример #1
0
 def test_logout(self):
     """
     Make sure that logging out works
     If the person is logged in, make sure the person gets logged out
     and is redirected properly.  If the person is already logged out, 
     return the user to the page before the user tried to log out.
     """
     # Initialize
     url_test = url('person_index')
     # Add person
     meta.Session.add(model.Person(username, model.hashString(password), nickname, email))
     meta.Session.commit()
     # Logging out should redirect back
     self.assert_(url_test in self.app.get(url('person_logout', targetURL=h.encodeURL(url_test))))
     # Log in
     self.assert_('Login' in self.app.get(url('person_login', targetURL=h.encodeURL(url_test))))
     self.assertEqual(simplejson.dumps({'isOk': 1}), self.app.post(url('person_login_'), dict(username=username, password=password)).body)
     # Logging out should redirect back
     self.assert_(url_test in self.app.get(url('person_logout', targetURL=h.encodeURL(url_test))))
Пример #2
0
 def confirm(self, ticket):
     "Confirm changes"
     # Send feedback
     candidate = confirmPersonCandidate(ticket)
     # If the candidate exists,
     if candidate:
         messageCode = "updated" if candidate.person_id else "created"
     else:
         messageCode = "expired"
     # Return
     return redirect(url("person_login", targetURL=h.encodeURL("/"), messageCode=messageCode))
Пример #3
0
 def logout(self, targetURL=h.encodeURL("/")):
     "Logout"
     # If the person is logged in,
     if h.isPerson():
         del session["minutesOffset"]
         del session["personID"]
         del session["nickname"]
         del session["is_super"]
         session.save()
     # Redirect
     return redirect(url(h.decodeURL(targetURL)))
Пример #4
0
 def test_login(self):
     """
     Make sure that logging in works
     Ensure that the login page shows
     Ensure that bad credentials result in an error message
     Ensure that good credentials result in a proper redirect
     """
     # Initialize
     url_test = url('person_update')
     # Assert that the login page shows and stores url
     self.assert_('Login' in self.app.get(url('person_login', targetURL=h.encodeURL(url_test))))
     # Add person
     meta.Session.add(model.Person(username, model.hashString(password), nickname, email))
     meta.Session.commit()
     # Log in using bad credentials
     self.assertEqual(simplejson.dumps({'rejection_count': 1, 'isOk': 0}), self.app.post(url('person_login_'), dict(username=username, password=password + 'x')).body)
     # Log in using good credentials
     self.assertEqual(simplejson.dumps({'isOk': 1}), self.app.post(url('person_login_'), dict(username=username, password=password)).body)
Пример #5
0
 def update(self):
     "Show account update page"
     # Load
     personID = h.getPersonID()
     # If the person is not logged in,
     if not personID:
         # Return
         return redirect(url("person_login", targetURL=h.encodeURL("/")))
     # Render
     c.isNew = False
     person = Session.query(model.Person).get(personID)
     # Return
     return formencode.htmlfill.render(
         render("/people/change.mako"),
         {
             "username": person.username,
             "nickname": person.nickname,
             "email": person.email,
             "email_sms": person.email_sms,
         },
     )
Пример #6
0
 def login(self, targetURL=h.encodeURL("/")):
     "Show login form"
     c.messageCode = request.GET.get("messageCode")
     c.targetURL = h.decodeURL(targetURL)
     c.recaptchaPublicKey = config.get("recaptcha.public", "")
     return render("/people/login.mako")
Пример #7
0
 def test_update(self):
     """
     Make sure that updating credentials works
     Make sure the update page only appears when the user is logged in
     Make sure the update form is filled with the user's credentials
     Make sure that update_ only works when the user is logged in
     Make sure that update confirmation works
     """
     # Assert that we are redirected to the login page if the person is not logged in
     response = self.app.get(url('person_update'))
     self.assertEqual(urlparse.urlparse(response.response.location).path, url('person_login', targetURL=h.encodeURL('/')))
     # Assert that we get rejected if we try to post without logging in
     self.assertEqual(simplejson.dumps({'isOk': 0}), self.app.post(url('person_update_')).body)
     # Add person
     meta.Session.add(model.Person(username, model.hashString(password), nickname, email, email_sms))
     meta.Session.commit()
     # Log in
     self.app.post(url('person_login_'), dict(username=username, password=password))
     # Assert that the update form is filled with the user's credentials
     responseBody = self.app.get(url('person_update')).body
     self.assert_(username in responseBody)
     self.assert_(nickname in responseBody)
     self.assert_(email in responseBody)
     self.assert_(email_sms in responseBody)
     # Update credentials
     newUsername = store.makeRandomString(16)
     newPassword = store.makeRandomAlphaNumericString(parameter.PASSWORD_LENGTH_AVERAGE)
     newNickname = unicode(store.makeRandomString(16))
     newEmail = re.sub(r'.*@', store.makeRandomString(16) + '@', email)
     newEmailSMS = re.sub(r'.*@', store.makeRandomString(16) + '@', email)
     self.assertEqual(simplejson.dumps({'isOk': 1}), self.app.post(url('person_update_'), dict(username=newUsername, password=newPassword, nickname=newNickname, email=newEmail, email_sms=newEmailSMS)).body)
     # Make sure the credentials have not changed yet
     self.assertEqual(meta.Session.query(model.Person).filter_by(username=newUsername, password_hash=model.hashString(newPassword), nickname=newNickname, email=newEmail, email_sms=newEmailSMS).count(), 0)
     # Activate candidate
     self.app.get(url('person_confirm', ticket=meta.Session.query(model.PersonCandidate.ticket).filter_by(username=newUsername).first()[0]))
     # Make sure the credentials have changed
     self.assertEqual(meta.Session.query(model.Person).filter_by(username=newUsername, password_hash=model.hashString(newPassword), nickname=newNickname, email=newEmail, email_sms=newEmailSMS).count(), 1)