Browser tests for Emaillogin
============================

  >>> from Products.Five.testbrowser import Browser
  >>> from Products.PloneTestCase.setup import portal_owner, default_password
  >>> browser = Browser()
  >>> browser.handleErrors = False
  >>> portal_url = self.portal.absolute_url()
  
Set up two test users with emails:

  >>> test_username = 'user1'
  >>> test_user_fullname = 'User 1'
  >>> test_user_pass = 'secret'
  >>> test_user_email = 'user1@host.com'
  
  >>> test_username2 = 'user2'
  >>> test_user2_fullname = 'User 2'
  >>> test_user2_pass = 'secret2'
  >>> test_user2_email = 'user2@host.com'  
  
  >>> self.portal.portal_membership.addMember(test_username, test_user_pass, ['Member'], [], {'email': test_user_email, 'fullname': test_user_fullname})
  >>> self.portal.portal_membership.addMember(test_username2, test_user2_pass, ['Member'], [], {'email': test_user2_email, 'fullname': test_user2_fullname})

Login as admin and try to change the email of user 1 to the email of user 2:

  >>> browser.open(portal_url)
  >>> browser.getLink('Log in').click()
  >>> browser.getControl(name='__ac_name').value = portal_owner
  >>> browser.getControl(name='__ac_password').value = default_password
  >>> browser.getControl(name='submit').click()
  >>> "You are now logged in" in browser.contents
  True

Let's go directly to the users preference panel, and try changing email to an existing email, this should trigger a warning:

  >>> browser.open('http://nohost/plone/prefs_users_overview')
  >>> browser.getControl(name="form.button.FindAll").click()
  >>> 'prefs_user_details?userid=' +test_username in browser.contents
  True
  >>> for x in range(len(self.portal.acl_users.getUsers())):
  ...    field = browser.getControl(name='users.email:records', index=x)
  ...    if field.value == test_user_email:
  ...        field.value = test_user2_email
  ...        break
  >>> browser.getControl(name="form.button.Modify").click()
  >>> '<dt>Warning</dt>' in browser.contents and '%s</dd>' % test_username in browser.contents
  True
  >>> browser.contents.count(test_username)
  1
  
And so it does. 
