tests: add a large_userbase fixture (#46988)

This commit is contained in:
Benjamin Dauvergne 2020-09-24 21:39:45 +02:00
parent 9d9e34ee6a
commit 458712039c
1 changed files with 68 additions and 0 deletions

View File

@ -0,0 +1,68 @@
# -*- coding: utf-8 -*-
# authentic2 - versatile identity manager
# Copyright (C) 2010-2019 Entr'ouvert
#
# This program is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import faker
import pytest
from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType
from authentic2.models import Attribute, AttributeValue
User = get_user_model()
pytestmark = pytest.mark.slow
@pytest.fixture
def large_userbase(db, freezer):
dob_attribute = Attribute.objects.create(
kind='birthdate',
name='birthdate',
label='birthdate',
required=True)
# fix time window
freezer.move_to('2020-01-01')
fake = faker.Faker(locale='fr_FR')
faker.Faker.seed(0)
for i in range(100):
User.objects.bulk_create(
User(
first_name=fake.first_name() + ' ' + fake.first_name(),
last_name=fake.last_name(),
email=fake.ascii_safe_email()) for i in range(1000))
user_ids = User.objects.values_list('id', flat=True)
user_ct = ContentType.objects.get_for_model(User)
AttributeValue.objects.bulk_create(
AttributeValue(
content_type=user_ct,
object_id=user_id,
attribute=dob_attribute,
verified=True,
multiple=False,
content=fake.date())
for user_id in user_ids)
def test_large_userbase(large_userbase):
pass