diff options
author | jelle van der Waa <jelle@vdwaa.nl> | 2018-11-23 20:50:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-23 20:50:28 +0100 |
commit | c51bfe07f4350e24a7014382d9c7a3d21f60ff9a (patch) | |
tree | 323b90b3803914ce8a32f136b4aa72bffd49763f | |
parent | 2832455cb330ac08f9436cb44225ce44054b78cf (diff) | |
parent | cdce8a4f88dda6352f432b593efd9290acd5ade6 (diff) | |
download | archweb-release_2018-11-23.tar.gz archweb-release_2018-11-23.zip |
Merge pull request #161 from jelly/adopt_testsrelease_2018-11-23
Adopt tests
-rw-r--r-- | devel/tests/test_devel.py | 11 | ||||
-rw-r--r-- | packages/tests.py | 66 |
2 files changed, 75 insertions, 2 deletions
diff --git a/devel/tests/test_devel.py b/devel/tests/test_devel.py index c6a67cb5..c8a28c1a 100644 --- a/devel/tests/test_devel.py +++ b/devel/tests/test_devel.py @@ -1,5 +1,6 @@ from django.test import TransactionTestCase -from django.contrib.auth.models import User +from django.contrib.auth.models import User, Group +from devel.models import UserProfile class DevelView(TransactionTestCase): @@ -11,13 +12,21 @@ class DevelView(TransactionTestCase): self.user = User.objects.create_superuser('admin', 'admin@archlinux.org', password) + for name in ['Developers', 'Retired Developers']: + Group.objects.create(name=name) + self.user.groups.add(Group.objects.get(name='Developers')) + self.user.save() + self.profile = UserProfile.objects.create(user=self.user, + public_email="{}@awesome.com".format(self.user.username)) self.client.post('/login/', { 'username': self.user.username, 'password': password }) def tearDown(self): + self.profile.delete() self.user.delete() + Group.objects.all().delete() def test_clock(self): response = self.client.get('/devel/clock/') 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: |