def test_change_password(self, remember): from webidentity.models import PasswordReset from webidentity.models import User remember.return_value = [('X-Login', 'john.doe')] user = User(u'john.doe', u'secret', u'*****@*****.**') reset = PasswordReset(1, datetime.now() + timedelta(days=7), u'uniquetoken') session = DBSession() session.add(reset) session.add(user) session.flush() self.assertEquals(1, user.id) self.assertEquals(1, session.query(PasswordReset)\ .filter(PasswordReset.user_id == 1)\ .filter(PasswordReset.token == u'uniquetoken')\ .filter(PasswordReset.expires >= datetime.now())\ .count()) view = self._makeView(post={ 'token': 'uniquetoken', 'password': '******', 'confirm_password': '******'}) response = view.change_password() self.assertEquals(dict(response.headers), { 'Content-Length': '0', 'X-Login': '******', 'Content-Type': 'text/html; charset=UTF-8', 'Location': 'http://example.com'}) # Check that the password was changed self.failUnless(session.query(User).get(1).check_password('abc123')) # Check that the reset request was deleted self.assertEquals(0, session.query(PasswordReset).count())
def populate_accounts(): """Populates the database with production data.""" engine = engine_from_config(get_config(), 'sqlalchemy.') initialize_sql(engine, False) session = DBSession() if len(sys.argv) < 3: print "Usage: {0} <config> <data>".format(sys.argv[0]) sys.exit(1) for line in open(sys.argv[2]).readlines(): username, password = line.strip().split('|', 1) session.add(User(username.strip(), password.strip(), '*****@*****.**')) print username session.flush() transaction.commit()
def populate_demo(): """Populates the database with 50 demo users.""" engine = engine_from_config(get_config(), 'sqlalchemy.') initialize_sql(engine, False) session = DBSession() for count in range(1, 51): session.add(User('test.user{0:02}'.format(count), 'testi', '*****@*****.**')) session.add(User('test.pref01', 'testi', u'*****@*****.**')) session.add(User('test.pref02', 'testi', None)) session.add(User('test.pref03', 'testi', u'*****@*****.**')) session.add(User('test.pref04', 'testi', u'*****@*****.**')) session.add(User('test.pref05', 'testi', None)) session.flush() transaction.commit() print("Generated 50 demo users.")
def DISABLED__test_cascading_delete(self): from webidentity.models import Persona from webidentity.models import User from webidentity.models import UserAttribute from webidentity.models import VisitedSite user = User(u'john.doe', u'secret', u'*****@*****.**') user.personas.append( Persona(u'Test persönä', attributes=[ UserAttribute(type_uri, value) for type_uri, value in DUMMY_USER_ATTRIBUTES.iteritems()])) user.personas.append( Persona(u'Reversed persönä', attributes=[ UserAttribute(type_uri, ''.join(reversed(value))) for type_uri, value in DUMMY_USER_ATTRIBUTES.iteritems()])) site1 = VisitedSite('http://www.rp.com', remember=False) site2 = VisitedSite('http://www.plone.org', remember=True) site2.persona = user.personas[0] user.visited_sites.append(site1) user.visited_sites.append(site2) session = DBSession() session.add(user) session.flush() self.assertEquals(2, len(session.query(User).get(1).personas)) self.assertEquals(2, len(session.query(User).get(1).visited_sites)) self.assertEquals(6, len(session.query(User).get(1).personas[0].attributes)) session.query(User).filter_by(username=u'john.doe').delete() session.flush() self.assertEquals(0, session.query(User).count()) self.assertEquals(0, session.query(Persona).count()) self.assertEquals(0, session.query(UserAttribute).count()) self.assertEquals(0, session.query(VisitedSite).count())