Exemple #1
0
def test_get_contact_list_counts_jobs(
    sample_template,
    admin_request,
    days_of_email_retention,
    expected_job_count,
):
    if days_of_email_retention:
        create_service_data_retention(sample_template.service, 'email',
                                      days_of_email_retention)

    # This should be ignored because it’s another template type
    create_service_data_retention(sample_template.service, 'sms', 1)

    contact_list_1 = create_service_contact_list(
        service=sample_template.service)
    contact_list_2 = create_service_contact_list(
        service=sample_template.service)

    for i in range(10):
        create_job(template=sample_template,
                   contact_list_id=contact_list_2.id,
                   created_at=datetime.utcnow() - timedelta(days=i))

    response = admin_request.get('service.get_contact_list',
                                 service_id=contact_list_1.service_id)

    assert len(response) == 2

    assert response[0]['id'] == str(contact_list_2.id)
    assert response[0]['recent_job_count'] == expected_job_count
    assert response[0]['has_jobs'] is True

    assert response[1]['id'] == str(contact_list_1.id)
    assert response[1]['recent_job_count'] == 0
    assert response[1]['has_jobs'] is False
def test_archive_contact_list_by_id(mocker, admin_request, sample_service):
    mock_s3 = mocker.patch('app.service.rest.s3.remove_contact_list_from_s3')
    service_1 = create_service(service_name='Service under test')
    template_1 = create_template(service=service_1)
    expected_list = create_service_contact_list(service=service_1)
    other_list = create_service_contact_list(service=service_1)

    # Job linked to the contact list we’re deleting
    job_1 = create_job(template=template_1, contact_list_id=expected_list.id)
    # Other jobs and lists shouldn’t be affected
    job_2 = create_job(template=template_1, contact_list_id=other_list.id)
    job_3 = create_job(template=template_1)

    admin_request.delete(
        'service.delete_contact_list_by_id',
        service_id=service_1.id,
        contact_list_id=expected_list.id,
    )

    assert job_1.contact_list_id == expected_list.id
    assert expected_list.archived is True

    assert job_2.contact_list_id == other_list.id
    assert other_list.archived is False

    assert job_3.contact_list_id is None

    mock_s3.assert_called_once_with(
        expected_list.service.id,
        expected_list.id,
    )
Exemple #3
0
def test_dao_get_contact_list_by_id(admin_request, sample_service):
    service_1 = create_service(service_name='Service under test')

    expected_list_1 = create_service_contact_list(service=service_1)
    create_service_contact_list(service=service_1)

    response = admin_request.get('service.get_contact_list_by_id',
                                 service_id=service_1.id,
                                 contact_list_id=expected_list_1.id)

    assert response == expected_list_1.serialize()
def test_dao_get_contact_lists(notify_db_session):
    contact_list = create_service_contact_list()
    create_service_contact_list(
        service=contact_list.service,
        archived=True,
    )

    fetched_list = dao_get_contact_lists(contact_list.service_id)

    assert len(fetched_list) == 1
    assert fetched_list[0] == contact_list
Exemple #5
0
def test_dao_get_contact_list_by_id_does_not_return_if_contact_list_id_for_another_service(
        admin_request, sample_service):
    service_1 = create_service(service_name='Service requesting list')
    service_2 = create_service(service_name='Service that owns the list')

    create_service_contact_list(service=service_1)
    list_2 = create_service_contact_list(service=service_2)

    response = admin_request.get('service.get_contact_list_by_id',
                                 service_id=service_1.id,
                                 contact_list_id=list_2.id,
                                 _expected_status=404)

    assert response['message'] == "No result found"
def test_create_job_with_contact_list_id(
    client,
    mocker,
    sample_template,
    fake_uuid,
    contact_list_archived,
):
    mocker.patch('app.celery.tasks.process_job.apply_async')
    mocker.patch('app.job.rest.get_job_metadata_from_s3', return_value={
        'template_id': str(sample_template.id)
    })
    contact_list = create_service_contact_list(archived=contact_list_archived)
    data = {
        'id': fake_uuid,
        'valid': 'True',
        'original_file_name': contact_list.original_file_name,
        'created_by': str(sample_template.service.users[0].id),
        'notification_count': 100,
        'contact_list_id': str(contact_list.id),
    }
    response = client.post(
        f'/service/{sample_template.service_id}/job',
        data=json.dumps(data),
        headers=[('Content-Type', 'application/json'), create_authorization_header()])
    resp_json = response.get_json()
    assert response.status_code == 201
    assert resp_json['data']['contact_list_id'] == str(contact_list.id)
    assert resp_json['data']['original_file_name'] == 'EmergencyContactList.xls'
def test_dao_get_archived_contact_list_by_id(admin_request):
    contact_list = create_service_contact_list(archived=True)
    admin_request.get(
        'service.get_contact_list_by_id',
        service_id=contact_list.service.id,
        contact_list_id=contact_list.id,
        _expected_status=404,
    )
Exemple #8
0
def test_get_contact_list(admin_request, notify_db_session):
    contact_list = create_service_contact_list()

    response = admin_request.get('service.get_contact_list',
                                 service_id=contact_list.service_id)

    assert len(response) == 1
    assert response[0] == contact_list.serialize()
