def deposit(app, es, users, locations, deposit_metadata, sip_metadata_types): """New deposit with files.""" with app.test_request_context(): datastore = app.extensions['security'].datastore login_user(datastore.get_user(users[0]['email'])) id_ = uuid4() zenodo_deposit_minter(id_, deposit_metadata) deposit = Deposit.create(deposit_metadata, id_=id_) db_.session.commit() current_search.flush_and_refresh(index='deposits') return deposit
def test_doi_minting(db, doi_in, doi_out): """Test using same integer for dep/rec ids.""" dep_uuid, rec_uuid = uuid4(), uuid4() data = dict(doi=doi_in) zenodo_deposit_minter(dep_uuid, data) zenodo_record_minter(rec_uuid, data) db.session.commit() pid = PersistentIdentifier.get('doi', doi_out) assert pid.object_uuid == rec_uuid assert pid.status == PIDStatus.RESERVED
def loaddemorecords(records, owner): """Load demo records.""" with current_app.test_request_context(): login_user(owner) for record in records: deposit_data = legacyjson_v1(record) deposit_id = uuid4() zenodo_deposit_minter(deposit_id, deposit_data) deposit = ZenodoDeposit.create(deposit_data, id_=deposit_id) db.session.commit() filename = record['files'][0] deposit.files[filename] = BytesIO(filename) db.session.commit() deposit.publish() db.session.commit()
def test_double_minting_depid_recid(db): """Test using same integer for dep/rec ids.""" dep_uuid = uuid4() data = dict() pid = zenodo_deposit_minter(dep_uuid, data) # Assert values added to data. Depid and recid have IDs starting from # '2' since the conceptrecid is minted first assert data['_deposit']['id'] == '2' assert data['conceptrecid'] == '1' assert data['recid'] == 2 assert 'doi' not in data # Assert pid values assert pid.pid_type == 'depid' assert pid.pid_value == '2' assert pid.status == PIDStatus.REGISTERED assert pid.object_uuid == dep_uuid # Assert reservation of recid. assert PersistentIdentifier.get('recid', pid.pid_value).status \ == PIDStatus.RESERVED db.session.commit() # Assert registration of recid. rec_uuid = uuid4() pid = zenodo_record_minter(rec_uuid, data) assert pid.pid_type == 'recid' assert pid.pid_value == '2' assert pid.status == PIDStatus.REGISTERED assert pid.object_uuid == rec_uuid assert data['doi'] == '10.5072/zenodo.2' assert data['_oai']['id'] == 'oai:zenodo.org:2'
def test_cleanup_indexed_deposits(app, db, es, locations, users, deposit_metadata, sip_metadata_types): with app.test_request_context(): datastore = app.extensions['security'].datastore login_user(datastore.get_user(users[0]['email'])) id_ = uuid4() depid = zenodo_deposit_minter(id_, deposit_metadata) ZenodoDeposit.create(deposit_metadata, id_=id_) # Emulate a database "failure", which would wipe any models in the session db.session.remove() current_search.flush_and_refresh(index='deposits') # Deposit has been indexed in ES, but not commimted in DB assert PersistentIdentifier.query.filter( PersistentIdentifier.pid_type == depid.pid_type, PersistentIdentifier.pid_value == depid.pid_value).count() == 0 assert (RecordsSearch(index='deposits').get_record(id_).execute() [0]._deposit.id == depid.pid_value) cleanup_indexed_deposits.apply() current_search.flush_and_refresh(index='deposits') assert PersistentIdentifier.query.filter( PersistentIdentifier.pid_type == depid.pid_type, PersistentIdentifier.pid_value == depid.pid_value).count() == 0 assert len(RecordsSearch(index='deposits').get_record(id_).execute()) == 0
def deposit(app, es, users, location): """New deposit with files.""" data = dict( title='Test title', creators=[ dict(name='Doe, John', affiliation='Atlantis'), dict(name='Smith, Jane', affiliation='Atlantis') ], description='Test Description', resource_type=dict(type='publication'), publication_date='2013-05-08', access_right='open' ) with app.test_request_context(): datastore = app.extensions['security'].datastore login_user(datastore.get_user(users[0]['email'])) id_ = uuid4() zenodo_deposit_minter(id_, data) deposit = Deposit.create(data, id_=id_) db_.session.commit() current_search.flush_and_refresh(index='deposits') return deposit
def test_invalid_doi(db, doi): """Test using same integer for dep/rec ids.""" dep_uuid = uuid4() data = dict(doi=doi) zenodo_deposit_minter(dep_uuid, data) assert PersistentIdentifier.query.count() == 3