def loadlicenses(): """Load Zenodo licenses. Create extra PID if license is to be mapped and already exists, otherwise create a new license record and a PID. """ data = read_json('data/licenses.json') map_ = read_json('data/licenses_map.json') mapped = [(d, map_[d['id']] if d['id'] in map_ else None) for d in data] try: for lic, alt_pid in mapped: if lic['id'] == alt_pid: # Skip the already-existing licenses continue if alt_pid: try: pid, record = license_resolver.resolve(alt_pid) license_minter(record.id, lic) except PIDDoesNotExistError: create_new_license(lic) else: create_new_license(lic) db.session.commit() except Exception: db.session.rollback() raise
def test_loadlicenses(script_info, license_server_mock, od_licenses_path, od_licenses_json, spdx_licenses_path, spdx_licenses_json): """Test load licenses.""" assert PersistentIdentifier.query.count() == 0 runner = CliRunner() license_pids = set() # Load opendefinition.org licenses twice (from URL and path) for cli_extra_args in ([], ['--path', od_licenses_path, '--eager']): result = runner.invoke(opendefinition, ['loadlicenses'] + cli_extra_args, obj=script_info) assert result.exit_code == 0 for license_id, license in od_licenses_json.items(): for license_id_variant in (license_id, license_id.lower()): pid, record = license_resolver.resolve(license_id_variant) assert record['title'] == license['title'] assert record['url'] == license['url'] assert record['id'] == license['id'] license_pids.add(pid.pid_value) assert PersistentIdentifier.query.count() == len(license_pids) # Load spdx.org licenses twice (from URL and path) for cli_extra_args in ([], ['--path', spdx_licenses_path, '--eager']): result = runner.invoke(opendefinition, ['loadlicenses', '--source', 'spdx'] + cli_extra_args, obj=script_info) assert result.exit_code == 0 for license in spdx_licenses_json['licenses']: license_id = license['licenseId'] for license_id_variant in (license_id, license_id.lower()): pid, record = license_resolver.resolve(license_id_variant) assert record['title'] == license['name'] assert record['url'] == license['seeAlso'][-1] assert record['id'] == license_id license_pids.add(license_id_variant) assert PersistentIdentifier.query.count() == len(license_pids)
def test_loadlicenses(script_info, licenses_example, license_server_mock): """Test load licenses.""" assert PersistentIdentifier.query.count() == 0 runner = CliRunner() # Run twice to test the updating code also for x in range(2): result = runner.invoke(opendefinition, ['loadlicenses'], obj=script_info) assert result.exit_code == 0 for license in licenses_example: pid, record = license_resolver.resolve(license) del record['$schema'] assert record == licenses_example[license] assert PersistentIdentifier.query.count() == len(licenses_example)
def test_loadlicenses(script_info, licenses_example, license_server_mock): """Test load licenses.""" assert PersistentIdentifier.query.count() == 0 runner = CliRunner() # Run twice to test the updating code also for x in range(2): result = runner.invoke( opendefinition, ['loadlicenses'], obj=script_info ) assert result.exit_code == 0 for license in licenses_example: pid, record = license_resolver.resolve(license) del record['$schema'] assert record == licenses_example[license] assert PersistentIdentifier.query.count() == len(licenses_example)