コード例 #1
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_impl_we_delete_file(context):
    url = '/upload/%s' % context.fetched_data['_id']
    context.headers.append(('Accept', 'application/json'))
    headers = if_match(context, context.fetched_data.get('_etag'))
    response = context.client.delete(get_prefixed_url(context.app, url), headers=headers)
    assert_200(response)
    response = context.client.get(get_prefixed_url(context.app, url), headers=headers)
    assert_404(response)
コード例 #2
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def step_impl_we_delete_file(context):
    url = '/upload/%s' % context.fetched_data['_id']
    context.headers.append(('Accept', 'application/json'))
    headers = if_match(context, context.fetched_data.get('_etag'))
    response = context.client.delete(get_prefixed_url(context.app, url), headers=headers)
    assert_200(response)
    response = context.client.get(get_prefixed_url(context.app, url), headers=headers)
    assert_404(response)
コード例 #3
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def patch_current_user(context, data):
    response = context.client.get(get_prefixed_url(context.app, '/users/%s' % context.user['_id']),
                                  headers=context.headers)
    user = json.loads(response.get_data())
    headers = if_match(context, user.get('_etag'))
    response = context.client.patch(get_prefixed_url(context.app, '/users/%s' % context.user['_id']),
                                    data=data, headers=headers)
    assert_ok(response)
    return response
コード例 #4
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def patch_current_user(context, data):
    response = context.client.get(get_prefixed_url(context.app, '/users/%s' % context.user['_id']),
                                  headers=context.headers)
    user = json.loads(response.get_data())
    headers = if_match(context, user.get('_etag'))
    response = context.client.patch(get_prefixed_url(context.app, '/users/%s' % context.user['_id']),
                                    data=data, headers=headers)
    assert_ok(response)
    return response
コード例 #5
0
def step_impl_when_patch(context):
    with context.app.mail.record_messages() as outbox:
        href, etag = get_it(context)
        headers = if_match(context, etag)
        context.response = context.client.patch(get_prefixed_url(context.app, href), data=context.text, headers=headers)
        assert_ok(context.response)
        context.outbox = outbox
コード例 #6
0
def step_impl_when_put_url(context, url):
    with context.app.mail.record_messages() as outbox:
        data = apply_placeholders(context, context.text)
        href = get_self_href(url)
        context.response = context.client.put(get_prefixed_url(context.app, href), data=data, headers=context.headers)
        assert_ok(context.response)
        context.outbox = outbox
コード例 #7
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def step_impl_then_get_etag(context, url):
    if context.app.config['IF_MATCH']:
        assert_200(context.response)
        expect_json_contains(context.response, '_etag')
        etag = get_json_data(context.response).get('_etag')
        response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
        expect_json_contains(response, {'_etag': etag})
コード例 #8
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_impl_when_restore_version(context, version):
    data = get_json_data(context.response)
    href = get_self_href(data, context)
    headers = if_match(context, data.get('_etag'))
    text = '{"type": "text", "old_version": %s, "last_version": %s}' % (version, data.get('_version'))
    context.response = context.client.put(get_prefixed_url(context.app, href), data=text, headers=headers)
    assert_ok(context.response)
コード例 #9
0
def when_we_create_highglights_package(context):
    data_text = '{"highlight": "%s", "type": "composite", ' \
                '"task": {"user": "******", "desk": "#desks._id#"}}' \
                % str(context.highlights['_id'])
    data_text = apply_placeholders(context, data_text)
    url = get_prefixed_url(context.app, '/archive')
    context.response = context.client.post(url, data=data_text, headers=context.headers)
コード例 #10
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_impl_when_patch_url(context, url):
    url = apply_placeholders(context, url)
    res = get_res(url, context)
    href = get_self_href(res, context)
    headers = if_match(context, res.get('_etag'))
    data = apply_placeholders(context, context.text)
    context.response = context.client.patch(get_prefixed_url(context.app, href), data=data, headers=headers)
コード例 #11
0
ファイル: steps.py プロジェクト: nistormihai/liveblog-server
def step_impl_when_patch_url(context, url):
    url = apply_placeholders(context, url)
    res = get_res(url, context)
    href = get_self_href(res, context)
    headers = if_match(context, res.get('_etag'))
    data = apply_placeholders(context, context.text)
    context.response = context.client.patch(get_prefixed_url(context.app, href), data=data, headers=headers)
