Example #1
0
def test_user_by_email_address(log):
    u1 = M.User.register(dict(username='******'), make_project=False)
    u2 = M.User.register(dict(username='******'), make_project=False)
    addr1 = M.EmailAddress(email='*****@*****.**',
                           confirmed=True,
                           claimed_by_user_id=u1._id)
    addr2 = M.EmailAddress(email='*****@*****.**',
                           confirmed=True,
                           claimed_by_user_id=u2._id)
    # both users are disabled
    u1.disabled, u2.disabled = True, True
    ThreadLocalORMSession.flush_all()
    assert_equal(M.User.by_email_address('*****@*****.**'), None)
    assert_equal(log.warn.call_count, 0)

    # only u2 is active
    u1.disabled, u2.disabled = True, False
    ThreadLocalORMSession.flush_all()
    assert_equal(M.User.by_email_address('*****@*****.**'), u2)
    assert_equal(log.warn.call_count, 0)

    # both are active
    u1.disabled, u2.disabled = False, False
    ThreadLocalORMSession.flush_all()
    assert_in(M.User.by_email_address('*****@*****.**'), [u1, u2])
    assert_equal(log.warn.call_count, 1)

    # invalid email returns None, but not user which claimed
    # [email protected] as before
    nobody = M.EmailAddress(email='*****@*****.**',
                            confirmed=True,
                            claimed_by_user_id=u1._id)
    ThreadLocalORMSession.flush_all()
    assert_equal(M.User.by_email_address('*****@*****.**'), u1)
    assert_equal(M.User.by_email_address('invalid'), None)
Example #2
0
    def test_send_password_reset_link(self, gen_message_id, sendmail):
        user = M.User.by_username('test-user')
        user.set_pref('email_address', '*****@*****.**')
        M.EmailAddress(email='*****@*****.**',
                       confirmed=True,
                       claimed_by_user_id=user._id)
        ThreadLocalORMSession.flush_all()
        with td.audits('Password recovery link sent to: [email protected]',
                       user=True):
            r = self.app.post('/nf/admin/user/send_password_reset_link',
                              params={'username': '******'})
        hash = user.get_tool_data('AuthPasswordReset', 'hash')
        text = '''Your username is test-user

To update your password on %s, please visit the following URL:

%s/auth/forgotten_password/%s''' % (config['site_name'], config['base_url'],
                                    hash)
        sendmail.post.assert_called_once_with(
            sender='noreply@localhost',
            toaddr='*****@*****.**',
            fromaddr='"{}" <{}>'.format(config['site_name'],
                                        config['forgemail.return_path']),
            reply_to=config['forgemail.return_path'],
            subject='Allura Password recovery',
            message_id=gen_message_id(),
            text=text)
Example #3
0
def test_email_address_send_verification_link():
    addr = M.EmailAddress(email='*****@*****.**',
                          claimed_by_user_id=c.user._id)

    addr.send_verification_link()

    with patch('allura.tasks.mail_tasks.smtp_client._client') as _client:
        M.MonQTask.run_ready()
    return_path, rcpts, body = _client.sendmail.call_args[0]
    assert_equal(rcpts, ['*****@*****.**'])
Example #4
0
def test_email_address():
    addr = M.EmailAddress(_id='*****@*****.**', claimed_by_user_id=c.user._id)
    ThreadLocalORMSession.flush_all()
    assert addr.claimed_by_user() == c.user
    addr2 = M.EmailAddress.upsert('*****@*****.**')
    addr3 = M.EmailAddress.upsert('*****@*****.**')
    assert addr3 is addr
    assert addr2 is not addr
    assert addr2
    addr4 = M.EmailAddress.upsert('*****@*****.**')
    assert addr4 is addr2
    addr.send_verification_link()
    assert addr is c.user.address_object('*****@*****.**')
    c.user.claim_address('*****@*****.**')
    assert '*****@*****.**' in c.user.email_addresses
Example #5
0
def test_email_address():
    addr = M.EmailAddress(email='*****@*****.**',
                          claimed_by_user_id=c.user._id)
    ThreadLocalORMSession.flush_all()
    assert addr.claimed_by_user() == c.user
    addr2 = M.EmailAddress.create('*****@*****.**')
    addr3 = M.EmailAddress.create('*****@*****.**')

    # Duplicate emails are allowed, until the email is confirmed
    assert addr3 is not addr

    assert addr2 is not addr
    assert addr2
    addr4 = M.EmailAddress.create('*****@*****.**')
    assert addr4 is not addr2

    assert addr is c.user.address_object('*****@*****.**')
    c.user.claim_address('*****@*****.**')
    assert '*****@*****.**' in c.user.email_addresses
Example #6
0
def test_email_address_claimed_by_user():
    addr = M.EmailAddress(_id='*****@*****.**',
                          claimed_by_user_id=c.user._id)
    c.user.disabled = True
    ThreadLocalORMSession.flush_all()
    assert addr.claimed_by_user() is None