Skip to content

Commit

Permalink
Fixed handling of numeric-only report_request_ids
Browse files Browse the repository at this point in the history
If a report_request_id (generated by a different implementation) was
completely numeric, it would get turned into an int instead of a str.

This solves that problem, making the resulting report_request_ids always
be strings, which might be important when offloading thing to type-
sensitive code.
  • Loading branch information
stan-janssen committed May 2, 2022
1 parent 90ccfce commit eb09681
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
7 changes: 5 additions & 2 deletions openleadr/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,11 @@ def normalize_key(key):
if not isinstance(d[key]['report_request_id'], list):
d[key]['report_request_id'] = [d[key]['report_request_id']]

d[key] = [{'report_request_id': rrid}
for rrid in d[key]['report_request_id']]
# When collecting the report_request_ids, make sure even numeric
# ids get turned into strings.
d[key] = [{'report_request_id': str(rrid)}
for rrid in d[key]['report_request_id']
if d[key]['report_request_id'] is not None]

# If there are no pending reports, make sure we get an empty list back
# so any iteration can proceed as normal.
Expand Down
2 changes: 2 additions & 0 deletions test/test_message_conversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ def create_dummy_event(ven_id):
{'response_code': 200, 'response_description': 'OK', 'request_id': generate_id(), 'event_id': generate_id(), 'modification_number': 1, 'opt_type': 'optIn'}],
ven_id='123ABC')),
('oadrCreatedReport', dict(response={'response_code': 200, 'response_description': 'OK', 'request_id': generate_id()}, pending_reports=[{'report_request_id': generate_id()}], ven_id='123ABC')),
('oadrCreatedReport', dict(response={'response_code': 200, 'response_description': 'OK', 'request_id': generate_id()}, pending_reports=[], ven_id='123ABC')),
('oadrCreatedReport', dict(response={'response_code': 200, 'response_description': 'OK', 'request_id': generate_id()}, pending_reports=[{'report_request_id': '123'}], ven_id='123ABC')),
('oadrCreatedReport', dict(response={'response_code': 200, 'response_description': 'OK', 'request_id': generate_id()}, pending_reports=[{'report_request_id': generate_id()}, {'report_request_id': generate_id()}], ven_id='123ABC')),
('oadrCreatedEvent', dict(response={'response_code': 200, 'response_description': 'OK', 'request_id': None},
event_responses=[{'response_code': 200, 'response_description': 'OK', 'request_id': generate_id(),
Expand Down

0 comments on commit eb09681

Please sign in to comment.