Ejemplo n.º 1
0
def test_delete_service_and_associated_objects(notify_db_session):
    user = create_user()
    organisation = create_organisation()
    service = create_service(user=user, service_permissions=None, organisation=organisation)
    create_user_code(user=user, code='somecode', code_type='email')
    create_user_code(user=user, code='somecode', code_type='sms')
    template = create_template(service=service)
    api_key = create_api_key(service=service)
    create_notification(template=template, api_key=api_key)
    create_invited_user(service=service)
    user.organisations = [organisation]

    assert ServicePermission.query.count() == len((
        SMS_TYPE, EMAIL_TYPE, LETTER_TYPE, INTERNATIONAL_SMS_TYPE, UPLOAD_LETTERS,
    ))

    delete_service_and_all_associated_db_objects(service)
    assert VerifyCode.query.count() == 0
    assert ApiKey.query.count() == 0
    assert ApiKey.get_history_model().query.count() == 0
    assert Template.query.count() == 0
    assert TemplateHistory.query.count() == 0
    assert Job.query.count() == 0
    assert Notification.query.count() == 0
    assert Permission.query.count() == 0
    assert User.query.count() == 0
    assert InvitedUser.query.count() == 0
    assert Service.query.count() == 0
    assert Service.get_history_model().query.count() == 0
    assert ServicePermission.query.count() == 0
    # the organisation hasn't been deleted
    assert Organisation.query.count() == 1
Ejemplo n.º 2
0
def purge_functional_test_data(user_email_prefix):
    """
    Remove non-seeded functional test data

    users, services, etc. Give an email prefix. Probably "notify-tests-preview".
    """
    users = User.query.filter(
        User.email_address.like("{}%".format(user_email_prefix))).all()
    for usr in users:
        # Make sure the full email includes a uuid in it
        # Just in case someone decides to use a similar email address.
        try:
            uuid.UUID(usr.email_address.split("@")[0].split('+')[1])
        except ValueError:
            print(
                "Skipping {} as the user email doesn't contain a UUID.".format(
                    usr.email_address))
        else:
            services = dao_fetch_all_services_by_user(usr.id)
            if services:
                for service in services:
                    delete_service_and_all_associated_db_objects(service)
            else:
                delete_user_verify_codes(usr)
                delete_model_user(usr)
Ejemplo n.º 3
0
def test_delete_service_and_associated_objects(notify_db_session):
    user = create_user()
    service = create_service(user=user, service_permissions=None)
    create_user_code(user=user, code="somecode", code_type="email")
    create_user_code(user=user, code="somecode", code_type="sms")
    template = create_template(service=service)
    api_key = create_api_key(service=service)
    create_notification(template=template, api_key=api_key)
    create_invited_user(service=service)

    assert ServicePermission.query.count() == len((
        SMS_TYPE,
        EMAIL_TYPE,
        INTERNATIONAL_SMS_TYPE,
    ))

    delete_service_and_all_associated_db_objects(service)
    assert VerifyCode.query.count() == 0
    assert ApiKey.query.count() == 0
    assert ApiKey.get_history_model().query.count() == 0
    assert Template.query.count() == 0
    assert TemplateHistory.query.count() == 0
    assert Job.query.count() == 0
    assert Notification.query.count() == 0
    assert Permission.query.count() == 0
    assert User.query.count() == 0
    assert InvitedUser.query.count() == 0
    assert Service.query.count() == 0
    assert Service.get_history_model().query.count() == 0
    assert ServicePermission.query.count() == 0
def test_delete_service_and_associated_objects(
    notify_db,
    notify_db_session,
    sample_user,
    sample_service,
    sample_email_code,
    sample_sms_code,
    sample_template,
    sample_email_template,
    sample_api_key,
    sample_job,
    sample_notification,
    sample_invited_user,
    sample_permission,
    sample_provider_statistics,
):
    delete_service_and_all_associated_db_objects(sample_service)
    assert NotificationStatistics.query.count() == 0
    assert TemplateStatistics.query.count() == 0
    assert ProviderStatistics.query.count() == 0
    assert VerifyCode.query.count() == 0
    assert ApiKey.query.count() == 0
    assert ApiKey.get_history_model().query.count() == 0
    assert Template.query.count() == 0
    assert TemplateHistory.query.count() == 0
    assert Job.query.count() == 0
    assert Notification.query.count() == 0
    assert Permission.query.count() == 0
    assert User.query.count() == 0
    assert InvitedUser.query.count() == 0
    assert Service.query.count() == 0
    assert Service.get_history_model().query.count() == 0
Ejemplo n.º 5
0
 def run(self, service_name_prefix=None, user_email_prefix=None):
     if user_email_prefix:
         users = User.query.filter(User.email_address.like("{}%".format(user_email_prefix))).all()
         for usr in users:
             # Make sure the full email includes a uuid in it
             # Just in case someone decides to use a similar email address.
             try:
                 uuid.UUID(usr.email_address.split("@")[0].split('+')[1])
             except ValueError:
                 print("Skipping {} as the user email doesn't contain a UUID.".format(usr.email_address))
             else:
                 services = dao_fetch_all_services_by_user(usr.id)
                 if services:
                     for service in services:
                         delete_service_and_all_associated_db_objects(service)
                 else:
                     delete_user_verify_codes(usr)
                     delete_model_user(usr)
Ejemplo n.º 6
0
def purge_functional_test_data(user_email_prefix):
    """
    Remove non-seeded functional test data

    users, services, etc. Give an email prefix. Probably "notify-tests-preview".
    """
    users = User.query.filter(
        User.email_address.like("{}%".format(user_email_prefix))).all()
    for usr in users:
        # Make sure the full email includes a uuid in it
        # Just in case someone decides to use a similar email address.
        try:
            uuid.UUID(usr.email_address.split("@")[0].split('+')[1])
        except ValueError:
            print(
                "Skipping {} as the user email doesn't contain a UUID.".format(
                    usr.email_address))
        else:
            services = dao_fetch_all_services_by_user(usr.id)
            if services:
                print(f"Deleting user {usr.id} which is part of services")
                for service in services:
                    delete_service_and_all_associated_db_objects(service)
            else:
                services_created_by_this_user = dao_fetch_all_services_created_by_user(
                    usr.id)
                if services_created_by_this_user:
                    # user is not part of any services but may still have been the one to create the service
                    # sometimes things get in this state if the tests fail half way through
                    # Remove the service they created (but are not a part of) so we can then remove the user
                    print(f"Deleting services created by {usr.id}")
                    for service in services_created_by_this_user:
                        delete_service_and_all_associated_db_objects(service)

                print(
                    f"Deleting user {usr.id} which is not part of any services"
                )
                delete_user_verify_codes(usr)
                delete_model_user(usr)