2023-06-15 18:55:33 +00:00
|
|
|
from authentication.models import ToolshedUser
|
2023-10-22 20:46:55 +00:00
|
|
|
from authentication.tests import SignatureAuthClient, UserTestMixin, ToolshedTestCase
|
2023-06-15 18:55:33 +00:00
|
|
|
from hostadmin.models import Domain
|
2023-10-22 20:46:55 +00:00
|
|
|
from django.test import Client
|
|
|
|
|
|
|
|
from toolshed.tests import CategoryTestMixin, TagTestMixin, PropertyTestMixin
|
2023-06-15 18:55:33 +00:00
|
|
|
|
2023-10-22 20:46:55 +00:00
|
|
|
anonymous_client = Client()
|
|
|
|
client = SignatureAuthClient()
|
2023-06-15 18:55:33 +00:00
|
|
|
|
2023-10-22 20:46:55 +00:00
|
|
|
|
|
|
|
class DomainTestCase(ToolshedTestCase):
|
2023-06-15 18:55:33 +00:00
|
|
|
def setUp(self):
|
2023-10-22 20:46:55 +00:00
|
|
|
admin = ToolshedUser.objects.create_superuser('admin', 'admin@localhost', 'testpassword')
|
2023-06-15 18:55:33 +00:00
|
|
|
example_com = Domain.objects.create(name='example.com', owner=admin, open_registration=True)
|
|
|
|
|
|
|
|
def test_domain(self):
|
|
|
|
example_com = Domain.objects.get(name='example.com')
|
|
|
|
self.assertEqual(example_com.name, 'example.com')
|
|
|
|
self.assertEqual(example_com.owner.username, 'admin')
|
|
|
|
self.assertEqual(example_com.open_registration, True)
|
|
|
|
self.assertEqual(str(example_com), 'example.com')
|
2023-10-22 20:46:55 +00:00
|
|
|
|
|
|
|
|
|
|
|
class DomainApiTestCase(UserTestMixin, ToolshedTestCase):
|
|
|
|
def setUp(self):
|
|
|
|
super().setUp()
|
|
|
|
self.prepare_users()
|
|
|
|
|
|
|
|
def test_get_domains(self):
|
|
|
|
response = client.get('/api/domains/', self.f['local_user1'])
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json(), ['example.com'])
|
|
|
|
|
|
|
|
def test_admin_get_domains_fail(self):
|
|
|
|
response = client.get('/admin/domains/', self.f['local_user1'])
|
|
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
|
|
|
|
def test_admin_get_domains(self):
|
|
|
|
response = client.get('/admin/domains/', self.f['admin'])
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(len(response.json()), 1)
|
|
|
|
self.assertEqual(response.json()[0]['name'], 'example.com')
|
|
|
|
self.assertEqual(response.json()[0]['owner'], str(self.f['admin']))
|
|
|
|
self.assertEqual(response.json()[0]['open_registration'], True)
|
|
|
|
|
|
|
|
def test_admin_create_domain(self):
|
|
|
|
response = client.post('/admin/domains/', self.f['admin'],
|
|
|
|
{'name': 'example2.com', 'owner': 'local_user1', 'open_registration': False})
|
|
|
|
self.assertEqual(response.status_code, 201)
|
|
|
|
self.assertEqual(response.json()['name'], 'example2.com')
|
|
|
|
self.assertEqual(response.json()['owner'], str(self.f['admin']))
|
|
|
|
self.assertEqual(response.json()['open_registration'], False)
|
|
|
|
self.assertEqual(Domain.objects.count(), 2)
|
|
|
|
self.assertEqual(Domain.objects.get(name='example2.com').owner, self.f['admin'])
|
|
|
|
self.assertEqual(Domain.objects.get(name='example2.com').open_registration, False)
|
|
|
|
|
|
|
|
def test_admin_create_domain_fail(self):
|
|
|
|
response = client.post('/admin/domains/', self.f['local_user1'],
|
|
|
|
{'name': 'example2.com', 'owner': 'local_user1', 'open_registration': False})
|
|
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
self.assertEqual(Domain.objects.count(), 1)
|
|
|
|
|
|
|
|
def test_admin_update_domain(self):
|
|
|
|
response = client.put('/admin/domains/1/', self.f['admin'],
|
|
|
|
{'name': 'example.com', 'owner': 'local_user1', 'open_registration': False})
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json()['name'], 'example.com')
|
|
|
|
self.assertEqual(response.json()['owner'], str(self.f['admin']))
|
|
|
|
self.assertEqual(response.json()['open_registration'], False)
|
|
|
|
self.assertEqual(Domain.objects.count(), 1)
|
|
|
|
self.assertEqual(Domain.objects.get(name='example.com').owner, self.f['admin'])
|
|
|
|
self.assertEqual(Domain.objects.get(name='example.com').open_registration, False)
|
|
|
|
|
|
|
|
def test_admin_update_domain_fail(self):
|
|
|
|
response = client.put('/admin/domains/1/', self.f['local_user1'],
|
|
|
|
{'name': 'example.com', 'owner': 'local_user1', 'open_registration': False})
|
|
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
self.assertEqual(Domain.objects.count(), 1)
|
|
|
|
|
|
|
|
def test_admin_delete_domain(self):
|
|
|
|
response = client.delete('/admin/domains/1/', self.f['admin'])
|
|
|
|
self.assertEqual(response.status_code, 204)
|
|
|
|
self.assertEqual(Domain.objects.count(), 0)
|
|
|
|
|
|
|
|
def test_admin_delete_domain_fail(self):
|
|
|
|
response = client.delete('/admin/domains/1/', self.f['local_user1'])
|
|
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
self.assertEqual(Domain.objects.count(), 1)
|
|
|
|
|
|
|
|
|
|
|
|
class CategoryApiTestCase(UserTestMixin, CategoryTestMixin, ToolshedTestCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
super().setUp()
|
|
|
|
self.prepare_users()
|
|
|
|
self.prepare_categories()
|
|
|
|
|
|
|
|
def test_get_categories(self):
|
|
|
|
response = client.get('/api/categories/', self.f['local_user1'])
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json(),
|
|
|
|
["cat1", "cat2", "cat3", "cat1/subcat1", "cat1/subcat2", "cat1/subcat1/subcat3"])
|
|
|
|
|
|
|
|
def test_admin_get_categories_fail(self):
|
|
|
|
response = client.get('/admin/categories/', self.f['local_user1'])
|
|
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
|
|
|
|
def test_admin_get_categories(self):
|
|
|
|
response = client.get('/admin/categories/', self.f['admin'])
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(len(response.json()), 6)
|
|
|
|
self.assertEqual(response.json()[0]['name'], 'cat1')
|
|
|
|
self.assertEqual(response.json()[1]['name'], 'cat2')
|
|
|
|
self.assertEqual(response.json()[2]['name'], 'cat3')
|
|
|
|
self.assertEqual(response.json()[3]['name'], 'subcat1')
|
|
|
|
self.assertEqual(response.json()[3]['parent'], 'cat1')
|
|
|
|
self.assertEqual(response.json()[4]['name'], 'subcat2')
|
|
|
|
self.assertEqual(response.json()[4]['parent'], 'cat1')
|
|
|
|
self.assertEqual(response.json()[5]['name'], 'subcat3')
|
|
|
|
self.assertEqual(response.json()[5]['parent'], 'subcat1')
|
|
|
|
|
|
|
|
def test_admin_create_category(self):
|
|
|
|
response = client.post('/admin/categories/', self.f['admin'], {'name': 'cat4'})
|
|
|
|
self.assertEqual(response.status_code, 201)
|
|
|
|
self.assertEqual(response.json()['name'], 'cat4')
|
|
|
|
self.assertEqual(response.json()['description'], None)
|
|
|
|
self.assertEqual(response.json()['parent'], None)
|
|
|
|
self.assertEqual(response.json()['origin'], 'api')
|
|
|
|
|
|
|
|
def test_admin_post_subcategory(self):
|
|
|
|
response = client.post('/admin/categories/', self.f['admin'], {'name': 'subcat4', 'parent': 'cat1'})
|
|
|
|
self.assertEqual(response.status_code, 201)
|
|
|
|
self.assertEqual(response.json()['name'], 'subcat4')
|
|
|
|
self.assertEqual(response.json()['description'], None)
|
|
|
|
self.assertEqual(response.json()['parent'], 'cat1')
|
|
|
|
self.assertEqual(response.json()['origin'], 'api')
|
|
|
|
|
|
|
|
def test_admin_put_category(self):
|
|
|
|
response = client.put('/admin/categories/1/', self.f['admin'], {'name': 'cat5'})
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json()['name'], 'cat5')
|
|
|
|
self.assertEqual(response.json()['description'], None)
|
|
|
|
self.assertEqual(response.json()['parent'], None)
|
|
|
|
self.assertEqual(response.json()['origin'], 'test')
|
|
|
|
|
|
|
|
def test_admin_patch_category(self):
|
|
|
|
response = client.patch('/admin/categories/1/', self.f['admin'], {'name': 'cat5'})
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json()['name'], 'cat5')
|
|
|
|
self.assertEqual(response.json()['description'], None)
|
|
|
|
self.assertEqual(response.json()['parent'], None)
|
|
|
|
self.assertEqual(response.json()['origin'], 'test')
|
|
|
|
|
|
|
|
def test_admin_delete_category(self):
|
|
|
|
response = client.delete('/admin/categories/2/', self.f['admin'])
|
|
|
|
self.assertEqual(response.status_code, 204)
|
|
|
|
|
|
|
|
|
|
|
|
class TagApiTestCase(UserTestMixin, CategoryTestMixin, TagTestMixin, ToolshedTestCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
super().setUp()
|
|
|
|
self.prepare_users()
|
|
|
|
self.prepare_categories()
|
|
|
|
self.prepare_tags()
|
|
|
|
|
|
|
|
def test_get_tags(self):
|
|
|
|
response = client.get('/api/tags/', self.f['local_user1'])
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json(), ["tag1", "tag2", "tag3"])
|
|
|
|
|
|
|
|
def test_admin_get_tags_fail(self):
|
|
|
|
response = client.get('/admin/tags/', self.f['local_user1'])
|
|
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
|
|
|
|
def test_admin_get_tags(self):
|
|
|
|
response = client.get('/admin/tags/', self.f['admin'])
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(len(response.json()), 3)
|
|
|
|
self.assertEqual(response.json()[0]['name'], 'tag1')
|
|
|
|
|
|
|
|
def test_admin_create_tag(self):
|
|
|
|
response = client.post('/admin/tags/', self.f['admin'], {'name': 'tag4'})
|
|
|
|
self.assertEqual(response.status_code, 201)
|
|
|
|
self.assertEqual(response.json()['name'], 'tag4')
|
|
|
|
self.assertEqual(response.json()['description'], None)
|
|
|
|
self.assertEqual(response.json()['origin'], 'api')
|
|
|
|
self.assertEqual(response.json()['category'], None)
|
|
|
|
|
|
|
|
def test_admin_put_tag(self):
|
|
|
|
response = client.put('/admin/tags/1/', self.f['admin'], {'name': 'tag5'})
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json()['name'], 'tag5')
|
|
|
|
self.assertEqual(response.json()['description'], 'tag1 description')
|
|
|
|
self.assertEqual(response.json()['origin'], 'test')
|
|
|
|
self.assertEqual(response.json()['category'], 'cat1')
|
|
|
|
|
|
|
|
def test_admin_patch_tag(self):
|
|
|
|
response = client.patch('/admin/tags/1/', self.f['admin'], {'name': 'tag5'})
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json()['name'], 'tag5')
|
|
|
|
self.assertEqual(response.json()['description'], 'tag1 description')
|
|
|
|
self.assertEqual(response.json()['origin'], 'test')
|
|
|
|
self.assertEqual(response.json()['category'], 'cat1')
|
|
|
|
|
|
|
|
def test_admin_delete_tag(self):
|
|
|
|
response = client.delete('/admin/tags/2/', self.f['admin'])
|
|
|
|
self.assertEqual(response.status_code, 204)
|
|
|
|
|
|
|
|
|
|
|
|
class PropertyApiTestCase(UserTestMixin, CategoryTestMixin, PropertyTestMixin, ToolshedTestCase):
|
|
|
|
|
|
|
|
def setUp(self):
|
|
|
|
super().setUp()
|
|
|
|
self.prepare_users()
|
|
|
|
self.prepare_categories()
|
|
|
|
self.prepare_properties()
|
|
|
|
|
|
|
|
def test_get_properties(self):
|
|
|
|
response = client.get('/api/properties/', self.f['local_user1'])
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(len(response.json()), 3)
|
|
|
|
self.assertEqual(response.json()[0]['name'], 'prop1')
|
|
|
|
self.assertEqual(response.json()[1]['name'], 'prop2')
|
|
|
|
self.assertEqual(response.json()[2]['name'], 'prop3')
|
|
|
|
|
|
|
|
def test_admin_get_properties_fail(self):
|
|
|
|
response = client.get('/admin/properties/', self.f['local_user1'])
|
|
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
|
|
|
|
def test_admin_get_properties(self):
|
|
|
|
response = client.get('/admin/properties/', self.f['admin'])
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(len(response.json()), 3)
|
|
|
|
self.assertEqual(response.json()[0]['name'], 'prop1')
|
|
|
|
self.assertEqual(response.json()[1]['name'], 'prop2')
|
|
|
|
self.assertEqual(response.json()[2]['name'], 'prop3')
|
|
|
|
|
|
|
|
def test_admin_create_property(self):
|
|
|
|
response = client.post('/admin/properties/', self.f['admin'], {'name': 'prop4'})
|
|
|
|
self.assertEqual(response.status_code, 201)
|
|
|
|
self.assertEqual(response.json()['name'], 'prop4')
|
|
|
|
self.assertEqual(response.json()['description'], None)
|
|
|
|
self.assertEqual(response.json()['origin'], 'api')
|
|
|
|
self.assertEqual(response.json()['category'], None)
|
|
|
|
self.assertEqual(response.json()['unit_symbol'], None)
|
|
|
|
self.assertEqual(response.json()['unit_name'], None)
|
|
|
|
self.assertEqual(response.json()['unit_name_plural'], None)
|
|
|
|
self.assertEqual(response.json()['base2_prefix'], False)
|
|
|
|
self.assertEqual(response.json()['dimensions'], 1)
|
|
|
|
|
|
|
|
# self.assertEqual(response.json()['sort_lexicographically'], False)
|
|
|
|
|
|
|
|
def test_admin_put_property(self):
|
|
|
|
response = client.put('/admin/properties/1/', self.f['admin'], {'name': 'prop5'})
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json()['name'], 'prop5')
|
|
|
|
self.assertEqual(response.json()['description'], None)
|
|
|
|
self.assertEqual(response.json()['origin'], 'test')
|
|
|
|
self.assertEqual(response.json()['category'], None)
|
|
|
|
self.assertEqual(response.json()['unit_symbol'], None)
|
|
|
|
self.assertEqual(response.json()['unit_name'], None)
|
|
|
|
self.assertEqual(response.json()['unit_name_plural'], None)
|
|
|
|
self.assertEqual(response.json()['base2_prefix'], False)
|
|
|
|
self.assertEqual(response.json()['dimensions'], 1)
|
|
|
|
|
|
|
|
# self.assertEqual(response.json()['sort_lexicographically'], False)
|
|
|
|
|
|
|
|
def test_admin_patch_property(self):
|
|
|
|
response = client.patch('/admin/properties/1/', self.f['admin'], {'name': 'prop5'})
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertEqual(response.json()['name'], 'prop5')
|
|
|
|
self.assertEqual(response.json()['description'], None)
|
|
|
|
self.assertEqual(response.json()['origin'], 'test')
|
|
|
|
self.assertEqual(response.json()['category'], None)
|
|
|
|
self.assertEqual(response.json()['unit_symbol'], None)
|
|
|
|
self.assertEqual(response.json()['unit_name'], None)
|
|
|
|
self.assertEqual(response.json()['unit_name_plural'], None)
|
|
|
|
self.assertEqual(response.json()['base2_prefix'], False)
|
|
|
|
self.assertEqual(response.json()['dimensions'], 1)
|
|
|
|
|
|
|
|
# self.assertEqual(response.json()['sort_lexicographically'], False)
|
|
|
|
|
|
|
|
def test_admin_delete_property(self):
|
|
|
|
response = client.delete('/admin/properties/2/', self.f['admin'])
|
|
|
|
self.assertEqual(response.status_code, 204)
|