blob: d6965d5cee97bf9815d4dcc304bebda85c37db58 [file] [log] [blame]
import uuid
from typing import List, Optional
from trackingserver_auth.models import Team, User, UserTeamMembership
async def setup_sample_user_random():
"""Create a sample user for testing."""
auth_provider_user_id = str(uuid.uuid4())
user_email_prefix = uuid.uuid4()
email = f"{user_email_prefix}@test_ensure_user_exists_user_already_exists.io"
user = User(
email=email,
first_name="test",
last_name="test",
auth_provider_type="test",
auth_provider_user_id=auth_provider_user_id,
)
await user.asave()
return user
async def setup_sample_team_random():
"""Create a sample team for testing."""
auth_provider_org_id = str(uuid.uuid4())
team_name = str(uuid.uuid4())
team = Team(
auth_provider_organization_id=auth_provider_org_id,
auth_provider_type="propel_auth",
name=team_name,
)
await team.asave()
return team
async def setup_random_user_with_n_teams(n: int):
user = await setup_sample_user_random()
teams = []
for _ in range(n):
team = await setup_sample_team_random()
teams.append(team)
for team in teams:
await UserTeamMembership.objects.acreate(user=user, team=team)
return user, teams
async def assert_user_state(email: str, exists: bool) -> Optional[User]:
try:
out = await User.objects.aget(email=email)
assert exists, "User should exist"
return out
except User.DoesNotExist:
assert not exists, "User should not exist"
async def assert_team_state(team_id: str, exists: bool) -> Optional[Team]:
try:
out = await Team.objects.aget(auth_provider_organization_id=team_id)
assert exists, "Team should exist"
return out
except Team.DoesNotExist:
assert not exists, "Team should not exist"
async def assert_user_only_part_of_teams(
user: User,
teams: List[Team],
):
memberships = [
item
async for item in UserTeamMembership.objects.filter(user=user)
.prefetch_related("team")
.all()
]
assert len(memberships) == len(teams)
for membership in memberships:
assert membership.team in teams