Skip to content

Commit

Permalink
[change] Changed the API URL namespace and endpoints name #467
Browse files Browse the repository at this point in the history
Closes #467
  • Loading branch information
ManishShah120 committed May 25, 2021
1 parent 82f2918 commit 60d8362
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 57 deletions.
22 changes: 9 additions & 13 deletions openwisp_controller/config/api/urls.py
Expand Up @@ -13,39 +13,35 @@ def get_api_urls(api_views):
if getattr(settings, 'OPENWISP_CONTROLLER_API', True):
return [
path(
'controller/template/',
api_views.template_list,
name='api_template_list',
'controller/template/', api_views.template_list, name='template_list',
),
path(
'controller/template/<str:pk>/',
api_views.template_detail,
name='api_template_detail',
name='template_detail',
),
path(
'controller/template/<str:pk>/configuration/',
api_views.download_template_config,
name='api_download_template_config',
),
path('controller/vpn/', api_views.vpn_list, name='api_vpn_list',),
path(
'controller/vpn/<str:pk>/', api_views.vpn_detail, name='api_vpn_detail',
name='download_template_config',
),
path('controller/vpn/', api_views.vpn_list, name='vpn_list',),
path('controller/vpn/<str:pk>/', api_views.vpn_detail, name='vpn_detail',),
path(
'controller/vpn/<str:pk>/configuration/',
api_views.download_vpn_config,
name='api_download_vpn_config',
name='download_vpn_config',
),
path('controller/device/', api_views.device_list, name='api_device_list',),
path('controller/device/', api_views.device_list, name='device_list',),
path(
'controller/device/<str:pk>/',
api_views.device_detail,
name='api_device_detail',
name='device_detail',
),
path(
'controller/device/<str:pk>/configuration/',
api_views.download_device_config,
name='api_download_device_config',
name='download_device_config',
),
]
else:
Expand Down
78 changes: 39 additions & 39 deletions openwisp_controller/config/tests/test_api.py
Expand Up @@ -70,7 +70,7 @@ def setUp(self):

def test_device_create_with_config_api(self):
self.assertEqual(Device.objects.count(), 0)
path = reverse('controller_config:api_device_list')
path = reverse('config_api:device_list')
data = self._get_device_data.copy()
org = self._get_org()
data['organization'] = org.pk
Expand All @@ -80,7 +80,7 @@ def test_device_create_with_config_api(self):

def test_device_create_no_config_api(self):
self.assertEqual(Device.objects.count(), 0)
path = reverse('controller_config:api_device_list')
path = reverse('config_api:device_list')
data = self._get_device_data.copy()
org = self._get_org()
data['organization'] = org.pk
Expand All @@ -90,7 +90,7 @@ def test_device_create_no_config_api(self):
self.assertEqual(Device.objects.count(), 1)

def test_device_create_with_invalid_name_api(self):
path = reverse('controller_config:api_device_list')
path = reverse('config_api:device_list')
data = self._get_device_data.copy()
org = self._get_org()
data.pop('config')
Expand All @@ -102,7 +102,7 @@ def test_device_create_with_invalid_name_api(self):

# POST request should fail with validation error
def test_device_post_with_templates_of_different_org(self):
path = reverse('controller_config:api_device_list')
path = reverse('config_api:device_list')
data = self._get_device_data.copy()
org_1 = self._get_org()
data['organization'] = org_1.pk
Expand All @@ -120,7 +120,7 @@ def test_device_post_with_templates_of_different_org(self):

