aboutsummaryrefslogtreecommitdiff
path: root/tests/managers/thl/test_user_manager
diff options
context:
space:
mode:
Diffstat (limited to 'tests/managers/thl/test_user_manager')
-rw-r--r--tests/managers/thl/test_user_manager/test_base.py15
-rw-r--r--tests/managers/thl/test_user_manager/test_mysql.py27
-rw-r--r--tests/managers/thl/test_user_manager/test_redis.py46
-rw-r--r--tests/managers/thl/test_user_manager/test_user_fetch.py12
-rw-r--r--tests/managers/thl/test_user_manager/test_user_metadata.py33
5 files changed, 92 insertions, 41 deletions
diff --git a/tests/managers/thl/test_user_manager/test_base.py b/tests/managers/thl/test_user_manager/test_base.py
index 6b259ff..5822207 100644
--- a/tests/managers/thl/test_user_manager/test_base.py
+++ b/tests/managers/thl/test_user_manager/test_base.py
@@ -10,14 +10,18 @@ from generalresearch.managers.thl.user_manager import (
UserCreateNotAllowedError,
get_bp_user_create_limit_hourly,
)
+from generalresearch.managers.thl.user_manager.mysql_user_manager import (
+ MysqlUserManager,
+)
from generalresearch.managers.thl.user_manager.rate_limit import (
RateLimitItemPerHourConstantKey,
+ UserManagerLimiter,
)
from generalresearch.managers.thl.user_manager.user_manager import (
UserManager,
)
from generalresearch.managers.thl.userhealth import AuditLogManager
-from generalresearch.models.thl.product import product: Product, UserCreateConfig
+from generalresearch.models.thl.product import Product, UserCreateConfig, product
from generalresearch.models.thl.user import User
from generalresearch.pg_helper import PostgresConfig
@@ -86,10 +90,11 @@ class TestUserManager:
class TestBlockUserManager:
- def test_block_user(self, product: product: Product, user_manager: UserManager):
+ def test_block_user(self, product: Product, user_manager: UserManager):
product_user_id = f"user-{uuid4().hex[:10]}"
# mysql_user_manager to skip user creation limit check
+ assert isinstance(user_manager.mysql_user_manager, MysqlUserManager)
user: User = user_manager.mysql_user_manager.create_user(
product_id=product.id, product_user_id=product_user_id
)
@@ -113,11 +118,12 @@ class TestBlockUserManager:
assert user.blocked
def test_block_user_whitelist(
- self, product: product: Product, user_manager: UserManager, thl_web_rw: PostgresConfig
+ self, product: Product, user_manager: UserManager, thl_web_rw: PostgresConfig
):
product_user_id = f"user-{uuid4().hex[:10]}"
# mysql_user_manager to skip user creation limit check
+ assert isinstance(user_manager.mysql_user_manager, MysqlUserManager)
user: User = user_manager.mysql_user_manager.create_user(
product_id=product.id, product_user_id=product_user_id
)
@@ -154,6 +160,7 @@ class TestCreateUserManager:
product_user_id = f"user-{uuid4().hex[:10]}"
+ assert isinstance(user_manager.mysql_user_manager, MysqlUserManager)
user: User = user_manager.mysql_user_manager.create_user(
product_id=product.id, product_user_id=product_user_id
)
@@ -200,6 +207,7 @@ class TestCreateUserManager:
product_user_id = f"user-{uuid4().hex[:10]}"
rand_msg = f"log-{uuid4().hex}"
+ assert isinstance(user_manager.mysql_user_manager, MysqlUserManager)
with caplog.at_level(logging.INFO):
logger.info(rand_msg)
user1 = user_manager.mysql_user_manager.create_user(
@@ -264,6 +272,7 @@ class TestCreateUserManager:
assert key == f"LIMITER/thl-grpc/allow_user_create/{instance.id}"
# make sure we clear the key or subsequent tests will fail
+ assert isinstance(user_manager.user_manager_limiter, UserManagerLimiter)
user_manager.user_manager_limiter.storage.clear(key=key)
n = 0
diff --git a/tests/managers/thl/test_user_manager/test_mysql.py b/tests/managers/thl/test_user_manager/test_mysql.py
index d414a13..e6f43ef 100644
--- a/tests/managers/thl/test_user_manager/test_mysql.py
+++ b/tests/managers/thl/test_user_manager/test_mysql.py
@@ -1,24 +1,25 @@
+from __future__ import annotations
+
+from generalresearch.managers.thl.user_manager.mysql_user_manager import (
+ MysqlUserManager,
+)
+from generalresearch.models.thl.user import User
class TestUserManagerMysqlNew:
- def test_get_notset(self, user_manager):
- assert (
- user_manager.mysql_user_manager.get_user_from_mysql(user_id=-3105) is None
- )
+ def test_get_notset(self, mysql_user_manager: MysqlUserManager):
+ assert mysql_user_manager.get_user_from_mysql(user_id=-3105) is None
- def test_get_user_id(self, user, user_manager):
- assert (
- user_manager.mysql_user_manager.get_user_from_mysql(user_id=user.user_id)
- == user
- )
+ def test_get_user_id(self, user: User, mysql_user_manager: MysqlUserManager):
+ assert mysql_user_manager.get_user_from_mysql(user_id=user.user_id) == user
- def test_get_uuid(self, user, user_manager):
- u = user_manager.mysql_user_manager.get_user_from_mysql(user_uuid=user.uuid)
+ def test_get_uuid(self, user: User, mysql_user_manager: MysqlUserManager):
+ u = mysql_user_manager.get_user_from_mysql(user_uuid=user.uuid)
assert u == user
- def test_get_ubp(self, user, user_manager):
- u = user_manager.mysql_user_manager.get_user_from_mysql(
+ def test_get_ubp(self, user: User, mysql_user_manager: MysqlUserManager):
+ u = mysql_user_manager.get_user_from_mysql(
product_id=user.product_id, product_user_id=user.product_user_id
)
assert u == user
diff --git a/tests/managers/thl/test_user_manager/test_redis.py b/tests/managers/thl/test_user_manager/test_redis.py
index 0731438..04071ee 100644
--- a/tests/managers/thl/test_user_manager/test_redis.py
+++ b/tests/managers/thl/test_user_manager/test_redis.py
@@ -1,29 +1,37 @@
+from __future__ import annotations
+
import pytest
+from generalresearch.config import GRLBaseSettings
from generalresearch.managers.base import Permission
+from generalresearch.managers.thl.user_manager.redis_user_manager import (
+ RedisUserManager,
+)
+from generalresearch.models.thl.user import User
+from generalresearch.pg_helper import PostgresConfig
class TestUserManagerRedis:
- def test_get_notset(self, user_manager, user):
- user_manager.clear_user_inmemory_cache(user=user)
- assert user_manager.redis_user_manager.get_user(user_id=user.user_id) is None
+ def test_get_notset(self, redis_user_manager: RedisUserManager, user: User):
+ redis_user_manager.clear_user_inmemory_cache(user=user)
+ assert redis_user_manager.get_user(user_id=user.user_id) is None
- def test_get_user_id(self, user_manager, user):
- user_manager.redis_user_manager.set_user(user=user)
+ def test_get_user_id(self, redis_user_manager: RedisUserManager, user: User):
+ redis_user_manager.set_user(user=user)
- assert user_manager.redis_user_manager.get_user(user_id=user.user_id) == user
+ assert redis_user_manager.get_user(user_id=user.user_id) == user
- def test_get_uuid(self, user_manager, user):
- user_manager.redis_user_manager.set_user(user=user)
+ def test_get_uuid(self, redis_user_manager: RedisUserManager, user: User):
+ redis_user_manager.set_user(user=user)
- assert user_manager.redis_user_manager.get_user(user_uuid=user.uuid) == user
+ assert redis_user_manager.get_user(user_uuid=user.uuid) == user
- def test_get_ubp(self, user_manager, user):
- user_manager.redis_user_manager.set_user(user=user)
+ def test_get_ubp(self, redis_user_manager: RedisUserManager, user: User):
+ redis_user_manager.set_user(user=user)
assert (
- user_manager.redis_user_manager.get_user(
+ redis_user_manager.get_user(
product_id=user.product_id, product_user_id=user.product_user_id
)
== user
@@ -34,7 +42,13 @@ class TestUserManagerRedis:
# I mean, the sets are implicitly tested by the get tests above. no point
pass
- def test_get_with_cache_prefix(self, settings, user, thl_web_rw, thl_web_rr):
+ def test_get_with_cache_prefix(
+ self,
+ settings: GRLBaseSettings,
+ user: User,
+ thl_web_rw: PostgresConfig,
+ thl_web_rr: PostgresConfig,
+ ):
"""
Confirm the prefix functionality is working; we do this so it
is easier to migrate between any potentially breaking versions
@@ -47,7 +61,7 @@ class TestUserManagerRedis:
um1 = UserManager(
pg_config=thl_web_rw,
- pg_config_rr=thl_web_rr: PostgresConfig,
+ pg_config_rr=thl_web_rr,
sql_permissions=[Permission.UPDATE, Permission.CREATE],
redis=settings.redis,
redis_timeout=settings.redis_timeout,
@@ -55,7 +69,7 @@ class TestUserManagerRedis:
um2 = UserManager(
pg_config=thl_web_rw,
- pg_config_rr=thl_web_rr: PostgresConfig,
+ pg_config_rr=thl_web_rr,
sql_permissions=[Permission.UPDATE, Permission.CREATE],
redis=settings.redis,
redis_timeout=settings.redis_timeout,
@@ -69,9 +83,11 @@ class TestUserManagerRedis:
product_id=user.product_id, product_user_id=user.product_user_id
)
+ assert isinstance(um1.redis_user_manager, RedisUserManager)
res1 = um1.redis_user_manager.client.get(f"user-lookup:user_id:{user.user_id}")
assert res1 is not None
+ assert isinstance(um2.redis_user_manager, RedisUserManager)
res2 = um2.redis_user_manager.client.get(
f"user-lookup-v2:user_id:{user.user_id}"
)
diff --git a/tests/managers/thl/test_user_manager/test_user_fetch.py b/tests/managers/thl/test_user_manager/test_user_fetch.py
index 5c608b3..87d010a 100644
--- a/tests/managers/thl/test_user_manager/test_user_fetch.py
+++ b/tests/managers/thl/test_user_manager/test_user_fetch.py
@@ -1,14 +1,22 @@
+from __future__ import annotations
+
+from collections.abc import Callable
from uuid import uuid4
import pytest
+from generalresearch.managers.thl.user_manager.user_manager import UserManager
+from generalresearch.models.thl.product import Product
from generalresearch.models.thl.user import User
class TestUserManagerFetch:
def test_fetch(
- self, user_factory: Callable[..., User], product: Product, user_manager
+ self,
+ user_factory: Callable[..., User],
+ product: Product,
+ user_manager: UserManager,
):
user1: User = user_factory(product=product)
user2: User = user_factory(product=product)
@@ -31,7 +39,7 @@ class TestUserManagerFetch:
res = user_manager.fetch(user_uuids=[uuid4().hex])
assert len(res) == 0
- def test_fetch_invalid(self, user_manager):
+ def test_fetch_invalid(self, user_manager: UserManager):
with pytest.raises(AssertionError) as e:
user_manager.fetch(user_uuids=[], user_ids=None)
assert "Must pass ONE of user_ids, user_uuids" in str(e.value)
diff --git a/tests/managers/thl/test_user_manager/test_user_metadata.py b/tests/managers/thl/test_user_manager/test_user_metadata.py
index 0b99afe..670e38a 100644
--- a/tests/managers/thl/test_user_manager/test_user_metadata.py
+++ b/tests/managers/thl/test_user_manager/test_user_metadata.py
@@ -1,21 +1,35 @@
+from __future__ import annotations
+
+from collections.abc import Callable
from uuid import uuid4
import pytest
+from generalresearch.managers.thl.user_manager.user_metadata_manager import (
+ UserMetadataManager,
+)
+from generalresearch.models.thl.product import Product
+from generalresearch.models.thl.user import User
from generalresearch.models.thl.user_profile import UserMetadata
class TestUserMetadataManager:
- def test_get_notset(self, user, user_manager, user_metadata_manager):
+ def test_get_notset(
+ self,
+ user: User,
+ user_metadata_manager: UserMetadataManager,
+ ):
# The row in the db won't exist. It just returns the default obj with everything None (except for the user_id)
um1 = user_metadata_manager.get(user_id=user.user_id)
assert um1 == UserMetadata(user_id=user.user_id)
def test_create(
- self, user_factory: Callable[..., User], product: Product, user_metadata_manager
+ self,
+ user_factory: Callable[..., User],
+ product: Product,
+ user_metadata_manager: UserMetadataManager,
):
- from generalresearch.models.thl.user import User
u1: User = user_factory(product=product)
@@ -29,9 +43,11 @@ class TestUserMetadataManager:
assert um == um2
def test_create_no_email(
- self, product: Product, user_factory: Callable[..., User], user_metadata_manager
+ self,
+ product: Product,
+ user_factory: Callable[..., User],
+ user_metadata_manager: UserMetadataManager,
):
- from generalresearch.models.thl.user import User
u1: User = user_factory(product=product)
um = UserMetadata(user_id=u1.user_id)
@@ -42,9 +58,11 @@ class TestUserMetadataManager:
assert um == um2
def test_update(
- self, product: Product, user_factory: Callable[..., User], user_metadata_manager
+ self,
+ product: Product,
+ user_factory: Callable[..., User],
+ user_metadata_manager: UserMetadataManager,
):
- from generalresearch.models.thl.user import User
u: User = user_factory(product=product)
@@ -66,7 +84,6 @@ class TestUserMetadataManager:
def test_filter(
self, user_factory: Callable[..., User], product: Product, user_metadata_manager
):
- from generalresearch.models.thl.user import User
user1: User = user_factory(product=product)
user2: User = user_factory(product=product)