コード例 #12
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_impl_when_delete_url(context, url):
    url = apply_placeholders(context, url)
    res = get_res(url, context)
    href = get_self_href(res, context)
    headers = if_match(context, res.get('_etag'))
    href = get_prefixed_url(context.app, href)
    context.response = context.client.delete(href, headers=headers)
コード例 #13
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def step_impl_when_patch(context):
    with context.app.mail.record_messages() as outbox:
        href, etag = get_it(context)
        headers = if_match(context, etag)
        context.response = context.client.patch(get_prefixed_url(context.app, href), data=context.text, headers=headers)
        assert_ok(context.response)
        context.outbox = outbox
コード例 #14
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def step_impl_when_restore_version(context, version):
    data = get_json_data(context.response)
    href = get_self_href(data, context)
    headers = if_match(context, data.get('_etag'))
    text = '{"type": "text", "old_version": %s, "last_version": %s}' % (version, data.get('_version'))
    context.response = context.client.put(get_prefixed_url(context.app, href), data=text, headers=headers)
    assert_ok(context.response)
コード例 #15
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def steo_impl_we_get_latest(context):
    data = get_json_data(context.response)
    href = get_self_href(data, context)
    headers = if_match(context, data.get('_etag'))
    href = get_prefixed_url(context.app, href)
    context.response = context.client.get(href, headers=headers)
    assert_200(context.response)
コード例 #16
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def we_can_fetch_a_file(context, url, mimetype):
    headers = [('Accept', 'application/json')]
    headers = unique_headers(headers, context.headers)
    response = context.client.get(get_prefixed_url(context.app, url), headers=headers)
    assert_200(response)
    assert len(response.get_data()), response
    assert response.mimetype == mimetype, response.mimetype
コード例 #17
0
ファイル: steps.py プロジェクト: nistormihai/liveblog-server
def start_reset_password_for_user(context):
    data = {'token': context.token, 'password': '******'}
    headers = [('Content-Type', 'multipart/form-data')]
    headers = unique_headers(headers, context.headers)
    context.response = context.client.post(get_prefixed_url(context.app, '/reset_user_password'),
                                           data=data, headers=headers)
    print(context.response.get_data())
コード例 #18
0
ファイル: steps.py プロジェクト: auliakausar/superdesk-server
def step_impl_when_put_url(context, url):
    data = apply_placeholders(context, context.text)
    href = get_self_href(url)
    context.response = context.client.put(get_prefixed_url(context.app, href),
                                          data=data,
                                          headers=context.headers)
    assert_ok(context.response)
コード例 #19
0
ファイル: steps.py プロジェクト: auliakausar/superdesk-server
def steo_impl_we_get_latest(context):
    data = get_json_data(context.response)
    href = get_self_href(data, context)
    headers = if_match(context, data.get('_etag'))
    href = get_prefixed_url(context.app, href)
    context.response = context.client.get(href, headers=headers)
    assert_200(context.response)
コード例 #20
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def step_impl_when_put_url(context, url):
    with context.app.mail.record_messages() as outbox:
        data = apply_placeholders(context, context.text)
        href = get_self_href(url)
        context.response = context.client.put(get_prefixed_url(context.app, href), data=data, headers=context.headers)
        assert_ok(context.response)
        context.outbox = outbox
コード例 #21
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_impl_then_get_etag(context, url):
    if context.app.config['IF_MATCH']:
        assert_200(context.response)
        expect_json_contains(context.response, '_etag')
        etag = get_json_data(context.response).get('_etag')
        response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
        expect_json_contains(response, {'_etag': etag})
コード例 #22
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def we_can_fetch_a_file(context, url, mimetype):
    headers = [('Accept', 'application/json')]
    headers = unique_headers(headers, context.headers)
    response = context.client.get(get_prefixed_url(context.app, url), headers=headers)
    assert_200(response)
    assert len(response.get_data()), response
    assert response.mimetype == mimetype, response.mimetype
コード例 #23
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_create_a_user(context):
    data = apply_placeholders(context, context.text)
    with context.app.mail.record_messages() as outbox:
        context.response = context.client.post(get_prefixed_url(context.app, '/users'),
                                               data=data, headers=context.headers)
        expect_status_in(context.response, (200, 201))
        assert len(outbox) == 1
        context.email = outbox[0]
コード例 #24
0
ファイル: steps.py プロジェクト: auliakausar/superdesk-server
def step_impl_when_patch(context):
    href, etag = get_it(context)
    headers = if_match(context, etag)
    context.response = context.client.patch(get_prefixed_url(
        context.app, href),
                                            data=context.text,
                                            headers=headers)
    assert_ok(context.response)