def test_device_list_api(self):
self._create_device()
path = reverse('controller_config:api_device_list')
path = reverse('config_api:device_list')
with self.assertNumQueries(4):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)
Expand All @@ -134,7 +134,7 @@ def test_device_filter_templates(self):
self._create_template(name='t1', organization=org1)
self._create_template(name='t11', organization=org1)
self._create_template(name='t2', organization=org2)
path = reverse('controller_config:api_device_list')
path = reverse('config_api:device_list')
r = self.client.get(path, {'format': 'api'})
self.assertEqual(r.status_code, 200)
self.assertContains(r, 't0</option>')
Expand All @@ -145,7 +145,7 @@ def test_device_filter_templates(self):
# Device detail having no config
def test_device_detail_api(self):
d1 = self._create_device()
path = reverse('controller_config:api_device_detail', args=[d1.pk])
path = reverse('config_api:device_detail', args=[d1.pk])
with self.assertNumQueries(3):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)
Expand All @@ -155,7 +155,7 @@ def test_device_detail_api(self):
def test_device_detail_config_api(self):
d1 = self._create_device()
self._create_config(device=d1)
path = reverse('controller_config:api_device_detail', args=[d1.pk])
path = reverse('config_api:device_detail', args=[d1.pk])
with self.assertNumQueries(4):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)
Expand All @@ -164,7 +164,7 @@ def test_device_detail_config_api(self):
def test_device_put_api(self):
d1 = self._create_device(name='test-device')
self._create_config(device=d1)
path = reverse('controller_config:api_device_detail', args=[d1.pk])
path = reverse('config_api:device_detail', args=[d1.pk])
org = self._get_org()
data = {
'name': 'change-test-device',
Expand Down Expand Up @@ -192,7 +192,7 @@ def test_device_with_vpn_client_template_assigned(self):
t2 = self._create_template(name='t2', organization=org1)
d1 = self._create_device(name='d1', organization=org1)
self._create_config(device=d1)
path = reverse('controller_config:api_device_detail', args=[d1.pk])
path = reverse('config_api:device_detail', args=[d1.pk])
self.assertEqual(d1.config.vpnclient_set.count(), 0)
data = {'config': {'templates': [str(t1.id), str(t2.id)]}}
self.client.patch(path, data, content_type='application/json')
Expand All @@ -206,7 +206,7 @@ def test_device_patch_with_templates_of_same_org(self):
d1 = self._create_device(name='org1-config', organization=org1)
self._create_config(device=d1)
self.assertEqual(d1.config.templates.count(), 0)
path = reverse('controller_config:api_device_detail', args=[d1.pk])
path = reverse('config_api:device_detail', args=[d1.pk])
t1 = self._create_template(name='t1', organization=None)
t2 = self._create_template(name='t2', organization=org1)
data = {'config': {'templates': [str(t1.id), str(t2.id)]}}
Expand All @@ -220,7 +220,7 @@ def test_device_patch_with_templates_of_different_org(self):
d1 = self._create_device(name='org1-config', organization=org1)
self._create_config(device=d1)
self.assertEqual(d1.config.templates.count(), 0)
path = reverse('controller_config:api_device_detail', args=[d1.pk])
path = reverse('config_api:device_detail', args=[d1.pk])
t1 = self._create_template(name='t1', organization=None)
t2 = self._create_template(name='t2', organization=org1)
t3 = self._create_template(
Expand All @@ -238,7 +238,7 @@ def test_device_patch_with_templates_of_different_org(self):

def test_device_patch_api(self):
d1 = self._create_device(name='test-device')
path = reverse('controller_config:api_device_detail', args=[d1.pk])
path = reverse('config_api:device_detail', args=[d1.pk])
data = dict(name='change-test-device')
r = self.client.patch(path, data, content_type='application/json')
self.assertEqual(r.status_code, 200)
Expand All @@ -247,30 +247,30 @@ def test_device_patch_api(self):
def test_device_download_api(self):
d1 = self._create_device()
self._create_config(device=d1)
path = reverse('controller_config:api_download_device_config', args=[d1.pk])
path = reverse('config_api:download_device_config', args=[d1.pk])
with self.assertNumQueries(6):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)

def test_device_delete_api(self):
d1 = self._create_device()
self._create_config(device=d1)
path = reverse('controller_config:api_device_detail', args=[d1.pk])
path = reverse('config_api:device_detail', args=[d1.pk])
r = self.client.delete(path)
self.assertEqual(r.status_code, 204)
self.assertEqual(Device.objects.count(), 0)

def test_template_create_no_org_api(self):
self.assertEqual(Template.objects.count(), 0)
path = reverse('controller_config:api_template_list')
path = reverse('config_api:template_list')
data = self._get_template_data.copy()
r = self.client.post(path, data, content_type='application/json')
self.assertEqual(Template.objects.count(), 1)
self.assertEqual(r.status_code, 201)
self.assertEqual(r.data['organization'], None)

def test_template_create_vpn_with_type_as_generic(self):
path = reverse('controller_config:api_template_list')
path = reverse('config_api:template_list')
test_user = self._create_operator(organizations=[self._get_org()])
self.client.force_login(test_user)
vpn1 = self._create_vpn(name='vpn1', organization=self._get_org())
Expand All @@ -286,7 +286,7 @@ def test_template_create_vpn_with_type_as_generic(self):
def test_template_create_api(self):
self.assertEqual(Template.objects.count(), 0)
org = self._get_org()
path = reverse('controller_config:api_template_list')
path = reverse('config_api:template_list')
data = self._get_template_data.copy()
data['organization'] = org.pk
data['required'] = True
Expand All @@ -298,7 +298,7 @@ def test_template_create_api(self):
def test_template_create_of_vpn_type(self):
org = self._get_org()
vpn1 = self._create_vpn(name='vpn1', organization=org)
path = reverse('controller_config:api_template_list')
path = reverse('config_api:template_list')
data = self._get_template_data.copy()
data['type'] = 'vpn'
data['vpn'] = vpn1.id
Expand All @@ -312,7 +312,7 @@ def test_template_create_with_shared_vpn(self):
test_user = self._create_operator(organizations=[org1])
self.client.force_login(test_user)
vpn1 = self._create_vpn(name='vpn1', organization=None)
path = reverse('controller_config:api_template_list')
path = reverse('config_api:template_list')
data = self._get_template_data.copy()
data['type'] = 'vpn'
data['vpn'] = vpn1.id
Expand All @@ -323,7 +323,7 @@ def test_template_create_with_shared_vpn(self):
self.assertEqual(r.data['vpn'], vpn1.id)

def test_template_creation_with_no_org_by_operator(self):
path = reverse('controller_config:api_template_list')
path = reverse('config_api:template_list')
data = self._get_template_data.copy()
test_user = self._create_operator(organizations=[self._get_org()])
self.client.force_login(test_user)
Expand All @@ -332,7 +332,7 @@ def test_template_creation_with_no_org_by_operator(self):
self.assertIn('This field may not be null.', str(r.content))

def test_template_create_with_empty_config(self):
path = reverse('controller_config:api_template_list')
path = reverse('config_api:template_list')
data = self._get_template_data.copy()
data['config'] = {}
data['organization'] = self._get_org().pk
Expand All @@ -343,7 +343,7 @@ def test_template_create_with_empty_config(self):
def test_template_list_api(self):
org1 = self._get_org()
self._create_template(name='t1', organization=org1)
path = reverse('controller_config:api_template_list')
path = reverse('config_api:template_list')
with self.assertNumQueries(5):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)
Expand All @@ -354,23 +354,23 @@ def test_template_list_for_shared_objects(self):
self._create_vpn(name='shared-vpn', organization=None)
test_user = self._create_operator(organizations=[org1])
self.client.force_login(test_user)
path = reverse('controller_config:api_template_list')
path = reverse('config_api:template_list')
r = self.client.get(path, {'format': 'api'})
self.assertEqual(r.status_code, 200)
self.assertContains(r, 'shared-vpn</option>')