def test_get_jobs_by_contact_list(admin_request, sample_template):
    contact_list = create_service_contact_list()
    create_job(template=sample_template)
    create_job(template=sample_template, contact_list_id=contact_list.id)

    resp_json = admin_request.get(
        'job.get_jobs_by_service',
        service_id=sample_template.service_id,
        contact_list_id=contact_list.id,
    )

    assert len(resp_json['data']) == 1
def test_get_jobs_for_service_by_contact_list(sample_template):
    contact_list = create_service_contact_list()
    job_1 = create_job(sample_template)
    job_2 = create_job(sample_template, contact_list_id=contact_list.id)

    assert dao_get_jobs_by_service_id(sample_template.service.id).items == [
        job_2,
        job_1,
    ]

    assert dao_get_jobs_by_service_id(
        sample_template.service.id,
        contact_list_id=contact_list.id,
    ).items == [
        job_2,
    ]
def test_archive_contact_list_by_id_for_different_service(mocker, admin_request, sample_service):

    mock_s3 = mocker.patch('app.service.rest.s3.remove_contact_list_from_s3')

    service_1 = create_service(service_name='Service under test')
    service_2 = create_service(service_name='Other service')

    contact_list = create_service_contact_list(service=service_1)
    assert ServiceContactList.query.count() == 1

    admin_request.delete(
        'service.delete_contact_list_by_id',
        service_id=service_2.id,
        contact_list_id=contact_list.id,
        _expected_status=404,
    )

    assert ServiceContactList.query.count() == 1
    assert mock_s3.called is False
Exemple #12
0
def test_archive_contact_list_when_unused(mocker, admin_request,
                                          sample_service):
    mock_s3 = mocker.patch('app.service.rest.s3.remove_contact_list_from_s3')
    service = create_service(service_name='Service under test')
    expected_list = create_service_contact_list(service=service)

    assert ServiceContactList.query.count() == 1

    admin_request.delete('service.delete_contact_list_by_id',
                         service_id=service.id,
                         contact_list_id=expected_list.id)

    assert ServiceContactList.query.count() == 1
    assert expected_list.archived is True

    mock_s3.assert_called_once_with(
        expected_list.service.id,
        expected_list.id,
    )
Exemple #13
0
def test_get_contact_list_returns_for_service(admin_request,
                                              notify_db_session):
    service_1 = create_service(service_name='Service under test')
    service_2 = create_service(service_name='Service should return results')

    expected_list_1 = create_service_contact_list(service=service_1)
    expected_list_2 = create_service_contact_list(service=service_1)
    # not included in results
    create_service_contact_list(service=service_2)
    create_service_contact_list(service=service_1, archived=True)

    response = admin_request.get('service.get_contact_list',
                                 service_id=service_1.id)

    assert len(response) == 2
    assert response[0] == expected_list_2.serialize()
    assert response[1] == expected_list_1.serialize()
Exemple #14
0
def test_get_uploads_for_service(sample_template):
    create_service_data_retention(sample_template.service, 'sms', days_of_retention=9)
    contact_list = create_service_contact_list()
    # Jobs created from contact lists should be filtered out
    create_job(sample_template, contact_list_id=contact_list.id)
    job = create_job(sample_template, processing_started=datetime.utcnow())
    letter_template = create_uploaded_template(sample_template.service)
    letter = create_uploaded_letter(letter_template, sample_template.service)

    other_service = create_service(service_name="other service")
    other_template = create_template(service=other_service)
    other_job = create_job(other_template, processing_started=datetime.utcnow())
    other_letter_template = create_uploaded_template(other_service)
    create_uploaded_letter(other_letter_template, other_service)

    uploads_from_db = dao_get_uploads_by_service_id(job.service_id).items
    other_uploads_from_db = dao_get_uploads_by_service_id(other_job.service_id).items

    assert len(uploads_from_db) == 2

    assert uploads_from_db[0] == (
        None,
        'Uploaded letters',
        1,
        'letter',
        None,
        letter.created_at.replace(hour=17, minute=30, second=0, microsecond=0),
        None,
        letter.created_at.replace(hour=17, minute=30, second=0, microsecond=0),
        None,
        'letter_day',
        None,
    )
    assert uploads_from_db[1] == (
        job.id,
        job.original_file_name,
        job.notification_count,
        'sms',
        9,
        job.created_at,
        job.scheduled_for,
        job.processing_started,
        job.job_status,
        "job",
        None,
    )

    assert len(other_uploads_from_db) == 2
    assert other_uploads_from_db[0] == (
        None,
        'Uploaded letters',
        1,
        'letter',
        None,
        letter.created_at.replace(hour=17, minute=30, second=0, microsecond=0),
        None,
        letter.created_at.replace(hour=17, minute=30, second=0, microsecond=0),
        None,
        "letter_day",
        None,
    )
    assert other_uploads_from_db[1] == (other_job.id,
                                        other_job.original_file_name,
                                        other_job.notification_count,
                                        other_job.template.template_type,
                                        7,
                                        other_job.created_at,
                                        other_job.scheduled_for,
                                        other_job.processing_started,
                                        other_job.job_status,
                                        "job",
                                        None)

    assert uploads_from_db[1] != other_uploads_from_db[1]