Skip to content

Commit

Permalink
[#2541] Group delete tests
Browse files Browse the repository at this point in the history
  • Loading branch information
brew committed Jul 17, 2015
1 parent 28080ce commit ab61ee4
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 1 deletion.
2 changes: 1 addition & 1 deletion ckan/templates/group/confirm_delete.html
Expand Up @@ -10,7 +10,7 @@
{% block form %}
<p>{{ _('Are you sure you want to delete group - {name}?').format(name=c.group_dict.name) }}</p>
<p class="form-actions">
<form action="{% url_for controller='group', action='delete', id=c.group_dict.name %}" method="post">
<form id="group-confirm-delete-form" action="{% url_for controller='group', action='delete', id=c.group_dict.name %}" method="post">
<button class="btn" type="submit" name="cancel" >{{ _('Cancel') }}</button>
<button class="btn btn-primary" type="submit" name="delete" >{{ _('Confirm Delete') }}</button>
</form>
Expand Down
62 changes: 62 additions & 0 deletions ckan/tests/controllers/test_group.py
Expand Up @@ -170,6 +170,68 @@ def test_group_read(self):
assert_in(self.group['description'], response)


class TestGroupDelete(helpers.FunctionalTestBase):
def setup(self):
super(TestGroupDelete, self).setup()
self.app = helpers._get_test_app()
self.user = factories.User()
self.user_env = {'REMOTE_USER': self.user['name'].encode('ascii')}
self.group = factories.Group(user=self.user)

def test_owner_delete(self):
response = self.app.get(url=url_for(controller='group',
action='delete',
id=self.group['id']),
status=200,
extra_environ=self.user_env)

form = response.forms['group-confirm-delete-form']
response = submit_and_follow(self.app, form, name='delete',
extra_environ=self.user_env)
group = helpers.call_action('group_show',
id=self.group['id'])
assert_equal(group['state'], 'deleted')

def test_sysadmin_delete(self):
sysadmin = factories.Sysadmin()
extra_environ = {'REMOTE_USER': sysadmin['name'].encode('ascii')}
response = self.app.get(url=url_for(controller='group',
action='delete',
id=self.group['id']),
status=200,
extra_environ=extra_environ)

form = response.forms['group-confirm-delete-form']
response = submit_and_follow(self.app, form, name='delete',
extra_environ=self.user_env)
group = helpers.call_action('group_show',
id=self.group['id'])
assert_equal(group['state'], 'deleted')

def test_non_authorized_user_trying_to_delete_fails(self):
user = factories.User()
extra_environ = {'REMOTE_USER': user['name'].encode('ascii')}
self.app.get(url=url_for(controller='group',
action='delete',
id=self.group['id']),
status=401,
extra_environ=extra_environ)

group = helpers.call_action('group_show',
id=self.group['id'])
assert_equal(group['state'], 'active')

def test_anon_user_trying_to_delete_fails(self):
self.app.get(url=url_for(controller='group',
action='delete',
id=self.group['id']),
status=302) # redirects to login form

group = helpers.call_action('group_show',
id=self.group['id'])
assert_equal(group['state'], 'active')


class TestGroupFollow(helpers.FunctionalTestBase):

def test_group_follow(self):
Expand Down

0 comments on commit ab61ee4

Please sign in to comment.