12981.5.1
by Julian Edwards
first test and code chunk |
1 |
# Copyright 2011 Canonical Ltd. This software is licensed under the
|
2 |
# GNU Affero General Public License version 3 (see the file LICENSE).
|
|
3 |
||
7675.1176.9
by Jeroen Vermeulen
Adapter: PackageCopyPolicy to ICopyPolicy. |
4 |
from canonical.launchpad.webapp.testing import verifyObject |
7675.1191.8
by Julian Edwards
fix the copy policy checker to take parameters other than the packageupload |
5 |
from canonical.testing.layers import ZopelessDatabaseLayer |
12981.5.2
by Julian Edwards
add autoApprove and tests |
6 |
from lp.registry.interfaces.pocket import PackagePublishingPocket |
7 |
from lp.registry.interfaces.series import SeriesStatus |
|
7675.1172.2
by Julian Edwards
Add tests for email policy |
8 |
from lp.soyuz.adapters.copypolicy import ( |
9 |
InsecureCopyPolicy, |
|
7675.1176.13
by Jeroen Vermeulen
Rename SyncPolicy to MassSyncPolicy (and concomitant changes) as per Julian's request. |
10 |
MassSyncCopyPolicy, |
7675.1172.2
by Julian Edwards
Add tests for email policy |
11 |
)
|
7675.1176.9
by Jeroen Vermeulen
Adapter: PackageCopyPolicy to ICopyPolicy. |
12 |
from lp.soyuz.enums import ( |
13 |
ArchivePurpose, |
|
14 |
PackageCopyPolicy, |
|
15 |
)
|
|
14550.1.1
by Steve Kowalik
Run format-imports over lib/lp and lib/canonical/launchpad |
16 |
from lp.soyuz.interfaces.copypolicy import ICopyPolicy |
7675.1176.9
by Jeroen Vermeulen
Adapter: PackageCopyPolicy to ICopyPolicy. |
17 |
from lp.testing import TestCaseWithFactory |
12981.5.1
by Julian Edwards
first test and code chunk |
18 |
|
19 |
||
20 |
class TestCopyPolicy(TestCaseWithFactory): |
|
21 |
||
7675.1191.8
by Julian Edwards
fix the copy policy checker to take parameters other than the packageupload |
22 |
layer = ZopelessDatabaseLayer |
12981.5.1
by Julian Edwards
first test and code chunk |
23 |
|
7675.1191.8
by Julian Edwards
fix the copy policy checker to take parameters other than the packageupload |
24 |
def _getUploadCriteria(self, archive_purpose): |
12981.5.3
by Julian Edwards
merciless test refactoring |
25 |
archive = self.factory.makeArchive(purpose=archive_purpose) |
7675.1191.8
by Julian Edwards
fix the copy policy checker to take parameters other than the packageupload |
26 |
distroseries = self.factory.makeDistroSeries() |
27 |
pocket = self.factory.getAnyPocket() |
|
28 |
return archive, distroseries, pocket |
|
12981.5.3
by Julian Edwards
merciless test refactoring |
29 |
|
30 |
def assertApproved(self, archive_purpose, method): |
|
7675.1191.8
by Julian Edwards
fix the copy policy checker to take parameters other than the packageupload |
31 |
archive, distroseries, pocket = self._getUploadCriteria( |
32 |
archive_purpose) |
|
33 |
approved = method(archive, distroseries, pocket) |
|
12981.5.3
by Julian Edwards
merciless test refactoring |
34 |
self.assertTrue(approved) |
35 |
||
36 |
def assertUnapproved(self, archive_purpose, method): |
|
7675.1176.9
by Jeroen Vermeulen
Adapter: PackageCopyPolicy to ICopyPolicy. |
37 |
archive, distroseries, pocket = self._getUploadCriteria( |
38 |
archive_purpose) |
|
7675.1191.8
by Julian Edwards
fix the copy policy checker to take parameters other than the packageupload |
39 |
approved = method(archive, distroseries, pocket) |
12981.5.3
by Julian Edwards
merciless test refactoring |
40 |
self.assertFalse(approved) |
41 |
||
12981.5.1
by Julian Edwards
first test and code chunk |
42 |
def test_insecure_holds_new_distro_package(self): |
43 |
cp = InsecureCopyPolicy() |
|
12981.5.3
by Julian Edwards
merciless test refactoring |
44 |
self.assertUnapproved(ArchivePurpose.PRIMARY, cp.autoApproveNew) |
12981.5.1
by Julian Edwards
first test and code chunk |
45 |
|
46 |
def test_insecure_approves_new_ppa_packages(self): |
|
47 |
cp = InsecureCopyPolicy() |
|
12981.5.3
by Julian Edwards
merciless test refactoring |
48 |
self.assertApproved(ArchivePurpose.PPA, cp.autoApproveNew) |
12981.5.2
by Julian Edwards
add autoApprove and tests |
49 |
|
7675.1176.9
by Jeroen Vermeulen
Adapter: PackageCopyPolicy to ICopyPolicy. |
50 |
def test_insecure_approves_known_distro_package_to_unfrozen_release(self): |
7675.1191.8
by Julian Edwards
fix the copy policy checker to take parameters other than the packageupload |
51 |
archive = self.factory.makeArchive(purpose=ArchivePurpose.PRIMARY) |
52 |
distroseries = self.factory.makeDistroSeries() |
|
53 |
pocket = PackagePublishingPocket.RELEASE |
|
54 |
cp = InsecureCopyPolicy() |
|
55 |
approve = cp.autoApprove(archive, distroseries, pocket) |
|
56 |
self.assertTrue(approve) |
|
57 |
||
58 |
def test_insecure_holds_copy_to_updates_pocket_in_frozen_series(self): |
|
59 |
archive = self.factory.makeArchive(purpose=ArchivePurpose.PRIMARY) |
|
60 |
distroseries = self.factory.makeDistroSeries() |
|
61 |
distroseries.status = SeriesStatus.FROZEN |
|
62 |
pocket = PackagePublishingPocket.UPDATES |
|
63 |
cp = InsecureCopyPolicy() |
|
64 |
approve = cp.autoApprove(archive, distroseries, pocket) |
|
65 |
self.assertFalse(approve) |
|
12981.5.2
by Julian Edwards
add autoApprove and tests |
66 |
|
67 |
def test_insecure_holds_copy_to_release_pocket_in_frozen_series(self): |
|
68 |
archive = self.factory.makeArchive(purpose=ArchivePurpose.PRIMARY) |
|
7675.1191.8
by Julian Edwards
fix the copy policy checker to take parameters other than the packageupload |
69 |
distroseries = self.factory.makeDistroSeries() |
70 |
pocket = PackagePublishingPocket.RELEASE |
|
71 |
distroseries.status = SeriesStatus.FROZEN |
|
12981.5.2
by Julian Edwards
add autoApprove and tests |
72 |
cp = InsecureCopyPolicy() |
7675.1191.8
by Julian Edwards
fix the copy policy checker to take parameters other than the packageupload |
73 |
approve = cp.autoApprove(archive, distroseries, pocket) |
12981.5.2
by Julian Edwards
add autoApprove and tests |
74 |
self.assertFalse(approve) |
75 |
||
76 |
def test_insecure_approves_existing_ppa_package(self): |
|
77 |
cp = InsecureCopyPolicy() |
|
12981.5.3
by Julian Edwards
merciless test refactoring |
78 |
self.assertApproved(ArchivePurpose.PPA, cp.autoApprove) |
7675.1172.2
by Julian Edwards
Add tests for email policy |
79 |
|
80 |
def test_insecure_sends_emails(self): |
|
81 |
cp = InsecureCopyPolicy() |
|
13168.3.1
by Julian Edwards
Copy policies now don't send emails for PPAs |
82 |
archive = self.factory.makeArchive(purpose=ArchivePurpose.PRIMARY) |
83 |
self.assertTrue(cp.send_email(archive)) |
|
84 |
||
85 |
def test_insecure_doesnt_send_emails_for_ppa(self): |
|
86 |
cp = InsecureCopyPolicy() |
|
87 |
archive = self.factory.makeArchive(purpose=ArchivePurpose.PPA) |
|
88 |
self.assertFalse(cp.send_email(archive)) |
|
7675.1172.2
by Julian Edwards
Add tests for email policy |
89 |
|
90 |
def test_sync_does_not_send_emails(self): |
|
7675.1176.13
by Jeroen Vermeulen
Rename SyncPolicy to MassSyncPolicy (and concomitant changes) as per Julian's request. |
91 |
cp = MassSyncCopyPolicy() |
13168.3.1
by Julian Edwards
Copy policies now don't send emails for PPAs |
92 |
archive = self.factory.makeArchive(purpose=ArchivePurpose.PRIMARY) |
93 |
self.assertFalse(cp.send_email(archive)) |
|
94 |
archive = self.factory.makeArchive(purpose=ArchivePurpose.PPA) |
|
95 |
self.assertFalse(cp.send_email(archive)) |
|
7675.1172.4
by Julian Edwards
Add policy names |
96 |
|
7675.1176.9
by Jeroen Vermeulen
Adapter: PackageCopyPolicy to ICopyPolicy. |
97 |
def test_policies_implement_ICopyPolicy(self): |
98 |
for policy in PackageCopyPolicy.items: |
|
99 |
self.assertTrue(verifyObject(ICopyPolicy, ICopyPolicy(policy))) |