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 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
#!/usr/bin/env python
import json
from tests.unit import AWSMockServiceTestCase
from boto.beanstalk.layer1 import Layer1
# These tests are just checking the basic structure of
# the Elastic Beanstalk code, by picking a few calls
# and verifying we get the expected results with mocked
# responses. The integration tests actually verify the
# API calls interact with the service correctly.
class TestListAvailableSolutionStacks(AWSMockServiceTestCase):
connection_class = Layer1
def default_body(self):
return json.dumps(
{u'ListAvailableSolutionStacksResponse':
{u'ListAvailableSolutionStacksResult':
{u'SolutionStackDetails': [
{u'PermittedFileTypes': [u'war', u'zip'],
u'SolutionStackName': u'32bit Amazon Linux running Tomcat 7'},
{u'PermittedFileTypes': [u'zip'],
u'SolutionStackName': u'32bit Amazon Linux running PHP 5.3'}],
u'SolutionStacks': [u'32bit Amazon Linux running Tomcat 7',
u'32bit Amazon Linux running PHP 5.3']},
u'ResponseMetadata': {u'RequestId': u'request_id'}}}).encode('utf-8')
def test_list_available_solution_stacks(self):
self.set_http_response(status_code=200)
api_response = self.service_connection.list_available_solution_stacks()
stack_details = api_response['ListAvailableSolutionStacksResponse']\
['ListAvailableSolutionStacksResult']\
['SolutionStackDetails']
solution_stacks = api_response['ListAvailableSolutionStacksResponse']\
['ListAvailableSolutionStacksResult']\
['SolutionStacks']
self.assertEqual(solution_stacks,
[u'32bit Amazon Linux running Tomcat 7',
u'32bit Amazon Linux running PHP 5.3'])
# These are the parameters that are actually sent to the CloudFormation
# service.
self.assert_request_parameters({
'Action': 'ListAvailableSolutionStacks',
'ContentType': 'JSON',
'Version': '2010-12-01',
})
class TestCreateApplicationVersion(AWSMockServiceTestCase):
connection_class = Layer1
def default_body(self):
return json.dumps({
'CreateApplicationVersionResponse':
{u'CreateApplicationVersionResult':
{u'ApplicationVersion':
{u'ApplicationName': u'application1',
u'DateCreated': 1343067094.342,
u'DateUpdated': 1343067094.342,
u'Description': None,
u'SourceBundle': {u'S3Bucket': u'elasticbeanstalk-us-east-1',
u'S3Key': u'resources/elasticbeanstalk-sampleapp.war'},
u'VersionLabel': u'version1'}}}}).encode('utf-8')
def test_create_application_version(self):
self.set_http_response(status_code=200)
api_response = self.service_connection.create_application_version(
'application1', 'version1', s3_bucket='mybucket', s3_key='mykey',
auto_create_application=True)
app_version = api_response['CreateApplicationVersionResponse']\
['CreateApplicationVersionResult']\
['ApplicationVersion']
self.assert_request_parameters({
'Action': 'CreateApplicationVersion',
'ContentType': 'JSON',
'Version': '2010-12-01',
'ApplicationName': 'application1',
'AutoCreateApplication': 'true',
'SourceBundle.S3Bucket': 'mybucket',
'SourceBundle.S3Key': 'mykey',
'VersionLabel': 'version1',
})
self.assertEqual(app_version['ApplicationName'], 'application1')
self.assertEqual(app_version['VersionLabel'], 'version1')
class TestCreateEnvironment(AWSMockServiceTestCase):
connection_class = Layer1
def default_body(self):
return json.dumps({}).encode('utf-8')
def test_create_environment(self):
self.set_http_response(status_code=200)
api_response = self.service_connection.create_environment(
'application1', 'environment1', 'version1',
'32bit Amazon Linux running Tomcat 7',
option_settings=[
('aws:autoscaling:launchconfiguration', 'Ec2KeyName',
'mykeypair'),
('aws:elasticbeanstalk:application:environment', 'ENVVAR',
'VALUE1')])
self.assert_request_parameters({
'Action': 'CreateEnvironment',
'ApplicationName': 'application1',
'EnvironmentName': 'environment1',
'TemplateName': '32bit Amazon Linux running Tomcat 7',
'ContentType': 'JSON',
'Version': '2010-12-01',
'VersionLabel': 'version1',
'OptionSettings.member.1.Namespace': 'aws:autoscaling:launchconfiguration',
'OptionSettings.member.1.OptionName': 'Ec2KeyName',
'OptionSettings.member.1.Value': 'mykeypair',
'OptionSettings.member.2.Namespace': 'aws:elasticbeanstalk:application:environment',
'OptionSettings.member.2.OptionName': 'ENVVAR',
'OptionSettings.member.2.Value': 'VALUE1',
})
def test_create_environment_with_tier(self):
self.set_http_response(status_code=200)
api_response = self.service_connection.create_environment(
'application1', 'environment1', 'version1',
'32bit Amazon Linux running Tomcat 7',
option_settings=[
('aws:autoscaling:launchconfiguration', 'Ec2KeyName',
'mykeypair'),
('aws:elasticbeanstalk:application:environment', 'ENVVAR',
'VALUE1')],
tier_name='Worker', tier_type='SQS/HTTP', tier_version='1.0')
self.assert_request_parameters({
'Action': 'CreateEnvironment',
'ApplicationName': 'application1',
'EnvironmentName': 'environment1',
'TemplateName': '32bit Amazon Linux running Tomcat 7',
'ContentType': 'JSON',
'Version': '2010-12-01',
'VersionLabel': 'version1',
'OptionSettings.member.1.Namespace': 'aws:autoscaling:launchconfiguration',
'OptionSettings.member.1.OptionName': 'Ec2KeyName',
'OptionSettings.member.1.Value': 'mykeypair',
'OptionSettings.member.2.Namespace': 'aws:elasticbeanstalk:application:environment',
'OptionSettings.member.2.OptionName': 'ENVVAR',
'OptionSettings.member.2.Value': 'VALUE1',
'Tier.Name': 'Worker',
'Tier.Type': 'SQS/HTTP',
'Tier.Version': '1.0',
})
|