Merge "cover all service creation logic in provider"
This commit is contained in:
commit
78e5cbe917
|
@ -64,6 +64,6 @@ class ContextHook(hooks.PecanHook):
|
|||
"tenant", None)
|
||||
state.controller.__self__.base_url = getattr(_local_store.context,
|
||||
"base_url", None)
|
||||
'''Attach auth_token as a member variable project_id to controller.'''
|
||||
'''Attach auth_token as a member variable auth_token to controller.'''
|
||||
state.controller.__self__.auth_token = getattr(_local_store.context,
|
||||
"auth_token", None)
|
||||
|
|
|
@ -161,7 +161,7 @@ class _AssertRaisesContext(object):
|
|||
except NameError:
|
||||
# Python 3 compatibility
|
||||
basestring = unicode = str
|
||||
unicode # For pep8: unicde is defined but not used.
|
||||
unicode # For pep8: unicode is defined but not used.
|
||||
if isinstance(expected_regexp, basestring):
|
||||
expected_regexp = re.compile(expected_regexp)
|
||||
if not expected_regexp.search(str(exc_value)):
|
||||
|
|
|
@ -14,6 +14,21 @@
|
|||
],
|
||||
"flavor_id" : "standard"
|
||||
},
|
||||
"single_one_origin_https_san": {
|
||||
"name" : "mysite.com",
|
||||
"domains": [
|
||||
{"domain": "parsely.sage.com"},
|
||||
{"domain": "densely.sage.com",
|
||||
"protocol": "https",
|
||||
"certificate": "san"},
|
||||
{"domain": "rosemary.thyme.net",
|
||||
"protocol": "http"}
|
||||
],
|
||||
"origins": [
|
||||
{"origin": "mockdomain.com", "ssl": false, "port": 80}
|
||||
],
|
||||
"flavor_id" : "standard"
|
||||
},
|
||||
"multiple_origins": {
|
||||
"name" : "mysite.com",
|
||||
"domains": [
|
||||
|
@ -94,7 +109,7 @@
|
|||
},
|
||||
{ "name": "gif-rules",
|
||||
"request_url": "/*.gif"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{"name": "zero-cache", "ttl": 0 },
|
||||
|
|
|
@ -37,19 +37,17 @@ from tests.unit import base
|
|||
@ddt.ddt
|
||||
class TestServices(base.TestCase):
|
||||
|
||||
@mock.patch(
|
||||
'poppy.provider.akamai.services.ServiceController.policy_api_client')
|
||||
@mock.patch(
|
||||
'poppy.provider.akamai.services.ServiceController.ccu_api_client')
|
||||
@mock.patch('poppy.provider.akamai.driver.CDNProvider')
|
||||
def setUp(
|
||||
self,
|
||||
mock_driver,
|
||||
mock_controller_ccu_api_client,
|
||||
mock_controller_policy_api_client
|
||||
):
|
||||
def setUp(self):
|
||||
super(TestServices, self).setUp()
|
||||
|
||||
driver_patcher = mock.patch('poppy.provider.akamai.driver.CDNProvider')
|
||||
mock_driver = driver_patcher.start()
|
||||
self.addCleanup(driver_patcher.stop)
|
||||
|
||||
self.driver = mock_driver()
|
||||
self.policy_client = self.driver.policy_api_client
|
||||
self.ccu_client = self.driver.ccu_api_client
|
||||
|
||||
self.driver.provider_name = 'Akamai'
|
||||
self.driver.akamai_https_access_url_suffix = str(uuid.uuid1())
|
||||
self.san_cert_cnames = [str(x) for x in range(7)]
|
||||
|
@ -66,6 +64,16 @@ class TestServices(base.TestCase):
|
|||
origins=[current_origin],
|
||||
flavor_id='cdn')
|
||||
|
||||
def test_controller_properties(self):
|
||||
self.assertEqual(
|
||||
self.policy_client,
|
||||
self.controller.policy_api_client
|
||||
)
|
||||
self.assertEqual(
|
||||
self.ccu_client,
|
||||
self.controller.ccu_api_client
|
||||
)
|
||||
|
||||
@ddt.file_data('domains_list.json')
|
||||
def test_classify_domains(self, domains_list):
|
||||
domains_list = [domain.Domain(domain_s) for domain_s in domains_list]
|
||||
|
@ -142,6 +150,27 @@ class TestServices(base.TestCase):
|
|||
status_code=200,
|
||||
text='Put successful'
|
||||
)
|
||||
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())
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
provider_responses = self.controller.create(service_obj)
|
||||
for provider_name in provider_responses:
|
||||
provider_response = provider_responses[provider_name]
|
||||
|
@ -151,6 +180,52 @@ class TestServices(base.TestCase):
|
|||
self.assertEqual(num_of_domains, num_of_links)
|
||||
self.assertIn('id', provider_responses[provider_name])
|
||||
|
||||
@ddt.file_data('data_service.json')
|
||||
def test_create_with_multiple_domains_no_san_edge_name(self, service_json):
|
||||
service_obj = service.load_from_json(service_json)
|
||||
self.controller.subcustomer_api_client.get.return_value = \
|
||||
mock.Mock(status_code=200,
|
||||
ok=True,
|
||||
content=json.dumps({"geo": "US"}))
|
||||
self.controller.policy_api_client.put.return_value = mock.Mock(
|
||||
status_code=200,
|
||||
text='Put successful'
|
||||
)
|
||||
num_domains_not_deployed = 0
|
||||
for curr_domain in service_obj.domains:
|
||||
if (
|
||||
curr_domain.certificate == 'san' and
|
||||
curr_domain.protocol == 'https'
|
||||
):
|
||||
num_domains_not_deployed += 1
|
||||
curr_domain.cert_info = ssl_certificate.SSLCertificate(
|
||||
'flavor_id',
|
||||
curr_domain.domain,
|
||||
curr_domain.certificate,
|
||||
service_obj.project_id,
|
||||
cert_details={
|
||||
'Akamai': dict(
|
||||
extra_info={
|
||||
'status': 'create_in_progress',
|
||||
'created_at': str(datetime.datetime.now())
|
||||
}
|
||||
)
|
||||
}
|
||||
)
|
||||
provider_responses = self.controller.create(service_obj)
|
||||
for provider_name in provider_responses:
|
||||
provider_response = provider_responses[provider_name]
|
||||
num_of_domains = len(service_obj.domains)
|
||||
num_of_links = len(provider_response['links'])
|
||||
# make sure we have same number of domains and links
|
||||
# usually cannot get a link for http+san cert that
|
||||
# hasn't deployed.
|
||||
self.assertEqual(
|
||||
num_of_domains - num_domains_not_deployed,
|
||||
num_of_links
|
||||
)
|
||||
self.assertIn('id', provider_responses[provider_name])
|
||||
|
||||
@ddt.file_data('data_service.json')
|
||||
def test_create(self, service_json):
|
||||
controller = services.ServiceController(self.driver)
|
||||
|
|
Loading…
Reference in New Issue