Skip to content

Commit

Permalink
Add more tests for group. rockstor#967
Browse files Browse the repository at this point in the history
  • Loading branch information
Mchakravartula committed Oct 21, 2015
1 parent a49d255 commit 50cc8d9
Showing 1 changed file with 84 additions and 115 deletions.
199 changes: 84 additions & 115 deletions src/rockstor/storageadmin/tests/test_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,50 +19,48 @@

from rest_framework import status
from rest_framework.test import APITestCase
import mock
from mock import patch
from storageadmin.tests.test_api import APITestMixin


class GroupTests(APITestCase):
fixtures = ['samba.json']
class GroupTests(APITestMixin, APITestCase):
fixtures = ['fix3.json']
BASE_URL = '/api/groups'

def session_login(self):
self.client.login(username='admin', password='admin')

def test_group_0(self):
"""
uauthorized api access
"""
@classmethod
def setUpClass(cls):
super(GroupTests, cls).setUpClass()

# post mocks
cls.patch_groupadd = patch('storageadmin.views.group.groupadd')
cls.mock_groupadd = cls.patch_groupadd.start()
cls.mock_groupadd.return_value = 'out','rc',0

cls.patch_getgrnam = patch('grp.getgrnam')
cls.mock_getgrnam = cls.patch_getgrnam.start()
cls.mock_getgrnam.return_value = 'grname','2','001'

@classmethod
def tearDownClass(cls):
super(GroupTests, cls).tearDownClass()

def test_get_requests(self):


#self.get_base(self.BASE_URL)
response = self.client.get(self.BASE_URL)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertEqual(response.status_code,
status.HTTP_200_OK, msg=response.data)

def test_group_0_1(self):
"""
get groups
"""
self.client.login(username='admin', password='admin')
response = self.client.get(self.BASE_URL)
self.assertEqual(response.status_code, status.HTTP_200_OK,
msg=response.content)
# get with groupname
response = self.client.get('%s/admin2' % self.BASE_URL)
self.assertEqual(response.status_code,
status.HTTP_200_OK, msg=response.data)

def test_group_1(self):
"""
add group happy path
"""
data = {'groupname': 'rocky', }
self.client.login(username='admin', password='admin')
response = self.client.post(self.BASE_URL, data=data)
self.assertEqual(response.status_code, status.HTTP_200_OK,
msg=response.content)
response2 = self.client.delete('%s/rocky' % self.BASE_URL)
self.assertEqual(response2.status_code,
status.HTTP_200_OK,
msg=response2.content)

def test_group_2(self):
"""
invalid username
"""
self.client.login(username='admin', password='admin')
def test_post_requests(self):

#invalid username

data = {'groupname': 'root', }
response = self.client.post(self.BASE_URL, data=data)
self.assertEqual(response.status_code,
Expand All @@ -71,94 +69,65 @@ def test_group_2(self):
self.assertEqual(response.data['detail'],
'Group(root) already exists. Choose a different one')

def test_group_2_1(self):
"""
invalid regex tests
"""
self.client.login(username='admin', password='admin')

#invalid group names

invalid_groupnames = ('rocky.rocky', '1234group', '-1234',
'rocky$')
'rocky$',)
for g in invalid_groupnames:
response = self.client.post(self.BASE_URL, data={'groupname': g, })
data['groupname'] = g
response = self.client.post(self.BASE_URL, data=data)
self.assertEqual(response.status_code,
status.HTTP_500_INTERNAL_SERVER_ERROR,
msg=response.content)
self.assertEqual(response.data['detail'],
'Groupname is invalid. It must confirm to the '
'regex: [A-Za-z][-a-zA-Z0-9_]*$')

