From 99c0f33b7feb33c8c4d6e3ed40a26dc84a7f3e51 Mon Sep 17 00:00:00 2001 From: amercader Date: Mon, 13 Jun 2016 10:21:53 +0100 Subject: [PATCH 1/4] [#3108] Raise validation errors on group/org_member_create Add not_missing to the schema and raise the errors on the action. Adds some tests as well --- ckan/logic/action/create.py | 3 ++ ckan/logic/schema.py | 6 ++-- ckan/tests/logic/action/test_create.py | 43 +++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/ckan/logic/action/create.py b/ckan/logic/action/create.py index 264fe0ca2ee..0a2a175309d 100644 --- a/ckan/logic/action/create.py +++ b/ckan/logic/action/create.py @@ -1372,6 +1372,9 @@ def _group_or_org_member_create(context, data_dict, is_org=False): schema = ckan.logic.schema.member_schema() data, errors = _validate(data_dict, schema, context) + if errors: + model.Session.rollback() + raise ValidationError(errors) username = _get_or_bust(data_dict, 'username') role = data_dict.get('role') diff --git a/ckan/logic/schema.py b/ckan/logic/schema.py index b16c914f28a..ad1f3d8cebe 100644 --- a/ckan/logic/schema.py +++ b/ckan/logic/schema.py @@ -532,9 +532,9 @@ def default_follow_dataset_schema(): def member_schema(): schema = { - 'id': [group_id_exists, unicode], - 'username': [user_name_exists, unicode], - 'role': [role_exists, unicode], + 'id': [not_missing, not_empty, group_id_exists, unicode], + 'username': [not_missing, user_name_exists, unicode], + 'role': [not_missing, role_exists, unicode], } return schema diff --git a/ckan/tests/logic/action/test_create.py b/ckan/tests/logic/action/test_create.py index b48f65c5f9d..e38ab5656fd 100644 --- a/ckan/tests/logic/action/test_create.py +++ b/ckan/tests/logic/action/test_create.py @@ -151,7 +151,6 @@ def setup_class(cls): @classmethod def teardown_class(cls): - p.unload('image_view') helpers.reset_db() @@ -485,6 +484,48 @@ def test_organization_member_creation(self): assert_equals(new_membership['table_id'], user['id']) assert_equals(new_membership['capacity'], 'member') + def test_group_member_creation_raises_validation_error_if_id_missing(self): + + assert_raises(logic.ValidationError, + helpers.call_action, 'group_member_create', + username='someuser', + role='member',) + + def test_group_member_creation_raises_validation_error_if_username_missing(self): + + assert_raises(logic.ValidationError, + helpers.call_action, 'group_member_create', + id='someid', + role='member',) + + def test_group_member_creation_raises_validation_error_if_role_missing(self): + + assert_raises(logic.ValidationError, + helpers.call_action, 'group_member_create', + id='someid', + username='someuser',) + + def test_org_member_creation_raises_validation_error_if_id_missing(self): + + assert_raises(logic.ValidationError, + helpers.call_action, 'organization_member_create', + username='someuser', + role='member',) + + def test_org_member_creation_raises_validation_error_if_username_missing(self): + + assert_raises(logic.ValidationError, + helpers.call_action, 'organization_member_create', + id='someid', + role='member',) + + def test_org_member_creation_raises_validation_error_if_role_missing(self): + + assert_raises(logic.ValidationError, + helpers.call_action, 'organization_member_create', + id='someid', + username='someuser',) + class TestDatasetCreate(helpers.FunctionalTestBase): From 1f23b9746ba25d1a227705078f111368bb8758a0 Mon Sep 17 00:00:00 2001 From: amercader Date: Mon, 13 Jun 2016 11:59:29 +0100 Subject: [PATCH 2/4] [#3108] Allow to renferece groups and users by id or name --- ckan/logic/schema.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ckan/logic/schema.py b/ckan/logic/schema.py index ad1f3d8cebe..5556b40b1e9 100644 --- a/ckan/logic/schema.py +++ b/ckan/logic/schema.py @@ -55,8 +55,10 @@ resource_id_exists, tag_not_in_vocabulary, group_id_exists, + group_id_or_name_exists, owner_org_validator, user_name_exists, + user_id_or_name_exists, role_exists, datasets_with_no_organization_cannot_be_private, list_of_strings, @@ -532,8 +534,8 @@ def default_follow_dataset_schema(): def member_schema(): schema = { - 'id': [not_missing, not_empty, group_id_exists, unicode], - 'username': [not_missing, user_name_exists, unicode], + 'id': [not_missing, not_empty, group_id_or_name_exists, unicode], + 'username': [not_missing, user_id_or_name_exists, unicode], 'role': [not_missing, role_exists, unicode], } return schema From e20bef268bd3108642bddd328a2ad84f2cae59e4 Mon Sep 17 00:00:00 2001 From: amercader Date: Wed, 15 Jun 2016 10:08:33 +0100 Subject: [PATCH 3/4] [#3108] Add back plugin unload command --- ckan/tests/logic/action/test_create.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ckan/tests/logic/action/test_create.py b/ckan/tests/logic/action/test_create.py index e38ab5656fd..37cbce676eb 100644 --- a/ckan/tests/logic/action/test_create.py +++ b/ckan/tests/logic/action/test_create.py @@ -151,7 +151,7 @@ def setup_class(cls): @classmethod def teardown_class(cls): - + p.unload('image_view') helpers.reset_db() def setup(self): From 83f4a477c238965ae76035643747b995a103e6d6 Mon Sep 17 00:00:00 2001 From: amercader Date: Wed, 15 Jun 2016 10:12:27 +0100 Subject: [PATCH 4/4] [#3108] Remove redundant validator --- ckan/logic/schema.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ckan/logic/schema.py b/ckan/logic/schema.py index 5556b40b1e9..fa2cc484979 100644 --- a/ckan/logic/schema.py +++ b/ckan/logic/schema.py @@ -534,7 +534,7 @@ def default_follow_dataset_schema(): def member_schema(): schema = { - 'id': [not_missing, not_empty, group_id_or_name_exists, unicode], + 'id': [not_missing, group_id_or_name_exists, unicode], 'username': [not_missing, user_id_or_name_exists, unicode], 'role': [not_missing, role_exists, unicode], }