示例#1
0
def test__update_task__upload_FileField(client, faker, loggedin_user,
                                        mock_email):
    s, f = faker.get_test_field_of_type(FieldType.get_file())

    field_data = {}
    files = []

    fake_file = faker.fake_file()

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

    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})

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

    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, files=files)
示例#2
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)
示例#3
0
def test__upload__upload_FileField__no_file(client, faker, loggedin_user,
                                            mock_email):
    s, f = faker.get_test_field_of_type(FieldType.get_file())

    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)
def test__add_field__allowed_file_extensions_set(client, faker):
    field = faker.get_test_field(field_type=FieldType.get_file())
    field.allowed_file_extensions = 'pdf|txt'

    field_actual = build_form(field)

    validators = [
        v for v in field_actual.validators if isinstance(v, FileAllowed)
    ]
    assert len(validators) == 1
    assert validators[0].upload_set == ['pdf', 'txt']
示例#5
0
    def get_test_upload_file(self, **kwargs):
        upload = self.get_test_upload(**kwargs)

        file_field = self.generator.field_details(FieldType.get_file())
        file_field.study = upload.study
        file_field.order = 1

        upload_file = self.upload_file_details()
        upload_file.upload = upload
        upload_file.field = file_field

        db.session.add(file_field)
        db.session.add(upload_file)
        db.session.commit()

        return upload_file
示例#6
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)