diff --git a/.gitignore b/.gitignore index 592f31da8..3e8fdad7c 100644 --- a/.gitignore +++ b/.gitignore @@ -12,9 +12,14 @@ tests/results **.cache .coverage .tox +.pytest_cache # test configurations /default.cfg # pycharm ide .idea + +# shell files +.env +.envrc diff --git a/pycsw/core/admin.py b/pycsw/core/admin.py index 2f4438835..640620bd8 100644 --- a/pycsw/core/admin.py +++ b/pycsw/core/admin.py @@ -310,10 +310,13 @@ def setup_db(database, table, home, create_sfsql_tables=True, create_plpythonu_f def load_records(context, database, table, xml_dirpath, recursive=False, force_update=False): """Load metadata records from directory of files to database""" + from sqlalchemy.exc import DBAPIError + repo = repository.Repository(database, context, table=table) file_list = [] + loaded_files = set() if os.path.isfile(xml_dirpath): file_list.append(xml_dirpath) elif recursive: @@ -334,11 +337,18 @@ def load_records(context, database, table, xml_dirpath, recursive=False, force_u # read document try: exml = etree.parse(recfile, context.parser) + except etree.XMLSyntaxError as err: + LOGGER.error('XML document "%s" is not well-formed', recfile) + continue except Exception as err: - LOGGER.exception('XML document is not well-formed') + LOGGER.exception('XML document "%s" is not well-formed', recfile) continue - record = metadata.parse_record(context, exml, repo) + try: + record = metadata.parse_record(context, exml, repo) + except Exception as err: + LOGGER.exception('Could not parse "%s" as an XML record', recfile) + continue for rec in record: LOGGER.info('Inserting %s %s into database %s, table %s ....', @@ -347,14 +357,23 @@ def load_records(context, database, table, xml_dirpath, recursive=False, force_u # TODO: do this as CSW Harvest try: repo.insert(rec, 'local', util.get_today_and_now()) - LOGGER.info('Inserted') - except RuntimeError as err: + loaded_files.add(recfile) + LOGGER.info('Inserted %s', recfile) + except Exception as err: if force_update: LOGGER.info('Record exists. Updating.') repo.update(rec) - LOGGER.info('Updated') + LOGGER.info('Updated %s', recfile) + loaded_files.add(recfile) else: - LOGGER.error('ERROR: not inserted %s', err) + if isinstance(err, DBAPIError) and err.args: + # Pull a decent database error message and not the full SQL that was run + # since INSERT SQL statements are rather large. + LOGGER.error('ERROR: %s not inserted: %s', recfile, err.args[0]) + else: + LOGGER.error('ERROR: %s not inserted: %s', recfile, err) + + return tuple(loaded_files) def export_records(context, database, table, xml_dirpath): @@ -370,6 +389,8 @@ def export_records(context, database, table, xml_dirpath): dirpath = os.path.abspath(xml_dirpath) + exported_files = set() + if not os.path.exists(dirpath): LOGGER.info('Directory %s does not exist. Creating...', dirpath) try: @@ -384,11 +405,9 @@ def export_records(context, database, table, xml_dirpath): context.md_core_model['mappings']['pycsw:Identifier']) LOGGER.info('Processing %s', identifier) - if identifier.find(':') != -1: # it's a URN - # sanitize identifier - LOGGER.info(' Sanitizing identifier') - identifier = identifier.split(':')[-1] + # sanitize identifier + identifier = util.secure_filename(identifier) # write to XML document filename = os.path.join(dirpath, '%s.xml' % identifier) try: @@ -400,10 +419,17 @@ def export_records(context, database, table, xml_dirpath): with open(filename, 'w') as xml: xml.write('\n') xml.write(str_xml) - except Exception as err: - LOGGER.exception('Error writing to disk') - raise RuntimeError("Error writing to %s" % filename, err) + # Something went wrong so skip over this file but log an error + LOGGER.exception('Error writing %s to disk', filename) + # If we wrote a partial file or created an empty file make sure it is removed + if os.path.exists(filename): + os.remove(filename) + continue + else: + exported_files.add(filename) + + return tuple(exported_files) def refresh_harvested_records(context, database, table, url): @@ -452,10 +478,23 @@ def rebuild_db_indexes(database, table): def optimize_db(context, database, table): """Optimize database""" + from sqlalchemy.exc import ArgumentError, OperationalError LOGGER.info('Optimizing database %s', database) repos = repository.Repository(database, context, table=table) - repos.engine.connect().execute('VACUUM ANALYZE').close() + connection = repos.engine.connect() + try: + # PostgreSQL + connection.execution_options(isolation_level="AUTOCOMMIT") + connection.execute('VACUUM ANALYZE') + except (ArgumentError, OperationalError): + # SQLite + connection.autocommit = True + connection.execute('VACUUM') + connection.execute('ANALYZE') + finally: + connection.close() + LOGGER.info('Done') def gen_sitemap(context, database, table, url, output_file): diff --git a/pycsw/core/metadata.py b/pycsw/core/metadata.py index 58a9c3787..66abcbadd 100644 --- a/pycsw/core/metadata.py +++ b/pycsw/core/metadata.py @@ -34,6 +34,7 @@ import logging import uuid from six.moves import range +from six import text_type, binary_type from six.moves.urllib.parse import urlparse from geolinks import sniff_link @@ -124,7 +125,7 @@ def _set(context, obj, name, value): def _parse_metadata(context, repos, record): """parse metadata formats""" - if isinstance(record, str): + if isinstance(record, binary_type) or isinstance(record, text_type): exml = etree.fromstring(record, context.parser) else: # already serialized to lxml if hasattr(record, 'getroot'): # standalone document @@ -584,6 +585,7 @@ def _parse_wmts(context, repos, record, identifier): def _parse_wfs(context, repos, record, identifier, version): + import requests from owslib.wfs import WebFeatureService bboxs = [] @@ -592,6 +594,8 @@ def _parse_wfs(context, repos, record, identifier, version): try: md = WebFeatureService(record, version) + except requests.exceptions.HTTPError as err: + raise except Exception as err: if version == '1.1.0': md = WebFeatureService(record, '1.0.0') diff --git a/pycsw/core/repository.py b/pycsw/core/repository.py index c1bdd6e91..690edd9fa 100644 --- a/pycsw/core/repository.py +++ b/pycsw/core/repository.py @@ -300,9 +300,7 @@ def insert(self, record, source, insert_date): self.session.commit() except Exception as err: self.session.rollback() - msg = 'Cannot commit to repository' - LOGGER.exception(msg) - raise RuntimeError(msg) + raise def update(self, record=None, recprops=None, constraint=None): ''' Update a record in the repository based on identifier ''' diff --git a/pycsw/core/util.py b/pycsw/core/util.py index 94b41aa83..7d0c1ee55 100644 --- a/pycsw/core/util.py +++ b/pycsw/core/util.py @@ -32,6 +32,8 @@ # # ================================================================= +import os +import re import datetime import logging import time @@ -51,6 +53,12 @@ ranking_pass = False ranking_query_geometry = '' +# Lookups for the secure_filename function +# https://github.com/pallets/werkzeug/blob/778f482d1ac0c9e8e98f774d2595e9074e6984d7/werkzeug/utils.py#L30-L31 +_filename_ascii_strip_re = re.compile(r'[^A-Za-z0-9_.-]') +_windows_device_files = ('CON', 'AUX', 'COM1', 'COM2', 'COM3', 'COM4', 'LPT1', + 'LPT2', 'LPT3', 'PRN', 'NUL') + def get_today_and_now(): """Get the date, right now, in ISO8601""" @@ -338,3 +346,49 @@ def get_anytext(bag): bag = etree.fromstring(bag, PARSER) # get all XML element content return ' '.join([value.strip() for value in bag.xpath('//text()')]) + + +# https://github.com/pallets/werkzeug/blob/778f482d1ac0c9e8e98f774d2595e9074e6984d7/werkzeug/utils.py#L253 +def secure_filename(filename): + r"""Pass it a filename and it will return a secure version of it. This + filename can then safely be stored on a regular file system and passed + to :func:`os.path.join`. The filename returned is an ASCII only string + for maximum portability. + + On windows systems the function also makes sure that the file is not + named after one of the special device files. + + >>> secure_filename("My cool movie.mov") + 'My_cool_movie.mov' + >>> secure_filename("../../../etc/passwd") + 'etc_passwd' + >>> secure_filename(u'i contain cool \xfcml\xe4uts.txt') + 'i_contain_cool_umlauts.txt' + + The function might return an empty filename. It's your responsibility + to ensure that the filename is unique and that you abort or + generate a random filename if the function returned an empty one. + + .. versionadded:: 0.5 + + :param filename: the filename to secure + """ + if isinstance(filename, six.text_type): + from unicodedata import normalize + filename = normalize('NFKD', filename).encode('ascii', 'ignore') + if not six.PY2: + filename = filename.decode('ascii') + for sep in os.path.sep, os.path.altsep: + if sep: + filename = filename.replace(sep, ' ') + filename = str(_filename_ascii_strip_re.sub('', '_'.join( + filename.split()))).strip('._') + + # on nt a couple of special files are present in each folder. We + # have to ensure that the target file is not such a filename. In + # this case we prepend an underline + if os.name == 'nt' and filename and \ + filename.split('.')[0].upper() in _windows_device_files: + filename = '_' + filename + + return filename diff --git a/pycsw/ogc/csw/csw2.py b/pycsw/ogc/csw/csw2.py index 9cf8c05c4..1f7e57dfc 100644 --- a/pycsw/ogc/csw/csw2.py +++ b/pycsw/ogc/csw/csw2.py @@ -1258,8 +1258,8 @@ def harvest(self): return self.exceptionreport('InvalidParameterValue', 'resourcetype', 'Invalid resource type parameter: %s.\ Allowable resourcetype values: %s' % (self.parent.kvp['resourcetype'], - ','.join(self.parent.context.model['operations']['Harvest']['parameters'] - ['ResourceType']['values']))) + ','.join(sorted(self.parent.context.model['operations']['Harvest']['parameters'] + ['ResourceType']['values'])))) if (self.parent.kvp['resourcetype'].find('opengis.net') == -1 and self.parent.kvp['resourcetype'].find('urn:geoss:waf') == -1): diff --git a/pycsw/ogc/csw/csw3.py b/pycsw/ogc/csw/csw3.py index 703261265..a1dcd4723 100644 --- a/pycsw/ogc/csw/csw3.py +++ b/pycsw/ogc/csw/csw3.py @@ -1321,8 +1321,8 @@ def harvest(self): return self.exceptionreport('InvalidParameterValue', 'resourcetype', 'Invalid resource type parameter: %s.\ Allowable resourcetype values: %s' % (self.parent.kvp['resourcetype'], - ','.join(self.parent.context.model['operations']['Harvest']['parameters'] - ['ResourceType']['values']))) + ','.join(sorted(self.parent.context.model['operations']['Harvest']['parameters'] + ['ResourceType']['values'])))) if (self.parent.kvp['resourcetype'].find('opengis.net') == -1 and self.parent.kvp['resourcetype'].find('urn:geoss:waf') == -1): diff --git a/tests/functionaltests/conftest.py b/tests/functionaltests/conftest.py index d2949a874..fbc1b7d2d 100644 --- a/tests/functionaltests/conftest.py +++ b/tests/functionaltests/conftest.py @@ -54,6 +54,7 @@ "post_tests_dir", "data_tests_dir", "expected_results_dir", + "export_tests_dir", ]) @@ -142,6 +143,7 @@ def pytest_generate_tests(metafunc): ) arg_values.extend(get_argvalues) test_ids.extend(get_ids) + metafunc.parametrize( argnames=["configuration", "request_method", "request_data", "expected_result", "normalize_identifier_fields",], @@ -150,6 +152,7 @@ def pytest_generate_tests(metafunc): ids=test_ids, ) + @pytest.fixture() def test_identifier(request): """Extract a meaningful identifier from the request's node.""" @@ -195,11 +198,12 @@ def configuration(request, tests_directory, log_level): suite_name = config_path.split(os.path.sep)[-2] suite_dirs = _get_suite_dirs(suite_name) data_dir = suite_dirs.data_tests_dir + export_dir = suite_dirs.export_tests_dir if data_dir is not None: # suite has its own database repository_url = _get_repository_url(request.config, suite_name, tests_directory) else: # suite uses the CITE database - data_dir = _get_cite_suite_data_dir() + data_dir, export_dir = _get_cite_suite_dirs() repository_url = _get_repository_url(request.config, "cite", tests_directory) table_name = _get_table_name(suite_name, config, repository_url) @@ -207,7 +211,8 @@ def configuration(request, tests_directory, log_level): _initialize_database(repository_url=repository_url, table_name=table_name, data_dir=data_dir, - test_dir=tests_directory) + test_dir=tests_directory, + export_dir=export_dir) config.set("server", "loglevel", log_level) config.set("server", "logfile", "") config.set("repository", "database", repository_url) @@ -233,14 +238,16 @@ def fixture_tests_directory(tmpdir_factory): return tests_dir -def _get_cite_suite_data_dir(): +def _get_cite_suite_dirs(): """Return the path to the data directory of the CITE test suite.""" global TESTS_ROOT suites_root_dir = os.path.join(TESTS_ROOT, "functionaltests", "suites") suite_dir = os.path.join(suites_root_dir, "cite") data_tests_dir = os.path.join(suite_dir, "data") + export_tests_dir = os.path.join(suite_dir, "export") data_dir = data_tests_dir if os.path.isdir(data_tests_dir) else None - return data_dir + export_dir = export_tests_dir if os.path.isdir(export_tests_dir) else None + return data_dir, export_dir def _get_get_parameters(get_tests_dir, expected_tests_dir, config_path, @@ -354,16 +361,19 @@ def _get_suite_dirs(suite_name): data_tests_dir = os.path.join(suite_dir, "data") post_tests_dir = os.path.join(suite_dir, "post") get_tests_dir = os.path.join(suite_dir, "get") + export_tests_dir = os.path.join(suite_dir, "export") expected_results_dir = os.path.join(suite_dir, "expected") data_dir = data_tests_dir if os.path.isdir(data_tests_dir) else None posts_dir = post_tests_dir if os.path.isdir(post_tests_dir) else None gets_dir = get_tests_dir if os.path.isdir(get_tests_dir) else None expected_dir = (expected_results_dir if os.path.isdir( expected_results_dir) else None) + export_dir = export_tests_dir if os.path.isdir(export_tests_dir) else None return SuiteDirs(get_tests_dir=gets_dir, post_tests_dir=posts_dir, data_tests_dir=data_dir, - expected_results_dir=expected_dir) + expected_results_dir=expected_dir, + export_tests_dir=export_tests_dir) def _get_table_name(suite, config, repository_url): @@ -394,7 +404,7 @@ def _get_table_name(suite, config, repository_url): return result -def _initialize_database(repository_url, table_name, data_dir, test_dir): +def _initialize_database(repository_url, table_name, data_dir, test_dir, export_dir): """Initialize database for tests. This function will create the database and load any test data that @@ -411,6 +421,8 @@ def _initialize_database(repository_url, table_name, data_dir, test_dir): into the database test_dir: str Directory where the database is to be created, in case of sqlite. + export_dir: str + Diretory where the exported records are to be saved, if any """ @@ -426,8 +438,30 @@ def _initialize_database(repository_url, table_name, data_dir, test_dir): **extra_kwargs) if len(os.listdir(data_dir)) > 0: print("Loading database data...") - admin.load_records(context=StaticContext(), database=repository_url, - table=table_name, xml_dirpath=data_dir) + loaded = admin.load_records( + context=StaticContext(), + database=repository_url, + table=table_name, + xml_dirpath=data_dir, + recursive=True + ) + admin.optimize_db(context=StaticContext(), database=repository_url, table=table_name) + if export_dir is not None: + # Attempt to export files + exported = admin.export_records( + context=StaticContext(), + database=repository_url, + table=table_name, + xml_dirpath=export_dir + ) + if len(loaded) != len(exported): + raise ValueError( + "Loaded records (%s) is different from exported records (%s)" % + (len(loaded), len(exported)) + ) + # Remove the files that were exported since this was just a test + for toremove in exported: + os.remove(toremove) def _parse_postgresql_repository_url(repository_url): diff --git a/tests/functionaltests/suites/duplicatefileid/data/isos/tds.maracoos.org/iso/AVHRR.2011.7Agg.xml b/tests/functionaltests/suites/duplicatefileid/data/isos/tds.maracoos.org/iso/AVHRR.2011.7Agg.xml new file mode 100644 index 000000000..c769d9d79 --- /dev/null +++ b/tests/functionaltests/suites/duplicatefileid/data/isos/tds.maracoos.org/iso/AVHRR.2011.7Agg.xml @@ -0,0 +1,744 @@ + + + + org.maracoos:avhrr.sst + + + eng + + + UTF8 + + + dataset + + + service + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + 2017-10-27 + + + ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data + + + ISO 19115-2:2009(E) + + + + + 3 + + + + + column + + + 4500 + + + 0.011113580795732384 + + + + + + + row + + + 3661 + + + 0.008743169398907104 + + + + + + + temporal + + + 1 + + + 0.0 + + + + + area + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + + + org.maracoos + + + + + + AVHRR.2011.7Agg + + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + + + MARACOOS + + + AVHRR + + + SST + + + UDEL + + + Satellite SST + + + Rutgers + + + EARTH SCIENCE > OCEANS > OCEAN TEMPERATURE > SEA SURFACE TEMPERATURE + + + theme + + + + + + + + + + + + + MARACOOS DMAC + + + dataCenter + + + + + + + + sea_surface_temperature + + + longitude + + + latitude + + + time + + + theme + + + + + http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html + + + + + + + + + + Freely Distributed + + + + + + + + + + + Unidata Common Data Model + + + + + + Grid + + + + + largerWorkCitation + + + project + + + + + eng + + + climatologyMeteorologyAtmosphere + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + seconds + 2011-08-26T23:37:00Z + 2011-08-26T23:37:00Z + + + + + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + OPeNDAP:OPeNDAP + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + 2011-08-26T23:37:00Z + 2011-08-26T23:37:00Z + + + + + + + + tight + + + + + OPeNDAP Client Access + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2011/7Agg + + + OPeNDAP:OPeNDAP + + + OPeNDAP + + + THREDDS OPeNDAP + + + download + + + + + + + + + + + + + + + + + + mcsst + + + + + float + + + + + + + Multichannel Sea Surface Temperature (sea_surface_temperature) + + + + + + + + + + grid_topology + + + + + int + + + + + + + + + + + + + + lon + + + + + double + + + + + + + Longitude (longitude) + + + + + + + + + + lat + + + + + double + + + + + + + Latitude (latitude) + + + + + + + + + + time + + + + + int + + + + + + + Time (time) + + + + + + + + + + + + + + + MARACOOS DMAC + + + + + + + maracoosinfo@udel.edu + + + + + + + http://maracoos.org + + + WWW:LINK + + + web browser + + + URL for the data publisher + + + This URL provides contact information for the publisher of this dataset + + + information + + + + + + + publisher + + + + + + + OPeNDAP + + + + + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2011/7Agg.html + + + WWW:LINK + + + File Information + + + This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. + + + download + + + + + + + + + + + http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2011/7Agg + + + WWW:LINK + + + Viewer Information + + + This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource. + + + mapDigital + + + + + + + + + + + + + + This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.169-04:00) + + + + diff --git a/tests/functionaltests/suites/duplicatefileid/data/isos/tds.maracoos.org/iso/AVHRR.2012.7Agg.xml b/tests/functionaltests/suites/duplicatefileid/data/isos/tds.maracoos.org/iso/AVHRR.2012.7Agg.xml new file mode 100644 index 000000000..9dbd0e682 --- /dev/null +++ b/tests/functionaltests/suites/duplicatefileid/data/isos/tds.maracoos.org/iso/AVHRR.2012.7Agg.xml @@ -0,0 +1,744 @@ + + + + org.maracoos:avhrr.sst + + + eng + + + UTF8 + + + dataset + + + service + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + 2017-10-27 + + + ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data + + + ISO 19115-2:2009(E) + + + + + 3 + + + + + column + + + 4500 + + + 0.011113580795732384 + + + + + + + row + + + 3661 + + + 0.008743169398907104 + + + + + + + temporal + + + 1 + + + 0.0 + + + + + area + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + + + org.maracoos + + + + + + AVHRR.2012.7Agg + + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + + + MARACOOS + + + AVHRR + + + SST + + + UDEL + + + Satellite SST + + + Rutgers + + + EARTH SCIENCE > OCEANS > OCEAN TEMPERATURE > SEA SURFACE TEMPERATURE + + + theme + + + + + + + + + + + + + MARACOOS DMAC + + + dataCenter + + + + + + + + sea_surface_temperature + + + longitude + + + latitude + + + time + + + theme + + + + + http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html + + + + + + + + + + Freely Distributed + + + + + + + + + + + Unidata Common Data Model + + + + + + Grid + + + + + largerWorkCitation + + + project + + + + + eng + + + climatologyMeteorologyAtmosphere + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + seconds + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + OPeNDAP:OPeNDAP + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + tight + + + + + OPeNDAP Client Access + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + OPeNDAP:OPeNDAP + + + OPeNDAP + + + THREDDS OPeNDAP + + + download + + + + + + + + + + + + + + + + + + mcsst + + + + + float + + + + + + + Multichannel Sea Surface Temperature (sea_surface_temperature) + + + + + + + + + + grid_topology + + + + + int + + + + + + + + + + + + + + lon + + + + + double + + + + + + + Longitude (longitude) + + + + + + + + + + lat + + + + + double + + + + + + + Latitude (latitude) + + + + + + + + + + time + + + + + int + + + + + + + Time (time) + + + + + + + + + + + + + + + MARACOOS DMAC + + + + + + + maracoosinfo@udel.edu + + + + + + + http://maracoos.org + + + WWW:LINK + + + web browser + + + URL for the data publisher + + + This URL provides contact information for the publisher of this dataset + + + information + + + + + + + publisher + + + + + + + OPeNDAP + + + + + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html + + + WWW:LINK + + + File Information + + + This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. + + + download + + + + + + + + + + + http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + WWW:LINK + + + Viewer Information + + + This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource. + + + mapDigital + + + + + + + + + + + + + + This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00) + + + + diff --git a/tests/functionaltests/suites/duplicatefileid/default.cfg b/tests/functionaltests/suites/duplicatefileid/default.cfg new file mode 100644 index 000000000..cf2c7a788 --- /dev/null +++ b/tests/functionaltests/suites/duplicatefileid/default.cfg @@ -0,0 +1,90 @@ +# ================================================================= +# +# Authors: Tom Kralidis +# +# Copyright (c) 2011 Tom Kralidis +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +# ================================================================= + +[server] +home=. +url=http://localhost/pycsw/csw.py?config=tests/suites/duplicatefileid/default.cfg +mimetype=application/xml; charset=UTF-8 +encoding=UTF-8 +language=en-US +maxrecords=10 +#loglevel=DEBUG +#logfile=/tmp/pycsw.log +#ogc_schemas_base=http://foo +#federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery +pretty_print=true +#gzip_compresslevel=8 +#spatial_ranking=true + +[manager] +transactions=false +allowed_ips=127.0.0.1 + +[metadata:main] +identification_title=pycsw Geospatial Catalogue +identification_abstract=pycsw is an OGC CSW server implementation written in Python +identification_keywords=catalogue,discovery +identification_keywords_type=theme +identification_fees=None +identification_accessconstraints=None +provider_name=pycsw +provider_url=http://pycsw.org/ +contact_name=Kralidis, Tom +contact_position=Senior Systems Scientist +contact_address=TBA +contact_city=Toronto +contact_stateorprovince=Ontario +contact_postalcode=M9C 3Z9 +contact_country=Canada +contact_phone=+01-416-xxx-xxxx +contact_fax=+01-416-xxx-xxxx +contact_email=tomkralidis@gmail.com +contact_url=http://kralidis.ca/ +contact_hours=0800h - 1600h EST +contact_instructions=During hours of service. Off on weekends. +contact_role=pointOfContact + +[repository] +# sqlite +database=sqlite:///tests/suites/duplicatefileid/data/records.db +# postgres +#database=postgres://username:password@localhost/pycsw +table=records + +[metadata:inspire] +enabled=false +languages_supported=eng,gre +default_language=eng +date=2011-03-29 +gemet_keywords=Utility and governmental services +conformity_service=notEvaluated +contact_name=National Technical University of Athens +contact_email=tzotsos@gmail.com +temp_extent=2011-02-01/2011-03-30 + diff --git a/tests/functionaltests/suites/duplicatefileid/expected/get_GetCapabilities.xml b/tests/functionaltests/suites/duplicatefileid/expected/get_GetCapabilities.xml new file mode 100644 index 000000000..5b072f7a9 --- /dev/null +++ b/tests/functionaltests/suites/duplicatefileid/expected/get_GetCapabilities.xml @@ -0,0 +1,261 @@ + + + + + pycsw Geospatial Catalogue + pycsw is an OGC CSW server implementation written in Python + + catalogue + discovery + theme + + CSW + 2.0.2 + 3.0.0 + None + None + + + pycsw + + + Kralidis, Tom + Senior Systems Scientist + + + +01-416-xxx-xxxx + +01-416-xxx-xxxx + + + TBA + Toronto + Ontario + M9C 3Z9 + Canada + tomkralidis@gmail.com + + + 0800h - 1600h EST + During hours of service. Off on weekends. + + pointOfContact + + + + + + + + + + + + Filter_Capabilities + OperationsMetadata + ServiceIdentification + ServiceProvider + + + + + + + + + + + application/json + application/xml + + + http://www.w3.org/2001/XMLSchema + http://www.w3.org/TR/xmlschema-1/ + http://www.w3.org/XML/Schema + + + csw:Record + + + + + + + + + + + DescribeRecord.outputFormat + DescribeRecord.schemaLanguage + DescribeRecord.typeName + GetCapabilities.sections + GetRecordById.ElementSetName + GetRecordById.outputFormat + GetRecordById.outputSchema + GetRecords.CONSTRAINTLANGUAGE + GetRecords.ElementSetName + GetRecords.outputFormat + GetRecords.outputSchema + GetRecords.resultType + GetRecords.typeNames + + + + + + + + + + + CQL_TEXT + FILTER + + + brief + full + summary + + + application/json + application/xml + + + http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ + http://www.interlis.ch/INTERLIS2.3 + http://www.opengis.net/cat/csw/2.0.2 + http://www.opengis.net/cat/csw/csdgm + http://www.w3.org/2005/Atom + + + hits + results + validate + + + csw:Record + + + csw:AnyText + dc:contributor + dc:creator + dc:date + dc:format + dc:identifier + dc:language + dc:publisher + dc:relation + dc:rights + dc:source + dc:subject + dc:title + dc:type + dct:abstract + dct:alternative + dct:modified + dct:spatial + ows:BoundingBox + + + + + + + + + + + brief + full + summary + + + application/json + application/xml + + + http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ + http://www.interlis.ch/INTERLIS2.3 + http://www.opengis.net/cat/csw/2.0.2 + http://www.opengis.net/cat/csw/csdgm + http://www.w3.org/2005/Atom + + + + + + + + + + + CSW + + + 2.0.2 + 3.0.0 + + + 10 + + + XML + SOAP + + + allowed + + + + + + gml:Point + gml:LineString + gml:Polygon + gml:Envelope + + + + + + + + + + + + + + + + + + + Between + EqualTo + GreaterThan + GreaterThanEqualTo + LessThan + LessThanEqualTo + Like + NotEqualTo + NullCheck + + + + + length + lower + ltrim + rtrim + trim + upper + + + + + + + + + + diff --git a/tests/functionaltests/suites/duplicatefileid/expected/post_GetRecords-all.xml b/tests/functionaltests/suites/duplicatefileid/expected/post_GetRecords-all.xml new file mode 100644 index 000000000..7da09a92e --- /dev/null +++ b/tests/functionaltests/suites/duplicatefileid/expected/post_GetRecords-all.xml @@ -0,0 +1,16 @@ + + + + + + + org.maracoos:avhrr.sst + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + dataset + + 20.0 -100.0 + 52.0 -50.0 + + + + diff --git a/tests/functionaltests/suites/duplicatefileid/get/requests.txt b/tests/functionaltests/suites/duplicatefileid/get/requests.txt new file mode 100644 index 000000000..6d76b7cf6 --- /dev/null +++ b/tests/functionaltests/suites/duplicatefileid/get/requests.txt @@ -0,0 +1 @@ +GetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities diff --git a/tests/functionaltests/suites/duplicatefileid/post/GetRecords-all.xml b/tests/functionaltests/suites/duplicatefileid/post/GetRecords-all.xml new file mode 100644 index 000000000..9d1dbabbe --- /dev/null +++ b/tests/functionaltests/suites/duplicatefileid/post/GetRecords-all.xml @@ -0,0 +1,6 @@ + + + + brief + + diff --git a/tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-invalid-resourcetype.xml b/tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-invalid-resourcetype.xml index 4e1e40cd8..c9a994372 100644 --- a/tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-invalid-resourcetype.xml +++ b/tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-invalid-resourcetype.xml @@ -2,6 +2,6 @@ - Invalid resource type parameter: http://www.opengis.net/wms1234. Allowable resourcetype values: http://www.opengis.net/cat/csw/2.0.2,http://www.opengis.net/cat/csw/3.0,http://www.opengis.net/wms,http://www.opengis.net/wmts/1.0,http://www.opengis.net/wfs,http://www.opengis.net/wfs/2.0,http://www.opengis.net/wcs,http://www.opengis.net/wps/1.0.0,http://www.opengis.net/sos/1.0,http://www.opengis.net/sos/2.0,http://www.isotc211.org/2005/gmi,urn:geoss:waf,http://www.interlis.ch/INTERLIS2.3,http://www.opengis.net/cat/csw/csdgm,http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/,http://www.w3.org/2005/Atom,http://www.isotc211.org/2005/gmd,http://www.isotc211.org/schemas/2005/gmd/ + Invalid resource type parameter: http://www.opengis.net/wms1234. Allowable resourcetype values: http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/,http://www.interlis.ch/INTERLIS2.3,http://www.isotc211.org/2005/gmd,http://www.isotc211.org/2005/gmi,http://www.isotc211.org/schemas/2005/gmd/,http://www.opengis.net/cat/csw/2.0.2,http://www.opengis.net/cat/csw/3.0,http://www.opengis.net/cat/csw/csdgm,http://www.opengis.net/sos/1.0,http://www.opengis.net/sos/2.0,http://www.opengis.net/wcs,http://www.opengis.net/wfs,http://www.opengis.net/wfs/2.0,http://www.opengis.net/wms,http://www.opengis.net/wmts/1.0,http://www.opengis.net/wps/1.0.0,http://www.w3.org/2005/Atom,urn:geoss:waf diff --git a/tests/functionaltests/suites/idswithpaths/data/file_id_as_url.xml b/tests/functionaltests/suites/idswithpaths/data/file_id_as_url.xml new file mode 100644 index 000000000..2f3d8f945 --- /dev/null +++ b/tests/functionaltests/suites/idswithpaths/data/file_id_as_url.xml @@ -0,0 +1,744 @@ + + + + https://ioos.noaa.gov/stations/BRJASL + + + eng + + + UTF8 + + + dataset + + + service + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + 2017-10-27 + + + ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data + + + ISO 19115-2:2009(E) + + + + + 3 + + + + + column + + + 4500 + + + 0.011113580795732384 + + + + + + + row + + + 3661 + + + 0.008743169398907104 + + + + + + + temporal + + + 1 + + + 0.0 + + + + + area + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + + + org.maracoos + + + + + + AVHRR.2012.7Agg + + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + + + MARACOOS + + + AVHRR + + + SST + + + UDEL + + + Satellite SST + + + Rutgers + + + EARTH SCIENCE > OCEANS > OCEAN TEMPERATURE > SEA SURFACE TEMPERATURE + + + theme + + + + + + + + + + + + + MARACOOS DMAC + + + dataCenter + + + + + + + + sea_surface_temperature + + + longitude + + + latitude + + + time + + + theme + + + + + http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html + + + + + + + + + + Freely Distributed + + + + + + + + + + + Unidata Common Data Model + + + + + + Grid + + + + + largerWorkCitation + + + project + + + + + eng + + + climatologyMeteorologyAtmosphere + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + seconds + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + OPeNDAP:OPeNDAP + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + tight + + + + + OPeNDAP Client Access + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + OPeNDAP:OPeNDAP + + + OPeNDAP + + + THREDDS OPeNDAP + + + download + + + + + + + + + + + + + + + + + + mcsst + + + + + float + + + + + + + Multichannel Sea Surface Temperature (sea_surface_temperature) + + + + + + + + + + grid_topology + + + + + int + + + + + + + + + + + + + + lon + + + + + double + + + + + + + Longitude (longitude) + + + + + + + + + + lat + + + + + double + + + + + + + Latitude (latitude) + + + + + + + + + + time + + + + + int + + + + + + + Time (time) + + + + + + + + + + + + + + + MARACOOS DMAC + + + + + + + maracoosinfo@udel.edu + + + + + + + http://maracoos.org + + + WWW:LINK + + + web browser + + + URL for the data publisher + + + This URL provides contact information for the publisher of this dataset + + + information + + + + + + + publisher + + + + + + + OPeNDAP + + + + + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html + + + WWW:LINK + + + File Information + + + This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. + + + download + + + + + + + + + + + http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + WWW:LINK + + + Viewer Information + + + This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource. + + + mapDigital + + + + + + + + + + + + + + This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00) + + + + diff --git a/tests/functionaltests/suites/idswithpaths/data/file_id_starting_with_forward_slash.xml b/tests/functionaltests/suites/idswithpaths/data/file_id_starting_with_forward_slash.xml new file mode 100644 index 000000000..2e641b0e2 --- /dev/null +++ b/tests/functionaltests/suites/idswithpaths/data/file_id_starting_with_forward_slash.xml @@ -0,0 +1,744 @@ + + + + /i/started/with/a/slash + + + eng + + + UTF8 + + + dataset + + + service + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + 2017-10-27 + + + ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data + + + ISO 19115-2:2009(E) + + + + + 3 + + + + + column + + + 4500 + + + 0.011113580795732384 + + + + + + + row + + + 3661 + + + 0.008743169398907104 + + + + + + + temporal + + + 1 + + + 0.0 + + + + + area + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + + + org.maracoos + + + + + + AVHRR.2012.7Agg + + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + + + MARACOOS + + + AVHRR + + + SST + + + UDEL + + + Satellite SST + + + Rutgers + + + EARTH SCIENCE > OCEANS > OCEAN TEMPERATURE > SEA SURFACE TEMPERATURE + + + theme + + + + + + + + + + + + + MARACOOS DMAC + + + dataCenter + + + + + + + + sea_surface_temperature + + + longitude + + + latitude + + + time + + + theme + + + + + http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html + + + + + + + + + + Freely Distributed + + + + + + + + + + + Unidata Common Data Model + + + + + + Grid + + + + + largerWorkCitation + + + project + + + + + eng + + + climatologyMeteorologyAtmosphere + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + seconds + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + OPeNDAP:OPeNDAP + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + tight + + + + + OPeNDAP Client Access + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + OPeNDAP:OPeNDAP + + + OPeNDAP + + + THREDDS OPeNDAP + + + download + + + + + + + + + + + + + + + + + + mcsst + + + + + float + + + + + + + Multichannel Sea Surface Temperature (sea_surface_temperature) + + + + + + + + + + grid_topology + + + + + int + + + + + + + + + + + + + + lon + + + + + double + + + + + + + Longitude (longitude) + + + + + + + + + + lat + + + + + double + + + + + + + Latitude (latitude) + + + + + + + + + + time + + + + + int + + + + + + + Time (time) + + + + + + + + + + + + + + + MARACOOS DMAC + + + + + + + maracoosinfo@udel.edu + + + + + + + http://maracoos.org + + + WWW:LINK + + + web browser + + + URL for the data publisher + + + This URL provides contact information for the publisher of this dataset + + + information + + + + + + + publisher + + + + + + + OPeNDAP + + + + + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html + + + WWW:LINK + + + File Information + + + This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. + + + download + + + + + + + + + + + http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + WWW:LINK + + + Viewer Information + + + This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource. + + + mapDigital + + + + + + + + + + + + + + This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00) + + + + diff --git a/tests/functionaltests/suites/idswithpaths/data/file_id_with_colon.xml b/tests/functionaltests/suites/idswithpaths/data/file_id_with_colon.xml new file mode 100644 index 000000000..e320e1d4c --- /dev/null +++ b/tests/functionaltests/suites/idswithpaths/data/file_id_with_colon.xml @@ -0,0 +1,744 @@ + + + + urn:hi:im:a:urn:or:url + + + eng + + + UTF8 + + + dataset + + + service + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + 2017-10-27 + + + ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data + + + ISO 19115-2:2009(E) + + + + + 3 + + + + + column + + + 4500 + + + 0.011113580795732384 + + + + + + + row + + + 3661 + + + 0.008743169398907104 + + + + + + + temporal + + + 1 + + + 0.0 + + + + + area + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + + + org.maracoos + + + + + + AVHRR.2012.7Agg + + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + + + MARACOOS + + + AVHRR + + + SST + + + UDEL + + + Satellite SST + + + Rutgers + + + EARTH SCIENCE > OCEANS > OCEAN TEMPERATURE > SEA SURFACE TEMPERATURE + + + theme + + + + + + + + + + + + + MARACOOS DMAC + + + dataCenter + + + + + + + + sea_surface_temperature + + + longitude + + + latitude + + + time + + + theme + + + + + http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html + + + + + + + + + + Freely Distributed + + + + + + + + + + + Unidata Common Data Model + + + + + + Grid + + + + + largerWorkCitation + + + project + + + + + eng + + + climatologyMeteorologyAtmosphere + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + seconds + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + OPeNDAP:OPeNDAP + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + tight + + + + + OPeNDAP Client Access + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + OPeNDAP:OPeNDAP + + + OPeNDAP + + + THREDDS OPeNDAP + + + download + + + + + + + + + + + + + + + + + + mcsst + + + + + float + + + + + + + Multichannel Sea Surface Temperature (sea_surface_temperature) + + + + + + + + + + grid_topology + + + + + int + + + + + + + + + + + + + + lon + + + + + double + + + + + + + Longitude (longitude) + + + + + + + + + + lat + + + + + double + + + + + + + Latitude (latitude) + + + + + + + + + + time + + + + + int + + + + + + + Time (time) + + + + + + + + + + + + + + + MARACOOS DMAC + + + + + + + maracoosinfo@udel.edu + + + + + + + http://maracoos.org + + + WWW:LINK + + + web browser + + + URL for the data publisher + + + This URL provides contact information for the publisher of this dataset + + + information + + + + + + + publisher + + + + + + + OPeNDAP + + + + + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html + + + WWW:LINK + + + File Information + + + This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. + + + download + + + + + + + + + + + http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + WWW:LINK + + + Viewer Information + + + This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource. + + + mapDigital + + + + + + + + + + + + + + This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00) + + + + diff --git a/tests/functionaltests/suites/idswithpaths/data/file_id_with_directory_changes.xml b/tests/functionaltests/suites/idswithpaths/data/file_id_with_directory_changes.xml new file mode 100644 index 000000000..b3fe9ad20 --- /dev/null +++ b/tests/functionaltests/suites/idswithpaths/data/file_id_with_directory_changes.xml @@ -0,0 +1,744 @@ + + + + ../../../I'm Trying to go back a few directories/../.. + + + eng + + + UTF8 + + + dataset + + + service + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + 2017-10-27 + + + ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data + + + ISO 19115-2:2009(E) + + + + + 3 + + + + + column + + + 4500 + + + 0.011113580795732384 + + + + + + + row + + + 3661 + + + 0.008743169398907104 + + + + + + + temporal + + + 1 + + + 0.0 + + + + + area + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + + + org.maracoos + + + + + + AVHRR.2012.7Agg + + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + + + MARACOOS + + + AVHRR + + + SST + + + UDEL + + + Satellite SST + + + Rutgers + + + EARTH SCIENCE > OCEANS > OCEAN TEMPERATURE > SEA SURFACE TEMPERATURE + + + theme + + + + + + + + + + + + + MARACOOS DMAC + + + dataCenter + + + + + + + + sea_surface_temperature + + + longitude + + + latitude + + + time + + + theme + + + + + http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html + + + + + + + + + + Freely Distributed + + + + + + + + + + + Unidata Common Data Model + + + + + + Grid + + + + + largerWorkCitation + + + project + + + + + eng + + + climatologyMeteorologyAtmosphere + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + seconds + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + OPeNDAP:OPeNDAP + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + tight + + + + + OPeNDAP Client Access + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + OPeNDAP:OPeNDAP + + + OPeNDAP + + + THREDDS OPeNDAP + + + download + + + + + + + + + + + + + + + + + + mcsst + + + + + float + + + + + + + Multichannel Sea Surface Temperature (sea_surface_temperature) + + + + + + + + + + grid_topology + + + + + int + + + + + + + + + + + + + + lon + + + + + double + + + + + + + Longitude (longitude) + + + + + + + + + + lat + + + + + double + + + + + + + Latitude (latitude) + + + + + + + + + + time + + + + + int + + + + + + + Time (time) + + + + + + + + + + + + + + + MARACOOS DMAC + + + + + + + maracoosinfo@udel.edu + + + + + + + http://maracoos.org + + + WWW:LINK + + + web browser + + + URL for the data publisher + + + This URL provides contact information for the publisher of this dataset + + + information + + + + + + + publisher + + + + + + + OPeNDAP + + + + + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html + + + WWW:LINK + + + File Information + + + This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. + + + download + + + + + + + + + + + http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + WWW:LINK + + + Viewer Information + + + This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource. + + + mapDigital + + + + + + + + + + + + + + This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00) + + + + diff --git a/tests/functionaltests/suites/idswithpaths/data/file_id_with_driveletter_and_backslashes.xml b/tests/functionaltests/suites/idswithpaths/data/file_id_with_driveletter_and_backslashes.xml new file mode 100644 index 000000000..4cfd89f84 --- /dev/null +++ b/tests/functionaltests/suites/idswithpaths/data/file_id_with_driveletter_and_backslashes.xml @@ -0,0 +1,744 @@ + + + + C:\\hi\\I'm\\a\\windows\\folder + + + eng + + + UTF8 + + + dataset + + + service + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + 2017-10-27 + + + ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data + + + ISO 19115-2:2009(E) + + + + + 3 + + + + + column + + + 4500 + + + 0.011113580795732384 + + + + + + + row + + + 3661 + + + 0.008743169398907104 + + + + + + + temporal + + + 1 + + + 0.0 + + + + + area + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + + + org.maracoos + + + + + + AVHRR.2012.7Agg + + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + + + MARACOOS + + + AVHRR + + + SST + + + UDEL + + + Satellite SST + + + Rutgers + + + EARTH SCIENCE > OCEANS > OCEAN TEMPERATURE > SEA SURFACE TEMPERATURE + + + theme + + + + + + + + + + + + + MARACOOS DMAC + + + dataCenter + + + + + + + + sea_surface_temperature + + + longitude + + + latitude + + + time + + + theme + + + + + http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html + + + + + + + + + + Freely Distributed + + + + + + + + + + + Unidata Common Data Model + + + + + + Grid + + + + + largerWorkCitation + + + project + + + + + eng + + + climatologyMeteorologyAtmosphere + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + seconds + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + OPeNDAP:OPeNDAP + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + tight + + + + + OPeNDAP Client Access + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + OPeNDAP:OPeNDAP + + + OPeNDAP + + + THREDDS OPeNDAP + + + download + + + + + + + + + + + + + + + + + + mcsst + + + + + float + + + + + + + Multichannel Sea Surface Temperature (sea_surface_temperature) + + + + + + + + + + grid_topology + + + + + int + + + + + + + + + + + + + + lon + + + + + double + + + + + + + Longitude (longitude) + + + + + + + + + + lat + + + + + double + + + + + + + Latitude (latitude) + + + + + + + + + + time + + + + + int + + + + + + + Time (time) + + + + + + + + + + + + + + + MARACOOS DMAC + + + + + + + maracoosinfo@udel.edu + + + + + + + http://maracoos.org + + + WWW:LINK + + + web browser + + + URL for the data publisher + + + This URL provides contact information for the publisher of this dataset + + + information + + + + + + + publisher + + + + + + + OPeNDAP + + + + + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html + + + WWW:LINK + + + File Information + + + This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. + + + download + + + + + + + + + + + http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + WWW:LINK + + + Viewer Information + + + This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource. + + + mapDigital + + + + + + + + + + + + + + This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00) + + + + diff --git a/tests/functionaltests/suites/idswithpaths/data/file_id_with_foward_slashes.xml b/tests/functionaltests/suites/idswithpaths/data/file_id_with_foward_slashes.xml new file mode 100644 index 000000000..11403c886 --- /dev/null +++ b/tests/functionaltests/suites/idswithpaths/data/file_id_with_foward_slashes.xml @@ -0,0 +1,744 @@ + + + + hello/i/am/a/path + + + eng + + + UTF8 + + + dataset + + + service + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + 2017-10-27 + + + ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data + + + ISO 19115-2:2009(E) + + + + + 3 + + + + + column + + + 4500 + + + 0.011113580795732384 + + + + + + + row + + + 3661 + + + 0.008743169398907104 + + + + + + + temporal + + + 1 + + + 0.0 + + + + + area + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + + + org.maracoos + + + + + + AVHRR.2012.7Agg + + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + pointOfContact + + + + + + + MARACOOS + + + AVHRR + + + SST + + + UDEL + + + Satellite SST + + + Rutgers + + + EARTH SCIENCE > OCEANS > OCEAN TEMPERATURE > SEA SURFACE TEMPERATURE + + + theme + + + + + + + + + + + + + MARACOOS DMAC + + + dataCenter + + + + + + + + sea_surface_temperature + + + longitude + + + latitude + + + time + + + theme + + + + + http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html + + + + + + + + + + Freely Distributed + + + + + + + + + + + Unidata Common Data Model + + + + + + Grid + + + + + largerWorkCitation + + + project + + + + + eng + + + climatologyMeteorologyAtmosphere + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + seconds + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + + + + + + + AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System) + + + + + + Matt Oliver + + + University of Delaware + + + + + + + moliver@udel.edu + + + + + + + http://orb.ceoe.udel.edu/ + + + WWW:LINK + + + web browser + + + + + + + + + information + + + + + + + originator + + + + + + + Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user. + + + OPeNDAP:OPeNDAP + + + + + + + 1 + + + -100.0 + + + -50.0 + + + 20.0 + + + 52.0 + + + + + + + + 2012-10-27T19:46:59Z + 2012-10-27T19:46:59Z + + + + + + + + tight + + + + + OPeNDAP Client Access + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + OPeNDAP:OPeNDAP + + + OPeNDAP + + + THREDDS OPeNDAP + + + download + + + + + + + + + + + + + + + + + + mcsst + + + + + float + + + + + + + Multichannel Sea Surface Temperature (sea_surface_temperature) + + + + + + + + + + grid_topology + + + + + int + + + + + + + + + + + + + + lon + + + + + double + + + + + + + Longitude (longitude) + + + + + + + + + + lat + + + + + double + + + + + + + Latitude (latitude) + + + + + + + + + + time + + + + + int + + + + + + + Time (time) + + + + + + + + + + + + + + + MARACOOS DMAC + + + + + + + maracoosinfo@udel.edu + + + + + + + http://maracoos.org + + + WWW:LINK + + + web browser + + + URL for the data publisher + + + This URL provides contact information for the publisher of this dataset + + + information + + + + + + + publisher + + + + + + + OPeNDAP + + + + + + + + + + http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html + + + WWW:LINK + + + File Information + + + This URL provides a standard OPeNDAP html interface for selecting data from this dataset. Change the extension to .info for a description of the dataset. + + + download + + + + + + + + + + + http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg + + + WWW:LINK + + + Viewer Information + + + This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource. + + + mapDigital + + + + + + + + + + + + + + This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00) + + + + diff --git a/tests/functionaltests/suites/idswithpaths/default.cfg b/tests/functionaltests/suites/idswithpaths/default.cfg new file mode 100644 index 000000000..147bbb053 --- /dev/null +++ b/tests/functionaltests/suites/idswithpaths/default.cfg @@ -0,0 +1,90 @@ +# ================================================================= +# +# Authors: Tom Kralidis +# +# Copyright (c) 2011 Tom Kralidis +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +# ================================================================= + +[server] +home=. +url=http://localhost/pycsw/csw.py?config=tests/suites/idswithpaths/default.cfg +mimetype=application/xml; charset=UTF-8 +encoding=UTF-8 +language=en-US +maxrecords=10 +#loglevel=DEBUG +#logfile=/tmp/pycsw.log +#ogc_schemas_base=http://foo +#federatedcatalogues=http://geo.data.gov/geoportal/csw/discovery +pretty_print=true +#gzip_compresslevel=8 +#spatial_ranking=true + +[manager] +transactions=false +allowed_ips=127.0.0.1 + +[metadata:main] +identification_title=pycsw Geospatial Catalogue +identification_abstract=pycsw is an OGC CSW server implementation written in Python +identification_keywords=catalogue,discovery +identification_keywords_type=theme +identification_fees=None +identification_accessconstraints=None +provider_name=pycsw +provider_url=http://pycsw.org/ +contact_name=Kralidis, Tom +contact_position=Senior Systems Scientist +contact_address=TBA +contact_city=Toronto +contact_stateorprovince=Ontario +contact_postalcode=M9C 3Z9 +contact_country=Canada +contact_phone=+01-416-xxx-xxxx +contact_fax=+01-416-xxx-xxxx +contact_email=tomkralidis@gmail.com +contact_url=http://kralidis.ca/ +contact_hours=0800h - 1600h EST +contact_instructions=During hours of service. Off on weekends. +contact_role=pointOfContact + +[repository] +# sqlite +database=sqlite:///tests/suites/idswithpaths/data/records.db +# postgres +#database=postgres://username:password@localhost/pycsw +table=records + +[metadata:inspire] +enabled=false +languages_supported=eng,gre +default_language=eng +date=2011-03-29 +gemet_keywords=Utility and governmental services +conformity_service=notEvaluated +contact_name=National Technical University of Athens +contact_email=tzotsos@gmail.com +temp_extent=2011-02-01/2011-03-30 + diff --git a/tests/functionaltests/suites/idswithpaths/expected/get_GetCapabilities.xml b/tests/functionaltests/suites/idswithpaths/expected/get_GetCapabilities.xml new file mode 100644 index 000000000..c86259d1c --- /dev/null +++ b/tests/functionaltests/suites/idswithpaths/expected/get_GetCapabilities.xml @@ -0,0 +1,261 @@ + + + + + pycsw Geospatial Catalogue + pycsw is an OGC CSW server implementation written in Python + + catalogue + discovery + theme + + CSW + 2.0.2 + 3.0.0 + None + None + + + pycsw + + + Kralidis, Tom + Senior Systems Scientist + + + +01-416-xxx-xxxx + +01-416-xxx-xxxx + + + TBA + Toronto + Ontario + M9C 3Z9 + Canada + tomkralidis@gmail.com + + + 0800h - 1600h EST + During hours of service. Off on weekends. + + pointOfContact + + + + + + + + + + + + Filter_Capabilities + OperationsMetadata + ServiceIdentification + ServiceProvider + + + + + + + + + + + application/json + application/xml + + + http://www.w3.org/2001/XMLSchema + http://www.w3.org/TR/xmlschema-1/ + http://www.w3.org/XML/Schema + + + csw:Record + + + + + + + + + + + DescribeRecord.outputFormat + DescribeRecord.schemaLanguage + DescribeRecord.typeName + GetCapabilities.sections + GetRecordById.ElementSetName + GetRecordById.outputFormat + GetRecordById.outputSchema + GetRecords.CONSTRAINTLANGUAGE + GetRecords.ElementSetName + GetRecords.outputFormat + GetRecords.outputSchema + GetRecords.resultType + GetRecords.typeNames + + + + + + + + + + + CQL_TEXT + FILTER + + + brief + full + summary + + + application/json + application/xml + + + http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ + http://www.interlis.ch/INTERLIS2.3 + http://www.opengis.net/cat/csw/2.0.2 + http://www.opengis.net/cat/csw/csdgm + http://www.w3.org/2005/Atom + + + hits + results + validate + + + csw:Record + + + csw:AnyText + dc:contributor + dc:creator + dc:date + dc:format + dc:identifier + dc:language + dc:publisher + dc:relation + dc:rights + dc:source + dc:subject + dc:title + dc:type + dct:abstract + dct:alternative + dct:modified + dct:spatial + ows:BoundingBox + + + + + + + + + + + brief + full + summary + + + application/json + application/xml + + + http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ + http://www.interlis.ch/INTERLIS2.3 + http://www.opengis.net/cat/csw/2.0.2 + http://www.opengis.net/cat/csw/csdgm + http://www.w3.org/2005/Atom + + + + + + + + + + + CSW + + + 2.0.2 + 3.0.0 + + + 10 + + + XML + SOAP + + + allowed + + + + + + gml:Point + gml:LineString + gml:Polygon + gml:Envelope + + + + + + + + + + + + + + + + + + + Between + EqualTo + GreaterThan + GreaterThanEqualTo + LessThan + LessThanEqualTo + Like + NotEqualTo + NullCheck + + + + + length + lower + ltrim + rtrim + trim + upper + + + + + + + + + + diff --git a/tests/functionaltests/suites/idswithpaths/get/requests.txt b/tests/functionaltests/suites/idswithpaths/get/requests.txt new file mode 100644 index 000000000..6d76b7cf6 --- /dev/null +++ b/tests/functionaltests/suites/idswithpaths/get/requests.txt @@ -0,0 +1 @@ +GetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities