1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
#!/usr/bin/python
#
# Copyright 2010 Canonical Ltd. This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).
from lp.app.errors import NotFoundError
from lp.archiveuploader.uploadpolicy import (
AbstractUploadPolicy,
ArchiveUploadType,
)
from lp.testing import (
TestCase,
TestCaseWithFactory,
)
from lp.testing.layers import DatabaseFunctionalLayer
class TestUploadPolicy_validateUploadType(TestCase):
"""Test what kind (sourceful/binaryful/mixed) of uploads are accepted."""
def test_sourceful_accepted(self):
policy = make_policy(accepted_type=ArchiveUploadType.SOURCE_ONLY)
upload = make_fake_upload(sourceful=True)
policy.validateUploadType(upload)
self.assertEquals([], upload.rejections)
def test_binaryful_accepted(self):
policy = make_policy(accepted_type=ArchiveUploadType.BINARY_ONLY)
upload = make_fake_upload(binaryful=True)
policy.validateUploadType(upload)
self.assertEquals([], upload.rejections)
def test_mixed_accepted(self):
policy = make_policy(accepted_type=ArchiveUploadType.MIXED_ONLY)
upload = make_fake_upload(sourceful=True, binaryful=True)
policy.validateUploadType(upload)
self.assertEquals([], upload.rejections)
def test_sourceful_not_accepted(self):
policy = make_policy(accepted_type=ArchiveUploadType.BINARY_ONLY)
upload = make_fake_upload(sourceful=True)
policy.validateUploadType(upload)
self.assertIn(
'Sourceful uploads are not accepted by this policy.',
upload.rejections)
def test_binaryful_not_accepted(self):
policy = make_policy(accepted_type=ArchiveUploadType.SOURCE_ONLY)
upload = make_fake_upload(binaryful=True)
policy.validateUploadType(upload)
self.assertTrue(len(upload.rejections) > 0)
self.assertIn(
'Upload rejected because it contains binary packages.',
upload.rejections[0])
def test_mixed_not_accepted(self):
policy = make_policy(accepted_type=ArchiveUploadType.SOURCE_ONLY)
upload = make_fake_upload(sourceful=True, binaryful=True)
policy.validateUploadType(upload)
self.assertIn(
'Source/binary (i.e. mixed) uploads are not allowed.',
upload.rejections)
def test_sourceful_when_only_mixed_accepted(self):
policy = make_policy(accepted_type=ArchiveUploadType.MIXED_ONLY)
upload = make_fake_upload(sourceful=True, binaryful=False)
policy.validateUploadType(upload)
self.assertIn(
'Sourceful uploads are not accepted by this policy.',
upload.rejections)
def test_binaryful_when_only_mixed_accepted(self):
policy = make_policy(accepted_type=ArchiveUploadType.MIXED_ONLY)
upload = make_fake_upload(sourceful=False, binaryful=True)
policy.validateUploadType(upload)
self.assertTrue(len(upload.rejections) > 0)
self.assertIn(
'Upload rejected because it contains binary packages.',
upload.rejections[0])
class TestUploadPolicy(TestCaseWithFactory):
layer = DatabaseFunctionalLayer
def test_setDistroSeriesAndPocket_distro_not_found(self):
policy = AbstractUploadPolicy()
policy.distro = self.factory.makeDistribution()
self.assertRaises(
NotFoundError, policy.setDistroSeriesAndPocket,
'nonexistent_security')
class FakeNascentUpload:
def __init__(self, sourceful, binaryful):
self.sourceful = sourceful
self.binaryful = binaryful
self.is_ppa = False
self.rejections = []
def reject(self, msg):
self.rejections.append(msg)
def make_fake_upload(sourceful=False, binaryful=False):
return FakeNascentUpload(sourceful, binaryful)
def make_policy(accepted_type):
policy = AbstractUploadPolicy()
policy.accepted_type = accepted_type
return policy
|