コード例 #25
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def we_get_embedded_items(context):
    response_data = json.loads(context.response.get_data())
    href = get_self_href(response_data, context)
    url = href + '/?embedded={"items": 1}'
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
    assert_200(context.response)
    context.response_data = json.loads(context.response.get_data())
    assert len(context.response_data['items']['view_items']) == 2
コード例 #26
0
def when_we_delete_it(context):
    with context.app.mail.record_messages() as outbox:
        res = get_json_data(context.response)
        href = get_self_href(res, context)
        headers = if_match(context, res.get('_etag'))
        href = get_prefixed_url(context.app, href)
        context.response = context.client.delete(href, headers=headers)
        context.email = outbox
コード例 #27
0
ファイル: steps.py プロジェクト: auliakausar/superdesk-server
def start_reset_password_for_user(context):
    data = {'token': context.token, 'password': '******'}
    headers = [('Content-Type', 'multipart/form-data')]
    headers = unique_headers(headers, context.headers)
    context.response = context.client.post(get_prefixed_url(
        context.app, '/reset_user_password'),
                                           data=data,
                                           headers=headers)
コード例 #28
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_impl_then_get_archive_ingest_result(context):
    assert_200(context.response)
    expect_json_contains(context.response, 'task_id')
    item = json.loads(context.response.get_data())
    url = '/archive_ingest/%s' % (item['task_id'])
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
    assert_200(context.response)
    test_json(context)
コード例 #29
0
ファイル: steps.py プロジェクト: nistormihai/liveblog-server
def step_role_extends(context, extending_name, extended_name):
    with context.app.test_request_context(context.app.config['URL_PREFIX']):
        extended = get_resource_service('roles').find_one(name=extended_name, req=None)
        extending = get_resource_service('roles').find_one(name=extending_name, req=None)
        headers = if_match(context, extending.get('_etag'))
        data = json.dumps({'extends': str(extended['_id'])})
        context.response = context.client.patch(get_prefixed_url(context.app, '/roles/%s' % extending['_id']),
                                                data=data, headers=headers)
コード例 #30
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_impl_when_post_url(context, url):
    data = apply_placeholders(context, context.text)
    if url in ('/users', 'users'):
        user = json.loads(data)
        user.setdefault('needs_activation', False)
        data = json.dumps(user)
    context.response = context.client.post(get_prefixed_url(context.app, url), data=data, headers=context.headers)
    store_placeholder(context, url)
コード例 #31
0
ファイル: steps.py プロジェクト: auliakausar/superdesk-server
def step_impl_when_upload_from_url(context):
    data = {'URL': external_url}
    headers = [('Content-Type', 'multipart/form-data')]
    headers = unique_headers(headers, context.headers)
    context.response = context.client.post(get_prefixed_url(
        context.app, '/upload'),
                                           data=data,
                                           headers=headers)
コード例 #32
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def we_get_embedded_items(context):
    response_data = json.loads(context.response.get_data())
    href = get_self_href(response_data, context)
    url = href + '/?embedded={"items": 1}'
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
    assert_200(context.response)
    context.response_data = json.loads(context.response.get_data())
    assert len(context.response_data['items']['view_items']) == 2
コード例 #33
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def step_impl_then_get_archive_ingest_result(context):
    assert_200(context.response)
    expect_json_contains(context.response, 'task_id')
    item = json.loads(context.response.get_data())
    url = '/archive_ingest/%s' % (item['task_id'])
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
    assert_200(context.response)
    test_json(context)
コード例 #34
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def step_create_a_user(context):
    data = apply_placeholders(context, context.text)
    with context.app.mail.record_messages() as outbox:
        context.response = context.client.post(get_prefixed_url(context.app, '/users'),
                                               data=data, headers=context.headers)
        expect_status_in(context.response, (200, 201))
        assert len(outbox) == 1
        context.email = outbox[0]
コード例 #35
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def when_we_delete_it(context):
    with context.app.mail.record_messages() as outbox:
        res = get_json_data(context.response)
        href = get_self_href(res, context)
        headers = if_match(context, res.get('_etag'))
        href = get_prefixed_url(context.app, href)
        context.response = context.client.delete(href, headers=headers)
        context.email = outbox
コード例 #36
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def step_impl_when_delete_url(context, url):
    with context.app.mail.record_messages() as outbox:
        url = apply_placeholders(context, url)
        res = get_res(url, context)
        href = get_self_href(res, context)
        headers = if_match(context, res.get('_etag'))
        href = get_prefixed_url(context.app, href)
        context.response = context.client.delete(href, headers=headers)
        context.outbox = outbox
