mixxorz/django-service-objects

Add support for validating None declared fields.

Opened this issue · 3 comments

The services shouldn't allow more fields than expected when calling execute

class MyService(Service):
	field_a = forms.CharField(...)

Call

MyService.execute({ 'field_y': 1, 'field_a'; 2 })

Expectations:
Raises an exception

'Invalid field provided "field_y": Please provide one of the following fields: ({...})'

The base Service object inherits from django.forms.BaseForm. Django Forms allow you pass anything to the data attribute of __init__ . Making this change likely breaks backwards compatibility as the Service object no longer behaves as expected.

@jackton1 What's the use case for things being more restrict? Base an additional attribute of Service called strict_inputs that defaults to False for backwards compatibility would be an acceptable PR?

A common issue here has been running into a bug where the field key provided when invoking the service didn’t match the defined field name and there wasn’t any errors reported since the field wasn’t required.

@jackton1 makes sense - I think we'd have to add a new switch to indicate you wanted that behavior of strict inputs. Personally I know it would break some of the apps without it. How about a PR?