diff options
| author | Daniel Schadt <kingdread@gmx.de> | 2023-05-31 21:16:57 +0200 | 
|---|---|---|
| committer | Daniel Schadt <kingdread@gmx.de> | 2023-05-31 21:16:57 +0200 | 
| commit | 45f2f09be40aa9f8baa822a6c2502354d27b15d7 (patch) | |
| tree | 6a37c5812a382f3327748f8264f41c5a8dc96852 /tests/integration/test_register.py | |
| parent | fb3eabd184cd5b75653d7cb1e0fe3a1ac4b748e3 (diff) | |
| parent | 0eb281e89241095c82c6e6b9f8b60f0771a8cd8a (diff) | |
| download | fietsboek-45f2f09be40aa9f8baa822a6c2502354d27b15d7.tar.gz fietsboek-45f2f09be40aa9f8baa822a6c2502354d27b15d7.tar.bz2 fietsboek-45f2f09be40aa9f8baa822a6c2502354d27b15d7.zip | |
Merge branch 'resend-verification'
Diffstat (limited to 'tests/integration/test_register.py')
| -rw-r--r-- | tests/integration/test_register.py | 40 | 
1 files changed, 34 insertions, 6 deletions
| diff --git a/tests/integration/test_register.py b/tests/integration/test_register.py index af1e313..dc7b00a 100644 --- a/tests/integration/test_register.py +++ b/tests/integration/test_register.py @@ -1,19 +1,28 @@  import re +import pytest +  import fietsboek.email  from fietsboek import models  VERIFICATION_LINK_PATTERN = re.compile("http://example.com(/token/[A-Za-z0-9-]+)") -def test_registration_working(testapp, dbsession, route_path, monkeypatch): -    """Ensures that a user can register, including using the verification link.""" +@pytest.fixture +def mailcatcher(monkeypatch): +    """Monkeypatches the send mail functionality. + +    Returns the list of mails sent. +    """      mails = [] -    def send_message(server_url, username, password, message): +    def send_message(_server_url, _username, _passwords, message):          mails.append(message) -      monkeypatch.setattr(fietsboek.email, "send_message", send_message) +    yield mails + +def test_registration_working(testapp, dbsession, route_path, mailcatcher): +    """Ensures that a user can register, including using the verification link."""      registration = testapp.get(route_path('create-account'))      form = registration.form      form['email'] = 'foo-new@bar.com' @@ -23,18 +32,37 @@ def test_registration_working(testapp, dbsession, route_path, monkeypatch):      response = form.submit().maybe_follow()      assert b'A confirmation link has been sent' in response.body -    assert len(mails) == 1 +    assert len(mailcatcher) == 1      user = dbsession.execute(models.User.query_by_email('foo-new@bar.com')).scalar_one()      assert not user.is_verified -    body = mails[0].get_body().get_content() +    body = mailcatcher[0].get_body().get_content()      token_path = VERIFICATION_LINK_PATTERN.search(body).group(1)      testapp.get(token_path)      assert user.is_verified +def test_resend_verification_mail(testapp, dbsession, route_path, mailcatcher): +    """Ensures that the verification link re-sending works.""" +    registration = testapp.get(route_path('create-account')) +    form = registration.form +    form['email'] = 'foo-new@bar.com' +    form['name'] = 'The new Foo' +    form['password'] = 'foobarpassword' +    form['repeat-password'] = 'foobarpassword' +    form.submit().maybe_follow() + +    req = testapp.get(route_path('resend-verification')) +    req.form['email'] = 'foo-new@bar.com' +    req.form.submit().maybe_follow() + +    assert len(mailcatcher) == 2 +    assert VERIFICATION_LINK_PATTERN.search(mailcatcher[0].get_body().get_content()) +    assert VERIFICATION_LINK_PATTERN.search(mailcatcher[1].get_body().get_content()) + +  def test_registration_short_password(testapp, route_path):      """Ensures that passwords that are too short are rejected."""      registration = testapp.get(route_path('create-account')) | 
