mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
* Add EmailMultiAlternatives import * Add strip_tags import * Add settings imports and new email test * Add email increment to ixf and tests * IX-F Importer: suggested update when it should be add + remove #832 * Take email increment out of if-else * Add max and min speed settings * Change validation check for models * new speed validation * Add basic user command * Add pdb cleanup users tool * Add pretty printing for speed * Add users as a subparser * add translation override to signals * Add parser as parent of subparser * refactor and change test * Move override to cover single variable * Add tooltip option for individual checkboxes * address 'fix me' issue with field_help helper func * Add zipcode validator and black format * Make website required input but zipcode dependent on country * Add net POC requirement to Netixlan serializer * Website is now blank=False ie required in all forms * refine error message * Require email is not blank and add test * Change error message * add website and zipcode test, edit zipcode error message * change placement of tooltip * add question mark * Add comment * Add runtime error logging for ixp member import * add uncaught error test * delete two unused methods * Rename test file and add different tests * Add missing email imports (reproduces changes in hot_fix_gh_831) * add resend methods * Add missing email imports (reproduces changes in hot_fix_gh_831) * Add pytest-mock to pipfile * Add resend email mechanism * Add email resending * remove failing assertion * fix for ticket_aged_proposals * Wrap resending emails in conditional for commit * Add resend email tests * fix mail_Debug bug * Figure out production mailing and resending settings * Add stale info field * default IXF_RESEND_FAILED_EMAILS to False fix issue with sent being set even if email was not sent fix issue with output stating resending of emails even if it wasnt * IX-F Preview - shows the consolidated delete operation when it shouldn't (#824) * black format (v 19.10) * black formatting * black formatting * pipfile relock * make changes from #825 play nice with changes from #833 * black to pipenv dev packages Co-authored-by: Elliot Frank <elliot@20c.com> Co-authored-by: Stefan Pratter <stefan@20c.com>
112 lines
3.6 KiB
Python
112 lines
3.6 KiB
Python
from datetime import datetime, timezone, timedelta
|
|
import pytest
|
|
import random
|
|
import string
|
|
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.conf import settings
|
|
from django.core.management import call_command
|
|
from django.test import override_settings
|
|
|
|
from peeringdb_server.models import User, VerificationQueueItem
|
|
|
|
NUM_YEAR_OLD_USERS = 20
|
|
NUM_MONTH_OLD_USERS = 15
|
|
NUM_DAY_OLD_USERS = 10
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_cleanup_users(year_old_users, month_old_users, day_old_users):
|
|
vqi_count = VerificationQueueItem.objects.count()
|
|
users_count = User.objects.count()
|
|
call_command("pdb_cleanup_vq", "users", commit=True)
|
|
|
|
# Assert we deleted VQI instances
|
|
assert VerificationQueueItem.objects.count() == vqi_count - NUM_YEAR_OLD_USERS
|
|
# Assert users themselves are not deleted
|
|
assert User.objects.count() == users_count
|
|
|
|
# Try test with maximum age of vqi to be 14 days
|
|
@pytest.mark.django_db
|
|
@override_settings(VQUEUE_USER_MAX_AGE=14)
|
|
def test_cleanup_users_override_settings(year_old_users, month_old_users, day_old_users):
|
|
vqi_count = VerificationQueueItem.objects.count()
|
|
users_count = User.objects.count()
|
|
|
|
call_command("pdb_cleanup_vq", "users", commit=True)
|
|
# Assert we deleted more VQI instances
|
|
assert VerificationQueueItem.objects.count() == vqi_count - (NUM_YEAR_OLD_USERS + NUM_MONTH_OLD_USERS)
|
|
# Assert users themselves are not deleted
|
|
assert User.objects.count() == users_count
|
|
|
|
@pytest.mark.django_db
|
|
def test_cleanup_users_no_commit(year_old_users, month_old_users, day_old_users):
|
|
vqi_count = VerificationQueueItem.objects.count()
|
|
users_count = User.objects.count()
|
|
|
|
call_command("pdb_cleanup_vq", "users", commit=False)
|
|
# Assert we didn't delete VQI instances
|
|
assert VerificationQueueItem.objects.count() == vqi_count
|
|
# Assert users themselves are not deleted
|
|
assert User.objects.count() == users_count
|
|
|
|
@pytest.mark.django_db
|
|
def test_cleanup_users_no_users(year_old_users, month_old_users, day_old_users):
|
|
vqi_count = VerificationQueueItem.objects.count()
|
|
users_count = User.objects.count()
|
|
|
|
call_command("pdb_cleanup_vq", commit=True)
|
|
# Assert we didn't delete VQI instances
|
|
assert VerificationQueueItem.objects.count() == vqi_count
|
|
# Assert users themselves are not deleted
|
|
assert User.objects.count() == users_count
|
|
|
|
# --------- FIXTURES AND HELPERS -----------------
|
|
|
|
def create_users_and_vqi(users_to_generate, days_old):
|
|
"""
|
|
Input: Number users to generate [int]
|
|
Days old to make their VerificationQueueItem [int]
|
|
Output: List of tuples, [(user, verification queue item), ...]
|
|
"""
|
|
|
|
def random_str():
|
|
return ''.join(random.choice(string.ascii_letters) for i in range(4))
|
|
|
|
def admin_user():
|
|
user, _ = User.objects.get_or_create(username="admin")
|
|
return user
|
|
|
|
admin_user = admin_user()
|
|
|
|
output = []
|
|
created_date = datetime.now(timezone.utc) - timedelta(days=days_old)
|
|
|
|
for i in range(users_to_generate):
|
|
user = User.objects.create(
|
|
username=f'User {random_str()}',
|
|
)
|
|
vqi = VerificationQueueItem.objects.create(
|
|
content_type=ContentType.objects.get_for_model(User),
|
|
object_id=user.id,
|
|
user=admin_user,
|
|
)
|
|
vqi.created = created_date
|
|
vqi.save()
|
|
output.append((user, vqi))
|
|
|
|
return output
|
|
|
|
@pytest.fixture()
|
|
def year_old_users():
|
|
create_users_and_vqi(NUM_YEAR_OLD_USERS, 365)
|
|
|
|
@pytest.fixture()
|
|
def month_old_users():
|
|
create_users_and_vqi(NUM_MONTH_OLD_USERS, 60)
|
|
|
|
@pytest.fixture()
|
|
def day_old_users():
|
|
create_users_and_vqi(NUM_DAY_OLD_USERS, 1)
|
|
|