diff options
author | Jelle van der Waa <jelle@vdwaa.nl> | 2018-11-23 20:36:13 +0100 |
---|---|---|
committer | Jelle van der Waa <jelle@vdwaa.nl> | 2018-11-23 20:36:13 +0100 |
commit | ccc581719b58d5b0123a9b5d729e294c568d8564 (patch) | |
tree | d2193e766c6a90b1938fe64755a057538887d794 | |
parent | 2832455cb330ac08f9436cb44225ce44054b78cf (diff) | |
download | archweb-ccc581719b58d5b0123a9b5d729e294c568d8564.tar.gz archweb-ccc581719b58d5b0123a9b5d729e294c568d8564.zip |
packages: test adopt/disown functionality
-rw-r--r-- | packages/tests.py | 66 |
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: |