From 7ee741b91c7c189db912cf83d7f9e40197d69d8c Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Wed, 30 Oct 2024 11:15:08 -0700 Subject: [PATCH] fix more tests --- .ds.baseline | 6 +-- tests/app/conftest.py | 29 +++++++++----- ...t_notification_dao_delete_notifications.py | 13 +++--- tests/app/db.py | 19 ++++++--- tests/app/service/test_rest.py | 40 +++++++++++++------ tests/app/template/test_rest.py | 5 ++- 6 files changed, 75 insertions(+), 37 deletions(-) diff --git a/.ds.baseline b/.ds.baseline index dd916c550..41a911ddd 100644 --- a/.ds.baseline +++ b/.ds.baseline @@ -267,7 +267,7 @@ "filename": "tests/app/db.py", "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "is_verified": false, - "line_number": 87, + "line_number": 90, "is_secret": false } ], @@ -305,7 +305,7 @@ "filename": "tests/app/service/test_rest.py", "hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "is_verified": false, - "line_number": 1275, + "line_number": 1284, "is_secret": false } ], @@ -384,5 +384,5 @@ } ] }, - "generated_at": "2024-10-28T20:26:27Z" + "generated_at": "2024-10-30T18:15:03Z" } diff --git a/tests/app/conftest.py b/tests/app/conftest.py index 25e9f3f08..38e2e80d2 100644 --- a/tests/app/conftest.py +++ b/tests/app/conftest.py @@ -6,6 +6,7 @@ import pytest import pytz import requests_mock from flask import current_app, url_for +from sqlalchemy import select from sqlalchemy.orm.session import make_transient from app import db @@ -100,9 +101,10 @@ def create_sample_notification( if job is None and api_key is None: # we didn't specify in test - lets create it - api_key = ApiKey.query.filter( + stmt = select(ApiKey).where( ApiKey.service == template.service, ApiKey.key_type == key_type - ).first() + ) + api_key = db.session.execute(stmt).scalars().first() if not api_key: api_key = create_api_key(template.service, key_type=key_type) @@ -227,7 +229,8 @@ def sample_service(sample_user): "email_from": email_from, "created_by": sample_user, } - service = Service.query.filter_by(name=service_name).first() + stmt = select(Service).where(Service.name == service_name) + service = db.session.execute(stmt).scalars().first() if not service: service = Service(**data) dao_create_service(service, sample_user, service_permissions=None) @@ -442,9 +445,10 @@ def sample_notification(notify_db_session): service = create_service(check_if_service_exists=True) template = create_template(service=service) - api_key = ApiKey.query.filter( + stmt = select(ApiKey).where( ApiKey.service == template.service, ApiKey.key_type == KeyType.NORMAL - ).first() + ) + api_key = db.session.execute(stmt).scalars().first() if not api_key: api_key = create_api_key(template.service, key_type=KeyType.NORMAL) @@ -595,9 +599,12 @@ def sample_user_service_permission(sample_user): permission = PermissionType.MANAGE_SETTINGS data = {"user": sample_user, "service": service, "permission": permission} - p_model = Permission.query.filter_by( - user=sample_user, service=service, permission=permission - ).first() + stmt = select(Permission).where( + Permission.user == sample_user, + Permission.service == service, + Permission.permission == permission, + ) + p_model = db.session.execute(stmt).scalars().first() if not p_model: p_model = Permission(**data) db.session.add(p_model) @@ -612,12 +619,14 @@ def fake_uuid(): @pytest.fixture(scope="function") def ses_provider(): - return ProviderDetails.query.filter_by(identifier="ses").one() + stmt = select(ProviderDetails).where(ProviderDetails.identifier == "ses") + return db.session.execute(stmt).scalars().one() @pytest.fixture(scope="function") def sns_provider(): - return ProviderDetails.query.filter_by(identifier="sns").one() + stmt = select(ProviderDetails).where(ProviderDetails.identifier == "sns") + return db.session.execute(stmt).scalars().one() @pytest.fixture(scope="function") diff --git a/tests/app/dao/notification_dao/test_notification_dao_delete_notifications.py b/tests/app/dao/notification_dao/test_notification_dao_delete_notifications.py index e22721216..45d8958d1 100644 --- a/tests/app/dao/notification_dao/test_notification_dao_delete_notifications.py +++ b/tests/app/dao/notification_dao/test_notification_dao_delete_notifications.py @@ -2,7 +2,9 @@ import uuid from datetime import datetime, timedelta from freezegun import freeze_time +from sqlalchemy import func, select +from app import db from app.dao.notifications_dao import ( insert_notification_history_delete_notifications, move_notifications_to_notification_history, @@ -172,12 +174,13 @@ def test_move_notifications_just_deletes_test_key_notifications(sample_template) assert Notification.query.count() == 0 assert NotificationHistory.query.count() == 2 - assert ( - NotificationHistory.query.filter( - NotificationHistory.key_type == KeyType.TEST - ).count() - == 0 + stmt = ( + select(func.count()) + .select_from(NotificationHistory) + .where(NotificationHistory.key_type == KeyType.TEST) ) + count = db.session.execute(stmt).scalar() or 0 + assert count == 0 @freeze_time("2020-03-20 14:00") diff --git a/tests/app/db.py b/tests/app/db.py index b62f99b4e..07b395295 100644 --- a/tests/app/db.py +++ b/tests/app/db.py @@ -2,6 +2,8 @@ import random import uuid from datetime import datetime, timedelta +from sqlalchemy import select + from app import db from app.dao import fact_processing_time_dao from app.dao.email_branding_dao import dao_create_email_branding @@ -90,7 +92,8 @@ def create_user( "state": state, "platform_admin": platform_admin, } - user = User.query.filter_by(email_address=email).first() + stmt = select(User).where(User.email_address == email) + user = db.session.execute(stmt).scalars().first() if not user: user = User(**data) save_model_user(user, validated_email_access=True) @@ -130,7 +133,8 @@ def create_service( billing_reference=None, ): if check_if_service_exists: - service = Service.query.filter_by(name=service_name).first() + stmt = select(Service).where(Service.name == service_name) + service = db.session.execute(stmt).scalars().first() if (not check_if_service_exists) or (check_if_service_exists and not service): service = Service( name=service_name, @@ -175,7 +179,8 @@ def create_service( def create_service_with_inbound_number(inbound_number="1234567", *args, **kwargs): service = create_service(*args, **kwargs) - sms_sender = ServiceSmsSender.query.filter_by(service_id=service.id).first() + stmt = select(ServiceSmsSender).where(ServiceSmsSender.service_id == service.id) + sms_sender = db.session.execute(stmt).scalars().first() inbound = create_inbound_number(number=inbound_number, service_id=service.id) update_existing_sms_sender_with_inbound_number( service_sms_sender=sms_sender, @@ -189,7 +194,8 @@ def create_service_with_inbound_number(inbound_number="1234567", *args, **kwargs def create_service_with_defined_sms_sender(sms_sender_value="1234567", *args, **kwargs): service = create_service(*args, **kwargs) - sms_sender = ServiceSmsSender.query.filter_by(service_id=service.id).first() + stmt = select(ServiceSmsSender).where(ServiceSmsSender.service_id == service.id) + sms_sender = db.session.execute(stmt).scalars().first() dao_update_service_sms_sender( service_id=service.id, service_sms_sender_id=sms_sender.id, @@ -286,9 +292,10 @@ def create_notification( if not one_off and (job is None and api_key is None): # we did not specify in test - lets create it - api_key = ApiKey.query.filter( + stmt = select(ApiKey).where( ApiKey.service == template.service, ApiKey.key_type == key_type - ).first() + ) + api_key = db.session.execute(stmt).scalars().first() if not api_key: api_key = create_api_key(template.service, key_type=key_type) diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index ecec87ec1..1a48014ec 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -6,8 +6,10 @@ from unittest.mock import ANY import pytest from flask import current_app, url_for from freezegun import freeze_time +from sqlalchemy import func, select from sqlalchemy.exc import SQLAlchemyError +from app import db from app.dao.organization_dao import dao_add_service_to_organization from app.dao.service_sms_sender_dao import dao_get_sms_senders_by_service_id from app.dao.service_user_dao import dao_get_service_user @@ -424,9 +426,8 @@ def test_create_service( assert json_resp["data"]["name"] == "created service" - service_sms_senders = ServiceSmsSender.query.filter_by( - service_id=service_db.id - ).all() + stmt = select(ServiceSmsSender).where(ServiceSmsSender.service_id == service_db.id) + service_sms_senders = db.session.execute(stmt).scalars().all() assert len(service_sms_senders) == 1 assert service_sms_senders[0].sms_sender == current_app.config["FROM_NUMBER"] @@ -530,7 +531,13 @@ def test_create_service_should_raise_exception_and_not_create_service_if_annual_ annual_billing = AnnualBilling.query.all() assert len(annual_billing) == 0 - assert len(Service.query.filter(Service.name == "created service").all()) == 0 + stmt = ( + select(func.count()) + .select_from(Service) + .where(Service.name == "created service") + ) + count = db.session.execute(stmt).scalar() or 0 + assert count == 0 def test_create_service_inherits_branding_from_organization( @@ -933,7 +940,8 @@ def test_update_service_flags_will_remove_service_permissions( assert resp.status_code == 200 assert ServicePermissionType.INTERNATIONAL_SMS not in result["data"]["permissions"] - permissions = ServicePermission.query.filter_by(service_id=service.id).all() + stmt = select(ServicePermission).where(ServicePermission.service_id == service.id) + permissions = db.session.execute(stmt).scalars().all() assert {p.permission for p in permissions} == { ServicePermissionType.SMS, ServicePermissionType.EMAIL, @@ -1004,9 +1012,10 @@ def test_add_service_permission_will_add_permission( headers=[("Content-Type", "application/json"), auth_header], ) - permissions = ServicePermission.query.filter_by( - service_id=service_with_no_permissions.id - ).all() + stmt = select(ServicePermission).where( + ServicePermission.service_id == service_with_no_permissions.id + ) + permissions = db.session.execute(stmt).scalars().all() assert resp.status_code == 200 assert [p.permission for p in permissions] == [permission_to_add] @@ -3318,8 +3327,13 @@ def test_add_service_sms_sender_when_it_is_an_inbound_number_inserts_new_sms_sen assert resp_json["inbound_number_id"] == str(inbound_number.id) assert resp_json["is_default"] - senders = ServiceSmsSender.query.filter_by(service_id=service.id).all() - assert len(senders) == 3 + stmt = ( + select(func.count()) + .select_from(ServiceSmsSender) + .where(ServiceSmsSender.service_id == service.id) + ) + senders = db.session.execute(stmt).scalar() or 0 + assert senders == 3 def test_add_service_sms_sender_switches_default(client, notify_db_session): @@ -3341,7 +3355,8 @@ def test_add_service_sms_sender_switches_default(client, notify_db_session): assert resp_json["sms_sender"] == "second" assert not resp_json["inbound_number_id"] assert resp_json["is_default"] - sms_senders = ServiceSmsSender.query.filter_by(sms_sender="first").first() + stmt = select(ServiceSmsSender).where(ServiceSmsSender.sms_sender == "first") + sms_senders = db.session.execute(stmt).scalars().first() assert not sms_senders.is_default @@ -3407,7 +3422,8 @@ def test_update_service_sms_sender_switches_default(client, notify_db_session): assert resp_json["sms_sender"] == "second" assert not resp_json["inbound_number_id"] assert resp_json["is_default"] - sms_senders = ServiceSmsSender.query.filter_by(sms_sender="first").first() + stmt = select(ServiceSmsSender).where(ServiceSmsSender.sms_sender == "first") + sms_senders = db.session.execute(stmt).scalars().first() assert not sms_senders.is_default diff --git a/tests/app/template/test_rest.py b/tests/app/template/test_rest.py index 45dfc24f9..d46627343 100644 --- a/tests/app/template/test_rest.py +++ b/tests/app/template/test_rest.py @@ -6,7 +6,9 @@ from datetime import datetime, timedelta import pytest from freezegun import freeze_time +from sqlalchemy import select +from app import db from app.dao.templates_dao import dao_get_template_by_id, dao_redact_template from app.enums import ServicePermissionType, TemplateProcessType, TemplateType from app.models import Template, TemplateHistory @@ -86,7 +88,8 @@ def test_create_a_new_template_for_a_service_adds_folder_relationship( data=data, ) assert response.status_code == 201 - template = Template.query.filter(Template.name == "my template").first() + stmt = select(Template).where(Template.name == "my template") + template = db.session.execute(stmt).scalars().first() assert template.folder == parent_folder