Skip to content

Commit

Permalink
feat(Metadata): only warn once when group is not defined
Browse files Browse the repository at this point in the history
  • Loading branch information
lemoustachiste committed Jul 11, 2022
1 parent 03b39aa commit 53b5e2c
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
13 changes: 8 additions & 5 deletions cert_issuer/models/metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,18 @@ def validate_metadata_structure(metadata):


def verify_display_order_properties(display_order, metadata):
checked_groups = []
for item in display_order:
path = item.split('.')
group = path[0]
if not group in metadata:
# \033[1m%s\033[0m: display property name in bold
logging.warning(
"`metadata.displayOrder` property references a group named: \033[1m%s\033[0m which does not exist in metadata object.",
group
)
if not group in checked_groups:
# \033[1m%s\033[0m: display property name in bold
logging.warning(
"`metadata.displayOrder` property references a group named: \033[1m%s\033[0m which does not exist in metadata object.",
group
)
checked_groups.append(group)
else:
property = path[1]
if not property in metadata[group]:
Expand Down
10 changes: 9 additions & 1 deletion tests/models/test_metadata_validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ def test_json_schema_validation_is_invalid(self):
def test_json_schema_validation_display_order(self):
spy = SpyAgency()
spy.spy_on(logging.warning)
metadata_string = "{\"schema\":{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"displayOrder\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"certificate\":{\"order\":[],\"type\":\"object\",\"properties\":{\"issuingInstitution\":{\"title\":\"Issuing Institution\",\"type\":\"string\",\"default\":\"Learning Machine Technologies, Inc.\"}}},\"recipient\":{}}},\"certificate\":{\"issuingInstitution\":\"Learning Machine Technologies, Inc.\"},\"recipient\":{},\"displayOrder\":[\"certificate.issuingInstitution\", \"recipient.name\", \"class.year\"]}"
metadata_string = "{\"schema\":{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"displayOrder\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"certificate\":{\"order\":[],\"type\":\"object\",\"properties\":{\"issuingInstitution\":{\"title\":\"Issuing Institution\",\"type\":\"string\",\"default\":\"Learning Machine Technologies, Inc.\"}}},\"recipient\":{}}},\"certificate\":{\"issuingInstitution\":\"Learning Machine Technologies, Inc.\"},\"recipient\":{},\"displayOrder\":[\"certificate.issuingInstitution\", \"recipient.name\", \"class.year\", \"class.professor\", \"recipient.email\"]}"
try:
validate_metadata_structure(json.loads(metadata_string))
except Exception as e:
Expand All @@ -49,4 +49,12 @@ def test_json_schema_validation_display_order(self):
'class'
)
)
self.assertTrue(
logging.warning.calls[2].called_with(
'`metadata.displayOrder` property references a property named: \x1b[1m%s\x1b[0m which does not exist in group: \x1b[1m%s\x1b[0m.',
'name',
'email'
)
)
assert False
logging.warning.unspy()

0 comments on commit 53b5e2c

Please sign in to comment.