fix: Eluded message when blacklist and whitelist on geography
Change-Id: I1d81f6ed1ef24a129b7ae0549883768fecdd9351
This commit is contained in:
parent
0db8c637c3
commit
aa997928a8
|
@ -19,6 +19,8 @@ import random
|
|||
from poppy.model.helpers import domain
|
||||
from poppy.model.helpers import origin
|
||||
from poppy.model.helpers import provider_details
|
||||
from poppy.model.helpers import restriction
|
||||
from poppy.model.helpers import rule
|
||||
from poppy.model import service
|
||||
from poppy.model import ssl_certificate
|
||||
from poppy.storage import base
|
||||
|
@ -227,8 +229,20 @@ class ServicesController(base.ServicesController):
|
|||
for o in origins]
|
||||
domains = [domain.Domain(d['domain'], d['protocol'], d['certificate'])
|
||||
for d in domains]
|
||||
restrictions = [restriction.Restriction(
|
||||
r.get('name'),
|
||||
r.get('access', 'whitelist'),
|
||||
[rule.Rule(r_rule.get('name'),
|
||||
referrer=r_rule.get('referrer'),
|
||||
client_ip=r_rule.get('client_ip'),
|
||||
geography=r_rule.get('geography'),
|
||||
request_url=r_rule.get('request_url', "/*") or "/*")
|
||||
for r_rule in r['rules']])
|
||||
for r in result.get('restrictions', [])]
|
||||
|
||||
flavor_id = result.get('flavor_id')
|
||||
s = service.Service(service_id, name, domains, origins, flavor_id)
|
||||
s = service.Service(service_id, name, domains, origins, flavor_id,
|
||||
restrictions=restrictions)
|
||||
provider_detail_results = result.get('provider_details') or {}
|
||||
provider_details_dict = {}
|
||||
for provider_name in provider_detail_results:
|
||||
|
|
|
@ -395,7 +395,7 @@ def is_valid_service_configuration(service, schema):
|
|||
request_url]:
|
||||
raise exceptions.ValidationFailed(
|
||||
'Cannot blacklist and whitelist [%s] on %s'
|
||||
' at the same time' % key, request_url)
|
||||
' at the same time' % (key, request_url))
|
||||
if request_url not in whitelist_restriction_entities:
|
||||
whitelist_restriction_entities[request_url] = []
|
||||
whitelist_restriction_entities[request_url].append(entity)
|
||||
|
|
|
@ -347,6 +347,61 @@ class ServiceControllerTest(base.FunctionalTest):
|
|||
self.assertEqual(400, response.status_code)
|
||||
self.assertTrue('has already been taken' in response)
|
||||
|
||||
def test_patch_blacklist_on_whitelist(self):
|
||||
service_json = {
|
||||
"name": "mocksite.com",
|
||||
"domains": [
|
||||
{"domain": "blog.mocksite.com"}
|
||||
],
|
||||
"flavor_id": self.flavor_id,
|
||||
"origins": [
|
||||
{
|
||||
"origin": "mocksite.com",
|
||||
"port": 443,
|
||||
"ssl": True
|
||||
}
|
||||
],
|
||||
"restrictions": [
|
||||
{
|
||||
"name": "website only",
|
||||
"access": "whitelist",
|
||||
"rules": [
|
||||
{
|
||||
"name": "mocksite.com",
|
||||
"geography": "USA"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
response = self.app.post('/v1.0/services',
|
||||
params=json.dumps(service_json),
|
||||
headers={
|
||||
'Content-Type': 'application/json',
|
||||
'X-Project-ID': self.project_id
|
||||
})
|
||||
self.assertEqual(202, response.status_code)
|
||||
|
||||
response = self.app.patch(response.location,
|
||||
params=json.dumps([{
|
||||
"op": "add",
|
||||
"path": "/restrictions/-",
|
||||
"value": {
|
||||
"name": "Restriction 6",
|
||||
"access": "blacklist",
|
||||
"rules": [{
|
||||
"name": "rule2",
|
||||
"geography": "North America"
|
||||
}]
|
||||
}
|
||||
}]),
|
||||
headers={'Content-Type': 'application/json',
|
||||
'X-Project-ID': self.project_id
|
||||
}, expect_errors=True)
|
||||
self.assertEqual(400, response.status_code)
|
||||
self.assertTrue('Cannot blacklist and whitelist' in response)
|
||||
|
||||
def test_create_with_invalid_json(self):
|
||||
# create with errorenous data: invalid json data
|
||||
response = self.app.post('/v1.0/services',
|
||||
|
|
Loading…
Reference in New Issue