def test_group_2_2(self):
"""
31 character groupname
"""
self.client.login(username='admin', password='admin')
data = {'groupname': 'r' * 30, }
response = self.client.post(self.BASE_URL, data=data)
self.assertEqual(response.status_code, status.HTTP_200_OK,
msg=response.content)
response2 = self.client.delete('%s/%s' %
(self.BASE_URL, data['groupname']))
self.assertEqual(response2.status_code,
status.HTTP_200_OK,
msg=response2.content)
status.HTTP_500_INTERNAL_SERVER_ERROR, msg=response.data)
err_msg = 'Groupname is invalid. It must confirm to the regex: [A-Za-z][-a-zA-Z0-9_]*$'
self.assertEqual(response.data['detail'], err_msg)

# invalid groupname with more than 31 characters
data['groupname'] = 'r' * 31
response = self.client.post(self.BASE_URL, data=data)
self.assertEqual(response.status_code,
status.HTTP_500_INTERNAL_SERVER_ERROR,
msg=response.content)
self.assertEqual(response.data['detail'],
'Groupname cannot be more than 30 characters long')

def test_group_3(self):
"""
invalid gid
"""
self.client.login(username='admin', password='admin')
data = {'groupname': 'rocky',
'gid': 0, }
status.HTTP_500_INTERNAL_SERVER_ERROR, msg=response.content)
err_msg = 'Groupname cannot be more than 30 characters long'
self.assertEqual(response.data['detail'], err_msg)



# invalid gid

data = {'groupname': 'ngroup2',
'gid': 1001, }
response = self.client.post(self.BASE_URL, data=data)
self.assertEqual(response.status_code,
status.HTTP_500_INTERNAL_SERVER_ERROR,
msg=response.content)
self.assertEqual(response.data['detail'],
'GID(0) already exists. Choose a different one')

def test_group_4(self):
"""
group in db but deleted manually in the system
"""
data = {'groupname': 'rocky', }
self.client.login(username='admin', password='admin')
status.HTTP_500_INTERNAL_SERVER_ERROR, msg=response.data)
err_msg = 'GID(1001) already exists. Choose a different one'
self.assertEqual(response.data['detail'], err_msg)


# happy path
data = {'groupname': 'newgroup', }
response = self.client.post(self.BASE_URL, data=data)
self.assertEqual(response.status_code, status.HTTP_200_OK,
msg=response.content)
from system.users import groupdel
groupdel(data['groupname'])
response2 = self.client.delete('%s/rocky' % self.BASE_URL)
self.assertEqual(response2.status_code,
status.HTTP_200_OK,
msg=response2.content)

def test_group_6(self):
"""
delete group that doesn't exist
"""
self.client.login(username='admin', password='admin')
self.assertEqual(response.status_code, status.HTTP_200_OK, msg=response.data)

def test_delete_requests(self):

# delete group that doesn't exist

response = self.client.delete('%s/foobargroup' % self.BASE_URL)
self.assertEqual(response.status_code,
status.HTTP_500_INTERNAL_SERVER_ERROR,
msg=response.content)
self.assertEqual(response.data['detail'],
'Group(foobargroup) does not exist')
status.HTTP_500_INTERNAL_SERVER_ERROR, msg=response.data)
err_msg = 'Group(foobargroup) does not exist'
self.assertEqual(response.data['detail'], err_msg)

def test_group_7(self):
"""
delete a restricted group
"""
self.client.login(username='admin', password='admin')

# delete a restricted group

response = self.client.delete('%s/root' % self.BASE_URL)
self.assertEqual(response.status_code,
status.HTTP_500_INTERNAL_SERVER_ERROR,
msg=response.content)
self.assertEqual(response.data['detail'],
'Delete of restricted group(root) is not supported.')
status.HTTP_500_INTERNAL_SERVER_ERROR, msg=response.data)
err_msg = 'Delete of restricted group(root) is not supported.'
self.assertEqual(response.data['detail'], err_msg)

# happy path
response = self.client.delete('%s/admin2' % self.BASE_URL)
self.assertEqual(response.status_code,
status.HTTP_200_OK, msg=response.data)

0 comments on commit 50cc8d9

Please sign in to comment.