コード例 #37
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_impl_when_upload_from_url_with_crop(context):
    data = {'URL': external_url,
            'CropTop': '0',
            'CropLeft': '0',
            'CropBottom': '333',
            'CropRight': '333'}
    headers = [('Content-Type', 'multipart/form-data')]
    headers = unique_headers(headers, context.headers)
    context.response = context.client.post(get_prefixed_url(context.app, '/upload'), data=data, headers=headers)
コード例 #38
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def when_we_get_url(context, url):
    headers = []
    if context.text:
        for line in context.text.split('\n'):
            key, val = line.split(': ')
            headers.append((key, val))
    headers = unique_headers(headers, context.headers)
    url = apply_placeholders(context, url)
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=headers)
コード例 #39
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def we_post_to_reset_password_it_fails(context):
    data = {'email': '*****@*****.**'}
    headers = [('Content-Type', 'multipart/form-data')]
    headers = unique_headers(headers, context.headers)
    with context.app.mail.record_messages() as outbox:
        context.response = context.client.post(get_prefixed_url(context.app, '/reset_user_password'),
                                               data=data, headers=headers)
        expect_status_in(context.response, (200, 201))
        assert len(outbox) == 0
コード例 #40
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def we_reset_password_for_user(context):
    start_reset_password_for_user(context)
    expect_status_in(context.response, (200, 201))

    auth_data = {'username': '******', 'password': '******'}
    headers = [('Content-Type', 'multipart/form-data')]
    headers = unique_headers(headers, context.headers)
    context.response = context.client.post(get_prefixed_url(context.app, '/auth'), data=auth_data, headers=headers)
    expect_status_in(context.response, (200, 201))
コード例 #41
0
def step_impl_when_auth(context):
    data = context.text
    context.response = context.client.post(get_prefixed_url(context.app, '/auth'), data=data, headers=context.headers)
    if context.response.status_code == 200 or context.response.status_code == 201:
        item = json.loads(context.response.get_data())
        if item.get('_id'):
            set_placeholder(context, 'AUTH_ID', item['_id'])
        context.headers.append(('Authorization', b'basic ' + b64encode(item['token'].encode('ascii') + b':')))
        context.user = item['user']
コード例 #42
0
ファイル: steps.py プロジェクト: nistormihai/liveblog-server
def upload_file(context, dest, filename, crop_data=None):
    with open(get_fixture_path(filename), 'rb') as f:
        data = {'media': f}
        if crop_data:
            data.update(crop_data)
        headers = [('Content-Type', 'multipart/form-data')]
        headers = unique_headers(headers, context.headers)
        context.response = context.client.post(get_prefixed_url(context.app, dest), data=data, headers=headers)
        assert_ok(context.response)
コード例 #43
0
ファイル: steps.py プロジェクト: nistormihai/liveblog-server
def step_impl_when_post_url(context, url):
    data = apply_placeholders(context, context.text)
    context.response = context.client.post(get_prefixed_url(context.app, url), data=data, headers=context.headers)
    if context.response.status_code in (200, 201):
        item = json.loads(context.response.get_data())
        if item['_status'] == 'OK' and item.get('_id'):
            parsed_url = urlparse(url)
            name = basename(parsed_url.path)
            set_placeholder(context, '%s_ID' % name.upper(), item['_id'])
コード例 #44
0
ファイル: steps.py プロジェクト: nistormihai/liveblog-server
def step_impl_when_post_url_with_success(context, url):
    data = apply_placeholders(context, context.text)
    context.response = context.client.post(get_prefixed_url(context.app, url), data=data, headers=context.headers)
    assert_ok(context.response)
    item = json.loads(context.response.get_data())
    if item.get('_id'):
        parsed_url = urlparse(url)
        name = basename(parsed_url.path)
        set_placeholder(context, '%s_ID' % name.upper(), item['_id'])
コード例 #45
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def we_post_to_reset_password_it_fails(context):
    data = {'email': '*****@*****.**'}
    headers = [('Content-Type', 'multipart/form-data')]
    headers = unique_headers(headers, context.headers)
    with context.app.mail.record_messages() as outbox:
        context.response = context.client.post(get_prefixed_url(context.app, '/reset_user_password'),
                                               data=data, headers=headers)
        expect_status_in(context.response, (200, 201))
        assert len(outbox) == 0
