From 420ce82145531d6bc7b511701a1704c037e91fdb Mon Sep 17 00:00:00 2001 From: stuppie Date: Tue, 27 Oct 2026 12:14:59 -0600 Subject: fix gr user tests --- tests/managers/gr/test_authentication.py | 75 ++++++++------------------------ tests/managers/gr/test_team.py | 43 ++++++++++++++---- 2 files changed, 52 insertions(+), 66 deletions(-) (limited to 'tests/managers/gr') diff --git a/tests/managers/gr/test_authentication.py b/tests/managers/gr/test_authentication.py index 1310c79..324bfa6 100644 --- a/tests/managers/gr/test_authentication.py +++ b/tests/managers/gr/test_authentication.py @@ -1,11 +1,9 @@ -import logging from collections.abc import Callable from uuid import uuid4 import pytest from generalresearch.managers.gr.authentication import GRTokenManager, GRUserManager -from generalresearch.managers.gr.team import TeamManager from generalresearch.models.gr.authentication import GRToken, GRUser from generalresearch.pg_helper import PostgresConfig from generalresearch.redis_helper import RedisConfig @@ -14,12 +12,13 @@ SSO_ISSUER = "" class TestGRUserManager: - def test_create(self, gr_user: GRUser, gr_user_manager: GRUserManager): + assert gr_user.id is not None instance = gr_user_manager.get_by_id(gr_user.id) assert isinstance(instance, GRUser) assert gr_user.id == instance.id + assert gr_user.id is not None instance2 = gr_user_manager.get_by_id(gr_user.id) assert isinstance(instance2, GRUser) assert gr_user.model_dump_json() == instance2.model_dump_json() @@ -28,32 +27,25 @@ class TestGRUserManager: with pytest.raises(expected_exception=ValueError) as cm: gr_user_manager.get_by_id(gr_user_id=999_999_999) assert "GRUser not found" in str(cm.value) - + assert gr_user.id is not None instance = gr_user_manager.get_by_id(gr_user_id=gr_user.id) assert isinstance(instance, GRUser) - assert instance.sub == gr_user.sub - - def test_get_by_sub(self, gr_user: GRUser, gr_user_manager: GRUserManager): - with pytest.raises(expected_exception=ValueError) as cm: - gr_user_manager.get_by_sub(sub=uuid4().hex) - assert "GRUser not found" in str(cm.value) - - instance = gr_user_manager.get_by_sub(sub=gr_user.sub) - assert isinstance(instance, GRUser) - assert instance.id == gr_user.id + assert instance.email == gr_user.email - def test_get_by_sub_or_create( - self, gr_user: GRUser, gr_user_manager: GRUserManager + def test_get_by_email( + self, + gr_user_factory: Callable[..., GRUser], + gr_user_manager: GRUserManager, ): - sub = f"{uuid4().hex}-{uuid4().hex}" + email = f"{uuid4().hex}@example.com" + gr_user = gr_user_factory(email=email) - with pytest.raises(expected_exception=ValueError) as cm: - gr_user_manager.get_by_sub(sub=sub) - assert "GRUser not found" in str(cm.value) + with pytest.raises(expected_exception=ValueError, match="GRUser not found"): + gr_user_manager.get_by_email(email="missing@example.com") - instance = gr_user_manager.get_by_sub_or_create(sub=sub) + instance = gr_user_manager.get_by_email(email=email) assert isinstance(instance, GRUser) - assert instance.sub == sub + assert instance.id == gr_user.id def test_get_all( self, gr_user_factory: Callable[..., GRUser], gr_user_manager: GRUserManager @@ -70,21 +62,10 @@ class TestGRUserManager: assert isinstance(res, list) assert res == [] - def test_list_product_uuids( - self, - caplog, - gr_user: GRUser, - gr_user_manager: GRUserManager, - thl_web_rr: PostgresConfig, - ): - with caplog.at_level(logging.WARNING): - gr_user_manager.list_product_uuids(user=gr_user, thl_pg_config=thl_web_rr) - assert "prefetch not run" in caplog.text - class TestGRTokenManager: - def test_create(self, gr_user: GRUser, gr_token_manager: GRTokenManager): + assert gr_user.id is not None assert gr_token_manager.create(user_id=gr_user.id) is None token = gr_token_manager.get_by_user_id(user_id=gr_user.id) @@ -92,6 +73,7 @@ class TestGRTokenManager: assert gr_user.id == token.user_id def test_get_by_user_id(self, gr_user: GRUser, gr_token_manager: GRTokenManager): + assert gr_user.id is not None assert gr_token_manager.create(user_id=gr_user.id) is None token = gr_token_manager.get_by_user_id(user_id=gr_user.id) @@ -105,7 +87,7 @@ class TestGRTokenManager: gr_db: PostgresConfig, gr_redis_config: RedisConfig, ): - + assert gr_user.id is not None gr_token_manager.create(user_id=gr_user.id) token: GRToken | None = gr_token_manager.get_by_user_id(user_id=gr_user.id) @@ -120,6 +102,7 @@ class TestGRTokenManager: gr_user: GRUser, gr_token_manager: GRTokenManager, ): + assert gr_user.id is not None gr_token_manager.create(user_id=gr_user.id) token = gr_token_manager.get_by_user_id(user_id=gr_user.id) assert isinstance(token, GRToken) @@ -131,25 +114,3 @@ class TestGRTokenManager: with pytest.raises(expected_exception=Exception) as cm: gr_token_manager.get_by_key(api_key=uuid4().hex) assert "No GRUser with token of " in str(cm.value) - - @pytest.mark.skip(reason="no idea how to actually test this...") - def test_get_by_sso_key( - self, - gr_team_manager: TeamManager, - gr_redis_config: RedisConfig, - ): - - api_key = "..." - jwks = { - # ... - } - - instance = gr_team_manager.get_by_key( - api_key=api_key, - jwks=jwks, - audience="...", - issuer=SSO_ISSUER, - gr_redis_config=gr_redis_config, - ) - - assert isinstance(instance, GRToken) diff --git a/tests/managers/gr/test_team.py b/tests/managers/gr/test_team.py index 689c4be..6c38a49 100644 --- a/tests/managers/gr/test_team.py +++ b/tests/managers/gr/test_team.py @@ -11,13 +11,13 @@ if TYPE_CHECKING: from generalresearch.managers.gr.authentication import GRUserManager from generalresearch.managers.gr.team import MembershipManager, TeamManager from generalresearch.models.gr.authentication import GRUser + from generalresearch.models.gr.business import Business from generalresearch.models.thl.product import Product from generalresearch.pg_helper import PostgresConfig from generalresearch.redis_helper import RedisConfig class TestMembershipManager: - def test_init( self, gr_membership_manager: MembershipManager, gr_db: PostgresConfig ): @@ -25,7 +25,6 @@ class TestMembershipManager: class TestTeamManager: - def test_init(self, gr_team_manager: TeamManager, gr_db: PostgresConfig): assert gr_team_manager.pg_config == gr_db @@ -81,13 +80,11 @@ class TestTeamManager: gr_team_manager: TeamManager, gr_user_manager: GRUserManager, gr_user_factory: Callable[..., GRUser], + gr_membership_factory: Callable[..., Membership], ): user: GRUser = gr_user_factory() - - instance = gr_team_manager.add_user( - gr_user_manager=gr_user_manager, team=gr_team, gr_user=user - ) + instance = gr_membership_factory(gr_team=gr_team, gr_user=user) assert isinstance(instance, Membership) # assert team.gr_users is None @@ -122,11 +119,10 @@ class TestTeamManager: gr_user_factory: Callable[..., GRUser], gr_team_manager: TeamManager, gr_user_manager: GRUserManager, + gr_membership_factory: Callable[..., Membership], ): user: GRUser = gr_user_factory() - gr_team_manager.add_user( - gr_user_manager=gr_user_manager, team=gr_team, gr_user=user - ) + gr_membership_factory(gr_team=gr_team, gr_user=user) res = gr_team_manager.get_by_user(gr_user=user) assert isinstance(res, list) @@ -135,6 +131,35 @@ class TestTeamManager: assert isinstance(instance, Team) assert instance.uuid == gr_team.uuid + def test_filter_includes_relationship_counts( + self, + gr_team_factory: Callable[..., Team], + gr_team_manager: TeamManager, + gr_user_factory: Callable[..., GRUser], + gr_membership_factory: Callable[..., Membership], + gr_business_factory: Callable[..., Business], + ): + team = gr_team_factory() + other_team = gr_team_factory() + user = gr_user_factory() + other_user = gr_user_factory() + business = gr_business_factory() + + gr_membership_factory(gr_team=team, gr_user=user) + gr_membership_factory(gr_team=team, gr_user=other_user) + gr_team_manager.add_business(team_id=team.id, business_id=business.id) + + assert gr_team_manager.filter(team_id=other_team.id) == [other_team] + + teams = gr_team_manager.filter( + team_uuid=team.uuid, + gr_user_id=user.id, + ) + assert len(teams) == 1 + assert teams[0].id == team.id + assert teams[0].business_count == 1 + assert teams[0].membership_count == 2 + def test_get_by_user_duplicates( self, gr_user: GRUser, -- cgit v1.2.3