fix: Eluded message when blacklist and whitelist on geography

Change-Id: I1d81f6ed1ef24a129b7ae0549883768fecdd9351
This commit is contained in:
tonytan4ever 2016-01-02 22:46:51 -05:00
parent 0db8c637c3
commit aa997928a8
3 changed files with 71 additions and 2 deletions

View File

@ -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:

View File

@ -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)

View File

@ -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',