コード例 #46
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def we_reset_password_for_user(context):
    start_reset_password_for_user(context)
    expect_status_in(context.response, (200, 201))

    auth_data = {'username': '******', 'password': '******'}
    headers = [('Content-Type', 'multipart/form-data')]
    headers = unique_headers(headers, context.headers)
    context.response = context.client.post(get_prefixed_url(context.app, '/auth'), data=auth_data, headers=headers)
    expect_status_in(context.response, (200, 201))
コード例 #47
0
def step_impl_when_delete_url(context, url):
    with context.app.mail.record_messages() as outbox:
        url = apply_placeholders(context, url)
        res = get_res(url, context)
        href = get_self_href(res, context)
        headers = if_match(context, res.get('_etag'))
        href = get_prefixed_url(context.app, href)
        context.response = context.client.delete(href, headers=headers)
        context.outbox = outbox
コード例 #48
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def step_impl_when_post_url_with_success(context, url):
    data = apply_placeholders(context, context.text)
    context.response = context.client.post(get_prefixed_url(context.app, url), data=data, headers=context.headers)
    assert_ok(context.response)
    item = json.loads(context.response.get_data())
    if item.get('_id'):
        parsed_url = urlparse(url)
        name = basename(parsed_url.path)
        set_placeholder(context, '%s_ID' % name.upper(), item['_id'])
コード例 #49
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def step_impl_when_upload_from_url_with_crop(context):
    data = {'URL': external_url,
            'CropTop': '0',
            'CropLeft': '0',
            'CropBottom': '333',
            'CropRight': '333'}
    headers = [('Content-Type', 'multipart/form-data')]
    headers = unique_headers(headers, context.headers)
    context.response = context.client.post(get_prefixed_url(context.app, '/upload'), data=data, headers=headers)
コード例 #50
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def when_we_get_url(context, url):
    headers = []
    if context.text:
        for line in context.text.split('\n'):
            key, val = line.split(': ')
            headers.append((key, val))
    headers = unique_headers(headers, context.headers)
    url = apply_placeholders(context, url)
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=headers)
コード例 #51
0
def then_we_get_activity(context):
    url = apply_placeholders(context, '/activity?where={"name": "notify"}')
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
    if context.response.status_code == 200:
        expect_json_length(context.response, 1, path='_items')
        item = json.loads(context.response.get_data())
        item = item['_items'][0]
        if item.get('_id'):
            setattr(context, 'activity', item)
            set_placeholder(context, 'USERS_ID', item['user'])
コード例 #52
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def then_we_get_activity(context):
    url = apply_placeholders(context, '/activity?where={"name": "notify"}')
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
    if context.response.status_code == 200:
        expect_json_length(context.response, 1, path='_items')
        item = json.loads(context.response.get_data())
        item = item['_items'][0]
        if item.get('_id'):
            set_placeholder(context, 'ACTIVITY_ID', item['_id'])
            set_placeholder(context, 'USERS_ID', item['user'])
コード例 #53
0
def step_impl_when_post_url_with_success(context, url):
    with context.app.mail.record_messages() as outbox:
        data = apply_placeholders(context, context.text)
        context.response = context.client.post(get_prefixed_url(context.app, url),
                                               data=data, headers=context.headers)
        assert_ok(context.response)
        item = json.loads(context.response.get_data())
        if item.get('_id'):
            setattr(context, get_resource_name(url), item)
        context.outbox = outbox
コード例 #54
0
ファイル: steps.py プロジェクト: vied12/superdesk-server
def when_we_find_for_resource_the_id_as_name_by_search_criteria(context, resource, name, search_criteria):
    url = '/' + resource + '?where=' + search_criteria
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
    print('context.response.status_code: ', context.response.status_code)
    if context.response.status_code == 200:
        expect_json_length(context.response, 1, path='_items')
        item = json.loads(context.response.get_data())
        item = item['_items'][0]
        if item.get('_id'):
            set_placeholder(context, name, item['_id'])
コード例 #55
0
ファイル: steps.py プロジェクト: plaindocs/superdesk-server
def when_we_find_for_resource_the_id_as_name_by_search_criteria(context, resource, name, search_criteria):
    url = '/' + resource + '?where=' + search_criteria
    context.response = context.client.get(get_prefixed_url(context.app, url), headers=context.headers)
    print('context.response.status_code: ', context.response.status_code)
    if context.response.status_code == 200:
        expect_json_length(context.response, 1, path='_items')
        item = json.loads(context.response.get_data())
        item = item['_items'][0]
        if item.get('_id'):
            set_placeholder(context, name, item['_id'])