Skip to content

Commit

Permalink
Merge 991efc6 into 2a69247
Browse files Browse the repository at this point in the history
  • Loading branch information
lrromero committed Jun 27, 2019
2 parents 2a69247 + 991efc6 commit fa229d2
Show file tree
Hide file tree
Showing 4 changed files with 160 additions and 2 deletions.
4 changes: 2 additions & 2 deletions pydatajson/schemas/dataset.json
Expand Up @@ -19,7 +19,7 @@
"name": { "$ref": "mixed-types.json#nonEmptyString" },
"mbox": {
"anyOf": [
{ "type": "string", "format": "email" },
{ "type": "string", "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$" },
{ "$ref": "mixed-types.json#emptyValue" }
]
}
Expand Down Expand Up @@ -56,7 +56,7 @@
"fn": { "$ref": "mixed-types.json#stringOrNull" },
"hasEmail": {
"anyOf": [
{ "type": "string", "format": "email" },
{ "type": "string", "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$" },
{ "$ref": "mixed-types.json#emptyValue" }
]
}
Expand Down
65 changes: 65 additions & 0 deletions tests/samples/invalid_multiple_emails.json
@@ -0,0 +1,65 @@
{
"title": "Datos Argentina",
"description": "Portal de Datos Abiertos del Gobierno de la República Argentina",
"publisher": {
"name": "Ministerio de Modernización",
"mbox": "datos@modernizacion.gob.ar"
},
"superThemeTaxonomy": "http://datos.gob.ar/superThemeTaxonomy.json",
"dataset": [
{
"title": "publisher mail roto",
"identifier": "1",
"description": "Datos correspondientes al Sistema de Contrataciones Electrónicas (Argentina Compra)",
"publisher": {
"name": "Ministerio de Modernización. Secretaría de Modernización Administrativa. Oficina Nacional de Contrataciones",
"mbox": "first@mail.com; second@mail.com"
},
"contactPoint": {
"fn": "Ministerio de Modernización. Secretaría de Modernización Administrativa. Oficina Nacional de Contrataciones",
"hasEmail": "valid@mail.com"
},
"superTheme": [
"ECON"
],
"accrualPeriodicity": "R/P1Y",
"issued": "2016-04-14T19:48:05.433640-03:00",
"distribution": [
{
"identifier": "dist_1",
"accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a",
"downloadURL": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv",
"title": "Convocatorias abiertas durante el año 2015",
"issued": "2016-04-14T19:48:05.433640-03:00"
}
]
},
{
"title": "contact point falluto",
"identifier": "2",
"description": "Datos correspondientes al Sistema de Contrataciones Electrónicas (Argentina Compra)",
"publisher": {
"name": "Ministerio de Modernización. Secretaría de Modernización Administrativa. Oficina Nacional de Contrataciones",
"mbox": "another_valid.mail@address.com.tv"
},
"contactPoint": {
"fn": "Ministerio de Modernización. Secretaría de Modernización Administrativa. Oficina Nacional de Contrataciones",
"hasEmail": "one@mail.com;two@mail.com;three@mail.com"
},
"superTheme": [
"ECON"
],
"accrualPeriodicity": "R/P1Y",
"issued": "2016-04-14T19:48:05.433640-03:00",
"distribution": [
{
"identifier": "dist_2",
"accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a",
"downloadURL": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv",
"title": "Convocatorias abiertas durante el año 2015",
"issued": "2016-04-14T19:48:05.433640-03:00"
}
]
}
]
}
65 changes: 65 additions & 0 deletions tests/samples/invalid_whitespace_emails.json
@@ -0,0 +1,65 @@
{
"title": "Datos Argentina",
"description": "Portal de Datos Abiertos del Gobierno de la República Argentina",
"publisher": {
"name": "Ministerio de Modernización",
"mbox": "datos@modernizacion.gob.ar"
},
"superThemeTaxonomy": "http://datos.gob.ar/superThemeTaxonomy.json",
"dataset": [
{
"title": "publisher mail roto",
"identifier": "1",
"description": "Datos correspondientes al Sistema de Contrataciones Electrónicas (Argentina Compra)",
"publisher": {
"name": "Ministerio de Modernización. Secretaría de Modernización Administrativa. Oficina Nacional de Contrataciones",
"mbox": " whitespace@mail.com"
},
"contactPoint": {
"fn": "Ministerio de Modernización. Secretaría de Modernización Administrativa. Oficina Nacional de Contrataciones",
"hasEmail": "valid@mail.com"
},
"superTheme": [
"ECON"
],
"accrualPeriodicity": "R/P1Y",
"issued": "2016-04-14T19:48:05.433640-03:00",
"distribution": [
{
"identifier": "dist_1",
"accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a",
"downloadURL": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv",
"title": "Convocatorias abiertas durante el año 2015",
"issued": "2016-04-14T19:48:05.433640-03:00"
}
]
},
{
"title": "contact point falluto",
"identifier": "2",
"description": "Datos correspondientes al Sistema de Contrataciones Electrónicas (Argentina Compra)",
"publisher": {
"name": "Ministerio de Modernización. Secretaría de Modernización Administrativa. Oficina Nacional de Contrataciones",
"mbox": "another_valid.mail@address.com.tv"
},
"contactPoint": {
"fn": "Ministerio de Modernización. Secretaría de Modernización Administrativa. Oficina Nacional de Contrataciones",
"hasEmail": "trailspace@mail.com "
},
"superTheme": [
"ECON"
],
"accrualPeriodicity": "R/P1Y",
"issued": "2016-04-14T19:48:05.433640-03:00",
"distribution": [
{
"identifier": "dist_2",
"accessURL": "http://datos.gob.ar/dataset/sistema-de-contrataciones-electronicas-argentina-compra/archivo/fa3603b3-0af7-43cc-9da9-90a512217d8a",
"downloadURL": "http://186.33.211.253/dataset/99db6631-d1c9-470b-a73e-c62daa32c420/resource/4b7447cb-31ff-4352-96c3-589d212e1cc9/download/convocatorias-abiertas-anio-2015.csv",
"title": "Convocatorias abiertas durante el año 2015",
"issued": "2016-04-14T19:48:05.433640-03:00"
}
]
}
]
}
28 changes: 28 additions & 0 deletions tests/test_validation.py
Expand Up @@ -123,6 +123,34 @@ def test_invalid_keywords(self):
self.validate_message_with_file(
case_filename, expected_valid, path, regex)

