Esempio n. 1
0
def test__upload__upload_MultiFileField(client, faker, n, loggedin_user,
                                        mock_email):
    s, f = faker.get_test_field_of_type(FieldType.get_multifile())

    field_data = {
        f.field_name: [],
    }
    files = []

    for _ in range(n):
        fake_file = faker.fake_file()

        field_data[f.field_name].append(fake_file.file_tuple())

        files.append({
            'field': f,
            'file': fake_file,
        })

    expected = faker.task_details(service=s)
    resp = _create_task_post(client, expected, field_data)

    assert_emails_sent(mock_email, context='created', user=loggedin_user)
    assert__redirect(resp, endpoint='ui.index')
    assert__task(expected, loggedin_user, files=files)
Esempio n. 2
0
def test__label_print__requires_id_entry(client, faker):
    user = login(client, faker)
    faker.add_all_studies(user)

    pack = LabelPack.query.filter_by(type='GoDcmPack').one()

    resp = client.get(
        _url(
            referrer='study',
            study_id=pack.study_id,
            pack_name=pack.type,
            count=1,
        ))

    assert__redirect(
        resp,
        'ui.label_print_definition',
        referrer='study',
        study_id=pack.study_id,
        pack_name=pack.type,
        count=1,
    )

    assert PseudoRandomId.query.join(PseudoRandomIdProvider).filter_by(
        prefix=GO_DCM_ID_TYPE_PARTICIPANT).count() == 0
Esempio n. 3
0
def test__upload__upload_FileField(client, faker, required, allowed_file_extensions, file_sent, extension, should_be_loaded):
    user = login(client, faker)
    study = faker.get_test_study(collaborator=user)

    field = faker.get_test_field(field_group=study.field_group, field_type=FieldType.get_file(), allowed_file_extensions=allowed_file_extensions, required=required)

    content = faker.text()
    filename = faker.file_name(extension=extension)

    resp = _do_upload(
        client,
        faker,
        study.id,
        field_name=field.field_name,
        field_value=(
            BytesIO(content.encode('utf-8')),
            filename
        ),
    )

    if should_be_loaded:
        assert__redirect(resp, endpoint='ui.index')

        _assert_uploaded_file(study, field, filename=filename, content=content)

    else:
        assert resp.status_code == status.HTTP_200_OK

        assert__error__message(resp.soup, field.field_name)
        _assert_upload_not_saved(study)
Esempio n. 4
0
def test__update_task__upload_MultiFileField__no_file(client, faker,
                                                      loggedin_user,
                                                      mock_email):
    s, f = faker.get_test_field_of_type(FieldType.get_multifile())

    files = []

    task = faker.get_test_task(service=s, requestor=loggedin_user)

    orig1 = faker.fake_file()
    faker.get_test_task_file(task=task,
                             field=f,
                             fake_file=orig1,
                             filename=orig1.filename)
    files.append({'field': f, 'file': orig1})

    orig2 = faker.fake_file()
    faker.get_test_task_file(task=task,
                             field=f,
                             fake_file=orig1,
                             filename=orig1.filename)
    files.append({'field': f, 'file': orig1})

    resp = _edit_task_post(client, task)

    assert_emails_sent(mock_email, context='updated', user=loggedin_user)
    assert__redirect(resp, endpoint='ui.index')
    assert__task(task, loggedin_user, files=files)
Esempio n. 5
0
def test__create_task__with_all_values(client, faker, loggedin_user,
                                       mock_email):
    expected = faker.task_details(service=faker.get_test_service())

    resp = _create_task_post(client, expected)

    assert_emails_sent(mock_email, context='created', user=loggedin_user)
    assert__redirect(resp, endpoint='ui.index')
    assert__task(expected, loggedin_user)
Esempio n. 6
0
def test__dynamic_form__rendering__no_error(client, faker):
    user = login(client, faker)

    fg = faker.get_test_field_group(name='Hello')
    ft = FieldType.get_string()
    f = faker.get_test_field(field_group=fg, field_type=ft)

    resp = client.post(url_for('form', field_group_id=fg.id))
    assert__redirect(resp, 'ui.index')
Esempio n. 7
0
def test__update_task__with_all_values(client, faker, loggedin_user,
                                       mock_email):
    task = faker.get_test_task(requestor=loggedin_user)

    resp = _edit_task_post(client, task)

    assert_emails_sent(mock_email, context='updated', user=loggedin_user)
    assert__redirect(resp, endpoint='ui.index')
    assert__task(task, loggedin_user)
