summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJelle van der Waa <jelle@vdwaa.nl>2018-11-23 20:36:13 +0100
committerJelle van der Waa <jelle@vdwaa.nl>2018-11-23 20:36:13 +0100
commitccc581719b58d5b0123a9b5d729e294c568d8564 (patch)
treed2193e766c6a90b1938fe64755a057538887d794
parent2832455cb330ac08f9436cb44225ce44054b78cf (diff)
downloadarchweb-ccc581719b58d5b0123a9b5d729e294c568d8564.tar.gz
archweb-ccc581719b58d5b0123a9b5d729e294c568d8564.zip
packages: test adopt/disown functionality
-rw-r--r--packages/tests.py66
1 files changed, 65 insertions, 1 deletions
diff --git a/packages/tests.py b/packages/tests.py
index 43f3d39b..373f85de 100644
--- a/packages/tests.py
+++ b/packages/tests.py
@@ -1,7 +1,12 @@
import unittest
from django.core import mail
-from django.test import TestCase
+from django.test import TestCase, TransactionTestCase
+from django.contrib.auth.models import User
+
+from main.models import Package, Repo
+from packages.models import PackageRelation
+from devel.models import UserProfile
from .alpm import AlpmAPI
@@ -291,4 +296,63 @@ class FlagPackage(TestCase):
self.assertEqual(len(mail.outbox), 0)
+class AdoptOrphanPackage(TransactionTestCase):
+ fixtures = ['main/fixtures/arches.json', 'main/fixtures/repos.json',
+ 'main/fixtures/package.json']
+
+ def setUp(self):
+ password = 'test'
+ self.user = User.objects.create_superuser('admin',
+ 'admin@archlinux.org',
+ password)
+ self.profile = UserProfile.objects.create(user=self.user,
+ public_email="{}@awesome.com".format(self.user.username))
+ self.profile.allowed_repos.add(Repo.objects.get(name='Core'))
+ self.profile.save()
+ self.client.post('/login/', {
+ 'username': self.user.username,
+ 'password': password
+ })
+
+ def tearDown(self):
+ self.profile.delete()
+ self.user.delete()
+ PackageRelation.objects.all().delete()
+
+ def request(self, pkgid, adopt=True):
+ data = {
+ 'pkgid': pkgid,
+ }
+ if adopt:
+ data['adopt'] = 'adopt'
+ else:
+ data['disown'] = 'disown'
+ return self.client.post('/packages/update/', data, follow=True)
+
+ def test_adopt_package(self):
+ pkg = Package.objects.first()
+ response = self.request(pkg.id)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(len(PackageRelation.objects.all()), 1)
+
+ response = self.request(pkg.id, False)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(len(PackageRelation.objects.all()), 0)
+
+ def test_no_permissions(self):
+ self.profile.allowed_repos = []
+ self.profile.save()
+ pkg = Package.objects.first()
+
+ response = self.request(pkg.id)
+ self.assertEqual(response.status_code, 200)
+ self.assertEqual(len(PackageRelation.objects.all()), 0)
+
+ def test_wrong_request(self):
+ pkg = Package.objects.first()
+ response = self.client.post('/packages/update/', {'pkgid': pkg.id, }, follow=True)
+ self.assertEqual(response.status_code, 200)
+ self.assertIn('Are you trying to adopt or disown', response.content)
+
+
# vim: set ts=4 sw=4 et: