Skip to content

Commit

Permalink
Test the action and auth functions thoroughly
Browse files Browse the repository at this point in the history
  • Loading branch information
nigelb committed Jun 18, 2014
1 parent 1fba75f commit 9daaa36
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 5 deletions.
24 changes: 20 additions & 4 deletions ckan/new_tests/logic/action/test_update.py
Expand Up @@ -80,19 +80,35 @@ def test_user_update_name(self):
## END-BEFORE

def test_user_generate_apikey(self):
'''Test that updating a user's name works successfully.'''

user = factories.User()
# Required because you can only cycle your own API key
context = {'user': user['name']}
result = helpers.call_action('user_generate_apikey', context=context,
id=user['name'])
id=user['id'])
updated_user = helpers.call_action('user_show', context=context,
id=user['id'])

assert updated_user['apikey'] != user['apikey']
assert result['apikey'] == updated_user['apikey']

def test_user_generate_apikey_sysadmin_user(self):
user = factories.User()
sysadmin = factories.Sysadmin()
context = {'user': sysadmin['name'], 'ignore_auth': False}
result = helpers.call_action('user_generate_apikey', context=context,
id=user['id'])
updated_user = helpers.call_action('user_show', context=context,
id=user['id'])

assert updated_user['apikey'] != user['apikey']
assert result['apikey'] == updated_user['apikey']

def test_user_generate_apikey_nonexistent_user(self):
user = {'id': 'nonexistent', 'name': 'nonexistent', 'email':
'does@notexist.com'}
context = {'user': user['name']}
nose.tools.assert_raises(logic.NotFound, helpers.call_action,
'user_generate_apikey', context=context, id=user['id'])

def test_user_update_with_id_that_does_not_exist(self):
user_dict = factories.User.attributes()
user_dict['id'] = "there's no user with this id"
Expand Down
46 changes: 45 additions & 1 deletion ckan/new_tests/logic/auth/test_update.py
Expand Up @@ -131,4 +131,48 @@ def test_user_update_with_no_user_in_context(self):
nose.tools.assert_raises(logic.NotAuthorized, helpers.call_auth,
'user_update', context=context, **params)

# TODO: Tests for user_update's reset_key behavior.
def test_user_generate_own_apikey(self):
fred = factories.MockUser(name='fred')
mock_model = mock.MagicMock()
mock_model.User.get.return_value = fred
# auth_user_obj shows user as logged in for non-anonymous auth
# functions
context = {'model': mock_model, 'auth_user_obj': fred}
context['user'] = fred.name
params = {
'id': fred.id,
}

result = helpers.call_auth('user_generate_apikey', context=context,
**params)
assert result is True

def test_user_generate_apikey_without_logged_in_user(self):
fred = factories.MockUser(name='fred')
mock_model = mock.MagicMock()
mock_model.User.get.return_value = fred
context = {'model': mock_model}
context['user'] = None
params = {
'id': fred.id,
}

nose.tools.assert_raises(logic.NotAuthorized, helpers.call_auth,
'user_generate_apikey', context=context, **params)

def test_user_generate_apikey_for_another_user(self):
fred = factories.MockUser(name='fred')
bob = factories.MockUser(name='bob')
mock_model = mock.MagicMock()
mock_model.User.get.return_value = fred
# auth_user_obj shows user as logged in for non-anonymous auth
# functions
context = {'model': mock_model, 'auth_user_obj': bob}
context['user'] = bob.name
params = {
'id': fred.id,
}

nose.tools.assert_raises(logic.NotAuthorized, helpers.call_auth,
'user_generate_apikey', context=context, **params)

0 comments on commit 9daaa36

Please sign in to comment.