Esempio n. 8
0
def test__upload__upload_MultiFileField__no_file(client, faker, loggedin_user,
                                                 mock_email):
    s, f = faker.get_test_field_of_type(FieldType.get_multifile())

    expected = faker.task_details(service=s)
    resp = _create_task_post(client, expected)

    assert_emails_sent(mock_email, context='created', user=loggedin_user)
    assert__redirect(resp, endpoint='ui.index')
    assert__task(expected, loggedin_user)
Esempio n. 9
0
def test__create_task__empty_requestor__uses_current_user(
        client, faker, loggedin_user, mock_email):
    expected = faker.task_details(service=faker.get_test_service())
    expected.requestor_id = None

    resp = _create_task_post(client, expected)

    assert_emails_sent(mock_email, context='created', user=loggedin_user)
    assert__redirect(resp, endpoint='ui.index')
    expected.requestor_id = loggedin_user.id
    assert__task(expected, loggedin_user)
Esempio n. 10
0
def test__upload__upload_study_number__duplicate_allowed(client, faker):
    user = login(client, faker)
    study = faker.get_test_study(collaborator=user, allow_duplicate_study_number=True)
    upload = faker.get_test_upload(study=study)

    resp = _do_upload(client, faker, upload.study.id, study_number=upload.study_number)
    assert__redirect(resp, endpoint='ui.index')

    assert Upload.query.filter(
        Upload.study_number == upload.study_number
    ).count() == 2
Esempio n. 11
0
def test__upload__upload_study_number(client, faker):
    user = login(client, faker)
    study = faker.get_test_study(collaborator=user)

    study_number = faker.pystr(min_chars=5, max_chars=10)

    resp = _do_upload(client, faker, study.id, study_number=study_number)
    assert__redirect(resp, endpoint='ui.index')

    assert Upload.query.filter(
        Upload.study_number == study_number and Upload.study_id == study.id
    ).first()
Esempio n. 12
0
def _do_upload_field(client, faker, study, should_be_loaded, field, value):
    resp = _do_upload(client, faker, study.id, field_name=field.field_name, field_value=value)

    if should_be_loaded:
        assert__redirect(resp, endpoint='ui.index')

        _assert_uploaded(study, field, value=value)
    else:
        assert resp.status_code == status.HTTP_200_OK

        assert__error__message(resp.soup, field.field_name)
        _assert_upload_not_saved(study)
Esempio n. 13
0
def test__upload__upload_study_number__duplicate_on_other_study(client, faker):
    user = login(client, faker)
    study2 = faker.get_test_study(collaborator=user)
    study1 = faker.get_test_study(collaborator=user)
    upload = faker.get_test_upload(study=study1)

    resp = _do_upload(client, faker, study2.id, study_number=upload.study_number)
    assert__redirect(resp, endpoint='ui.index')

    assert Upload.query.filter(
        Upload.study_number == upload.study_number and Upload.study_id == study2.id
    ).first()
Esempio n. 14
0
def test__upload__upload_study_number__matches_format(client, faker):
    user = login(client, faker)
    study = faker.get_test_study(collaborator=user, study_number_format='Tst\\d{8}[A-Z]')

    study_number = "Tst12345678X"

    resp = _do_upload(client, faker, study.id, study_number=study_number)
    assert__redirect(resp, endpoint='ui.index')

    assert Upload.query.filter(
        Upload.study_number == study_number and Upload.study_id == study.id
    ).first()
Esempio n. 15
0
def test__upload__complete(client, faker):
    user = login(client, faker)
    study = faker.get_test_study(owner=user)
    upload = faker.get_test_upload(study=study)

    resp = client.post(
        _url(upload_id=upload.id),
        data={"id": upload.id},
        headers={'Referer': faker.test_referrer()},
    )
    assert__redirect(resp, url=faker.test_referrer())

    changed_upload = Upload.query.get(upload.id)

    assert changed_upload.completed
def test__update_post__ok(client, faker, loggedin_user):
    todo = faker.get_test_owned_todo(loggedin_user)

    expected = faker.pystr(min_chars=5, max_chars=100)

    resp = _update_todo_post(client,
                             task_id=todo.task.id,
                             todo_id=todo.id,
                             description=expected)
    assert__redirect(resp, endpoint='ui.task_todo_list', task_id=todo.task.id)

    ToDo.query.count() == 1
    actual = ToDo.query.one()
    assert actual.id == todo.id
    assert actual.description == expected
    assert actual.status == ToDo.get_status_code_from_name(ToDo.OUTSTANDING)
Esempio n. 17
0
def test__upload__upload_BooleanField(client, faker, required, value, should_be_loaded, saved_value):
    user = login(client, faker)
    study = faker.get_test_study(collaborator=user)

    field = faker.get_test_field(field_group=study.field_group, field_type=FieldType.get_boolean(), required=required)

    resp = _do_upload(client, faker, study.id, field_name=field.field_name, field_value=value)

    if should_be_loaded:
        assert__redirect(resp, endpoint='ui.index')

        _assert_uploaded(study, field, value=saved_value)
    else:
        assert resp.status_code == status.HTTP_200_OK

        assert__error__message(resp.soup, field.field_name)
        _assert_upload_not_saved(study)
Esempio n. 18
0
def test__label_print__no_id_entry__labels_redirect(client, faker, pack_count):
    user = login(client, faker)
    faker.add_all_studies(user)

    pack = LabelPack.query.filter_by(type='CardiometPack').one()

    resp = client.get(
        _url(
            referrer='labels',
            study_id=pack.study_id,
            pack_name=pack.type,
            count=pack_count,
        ))

    assert__redirect(resp, 'ui.labels')

    assert PseudoRandomId.query.join(PseudoRandomIdProvider).filter_by(
        prefix=CARDIOMET_ID_TYPE_PARTICIPANT).count() == pack_count
Esempio n. 19
0
def test__upload__upload_FileField(client, faker, loggedin_user, mock_email):
    s, f = faker.get_test_field_of_type(FieldType.get_file())

    field_data = {}

    fake_file = faker.fake_file()

    field_data[f.field_name] = fake_file.file_tuple()

    files = [{
        'field': f,
        'file': fake_file,
    }]

    expected = faker.task_details(service=s)
    resp = _create_task_post(client, expected, field_data)

    assert_emails_sent(mock_email, context='created', user=loggedin_user)
    assert__redirect(resp, endpoint='ui.index')
    assert__task(expected, loggedin_user, files=files)
def test__label_print_definition__post__labels_redirect(client, faker):
    user = login(client, faker)
    faker.add_all_studies(user)

    pack = LabelPack.query.filter_by(type='GoDcmPack').one()

    data = {'participant_id': 'ABCDEFG'}

    resp = client.post(
        _url(
            referrer='labels',
            study_id=pack.study_id,
            pack_name=pack.type,
            count=1,
        ),
        buffered=True,
        content_type="multipart/form-data",
        data=data,
    )

    assert__redirect(resp, 'ui.labels')
Esempio n. 21
0
def test__create_task__radio_fields(client, faker, choices, value,
                                    expected_value, loggedin_user, mock_email):
    s, f = faker.get_test_field_of_type(FieldType.get_radio(), choices=choices)

    field_data = {}

    if value is not None:
        field_data[f.field_name] = value

    expected = faker.task_details(service=s)

    resp = _create_task_post(client, expected, field_data)

    assert_emails_sent(mock_email, context='created', user=loggedin_user)
    assert__redirect(resp, endpoint='ui.index')
    assert__task(expected,
                 loggedin_user,
                 data=[
                     {
                         'field': f,
                         'value': expected_value,
                     },
                 ])
Esempio n. 22
0
def test__update_task__fields(client, faker, field_type, original_value, value,
                              expected_value, loggedin_user, mock_email):
    s, f = faker.get_test_field_of_type(FieldType._get_field_type(field_type))

    field_data = {}
    data = []

    if value is not None:
        field_data[f.field_name] = value

    data.append({
        'field': f,
        'value': expected_value,
    })

    task = faker.get_test_task(service=s, requestor=loggedin_user)
    orig = faker.get_test_task_data(task=task, field=f, value=original_value)

    resp = _edit_task_post(client, task, field_data)

    assert_emails_sent(mock_email, context='updated', user=loggedin_user)
    assert__redirect(resp, endpoint='ui.index')
    assert__task(task, loggedin_user, data=data)
Esempio n. 23
0
def test__study_list__coll_1_study_redirects(client, faker):
    user = login(client, faker)
    study = faker.get_test_study(collaborator=user)

    resp = client.get(_url())
    assert__redirect(resp, endpoint='ui.study_my_uploads', study_id=study.id)
Esempio n. 24
0
def test__post__no_login(client):
    resp = client.post(url_for("post_without_login"))
    assert__redirect(resp, url='http://localhost/')
Esempio n. 25
0
def test__study_list__owns_1_study_redirects(client, faker):
    user = login(client, faker)
    study = faker.get_test_study(owner=user)

    resp = client.get(_url())
    assert__redirect(resp, endpoint='ui.study', study_id=study.id)