def test_invalid_whitespace_emails(self):
case_filename = "invalid_whitespace_emails"
expected_valid = False
path = ['error', 'dataset', 0, 'errors', 0, 'message']
regex = "%s is not valid under any of the given schemas" \
% (jsonschema_str(' whitespace@mail.com'), )
self.validate_message_with_file(
case_filename, expected_valid, path, regex)
path = ['error', 'dataset', 1, 'errors', 0, 'message']
regex = "%s is not valid under any of the given schemas" \
% (jsonschema_str('trailspace@mail.com '),)
self.validate_message_with_file(
case_filename, expected_valid, path, regex)

def test_invalid_multiple_emails(self):
case_filename = "invalid_multiple_emails"
expected_valid = False
path = ['error', 'dataset', 0, 'errors', 0, 'message']
regex = "%s is not valid under any of the given schemas" \
% (jsonschema_str('first@mail.com; second@mail.com'), )
self.validate_message_with_file(
case_filename, expected_valid, path, regex)
path = ['error', 'dataset', 1, 'errors', 0, 'message']
regex = "%s is not valid under any of the given schemas" \
% (jsonschema_str('one@mail.com;two@mail.com;three@mail.com'),)
self.validate_message_with_file(
case_filename, expected_valid, path, regex)

def test_several_assorted_errors(self):
case_filename = "several_assorted_errors"
expected_errors = [
Expand Down

0 comments on commit fa229d2

Please sign in to comment.