# template-detail having no Org
def test_template_detail_api(self):
t1 = self._create_template(name='t1')
path = reverse('controller_config:api_template_detail', args=[t1.pk])
path = reverse('config_api:template_detail', args=[t1.pk])
with self.assertNumQueries(4):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.data['organization'], None)

def test_template_put_api(self):
t1 = self._create_template(name='t1', organization=None)
path = reverse('controller_config:api_template_detail', args=[t1.pk])
path = reverse('config_api:template_detail', args=[t1.pk])
org = self._get_org()
data = {
'name': 'New t1',
Expand All @@ -387,29 +387,29 @@ def test_template_put_api(self):

def test_template_patch_api(self):
t1 = self._create_template(name='t1')
path = reverse('controller_config:api_template_detail', args=[t1.pk])
path = reverse('config_api:template_detail', args=[t1.pk])
data = dict(name='New t1')
r = self.client.patch(path, data, content_type='application/json')
self.assertEqual(r.status_code, 200)
self.assertEqual(r.data['name'], 'New t1')

def test_template_download_api(self):
t1 = self._create_template(name='t1')
path = reverse('controller_config:api_download_template_config', args=[t1.pk])
path = reverse('config_api:download_template_config', args=[t1.pk])
with self.assertNumQueries(3):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)

