mirror of
https://github.com/peeringdb/peeringdb.git
synced 2024-05-11 05:55:09 +00:00
* stub in poetry for pipenv * re-add tester image * add pre-commit / formatting * fix ghactions * revert test data whitespace, exclude tests/data * revert ws * decruft, rm tox/pipenv * install dev packages for base image * add lgtm config to force to py3
123 lines
3.6 KiB
Python
123 lines
3.6 KiB
Python
import random
|
|
import string
|
|
from datetime import datetime, timedelta, timezone
|
|
|
|
import pytest
|
|
from django.conf import settings
|
|
from django.contrib.contenttypes.models import ContentType
|
|
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)
|