Skip to content

Commit

Permalink
Merge pull request #101 from cloudblue/lite-28203-add_empty_statuses_…
Browse files Browse the repository at this point in the history
…check

LITE-28203 Add check if statuses are empty
  • Loading branch information
ffaraone committed Jul 31, 2023
2 parents a8dbe82 + acf403a commit 4680f2d
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
12 changes: 12 additions & 0 deletions connect/eaas/core/validation/validators/eventsapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,18 @@ def _validate_events(context):
),
)
continue
if not event['statuses'] and definitions[event['event_type']]['object_statuses']:
messages.append(
ValidationItem(
level='ERROR',
message=(
f'The event *{event["event_type"]}* is not valid, event declaration '
'must contain not empty list of statuses.'
),
**get_code_context(method, '@event'),
),
)
continue

statuses = definitions[event['event_type']]['object_statuses']
if statuses:
Expand Down
38 changes: 38 additions & 0 deletions tests/connect/eaas/core/validation/validators/test_eventsapp.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,44 @@ def handle_event(self, request):
assert item.code == 'code'


def test_validate_eventsapp_no_statuses(mocker):
class MyExt(EventsApplicationBase):
@event('test_event', statuses=[])
def handle_event(self, request):
pass

context = {
'extension_classes': {'extension': MyExt},
'descriptor': {},
'extension_json_file': 'extension.json',
'event_definitions': {'test_event': {'object_statuses': ['draft']}},
}

mocker.patch(
'connect.eaas.core.validation.validators.eventsapp.get_code_context',
return_value={
'file': 'file',
'start_line': 0,
'lineno': 5,
'code': 'code',
},
)

result = validate_eventsapp(context)

assert isinstance(result, ValidationResult)
assert result.must_exit is False
assert len(result.items) == 1
item = result.items[0]
assert isinstance(item, ValidationItem)
assert item.level == 'ERROR'
assert 'event declaration must contain not empty list of statuses.' in item.message
assert item.file == 'file'
assert item.start_line == 0
assert item.lineno == 5
assert item.code == 'code'


@pytest.mark.parametrize(
('object_statuses', 'event_statuses'),
(
Expand Down

0 comments on commit 4680f2d

Please sign in to comment.