def test_template_delete_api(self):
t1 = self._create_template(name='t1')
path = reverse('controller_config:api_template_detail', args=[t1.pk])
path = reverse('config_api:template_detail', args=[t1.pk])
r = self.client.delete(path)
self.assertEqual(r.status_code, 204)
self.assertEqual(Template.objects.count(), 0)

def test_vpn_create_api(self):
self.assertEqual(Vpn.objects.count(), 0)
path = reverse('controller_config:api_vpn_list')
path = reverse('config_api:vpn_list')
ca1 = self._create_ca()
data = self._get_vpn_data.copy()
data['ca'] = ca1.pk
Expand All @@ -425,7 +425,7 @@ def test_vpn_create_with_shared_objects(self):
data = self._get_vpn_data.copy()
data['organization'] = org1.pk
data['ca'] = shared_ca.pk
path = reverse('controller_config:api_vpn_list')
path = reverse('config_api:vpn_list')
r = self.client.post(path, data, content_type='application/json')
self.assertEqual(Vpn.objects.count(), 1)
self.assertEqual(r.status_code, 201)
Expand All @@ -434,7 +434,7 @@ def test_vpn_create_with_shared_objects(self):
def test_vpn_list_api(self):
org = self._get_org()
self._create_vpn(organization=org)
path = reverse('controller_config:api_vpn_list')
path = reverse('config_api:vpn_list')
with self.assertNumQueries(4):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)
Expand All @@ -445,7 +445,7 @@ def test_vpn_list_for_shared_objects(self):
org1 = self._get_org()
test_user = self._create_operator(organizations=[org1])
self.client.force_login(test_user)
path = reverse('controller_config:api_vpn_list')
path = reverse('config_api:vpn_list')
r = self.client.get(path, {'format': 'api'})
self.assertEqual(r.status_code, 200)
self.assertContains(r, 'shared_ca</option>')
Expand All @@ -454,7 +454,7 @@ def test_vpn_list_for_shared_objects(self):
# VPN detail having no Org
def test_vpn_detail_no_org_api(self):
vpn1 = self._create_vpn(name='test-vpn')
path = reverse('controller_config:api_vpn_detail', args=[vpn1.pk])
path = reverse('config_api:vpn_detail', args=[vpn1.pk])
with self.assertNumQueries(3):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)
Expand All @@ -464,15 +464,15 @@ def test_vpn_detail_no_org_api(self):
def test_vpn_detail_with_org_api(self):
org = self._get_org()
vpn1 = self._create_vpn(name='test-vpn', organization=org)
path = reverse('controller_config:api_vpn_detail', args=[vpn1.pk])
path = reverse('config_api:vpn_detail', args=[vpn1.pk])
with self.assertNumQueries(3):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.data['organization'], org.pk)

def test_vpn_put_api(self):
vpn1 = self._create_vpn(name='test-vpn')
path = reverse('controller_config:api_vpn_detail', args=[vpn1.pk])
path = reverse('config_api:vpn_detail', args=[vpn1.pk])
org = self._get_org()
ca1 = self._create_ca()
data = {
Expand All @@ -491,22 +491,22 @@ def test_vpn_put_api(self):

def test_vpn_patch_api(self):
vpn1 = self._create_vpn(name='test-vpn')
path = reverse('controller_config:api_vpn_detail', args=[vpn1.pk])
path = reverse('config_api:vpn_detail', args=[vpn1.pk])
data = dict(name='test-vpn-change')
r = self.client.patch(path, data, content_type='application/json')
self.assertEqual(r.status_code, 200)
self.assertEqual(r.data['name'], 'test-vpn-change')

def test_vpn_download_api(self):
vpn1 = self._create_vpn(name='test-vpn')
path = reverse('controller_config:api_download_vpn_config', args=[vpn1.pk])
path = reverse('config_api:download_vpn_config', args=[vpn1.pk])
with self.assertNumQueries(5):
r = self.client.get(path)
self.assertEqual(r.status_code, 200)

def test_vpn_delete_api(self):
vpn1 = self._create_vpn(name='test-vpn')
path = reverse('controller_config:api_vpn_detail', args=[vpn1.pk])
path = reverse('config_api:vpn_detail', args=[vpn1.pk])
r = self.client.delete(path)
self.assertEqual(r.status_code, 204)
self.assertEqual(Vpn.objects.count(), 0)

0 comments on commit 60d8362

Please sign in to comment.