# HG changeset patch # User Mads Kiilerich # Date 1473694880 -7200 # Node ID 8be0633ff85269cb500624f0ee3c5d514529de64 # Parent 2990b0587e3f445c8dfe86f86045b37d6eb333e0 api: fail when given unknown arguments This make the API more type safe and can help developers fix issues early. diff -r 2990b0587e3f -r 8be0633ff852 kallithea/controllers/api/__init__.py --- a/kallithea/controllers/api/__init__.py Mon Sep 12 17:41:20 2016 +0200 +++ b/kallithea/controllers/api/__init__.py Mon Sep 12 17:41:20 2016 +0200 @@ -214,6 +214,14 @@ ) ) + extra = set(self._request_params).difference(func_kwargs) + if extra: + return jsonrpc_error( + retid=self._req_id, + message=('Unknown %s arg in JSON DATA' % + ', '.join('`%s`' % arg for arg in extra)), + ) + self._rpc_args = {} self._rpc_args.update(self._request_params) diff -r 2990b0587e3f -r 8be0633ff852 kallithea/tests/api/api_base.py --- a/kallithea/tests/api/api_base.py Mon Sep 12 17:41:20 2016 +0200 +++ b/kallithea/tests/api/api_base.py Mon Sep 12 17:41:20 2016 +0200 @@ -1143,8 +1143,6 @@ @parametrize('changing_attr,updates', [ ('owner', {'owner': TEST_USER_REGULAR_LOGIN}), ('description', {'description': u'new description'}), - ('active', {'active': True}), - ('active', {'active': False}), ('clone_uri', {'clone_uri': 'http://example.com/repo'}), ('clone_uri', {'clone_uri': None}), ('landing_rev', {'landing_rev': 'branch:master'}), @@ -1181,8 +1179,6 @@ @parametrize('changing_attr,updates', [ ('owner', {'owner': TEST_USER_REGULAR_LOGIN}), ('description', {'description': u'new description'}), - ('active', {'active': True}), - ('active', {'active': False}), ('clone_uri', {'clone_uri': 'http://example.com/repo'}), ('clone_uri', {'clone_uri': None}), ('landing_rev', {'landing_rev': 'branch:master'}), @@ -1235,7 +1231,7 @@ def test_api_update_repo_regular_user_not_allowed(self): repo_name = u'admin_owned' fixture.create_repo(repo_name) - updates = {'active': False} + updates = {'description': 'something else'} id_, params = _build_data(self.apikey_regular, 'update_repo', repoid=repo_name, **updates) response = api_call(self, params) @@ -1714,8 +1710,7 @@ gr_id = ugroup.users_group_id try: id_, params = _build_data(self.apikey, 'delete_user_group', - usergroupid=gr_name, - userid=TEST_USER_ADMIN_LOGIN) + usergroupid=gr_name) response = api_call(self, params) expected = { 'user_group': None, @@ -1736,8 +1731,7 @@ try: id_, params = _build_data(self.apikey, 'delete_user_group', - usergroupid=gr_name, - userid=TEST_USER_ADMIN_LOGIN) + usergroupid=gr_name) response = api_call(self, params) expected = msg self._compare_error(id_, expected, given=response.body) @@ -1750,8 +1744,7 @@ ugroup = fixture.create_user_group(gr_name) gr_id = ugroup.users_group_id id_, params = _build_data(self.apikey, 'delete_user_group', - usergroupid=gr_name, - userid=TEST_USER_ADMIN_LOGIN) + usergroupid=gr_name) try: with mock.patch.object(UserGroupModel, 'delete', crash):