Merge "Unit tests for akamai services controller"
This commit is contained in:
commit
54709c676f
|
@ -17,7 +17,9 @@
|
|||
"name" : "mysite.com",
|
||||
"domains": [
|
||||
{"domain": "parsely.sage.com"},
|
||||
{"domain": "densely.sage.com"},
|
||||
{"domain": "densely.sage.com",
|
||||
"protocol": "https",
|
||||
"certificate": "san"},
|
||||
{"domain": "rosemary.thyme.net"}
|
||||
],
|
||||
"origins": [
|
||||
|
@ -25,7 +27,14 @@
|
|||
{"origin": "mockdomain-image.com",
|
||||
"rules": [{"name": "img", "request_url": "/img"}] }
|
||||
],
|
||||
"flavor_id" : "standard"
|
||||
"flavor_id" : "standard",
|
||||
"provider_details": {
|
||||
"Akamai": {
|
||||
"access_urls": [{"provider_url": "akamai.provider.com", "domain": "densely.sage.com"}],
|
||||
"id": [{"protocol": "https", "certificate": "san", "policy_name": "densely.sage.com"}],
|
||||
"domains_certificate_status": {"densely.sage.com": "create_in_progress"}
|
||||
}
|
||||
}
|
||||
},
|
||||
"single_one_origin_without_domains": {
|
||||
"name" : "mysite.com",
|
||||
|
|
|
@ -27,6 +27,7 @@ from poppy.model.helpers import origin
|
|||
from poppy.model.helpers import restriction
|
||||
from poppy.model.helpers import rule
|
||||
from poppy.model.service import Service
|
||||
from poppy.model import ssl_certificate
|
||||
from poppy.provider.akamai import geo_zone_code_mapping
|
||||
from poppy.provider.akamai import services
|
||||
from poppy.transport.pecan.models.request import service
|
||||
|
@ -387,6 +388,181 @@ class TestServices(base.TestCase):
|
|||
provider_service_id, service_obj)
|
||||
self.assertIn('id', resp[self.driver.provider_name])
|
||||
|
||||
@ddt.file_data('data_update_service.json')
|
||||
def test_update_create_new_sub_customer_new_policy(self, service_json):
|
||||
provider_service_id = json.dumps([{'policy_name': str(uuid.uuid1()),
|
||||
'protocol': 'http',
|
||||
'certificate': None}])
|
||||
controller = services.ServiceController(self.driver)
|
||||
controller.subcustomer_api_client.get.side_effect = [
|
||||
mock.Mock(status_code=400,
|
||||
ok=False,
|
||||
text='Error retrieving sub customer!'),
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"})),
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"})),
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"}))
|
||||
]
|
||||
|
||||
controller.subcustomer_api_client.delete.return_value = \
|
||||
mock.Mock(status_code=200,
|
||||
ok=True)
|
||||
|
||||
controller.policy_api_client.get.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text=json.dumps(dict(rules=[]))
|
||||
)
|
||||
controller.policy_api_client.put.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text='Put successful'
|
||||
)
|
||||
controller.policy_api_client.delete.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text='Delete successful'
|
||||
)
|
||||
service_obj = service.load_from_json(service_json)
|
||||
resp = controller.update(
|
||||
provider_service_id, service_obj)
|
||||
self.assertIn('id', resp[self.driver.provider_name])
|
||||
|
||||
@ddt.file_data('data_update_service.json')
|
||||
def test_update_create_new_sub_customer_policy_exists(self, service_json):
|
||||
provider_service_id = []
|
||||
for domain_obj in service_json.get('domains', []):
|
||||
provider_service_id.append(
|
||||
{
|
||||
'policy_name': domain_obj['domain'],
|
||||
'protocol': domain_obj.get('protocol', 'http'),
|
||||
'certificate': domain_obj.get('certificate', None)
|
||||
}
|
||||
)
|
||||
if len(provider_service_id) == 0:
|
||||
provider_service_id = [{'policy_name': str(uuid.uuid1()),
|
||||
'protocol': 'http',
|
||||
'certificate': None}]
|
||||
provider_service_id = json.dumps(provider_service_id)
|
||||
|
||||
controller = services.ServiceController(self.driver)
|
||||
controller.subcustomer_api_client.get.side_effect = [
|
||||
mock.Mock(status_code=400,
|
||||
ok=False,
|
||||
text='Error retrieving sub customer!'),
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"})),
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"})),
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"}))
|
||||
]
|
||||
|
||||
controller.subcustomer_api_client.delete.return_value = \
|
||||
mock.Mock(status_code=200,
|
||||
ok=True)
|
||||
|
||||
controller.policy_api_client.get.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text=json.dumps(dict(rules=[]))
|
||||
)
|
||||
controller.policy_api_client.put.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text='Put successful'
|
||||
)
|
||||
controller.policy_api_client.delete.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text='Delete successful'
|
||||
)
|
||||
|
||||
service_obj = service.load_from_json(service_json)
|
||||
resp = controller.update(
|
||||
provider_service_id, service_obj)
|
||||
self.assertIn('id', resp[self.driver.provider_name])
|
||||
|
||||
@ddt.file_data('data_update_service.json')
|
||||
def test_update_https_san_domains_with_cert_info(self, service_json):
|
||||
provider_service_id = []
|
||||
for domain_obj in service_json.get('domains', []):
|
||||
provider_service_id.append(
|
||||
{
|
||||
'policy_name': domain_obj['domain'],
|
||||
'protocol': domain_obj.get('protocol', 'http'),
|
||||
'certificate': domain_obj.get('certificate', None)
|
||||
}
|
||||
)
|
||||
if len(provider_service_id) == 0:
|
||||
provider_service_id = [{'policy_name': str(uuid.uuid1()),
|
||||
'protocol': 'http',
|
||||
'certificate': None}]
|
||||
provider_service_id = json.dumps(provider_service_id)
|
||||
|
||||
controller = services.ServiceController(self.driver)
|
||||
controller.subcustomer_api_client.get.side_effect = [
|
||||
mock.Mock(status_code=400,
|
||||
ok=False,
|
||||
text='Error retrieving sub customer!'),
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"})),
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"})),
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"}))
|
||||
]
|
||||
|
||||
controller.subcustomer_api_client.delete.return_value = \
|
||||
mock.Mock(status_code=200,
|
||||
ok=True)
|
||||
|
||||
controller.policy_api_client.get.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text=json.dumps(dict(rules=[]))
|
||||
)
|
||||
controller.policy_api_client.put.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text='Put successful'
|
||||
)
|
||||
controller.policy_api_client.delete.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text='Delete successful'
|
||||
)
|
||||
|
||||
service_obj = service.load_from_json(service_json)
|
||||
san_domains = []
|
||||
for curr_domain in service_obj.domains:
|
||||
if (
|
||||
curr_domain.certificate == 'san' and
|
||||
curr_domain.protocol == 'https'
|
||||
):
|
||||
curr_domain.cert_info = ssl_certificate.SSLCertificate(
|
||||
'flavor_id',
|
||||
curr_domain.domain,
|
||||
curr_domain.certificate,
|
||||
service_obj.project_id,
|
||||
cert_details={
|
||||
'Akamai': dict(
|
||||
cert_domain='1',
|
||||
extra_info={
|
||||
'status': 'deployed',
|
||||
'san cert': '1',
|
||||
'created_at': str(datetime.datetime.now())
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
san_domains.append(curr_domain)
|
||||
|
||||
resp = controller.update(provider_service_id, service_obj)
|
||||
self.assertIn('id', resp[self.driver.provider_name])
|
||||
|
||||
@ddt.file_data('data_update_service.json')
|
||||
def test_update_with_domain_protocol_change(self, service_json):
|
||||
provider_service_id = json.dumps([{'policy_name': "densely.sage.com",
|
||||
|
|
Loading…
Reference in New Issue