From 720be490d07b2916611c1c0f8e43e6bf2ebf0ea9 Mon Sep 17 00:00:00 2001 From: Aleksandar Ristov Date: Wed, 25 Oct 2017 12:31:00 +0200 Subject: [PATCH] Update tests --- ckanext/requestdata/tests/test_auth.py | 87 ++++++++++ ckanext/requestdata/tests/test_validators.py | 158 +++++++++++++++++++ 2 files changed, 245 insertions(+) create mode 100644 ckanext/requestdata/tests/test_auth.py create mode 100644 ckanext/requestdata/tests/test_validators.py diff --git a/ckanext/requestdata/tests/test_auth.py b/ckanext/requestdata/tests/test_auth.py new file mode 100644 index 0000000..2f97308 --- /dev/null +++ b/ckanext/requestdata/tests/test_auth.py @@ -0,0 +1,87 @@ +from nose.tools import assert_raises, raises +from ckan.tests import helpers, factories +from ckan import plugins, logic +import unittest +import ckan.model as model +import ckanext.requestdata.logic.auth as a + + +class ActionBase(unittest.TestCase): + @classmethod + def setup_class(self): + self.app = helpers._get_test_app() + if not plugins.plugin_loaded('requestdata'): + plugins.load('requestdata') + helpers.reset_db() + + def setup(self): + helpers.reset_db() + + @classmethod + def teardown_class(self): + if plugins.plugin_loaded('requestdata'): + plugins.unload('requestdata') + + +class TestAuth(ActionBase): + def test_request_create_user(self): + context = {'user': 'test'} + req = a.request_create(context, None) + self.assertTrue(req['success']) + + def test_request_create_no_user(self): + context = {'user': None} + req = a.request_create(context, None) + self.assertFalse(req['success']) + + def test_request_list_for_current_user(self): + r = a.request_list_for_current_user(None, None) + self.assertTrue(r['success']) + + def test_request_list_for_organization_user_not_in_organization(self): + u = factories.User() + u2 = factories.User() + test_org = factories.Organization( + users=[ + {'name': u['name'], 'capacity': 'admin'} + ] + ) + with assert_raises(logic.NotAuthorized) as e: + logic.check_access('requestdata_request_list_for_organization', + {'user': u2['id']}, + {'org_id': test_org['id']}) + + def test_request_list_for_organization_user_in_organization(self): + u = factories.User() + u2 = factories.User() + test_org = factories.Organization( + users=[ + {'name': u['name'], 'capacity': 'admin'} + ] + ) + with assert_raises(logic.NotAuthorized) as e: + logic.check_access('requestdata_request_list_for_organization', + {'user': u['id']}, + {'org_id': test_org['id']}) + + def test_request_list_for_sysadmin_is_sysadmin(self): + user = factories.Sysadmin() + context = {'user': user['name'], 'model': model} + test_org = factories.Organization( + users=[ + {'name': user['name'], 'capacity': 'admin'} + ] + ) + req = a.request_list_for_sysadmin(context, None) + self.assertTrue(req['success']) + + def test_request_list_for_sysadmin_is_not_sysadmin(self): + user = factories.User() + context = {'user': user['name'], 'model': model} + test_org = factories.Organization( + users=[ + {'name': user['name'], 'capacity': 'admin'} + ] + ) + req = a.request_list_for_sysadmin(context, None) + self.assertFalse(req['success']) diff --git a/ckanext/requestdata/tests/test_validators.py b/ckanext/requestdata/tests/test_validators.py new file mode 100644 index 0000000..b8b3ff0 --- /dev/null +++ b/ckanext/requestdata/tests/test_validators.py @@ -0,0 +1,158 @@ +from ckan.tests import helpers, factories +from ckan import plugins, logic +import unittest +from ckanext.requestdata.logic.validators import * + + +class ActionBase(unittest.TestCase): + @classmethod + def setup_class(self): + self.app = helpers._get_test_app() + if not plugins.plugin_loaded('requestdata'): + plugins.load('requestdata') + + def setup(self): + helpers.reset_db() + + @classmethod + def teardown_class(self): + if plugins.plugin_loaded('requestdata'): + plugins.unload('requestdata') + + +class TestAuth(ActionBase): + def test_email_validator_validate_is_true(self): + key = ('state') + data = {('state'): 'aleksandar.ristov@keitaro.com'} + errors = {key: []} + email_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + def test_email_validator_validate_is_false(self): + key = ('state') + data = {('state'): 'aleksandar.ristovkeitaro.com'} + errors = {key: []} + email_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert False + else: + assert True + + def test_state_validator_not_in_possible_state(self): + key = ('state') + data = {('state'): 'test'} + errors = {key: []} + state_validator(key, data, errors, None) + if len(errors[key]) != 0: + assert True + else: + assert False + + def test_state_validator_in_possible_state(self): + key = ('state') + data = {('state'): 'new'} + errors = {key: []} + state_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + data = {('state'): 'open'} + errors = {key: []} + state_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + data = {('state'): 'archive'} + errors = {key: []} + state_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + def test_boolean_validator_is_not_instance(self): + key = ('state') + data = {('state'): 'True'} + errors = {key: []} + boolean_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + data = {('state'): 'False'} + errors = {key: []} + boolean_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + def test_boolean_validator_is_instance(self): + key = ('state') + data = {('state'): 'Test'} + errors = {key: []} + try: + boolean_validator(key, data, errors, None) + assert False + except ValueError: + assert True + + def test_request_counter_validator_not_in_counters(self): + key = ('state') + data = {('state'): 'test'} + errors = {key: []} + request_counter_validator(key, data, errors, None) + if len(errors[key]) != 0: + assert True + else: + assert False + + def test_request_counter_validator_in_counters(self): + key = ('state') + data = {('state'): 'request'} + errors = {key: []} + request_counter_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + data = {('state'): 'replied'} + errors = {key: []} + request_counter_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + data = {('state'): 'declined'} + errors = {key: []} + request_counter_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + data = {('state'): 'shared'} + errors = {key: []} + request_counter_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False + + data = {('state'): 'shared and replied'} + errors = {key: []} + request_counter_validator(key, data, errors, None) + if len(errors[key]) == 0: + assert True + else: + assert False