From ba96ab657d4d3ff121a386b16b24e8bef46211cb Mon Sep 17 00:00:00 2001 From: Victor Balbuena Date: Thu, 7 Jun 2018 14:01:21 +0200 Subject: [PATCH] builders: fix regular expression bug on reference builder Signed-off-by: Victor Balbuena --- inspire_schemas/builders/references.py | 4 +-- tests/unit/test_reference_builder.py | 46 ++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/inspire_schemas/builders/references.py b/inspire_schemas/builders/references.py index 77e4a0c2..6aaf54f5 100644 --- a/inspire_schemas/builders/references.py +++ b/inspire_schemas/builders/references.py @@ -45,12 +45,12 @@ # Matches CDS urls for id extraction CDS_MATCHER = re.compile( - r'^(https?://)?cds(web)?\.cern\.ch/record/(\d*)', + r'^(https?://)?cds(web)?\.cern\.ch/record/(\d+)', flags=re.I) # Matches ADS urls for id extraction ADS_MATCHER = re.compile( - r'^(https?://)?adsabs\.harvard\.edu/abs/(.*)', + r'^(https?://)?adsabs\.harvard\.edu/abs/(.+)', flags=re.I) diff --git a/tests/unit/test_reference_builder.py b/tests/unit/test_reference_builder.py index 0d202853..0738cd08 100644 --- a/tests/unit/test_reference_builder.py +++ b/tests/unit/test_reference_builder.py @@ -1091,3 +1091,49 @@ def test_is_arxiv_matches_valid_categories(): assert validate(result, subschema) is None assert expected == result + + +def test_add_url_rejects_empty_cds_id(): + schema = load_schema('hep') + subschema = schema['properties']['references'] + + builder = ReferenceBuilder() + + builder.add_url('https://cds.cern.ch/record/') + + expected = [ + { + 'reference': { + 'urls': [{ + 'value': 'https://cds.cern.ch/record/' + }], + }, + }, + ] + result = [builder.obj] + + assert validate(result, subschema) is None + assert expected == result + + +def test_add_url_rejects_empty_ads_id(): + schema = load_schema('hep') + subschema = schema['properties']['references'] + + builder = ReferenceBuilder() + + builder.add_url('http://adsabs.harvard.edu/abs/') + + expected = [ + { + 'reference': { + 'urls': [{ + 'value': 'http://adsabs.harvard.edu/abs/' + }], + }, + }, + ] + result = [builder.obj] + + assert validate(result, subschema) is None + assert expected == result