def test_get_all_services_for_user(service_factory, sample_user):
    service_factory.get("service 1", sample_user, email_from="service.1")
    service_factory.get("service 2", sample_user, email_from="service.2")
    service_factory.get("service 3", sample_user, email_from="service.3")
    assert len(dao_fetch_all_services_by_user(sample_user.id)) == 3
    assert dao_fetch_all_services_by_user(sample_user.id)[0].name == "service 1"
    assert dao_fetch_all_services_by_user(sample_user.id)[1].name == "service 2"
    assert dao_fetch_all_services_by_user(sample_user.id)[2].name == "service 3"
Example #2
0
def test_get_all_services_for_user(notify_db_session):
    user = create_user()
    create_service(service_name='service 1', user=user, email_from='service.1')
    create_service(service_name='service 2', user=user, email_from='service.2')
    create_service(service_name='service 3', user=user, email_from='service.3')
    assert len(dao_fetch_all_services_by_user(user.id)) == 3
    assert dao_fetch_all_services_by_user(user.id)[0].name == 'service 1'
    assert dao_fetch_all_services_by_user(user.id)[1].name == 'service 2'
    assert dao_fetch_all_services_by_user(user.id)[2].name == 'service 3'
Example #3
0
def test_get_all_services_for_user(notify_db_session):
    user = create_user()
    create_service(service_name="service 1", user=user, email_from="service.1")
    create_service(service_name="service 2", user=user, email_from="service.2")
    create_service(service_name="service 3", user=user, email_from="service.3")
    assert len(dao_fetch_all_services_by_user(user.id)) == 3
    assert dao_fetch_all_services_by_user(user.id)[0].name == "service 1"
    assert dao_fetch_all_services_by_user(user.id)[1].name == "service 2"
    assert dao_fetch_all_services_by_user(user.id)[2].name == "service 3"
Example #4
0
def get_services():
    only_active = request.args.get('only_active') == 'True'
    detailed = request.args.get('detailed') == 'True'
    user_id = request.args.get('user_id', None)
    include_from_test_key = request.args.get('include_from_test_key',
                                             'True') != 'False'

    # If start and end date are not set, we are expecting today's stats.
    today = str(datetime.utcnow().date())

    start_date = datetime.strptime(request.args.get('start_date', today),
                                   '%Y-%m-%d').date()
    end_date = datetime.strptime(request.args.get('end_date', today),
                                 '%Y-%m-%d').date()

    if user_id:
        services = dao_fetch_all_services_by_user(user_id, only_active)
    elif detailed:
        result = jsonify(data=get_detailed_services(
            start_date=start_date,
            end_date=end_date,
            only_active=only_active,
            include_from_test_key=include_from_test_key))
        return result
    else:
        services = dao_fetch_all_services(only_active)
    data = service_schema.dump(services, many=True).data
    return jsonify(data=data)
Example #5
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)
Example #6
0
def get_services():
    only_active = request.args.get("only_active") == "True"
    detailed = request.args.get("detailed") == "True"
    user_id = request.args.get("user_id", None)
    include_from_test_key = request.args.get("include_from_test_key",
                                             "True") != "False"

    # If start and end date are not set, we are expecting today's stats.
    today = str(datetime.utcnow().date())

    start_date = datetime.strptime(request.args.get("start_date", today),
                                   "%Y-%m-%d").date()
    end_date = datetime.strptime(request.args.get("end_date", today),
                                 "%Y-%m-%d").date()

    if user_id:
        services = dao_fetch_all_services_by_user(user_id, only_active)
    elif detailed:
        result = jsonify(data=get_detailed_services(
            start_date=start_date,
            end_date=end_date,
            only_active=only_active,
            include_from_test_key=include_from_test_key,
        ))
        return result
    else:
        services = dao_fetch_all_services(only_active)
    data = service_schema.dump(services, many=True).data
    return jsonify(data=data)
Example #7
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)
Example #8
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)
def test_get_all_only_services_user_has_access_to(service_factory, sample_user):
    service_factory.get("service 1", sample_user, email_from="service.1")
    service_factory.get("service 2", sample_user, email_from="service.2")
    service_3 = service_factory.get("service 3", sample_user, email_from="service.3")
    new_user = User(
        name="Test User",
        email_address="*****@*****.**",
        password="******",
        mobile_number="+447700900986",
    )
    save_model_user(new_user)
    dao_add_user_to_service(service_3, new_user)
    assert len(dao_fetch_all_services_by_user(sample_user.id)) == 3
    assert dao_fetch_all_services_by_user(sample_user.id)[0].name == "service 1"
    assert dao_fetch_all_services_by_user(sample_user.id)[1].name == "service 2"
    assert dao_fetch_all_services_by_user(sample_user.id)[2].name == "service 3"
    assert len(dao_fetch_all_services_by_user(new_user.id)) == 1
    assert dao_fetch_all_services_by_user(new_user.id)[0].name == "service 3"
Example #10
0
def test_get_all_user_services_only_returns_services_user_has_access_to(notify_db_session):
    user = create_user()
    create_service(service_name='service 1', user=user, email_from='service.1')
    create_service(service_name='service 2', user=user, email_from='service.2')
    service_3 = create_service(service_name='service 3', user=user, email_from='service.3')
    new_user = User(
        name='Test User',
        email_address='*****@*****.**',
        password='******',
        mobile_number='+447700900986'
    )
    save_model_user(new_user, validated_email_access=True)
    dao_add_user_to_service(service_3, new_user)
    assert len(dao_fetch_all_services_by_user(user.id)) == 3
    assert dao_fetch_all_services_by_user(user.id)[0].name == 'service 1'
    assert dao_fetch_all_services_by_user(user.id)[1].name == 'service 2'
    assert dao_fetch_all_services_by_user(user.id)[2].name == 'service 3'
    assert len(dao_fetch_all_services_by_user(new_user.id)) == 1
    assert dao_fetch_all_services_by_user(new_user.id)[0].name == 'service 3'
Example #11
0
def test_get_all_user_services_only_returns_services_user_has_access_to(
    notify_db_session, ):
    user = create_user()
    create_service(service_name="service 1", user=user, email_from="service.1")
    create_service(service_name="service 2", user=user, email_from="service.2")
    service_3 = create_service(service_name="service 3",
                               user=user,
                               email_from="service.3")
    new_user = User(
        name="Test User",
        email_address="*****@*****.**",
        password="******",
        mobile_number="+16502532222",
    )
    save_model_user(new_user)
    dao_add_user_to_service(service_3, new_user)
    assert len(dao_fetch_all_services_by_user(user.id)) == 3
    assert dao_fetch_all_services_by_user(user.id)[0].name == "service 1"
    assert dao_fetch_all_services_by_user(user.id)[1].name == "service 2"
    assert dao_fetch_all_services_by_user(user.id)[2].name == "service 3"
    assert len(dao_fetch_all_services_by_user(new_user.id)) == 1
    assert dao_fetch_all_services_by_user(new_user.id)[0].name == "service 3"
Example #12
0
def test_get_all_user_services_should_return_empty_list_if_no_services_for_user(notify_db_session):
    user = create_user()
    assert len(dao_fetch_all_services_by_user(user.id)) == 0
def test_get_all_user_services_should_return_empty_list_if_no_services_for_user(sample_user):
    assert len(dao_fetch_all_services_by_user(sample_user.id)) == 0