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()

Enable the profile for the extended setup.
  >>> result = self.portal.portal_setup.runAllImportStepsFromProfile("profile-betahaus.emaillogin:exdended",purge_old=False)
  >>> self.portal.email_catalog
  <EmailCatalog at /plone/email_catalog>
  >>> self.portal.email_catalog.indexes()
  ['email']
  
  
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_user_email2 = 'other_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:

  >>> 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 of User 1
to another unique email. Make sure no warning is shown:

  >>> 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
  >>> field = browser.getControl(name='users.email:records', index=1)
  >>> field.value = test_user_email2
  >>> browser.getControl(name="form.button.Modify").click()
  >>> '<dt>Warning</dt>' in browser.contents and '%s</dd>' % test_username in browser.contents
  False
  >>> browser.contents.count(test_username)
  0
  >>> len(self.portal.email_catalog(email = test_user_email))
  0
  >>> result = self.portal.email_catalog(email = test_user_email2)
  >>> len(result)
  1
  >>> result[0].userid
  'user1'
  
Now we should be able to log out as admin and login as 'User 1' with the new email:
  
  >>> browser.getLink('Log out').click()
  >>> "You are now logged out" in browser.contents
  True
  >>> browser.open(portal_url)
  >>> browser.getLink('Log in').click()
  >>> browser.getControl(name='__ac_name').value = test_user_email2
  >>> browser.getControl(name='__ac_password').value = test_user_pass
  >>> browser.getControl(name='submit').click()
  >>> "You are now logged in" in browser.contents
  True

That went well. Now log in as admin again and change the email of User 1 to the same as the email of User 2:

  >>> browser.getLink('Log out').click()
  >>> "You are now logged out" in browser.contents
  True
  >>> 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
  >>> 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
  >>> field = browser.getControl(name='users.email:records', index=1)
  >>> field.value = test_user2_email
  >>> 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
  