Esempio n. 1
0
def test_patrons_post_without_email(app, client, lib_martigny,
                                    patron_type_children_martigny,
                                    patron_martigny_data_tmp, json_header,
                                    roles, mailbox):
    """Test record retrieval."""
    patron_data = deepcopy(patron_martigny_data_tmp)
    patron_data['email'] = '*****@*****.**'
    patron_data['username'] = '******'
    del patron_data['pid']
    del patron_data['email']
    patron_data['patron']['communication_channel'] = 'mail'
    patron_data = create_user_from_data(patron_data)

    pids = Patron.count()
    assert len(mailbox) == 0

    # Create record / POST
    res, _ = postdata(client, 'invenio_records_rest.ptrn_list', patron_data)

    assert res.status_code == 201
    assert Patron.count() == pids + 1
    assert len(mailbox) == 0

    # Check that the returned record matches the given data
    data = get_json(res)
    data['metadata']['patron']['communication_channel'] = 'mail'

    ds = app.extensions['invenio-accounts'].datastore
    ds.delete_user(ds.find_user(id=patron_data['user_id']))
Esempio n. 2
0
def test_patrons_post_without_email(client, lib_martigny,
                                    patron_type_children_martigny,
                                    patron_martigny_data_tmp, json_header,
                                    roles, mailbox):
    """Test record retrieval."""
    patron_data = patron_martigny_data_tmp

    pids = Patron.count()
    assert len(mailbox) == 0

    # Create record / POST
    del patron_data['pid']
    del patron_data['email']
    patron_data['patron']['communication_channel'] = 'mail'
    patron_data['patron']['additional_communication_email'] = '*****@*****.**'
    patron_data['username'] = '******'

    res, _ = postdata(client, 'invenio_records_rest.ptrn_list', patron_data)

    assert res.status_code == 201
    assert Patron.count() == pids + 1
    assert len(mailbox) == 0

    # Check that the returned record matches the given data
    data = get_json(res)
    # remove dynamic property
    del data['metadata']['user_id']
    del data['metadata']['pid']
    assert data['metadata'] == patron_data
Esempio n. 3
0
def test_patrons_post_put_delete(app, client, lib_martigny,
                                 patron_type_children_martigny,
                                 patron_martigny_data_tmp, json_header, roles,
                                 mailbox):
    """Test record retrieval."""
    pid_value = 'ptrn_1'
    item_url = url_for('invenio_records_rest.ptrn_item', pid_value=pid_value)
    list_url = url_for('invenio_records_rest.ptrn_list',
                       q='pid:%s' % pid_value)
    patron_data = deepcopy(patron_martigny_data_tmp)
    patron_data['email'] = '*****@*****.**'
    patron_data['username'] = '******'
    patron_data = create_user_from_data(patron_data)

    pids = Patron.count()
    assert len(mailbox) == 0

    # Create record / POST
    patron_data['pid'] = pid_value
    # patron_data['email'] = '*****@*****.**'
    # patron_data['username'] = '******'

    res, _ = postdata(client, 'invenio_records_rest.ptrn_list', patron_data)

    assert res.status_code == 201
    assert Patron.count() == pids + 1
    # assert len(mailbox) == 1
    # assert re.search(r'localhost/lost-password', mailbox[0].body)

    # # Check that the returned record matches the given data
    # data = get_json(res)
    # # remove dynamic property
    # del data['metadata']['user_id']
    # assert data['metadata'] == patron_data

    res = client.get(item_url)
    assert res.status_code == 200
    data = get_json(res)
    # add dynamic property
    patron_data['user_id'] = data['metadata']['user_id']
    data['metadata']['user_id']

    # Update record/PUT
    data = patron_data
    data['patron']['barcode'] = ['barcode_test']
    res = client.put(item_url, data=json.dumps(data), headers=json_header)
    assert res.status_code == 200
    # assert res.headers['ETag'] != '"{}"'.format(ptrnrarie.revision_id)

    # Check that the returned record matches the given data
    data = get_json(res)
    assert data['metadata']['patron']['barcode'][0] == 'barcode_test'

    res = client.get(item_url)
    assert res.status_code == 200

    data = get_json(res)
    assert data['metadata']['patron']['barcode'][0] == 'barcode_test'

    res = client.get(list_url)
    assert res.status_code == 200

    data = get_json(res)['hits']['hits'][0]
    assert data['metadata']['patron']['barcode'][0] == 'barcode_test'

    # Delete record/DELETE
    res = client.delete(item_url)
    assert res.status_code == 204

    res = client.get(item_url)
    assert res.status_code == 410
    ds = app.extensions['invenio-accounts'].datastore
    ds.delete_user(ds.find_user(id=patron_data['user_id']))
Esempio n. 4
0
def test_patrons_post_put_delete(client, lib_martigny,
                                 patron_type_children_martigny,
                                 librarian_martigny_data, json_header, roles,
                                 mailbox):
    """Test record retrieval."""
    item_url = url_for('invenio_records_rest.ptrn_item', pid_value='1')
    list_url = url_for('invenio_records_rest.ptrn_list', q='pid:1')
    patron_data = librarian_martigny_data

    pids = Patron.count()
    assert len(mailbox) == 0

    # Create record / POST
    patron_data['pid'] = '1'
    patron_data['email'] = '*****@*****.**'

    res, _ = postdata(client, 'invenio_records_rest.ptrn_list', patron_data)

    assert res.status_code == 201
    assert Patron.count() == pids + 1
    assert len(mailbox) == 1
    assert re.search(r'localhost/lost-password', mailbox[0].body)

    # Check that the returned record matches the given data
    data = get_json(res)
    assert data['metadata'] == patron_data

    res = client.get(item_url)
    assert res.status_code == 200
    data = get_json(res)
    assert patron_data == data['metadata']

    # Update record/PUT
    data = patron_data
    data['first_name'] = 'Test Name'
    res = client.put(item_url, data=json.dumps(data), headers=json_header)
    assert res.status_code == 200
    # assert res.headers['ETag'] != '"{}"'.format(ptrnrarie.revision_id)

    # Check that the returned record matches the given data
    data = get_json(res)
    assert data['metadata']['first_name'] == 'Test Name'

    res = client.get(item_url)
    assert res.status_code == 200

    data = get_json(res)
    assert data['metadata']['first_name'] == 'Test Name'

    res = client.get(list_url)
    assert res.status_code == 200

    data = get_json(res)['hits']['hits'][0]
    assert data['metadata']['first_name'] == 'Test Name'

    # Delete record/DELETE
    res = client.delete(item_url)
    assert res.status_code == 204

    res = client.get(item_url)
    assert res.status_code == 410