forked from enviPath/enviPy
181 lines
6.1 KiB
Python
181 lines
6.1 KiB
Python
from django.conf import settings as s
|
|
from django.core.files.uploadedfile import SimpleUploadedFile
|
|
from django.test import TestCase, tag
|
|
from django.urls import reverse
|
|
|
|
from epdb.logic import UserManager
|
|
from epdb.models import Package, UserPackagePermission, Permission, GroupPackagePermission, Group
|
|
|
|
|
|
class PackageViewTest(TestCase):
|
|
fixtures = ["test_fixtures.jsonl.gz"]
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(PackageViewTest, cls).setUpClass()
|
|
cls.user1 = UserManager.create_user("user1", "user1@envipath.com", "SuperSafe",
|
|
set_setting=False, add_to_group=True, is_active=True)
|
|
cls.user2 = UserManager.create_user("user2", "user2@envipath.com", "SuperSafe",
|
|
set_setting=False, add_to_group=True, is_active=True)
|
|
|
|
def setUp(self):
|
|
self.client.force_login(self.user1)
|
|
|
|
def test_create_package(self):
|
|
response = self.client.post(reverse("packages"), {
|
|
"package-name": "Test Package",
|
|
"package-description": "Just a Description",
|
|
})
|
|
self.assertEqual(response.status_code, 302)
|
|
package_url = response.url
|
|
|
|
p = Package.objects.get(url=package_url)
|
|
|
|
self.assertEqual(p.name, "Test Package")
|
|
self.assertEqual(p.description, "Just a Description")
|
|
|
|
upp = UserPackagePermission.objects.get(package=p, user=self.user1)
|
|
self.assertEqual(upp.permission, Permission.ALL[0])
|
|
|
|
def test_import_package(self):
|
|
file = SimpleUploadedFile(
|
|
"Fixture_Package.json",
|
|
open(s.FIXTURE_DIRS[0] / "Fixture_Package.json", "rb").read(),
|
|
content_type="application/json"
|
|
)
|
|
|
|
response = self.client.post(reverse("packages"), {
|
|
"file": file,
|
|
"hidden": "import-package-json"
|
|
})
|
|
|
|
self.assertEqual(response.status_code, 302)
|
|
package_url = response.url
|
|
|
|
p = Package.objects.get(url=package_url)
|
|
|
|
self.assertEqual(p.pathways.count(), 22)
|
|
self.assertEqual(p.rules.count(), 45)
|
|
self.assertEqual(p.compounds.count(), 223)
|
|
self.assertEqual(p.reactions.count(), 212)
|
|
|
|
upp = UserPackagePermission.objects.get(package=p, user=self.user1)
|
|
self.assertEqual(upp.permission, Permission.ALL[0])
|
|
|
|
@tag("slow")
|
|
def test_import_legacy_package(self):
|
|
file = SimpleUploadedFile(
|
|
"EAWAG-BBD.json",
|
|
open(s.FIXTURE_DIRS[0] / "packages" / "2025-07-18" / "EAWAG-BBD.json", "rb").read(),
|
|
content_type="application/json"
|
|
)
|
|
|
|
response = self.client.post(reverse("packages"), {
|
|
"file": file,
|
|
"hidden": "import-legacy-package-json"
|
|
})
|
|
|
|
self.assertEqual(response.status_code, 302)
|
|
package_url = response.url
|
|
|
|
p = Package.objects.get(url=package_url)
|
|
|
|
self.assertEqual(p.pathways.count(), 219)
|
|
self.assertEqual(p.rules.count(), 498)
|
|
self.assertEqual(p.compounds.count(), 1399)
|
|
self.assertEqual(p.reactions.count(), 1480)
|
|
self.assertEqual(p.scenarios.count(), 1914)
|
|
|
|
upp = UserPackagePermission.objects.get(package=p, user=self.user1)
|
|
self.assertEqual(upp.permission, Permission.ALL[0])
|
|
|
|
def test_edit_package(self):
|
|
response = self.client.post(reverse("packages"), {
|
|
"package-name": "Test Package",
|
|
"package-description": "Just a Description",
|
|
})
|
|
self.assertEqual(response.status_code, 302)
|
|
package_url = response.url
|
|
|
|
self.client.post(package_url, {
|
|
"package-name": "New Name",
|
|
"package-description": "New Description",
|
|
})
|
|
|
|
p = Package.objects.get(url=package_url)
|
|
|
|
self.assertEqual(p.name, "New Name")
|
|
self.assertEqual(p.description, "New Description")
|
|
|
|
def test_edit_package_permissions(self):
|
|
response = self.client.post(reverse("packages"), {
|
|
"package-name": "Test Package",
|
|
"package-description": "Just a Description",
|
|
})
|
|
self.assertEqual(response.status_code, 302)
|
|
package_url = response.url
|
|
p = Package.objects.get(url=package_url)
|
|
|
|
with self.assertRaises(UserPackagePermission.DoesNotExist):
|
|
UserPackagePermission.objects.get(package=p, user=self.user2)
|
|
|
|
self.client.post(package_url, {
|
|
"grantee": self.user2.url,
|
|
"read": "on",
|
|
"write": "on",
|
|
})
|
|
|
|
upp = UserPackagePermission.objects.get(package=p, user=self.user2)
|
|
|
|
self.assertEqual(upp.permission, Permission.WRITE[0])
|
|
|
|
def test_publish_package(self):
|
|
response = self.client.post(reverse("packages"), {
|
|
"package-name": "Test Package",
|
|
"package-description": "Just a Description",
|
|
})
|
|
self.assertEqual(response.status_code, 302)
|
|
package_url = response.url
|
|
p = Package.objects.get(url=package_url)
|
|
|
|
self.client.post(package_url, {
|
|
"hidden": "publish-package"
|
|
})
|
|
|
|
self.assertEqual(Group.objects.filter(public=True).count(), 1)
|
|
g = Group.objects.get(public=True)
|
|
gpp = GroupPackagePermission.objects.get(package=p, group=g)
|
|
self.assertEqual(gpp.permission, Permission.READ[0])
|
|
|
|
|
|
def test_set_package_license(self):
|
|
response = self.client.post(reverse("packages"), {
|
|
"package-name": "Test Package",
|
|
"package-description": "Just a Description",
|
|
})
|
|
|
|
package_url = response.url
|
|
p = Package.objects.get(url=package_url)
|
|
|
|
self.client.post(package_url, {
|
|
"license": "no-license"
|
|
})
|
|
|
|
self.assertIsNone(p.license)
|
|
# TODO test others
|
|
|
|
|
|
def test_delete_package(self):
|
|
response = self.client.post(reverse("packages"), {
|
|
"package-name": "Test Package",
|
|
"package-description": "Just a Description",
|
|
})
|
|
|
|
package_url = response.url
|
|
p = Package.objects.get(url=package_url)
|
|
|
|
p.delete()
|
|
|
|
response = self.client.get(package_url)
|
|
self.assertEqual(response.status_code, 404)
|