def test_use_uuid_as_userid_enabled(self): """Test generating a user id if the use_uuid_as_userid setting is enabled. """ self.security_settings.use_uuid_as_userid = True form = BaseRegistrationForm(self.portal, {}) data = {} user_id = form.generate_user_id(data) self.assertEqual(data.get('user_id'), user_id) self.assertEqual(len(data.get('user_id')), len(uuid_userid_generator())) data = {'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**'} user_id = form.generate_user_id(data) self.assertNotEqual(user_id, 'joe') self.assertEqual(data.get('user_id'), user_id) self.assertEqual(len(user_id), len(uuid_userid_generator())) # Calling it twice should give a different result, as every # call to the uuid generator should be unique. self.assertNotEqual(form.generate_user_id(data), form.generate_user_id(data))
def test_default(self): """Test generating user_id with no custom user id generator and the default security settings. """ form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), '') self.assertEqual(data.get('user_id'), '') # An explicit username is taken by default. data = {'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), 'joe') self.assertEqual(data.get('user_id'), 'joe') # When no username is there, we try a normalized fullname. data = {'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), 'joe-user') self.assertEqual(data.get('user_id'), 'joe-user') # With no fullname, we take the email. data = {'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), '*****@*****.**') self.assertEqual(data.get('user_id'), '*****@*****.**')
def test_use_uuid_as_userid_enabled(self): """Test generating a user id if the use_uuid_as_userid setting is enabled. """ self.security_settings.use_uuid_as_userid = True form = BaseRegistrationForm(self.portal, {}) data = {} user_id = form.generate_user_id(data) self.assertEqual(data.get('user_id'), user_id) self.assertEqual(len(data.get('user_id')), len(uuid_userid_generator())) data = { 'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**' } user_id = form.generate_user_id(data) self.assertNotEqual(user_id, 'joe') self.assertEqual(data.get('user_id'), user_id) self.assertEqual(len(user_id), len(uuid_userid_generator())) # Calling it twice should give a different result, as every # call to the uuid generator should be unique. self.assertNotEqual(form.generate_user_id(data), form.generate_user_id(data))
def test_use_email_as_login_enabled(self): """Test generating user_id with no custom login name generator and with the use_email_as_login security setting enabled. """ form = BaseRegistrationForm(self.portal, {}) data = {'username': '******', 'email': '*****@*****.**'} self.security_settings.use_email_as_login = True self.assertEqual(form.generate_login_name(data), '*****@*****.**') self.assertEqual(data.get('login_name'), '*****@*****.**')
def test_use_email_as_login_enabled(self): """Test generating user_id with no custom login name generator and with the use_email_as_login security setting enabled. """ form = BaseRegistrationForm(self.portal, {}) data = {'username': '******', 'email': '*****@*****.**'} self.security_settings.use_email_as_login = True self.assertEqual(form.generate_login_name(data), '*****@*****.**') self.assertEqual(data.get('login_name'), '*****@*****.**')
def form_fields(self): #defaultFields = super(RegisterForm, self).form_fields defaultFields = BaseRegistrationForm(self, self.context).form_fields defaultFields += form.Fields(ExtendRegistrationForm) schema = getUtility(IUserDataSchemaProvider).getSchema() #registrationfields = getUtility( # IUserDataSchemaProvider #).getRegistrationFields() #return (defaultFields.omit('password', 'password_ctl', 'mail_me') + # form.Fields(schema).select(*registrationfields)) return defaultFields.omit('password', 'password_ctl', 'mail_me')
def test_generate_uuid_user_id(self): self.assertTrue(self.ptool.site_properties.getProperty("use_uuid_as_userid")) form = BaseRegistrationForm(self.portal, {}) data = {"username": "******", "fullname": "Joe User", "email": "*****@*****.**"} user_id = form.generate_user_id(data) self.assertNotEqual(user_id, "joe") self.assertEqual(data.get("user_id"), user_id) self.assertEqual(len(user_id), len(uuid_userid_generator())) # Calling it twice should give a different result, as every # call to the uuid generator should be unique. self.assertNotEqual(form.generate_user_id(data), form.generate_user_id(data))
def form_fields(self): #defaultFields = super(RegisterForm, self).form_fields defaultFields = BaseRegistrationForm(self, self.context).form_fields defaultFields += form.Fields(ExtendRegistrationForm) defaultFields['captcha'].custom_widget = CaptchaWidget schema = getUtility(IUserDataSchemaProvider).getSchema() #registrationfields = getUtility( # IUserDataSchemaProvider #).getRegistrationFields() #return (defaultFields.omit('password', 'password_ctl', 'mail_me') + # form.Fields(schema).select(*registrationfields)) return defaultFields.omit('password', 'password_ctl', 'mail_me')
def test_custom_generator_empty(self): """Test that the username is used if a custom login name generator returns an empty value. """ sm = getSiteManager(context=self.portal) form = BaseRegistrationForm(self.portal, {}) data = {'useme': '', 'username': '******'} sm.registerUtility(lambda data: data['useme'], provided=ILoginNameGenerator) self.assertEqual(form.generate_login_name(data), 'Frank') self.assertEqual(data.get('login_name'), 'Frank')
def test_custom_generator(self): """Test if a custom login name generator overrides the default behavior. """ sm = getSiteManager(context=self.portal) form = BaseRegistrationForm(self.portal, {}) data = {'useme': 'me me me', 'username': '******'} sm.registerUtility(lambda data: data['useme'], provided=ILoginNameGenerator) self.assertEqual(form.generate_login_name(data), 'me me me') self.assertEqual(data.get('login_name'), 'me me me')
def test_custom_generator(self): """Test if a custom login name generator overrides the default behavior. """ sm = getSiteManager(context=self.portal) form = BaseRegistrationForm(self.portal, {}) data = {'useme': 'me me me', 'username': '******'} sm.registerUtility( lambda data: data['useme'], provided=ILoginNameGenerator) self.assertEqual(form.generate_login_name(data), 'me me me') self.assertEqual(data.get('login_name'), 'me me me')
def test_custom_generator_empty(self): """Test that the username is used if a custom login name generator returns an empty value. """ sm = getSiteManager(context=self.portal) form = BaseRegistrationForm(self.portal, {}) data = {'useme': '', 'username': '******'} sm.registerUtility( lambda data: data['useme'], provided=ILoginNameGenerator) self.assertEqual(form.generate_login_name(data), 'Frank') self.assertEqual(data.get('login_name'), 'Frank')
def test_use_email_as_login_no_fullname_uppercase_email(self): """"Test generating a user id if the use_email_as_login setting is enabled and full name is not provided, with an uppercase e-mail. """ self.security_settings.use_email_as_login = True form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), '') self.assertEqual(data.get('user_id'), '') data = {'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), '*****@*****.**') self.assertEqual(data.get('user_id'), '*****@*****.**')
def form_fields(self): #my_fields = super(ExtendRegistrationForm, self).form_fields my_fields = BaseRegistrationForm(self, self.context).form_fields my_fields += form.Fields(ICaptchaSchema) #my_fields.append(form.Fields(ICaptchaSchema)) --> test my_fields['captcha'].custom_widget = CaptchaWidget #for fld in my_fields: # if fld.__name__ == 'captcha': # # fld.field.custom_widget = CaptchaWidget return my_fields.omit('password', 'password_ctl', 'mail_me')
def test_generate_uuid_user_id(self): form = BaseRegistrationForm(self.portal, {}) data = {'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**'} user_id = form.generate_user_id(data) self.assertNotEqual(user_id, 'joe') self.assertEqual(data.get('user_id'), user_id) self.assertEqual(len(user_id), len(uuid_userid_generator())) # Calling it twice should give a different result, as every # call to the uuid generator should be unique. self.assertNotEqual(form.generate_user_id(data), form.generate_user_id(data))
def test_use_email_as_login_has_fullname(self): """"Test generating a user id if the use_email_as_login setting is enabled and full name is provided. """ self.security_settings.use_email_as_login = True form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), '') self.assertEqual(data.get('user_id'), '') data = {'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), 'joe-user') self.assertEqual(data.get('user_id'), 'joe-user')
def form_fields(self): #my_fields = super(ExtendRegistrationForm, self).form_fields my_fields = BaseRegistrationForm(self, self.context).form_fields my_fields += form.Fields(ICaptchaSchema) #my_fields.append(form.Fields(ICaptchaSchema)) --> test my_fields['captcha'].custom_widget = CaptchaWidget #for fld in my_fields: # if fld.__name__ == 'captcha': # # fld.field.custom_widget = CaptchaWidget return my_fields.omit('password', 'password_ctl', 'mail_me')
def test_use_email_as_login_no_fullname_uppercase_email(self): """"Test generating a user id if the use_email_as_login setting is enabled and full name is not provided, with an uppercase e-mail. """ self.security_settings.use_email_as_login = True form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), '') self.assertEqual(data.get('user_id'), '') data = {'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), '*****@*****.**') self.assertEqual(data.get('user_id'), '*****@*****.**')
def test_use_email_as_login_has_fullname(self): """"Test generating a user id if the use_email_as_login setting is enabled and full name is provided. """ self.security_settings.use_email_as_login = True form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), '') self.assertEqual(data.get('user_id'), '') data = {'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), 'joe-user') self.assertEqual(data.get('user_id'), 'joe-user')
def test_generate_user_id_simplistic(self): # Test a simplistic user id generator. def one_generator(data): return "one" sm = getSiteManager(context=self.portal) sm.registerUtility(one_generator, provided=IUserIdGenerator) form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), "one") self.assertEqual(data.get("user_id"), "one") data = {"username": "******", "fullname": "Joe User", "email": "*****@*****.**"} self.assertEqual(form.generate_user_id(data), "one") self.assertEqual(data.get("user_id"), "one")
def __call__(self): storage = registration.RegistrationReviewStorage(self.context) if self.request.REQUEST_METHOD == 'POST': email = self.request.form.get('email') if self.request.form.get('approve'): data = storage.get(email).copy() data.pop('code') data.pop('created') reg_form = BaseRegistrationForm(self.context, self.request) reg_form.updateFields() reg_form.updateWidgets() reg_form.handle_join_success(data) if data.get('password'): # won't get an email so sent them out something about getting approved self.send_approve_mail(email, data) storage.remove(email) elif self.request.form.get('deny'): storage.remove(email) elif self.request.form.get('enable'): getUtility(IRegistry)['plone.review_registrations'] = True elif self.request.form.get('disable'): getUtility(IRegistry)['plone.review_registrations'] = False self.storage = storage self.data = storage._data return self.index()
def test_generate_user_id_email(self): # It is easy to force the email as user id. def email_getter(data): return data.get("email") sm = getSiteManager(context=self.portal) sm.registerUtility(email_getter, provided=IUserIdGenerator) form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), "") self.assertEqual(data.get("user_id"), "") data = {"username": "******", "fullname": "Joe User", "email": "*****@*****.**"} self.assertEqual(form.generate_user_id(data), "*****@*****.**") self.assertEqual(data.get("user_id"), "*****@*****.**")
def test_generate_user_id_simplistic(self): # Test a simplistic user id generator. def one_generator(data): return 'one' sm = getSiteManager(context=self.portal) sm.registerUtility(one_generator, provided=IUserIdGenerator) form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), 'one') self.assertEqual(data.get('user_id'), 'one') data = {'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), 'one') self.assertEqual(data.get('user_id'), 'one')
def test_generate_user_id_email(self): # It is easy to force the email as user id. def email_getter(data): return data.get('email') sm = getSiteManager(context=self.portal) sm.registerUtility(email_getter, provided=IUserIdGenerator) form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), '') self.assertEqual(data.get('user_id'), '') data = {'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), '*****@*****.**') self.assertEqual(data.get('user_id'), '*****@*****.**')
def test_generate_user_id_with_uuid(self): sm = getSiteManager(context=self.portal) sm.registerUtility(uuid_userid_generator, provided=IUserIdGenerator) form = BaseRegistrationForm(self.portal, {}) data = {} user_id = form.generate_user_id(data) self.assertEqual(data.get("user_id"), user_id) self.assertEqual(len(data.get("user_id")), len(uuid_userid_generator())) data = {"username": "******", "fullname": "Joe User", "email": "*****@*****.**"} user_id = form.generate_user_id(data) self.assertNotEqual(user_id, "joe") self.assertEqual(data.get("user_id"), user_id) self.assertEqual(len(user_id), len(uuid_userid_generator())) # Calling it twice should give a different result, as every # call to the uuid generator should be unique. self.assertNotEqual(form.generate_user_id(data), form.generate_user_id(data))
def test_standard_generate_user_id(self): form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), "") self.assertEqual(data.get("user_id"), "") # An explicit username is taken by default. data = {"username": "******", "fullname": "Joe User", "email": "*****@*****.**"} self.assertEqual(form.generate_user_id(data), "joe") self.assertEqual(data.get("user_id"), "joe") # When no username is there, we try a normalized fullname. data = {"fullname": "Joe User", "email": "*****@*****.**"} self.assertEqual(form.generate_user_id(data), "joe-user") self.assertEqual(data.get("user_id"), "joe-user") # With no fullname, we take the email. data = {"email": "*****@*****.**"} self.assertEqual(form.generate_user_id(data), "*****@*****.**") self.assertEqual(data.get("user_id"), "*****@*****.**")
def test_custom_generator(self): """Test if a custom user id generator overrides the default behavior. """ def one_generator(data): return 'one' sm = getSiteManager(context=self.portal) sm.registerUtility(one_generator, provided=IUserIdGenerator) form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), 'one') self.assertEqual(data.get('user_id'), 'one') data = {'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), 'one') self.assertEqual(data.get('user_id'), 'one')
def test_default(self): """Test generating user_id with no custom user id generator and the default security settings. """ form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), '') self.assertEqual(data.get('user_id'), '') # An explicit username is taken by default. data = { 'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**' } self.assertEqual(form.generate_user_id(data), 'joe') self.assertEqual(data.get('user_id'), 'joe') # When no username is there, we try a normalized fullname. data = {'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), 'joe-user') self.assertEqual(data.get('user_id'), 'joe-user') # With no fullname, we take the email. data = {'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), '*****@*****.**') self.assertEqual(data.get('user_id'), '*****@*****.**')
def test_custom_generator(self): """Test if a custom user id generator overrides the default behavior. """ def one_generator(data): return 'one' sm = getSiteManager(context=self.portal) sm.registerUtility(one_generator, provided=IUserIdGenerator) form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), 'one') self.assertEqual(data.get('user_id'), 'one') data = { 'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**' } self.assertEqual(form.generate_user_id(data), 'one') self.assertEqual(data.get('user_id'), 'one')
def test_standard_generate_user_id(self): form = BaseRegistrationForm(self.portal, {}) data = {} self.assertEqual(form.generate_user_id(data), '') self.assertEqual(data.get('user_id'), '') # An explicit username is taken by default. data = {'username': '******', 'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), 'joe') self.assertEqual(data.get('user_id'), 'joe') # When no username is there, we try a normalized fullname. data = {'fullname': 'Joe User', 'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), 'joe-user') self.assertEqual(data.get('user_id'), 'joe-user') # With no fullname, we take the email. data = {'email': '*****@*****.**'} self.assertEqual(form.generate_user_id(data), '*****@*****.**') self.assertEqual(data.get('user_id'), '*****@*****.**')
def generateLoginName(self, data): """Generate login name, optionally registering function first""" form = BaseRegistrationForm(self.portal, {}) return form.generate_login_name(data)