mirror of https://codeberg.org/dribdat/dribdat.git
Tests
This commit is contained in:
parent
b177856b42
commit
0393e471d4
|
@ -15,11 +15,11 @@ def fetch_commits_gitea(full_name, limit=10):
|
|||
full_name, limit)
|
||||
data = requests.get(apiurl, timeout=REQUEST_TIMEOUT)
|
||||
if data.status_code != 200:
|
||||
logging.warn("Could not sync Gitea commits on %s" % full_name)
|
||||
logging.warning("Could not sync Gitea commits on %s" % full_name)
|
||||
return []
|
||||
json = data.json()
|
||||
if 'message' in json:
|
||||
logging.warn("Could not sync Gitea commits on %s: %s"
|
||||
logging.warning("Could not sync Gitea commits on %s: %s"
|
||||
% (full_name, json['message']))
|
||||
return []
|
||||
commitlog = []
|
||||
|
@ -52,11 +52,11 @@ def fetch_commits_github(full_name, since=None, until=None):
|
|||
apiurl += "&until=%s" % until.replace(microsecond=0).isoformat()
|
||||
data = requests.get(apiurl, timeout=REQUEST_TIMEOUT)
|
||||
if data.status_code != 200:
|
||||
logging.warn("Could not sync GitHub commits on %s" % full_name)
|
||||
logging.warning("Could not sync GitHub commits on %s" % full_name)
|
||||
return []
|
||||
json = data.json()
|
||||
if 'message' in json:
|
||||
logging.warn("Could not sync GitHub commits on %s: %s"
|
||||
logging.warning("Could not sync GitHub commits on %s: %s"
|
||||
% (full_name, json['message']))
|
||||
return []
|
||||
return parse_github_commits(json, full_name)
|
||||
|
@ -103,7 +103,7 @@ def fetch_commits_gitlab(project_id: int, since=None, until=None):
|
|||
return []
|
||||
json = data.json()
|
||||
if 'message' in json:
|
||||
logging.warn("Could not sync GitLab commits", json['message'])
|
||||
logging.warning("Could not sync GitLab commits", json['message'])
|
||||
return []
|
||||
commitlog = []
|
||||
for commit in json:
|
||||
|
|
|
@ -298,7 +298,7 @@ def RequestRemoteContent(project_url):
|
|||
data = requests.get(project_url, timeout=REQUEST_TIMEOUT)
|
||||
return data.text or None
|
||||
except requests.exceptions.RequestException:
|
||||
logging.warn("Could not connect to %s" % project_url)
|
||||
logging.warning("Could not connect to %s" % project_url)
|
||||
return None
|
||||
|
||||
|
||||
|
|
|
@ -177,7 +177,7 @@ def import_project_data(data, dry_run=False):
|
|||
event_name = pjt['event_name']
|
||||
event = Event.query.filter_by(name=event_name).first()
|
||||
if not event:
|
||||
logging.warn('Error: event not found: %s' % event_name)
|
||||
logging.warning('Error: event not found: %s' % event_name)
|
||||
continue
|
||||
# Search for project
|
||||
name = pjt['name']
|
||||
|
@ -214,7 +214,7 @@ def import_activities(data, dry_run=False):
|
|||
# TODO: unreliable; rather use a map of project_id to new id
|
||||
proj = Project.query.filter_by(name=pname).first()
|
||||
if not proj:
|
||||
logging.warn('Error! Project not found: %s' % pname)
|
||||
logging.warning('Error! Project not found: %s' % pname)
|
||||
continue
|
||||
activity = Activity(aname, proj.id)
|
||||
activity.set_from_data(act)
|
||||
|
|
|
@ -71,7 +71,7 @@ def box_datapackage(line, cache=None):
|
|||
logging.info("Fetching Data Package: <%s>" % url)
|
||||
package = Package(url)
|
||||
except Exception: # noqa: B902
|
||||
logging.warn("Data Package not parsed: <%s>" % url)
|
||||
logging.warning("Data Package not parsed: <%s>" % url)
|
||||
return None
|
||||
if package.created:
|
||||
dt = datetime.fromisoformat(package.created).strftime("%d.%m.%Y")
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Helper for sending mail."""
|
||||
from flask import url_for
|
||||
from flask import url_for, current_app
|
||||
from flask_mailman import EmailMessage
|
||||
from dribdat.utils import random_password # noqa: I005
|
||||
import logging
|
||||
|
@ -17,14 +17,17 @@ def user_activation(user):
|
|||
userid=user.id,
|
||||
userhash=act_hash,
|
||||
_external=True)
|
||||
if not 'mailman' in current_app.extensions:
|
||||
logging.warning('E-mail extension has not been configured')
|
||||
return act_hash
|
||||
msg = EmailMessage()
|
||||
msg.subject = 'Your dribdat account'
|
||||
msg.body = \
|
||||
"Thanks for signing up at %s\n\n" % base_url \
|
||||
"Hello %s,\n" % user.name \
|
||||
+ "Thanks for signing up at %s\n\n" % base_url \
|
||||
+ "Tap here to activate your account:\n\n%s" % act_url
|
||||
msg.to = [user.email]
|
||||
logging.info('Sending activation mail to user %d' % user.id)
|
||||
logging.debug(act_url)
|
||||
msg.send(fail_silently=True)
|
||||
return True
|
||||
|
||||
return act_hash
|
||||
|
|
|
@ -141,8 +141,11 @@ def activate(userid, userhash):
|
|||
login_user(a_user, remember=True)
|
||||
flash("Welcome! Your user account has been activated.", 'success')
|
||||
return redirect(url_for('auth.user_profile'))
|
||||
flash("Activation not found. Try again, or ask an organizer.", 'warning')
|
||||
logout_user()
|
||||
elif a_user.active:
|
||||
flash("Your user account is active.", 'success')
|
||||
else:
|
||||
flash("Activation not found. Try again, or ask an organizer.", 'warning')
|
||||
logout_user()
|
||||
return redirect(url_for('public.home'))
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
[pytest]
|
||||
filterwarnings =
|
||||
ignore
|
||||
default:::dribdat.*
|
|
@ -6,6 +6,7 @@ See: http://webtest.readthedocs.org/
|
|||
from flask import url_for
|
||||
|
||||
from dribdat.user.models import User
|
||||
from dribdat.mailer import user_activation
|
||||
|
||||
from .factories import UserFactory
|
||||
|
||||
|
@ -146,3 +147,18 @@ class TestRegistering:
|
|||
assert res.status_code == 200
|
||||
# A new user was created
|
||||
assert User.query.count() == old_count + 1
|
||||
|
||||
class TestActivation:
|
||||
"""Activate a user."""
|
||||
|
||||
def test_user_can_activate(self, user, testapp):
|
||||
"""Create and activate a user."""
|
||||
# Make a deactivated user
|
||||
user = UserFactory(active=False)
|
||||
user.save()
|
||||
# Let's get an activation mail
|
||||
my_hash = user_activation(user)
|
||||
# And go activate that user
|
||||
res = testapp.get(url_for('auth.activate', userid=user.id, userhash=my_hash))
|
||||
assert res.status_code == 302
|
||||
assert '/user/profile' in res
|
||||
|
|
Loading…
Reference in New Issue