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