-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #16 from keitaroinc/test-emailer
Update tests
- Loading branch information
Showing
2 changed files
with
245 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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']) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |