Rewrite deprecated ELB tests (#4342)
This commit is contained in:
		
							parent
							
								
									c846e92e7e
								
							
						
					
					
						commit
						8ab76cb1d5
					
				| @ -75,7 +75,7 @@ class FakeLoadBalancer(CloudFormationModel): | ||||
|         name, | ||||
|         zones, | ||||
|         ports, | ||||
|         scheme="internet-facing", | ||||
|         scheme=None, | ||||
|         vpc_id=None, | ||||
|         subnets=None, | ||||
|         security_groups=None, | ||||
| @ -88,7 +88,7 @@ class FakeLoadBalancer(CloudFormationModel): | ||||
|         self.listeners = [] | ||||
|         self.backends = [] | ||||
|         self.created_time = datetime.datetime.now(pytz.utc) | ||||
|         self.scheme = scheme | ||||
|         self.scheme = scheme or "internet-facing" | ||||
|         self.attributes = FakeLoadBalancer.get_default_attributes() | ||||
|         self.policies = Policies() | ||||
|         self.policies.other_policies = [] | ||||
| @ -398,7 +398,7 @@ class ELBBackend(BaseBackend): | ||||
|         load_balancer.health_check = check | ||||
|         return check | ||||
| 
 | ||||
|     def set_load_balancer_listener_sslcertificate( | ||||
|     def set_load_balancer_listener_ssl_certificate( | ||||
|         self, name, lb_port, ssl_certificate_id | ||||
|     ): | ||||
|         balancer = self.load_balancers.get(name, None) | ||||
|  | ||||
| @ -121,7 +121,7 @@ class ELBResponse(BaseResponse): | ||||
|         ssl_certificate_id = self.querystring["SSLCertificateId"][0] | ||||
|         lb_port = self.querystring["LoadBalancerPort"][0] | ||||
| 
 | ||||
|         self.elb_backend.set_load_balancer_listener_sslcertificate( | ||||
|         self.elb_backend.set_load_balancer_listener_ssl_certificate( | ||||
|             load_balancer_name, lb_port, ssl_certificate_id | ||||
|         ) | ||||
| 
 | ||||
| @ -216,7 +216,7 @@ class ELBResponse(BaseResponse): | ||||
| 
 | ||||
|         self.elb_backend.create_app_cookie_stickiness_policy(load_balancer_name, policy) | ||||
| 
 | ||||
|         template = self.response_template(CREATE_LOAD_BALANCER_POLICY_TEMPLATE) | ||||
|         template = self.response_template(CREATE_APP_COOKIE_STICKINESS_POLICY_TEMPLATE) | ||||
|         return template.render() | ||||
| 
 | ||||
|     def create_lb_cookie_stickiness_policy(self): | ||||
| @ -232,7 +232,7 @@ class ELBResponse(BaseResponse): | ||||
| 
 | ||||
|         self.elb_backend.create_lb_cookie_stickiness_policy(load_balancer_name, policy) | ||||
| 
 | ||||
|         template = self.response_template(CREATE_LOAD_BALANCER_POLICY_TEMPLATE) | ||||
|         template = self.response_template(CREATE_LB_COOKIE_STICKINESS_POLICY_TEMPLATE) | ||||
|         return template.render() | ||||
| 
 | ||||
|     def set_load_balancer_policies_of_listener(self): | ||||
| @ -701,6 +701,22 @@ CREATE_LOAD_BALANCER_POLICY_TEMPLATE = """<CreateLoadBalancerPolicyResponse xmln | ||||
| </CreateLoadBalancerPolicyResponse> | ||||
| """ | ||||
| 
 | ||||
| CREATE_LB_COOKIE_STICKINESS_POLICY_TEMPLATE = """<CreateLBCookieStickinessPolicyResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/"> | ||||
|   <CreateLBCookieStickinessPolicyResult/> | ||||
|   <ResponseMetadata> | ||||
|       <RequestId>83c88b9d-12b7-11e3-8b82-87b12EXAMPLE</RequestId> | ||||
|   </ResponseMetadata> | ||||
| </CreateLBCookieStickinessPolicyResponse> | ||||
| """ | ||||
| 
 | ||||
| CREATE_APP_COOKIE_STICKINESS_POLICY_TEMPLATE = """<CreateAppCookieStickinessPolicyResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/"> | ||||
|   <CreateAppCookieStickinessPolicyResult/> | ||||
|   <ResponseMetadata> | ||||
|       <RequestId>83c88b9d-12b7-11e3-8b82-87b12EXAMPLE</RequestId> | ||||
|   </ResponseMetadata> | ||||
| </CreateAppCookieStickinessPolicyResponse> | ||||
| """ | ||||
| 
 | ||||
| SET_LOAD_BALANCER_POLICIES_OF_LISTENER_TEMPLATE = """<SetLoadBalancerPoliciesOfListenerResponse xmlns="http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/"> | ||||
|     <SetLoadBalancerPoliciesOfListenerResult/> | ||||
|     <ResponseMetadata> | ||||
|  | ||||
| @ -17,8 +17,10 @@ import sure  # noqa | ||||
| from moto import mock_elb, mock_ec2, mock_elb_deprecated, mock_ec2_deprecated | ||||
| from moto.core import ACCOUNT_ID | ||||
| from tests import EXAMPLE_AMI_ID | ||||
| from uuid import uuid4 | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| @mock_ec2_deprecated | ||||
| def test_create_load_balancer(): | ||||
| @ -49,6 +51,86 @@ def test_create_load_balancer(): | ||||
|     listener2.protocol.should.equal("TCP") | ||||
| 
 | ||||
| 
 | ||||
| @pytest.mark.parametrize("region_name", ["us-east-1", "ap-south-1"]) | ||||
| @pytest.mark.parametrize( | ||||
|     "zones", | ||||
|     [ | ||||
|         ["us-east-1a"], | ||||
|         ["us-east-1a", "us-east-1b"], | ||||
|         ["eu-north-1a", "eu-north-1b", "eu-north-1c"], | ||||
|     ], | ||||
| ) | ||||
| @mock_elb | ||||
| @mock_ec2 | ||||
| def test_create_load_balancer_boto3(zones, region_name): | ||||
|     # Both regions and availability zones are parametrized | ||||
|     # This does not seem to have an effect on the DNS name | ||||
|     client = boto3.client("elb", region_name=region_name) | ||||
|     ec2 = boto3.resource("ec2", region_name=region_name) | ||||
| 
 | ||||
|     security_group = ec2.create_security_group( | ||||
|         GroupName="sg01", Description="Test security group sg01" | ||||
|     ) | ||||
| 
 | ||||
|     lb = client.create_load_balancer( | ||||
|         LoadBalancerName="my-lb", | ||||
|         Listeners=[ | ||||
|             {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080}, | ||||
|             {"Protocol": "http", "LoadBalancerPort": 81, "InstancePort": 9000}, | ||||
|         ], | ||||
|         AvailabilityZones=zones, | ||||
|         Scheme="internal", | ||||
|         SecurityGroups=[security_group.id], | ||||
|     ) | ||||
|     lb.should.have.key("DNSName").equal("my-lb.us-east-1.elb.amazonaws.com") | ||||
| 
 | ||||
|     describe = client.describe_load_balancers(LoadBalancerNames=["my-lb"])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     describe.should.have.key("LoadBalancerName").equal("my-lb") | ||||
|     describe.should.have.key("DNSName").equal("my-lb.us-east-1.elb.amazonaws.com") | ||||
|     describe.should.have.key("CanonicalHostedZoneName").equal( | ||||
|         "my-lb.us-east-1.elb.amazonaws.com" | ||||
|     ) | ||||
|     describe.should.have.key("AvailabilityZones").equal(zones) | ||||
|     describe.should.have.key("VPCId") | ||||
|     describe.should.have.key("SecurityGroups").equal([security_group.id]) | ||||
|     describe.should.have.key("Scheme").equal("internal") | ||||
| 
 | ||||
|     describe.should.have.key("ListenerDescriptions") | ||||
|     describe["ListenerDescriptions"].should.have.length_of(2) | ||||
| 
 | ||||
|     tcp = [ | ||||
|         l["Listener"] | ||||
|         for l in describe["ListenerDescriptions"] | ||||
|         if l["Listener"]["Protocol"] == "TCP" | ||||
|     ][0] | ||||
|     http = [ | ||||
|         l["Listener"] | ||||
|         for l in describe["ListenerDescriptions"] | ||||
|         if l["Listener"]["Protocol"] == "HTTP" | ||||
|     ][0] | ||||
|     tcp.should.equal( | ||||
|         { | ||||
|             "Protocol": "TCP", | ||||
|             "LoadBalancerPort": 80, | ||||
|             "InstanceProtocol": "TCP", | ||||
|             "InstancePort": 8080, | ||||
|             "SSLCertificateId": "None", | ||||
|         } | ||||
|     ) | ||||
|     http.should.equal( | ||||
|         { | ||||
|             "Protocol": "HTTP", | ||||
|             "LoadBalancerPort": 81, | ||||
|             "InstanceProtocol": "HTTP", | ||||
|             "InstancePort": 9000, | ||||
|             "SSLCertificateId": "None", | ||||
|         } | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_getting_missing_elb(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -57,6 +139,19 @@ def test_getting_missing_elb(): | ||||
|     ).should.throw(BotoServerError) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_get_missing_elb_boto3(): | ||||
|     client = boto3.client("elb", region_name="us-west-2") | ||||
|     with pytest.raises(ClientError) as ex: | ||||
|         client.describe_load_balancers(LoadBalancerNames=["unknown-lb"]) | ||||
|     err = ex.value.response["Error"] | ||||
|     err["Code"].should.equal("LoadBalancerNotFound") | ||||
|     err["Message"].should.equal( | ||||
|         "The specified load balancer does not exist: unknown-lb" | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_create_elb_in_multiple_region(): | ||||
|     zones = ["us-east-1a", "us-east-1b"] | ||||
| @ -72,6 +167,41 @@ def test_create_elb_in_multiple_region(): | ||||
|     list(west2_conn.get_all_load_balancers()).should.have.length_of(1) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_create_elb_in_multiple_region_boto3(): | ||||
|     client_east = boto3.client("elb", region_name="us-east-2") | ||||
|     client_west = boto3.client("elb", region_name="us-west-2") | ||||
| 
 | ||||
|     name_east = str(uuid4())[0:6] | ||||
|     name_west = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client_east.create_load_balancer( | ||||
|         LoadBalancerName=name_east, | ||||
|         Listeners=[{"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
|     client_west.create_load_balancer( | ||||
|         LoadBalancerName=name_west, | ||||
|         Listeners=[{"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     east_names = [ | ||||
|         lb["LoadBalancerName"] | ||||
|         for lb in client_east.describe_load_balancers()["LoadBalancerDescriptions"] | ||||
|     ] | ||||
|     east_names.should.contain(name_east) | ||||
|     east_names.shouldnt.contain(name_west) | ||||
| 
 | ||||
|     west_names = [ | ||||
|         lb["LoadBalancerName"] | ||||
|         for lb in client_west.describe_load_balancers()["LoadBalancerDescriptions"] | ||||
|     ] | ||||
|     west_names.should.contain(name_west) | ||||
|     west_names.shouldnt.contain(name_east) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_create_load_balancer_with_certificate(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -101,6 +231,35 @@ def test_create_load_balancer_with_certificate(): | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_create_load_balancer_with_certificate_boto3(): | ||||
|     client = boto3.client("elb", region_name="us-east-2") | ||||
| 
 | ||||
|     name = str(uuid4())[0:6] | ||||
|     cert_id = "arn:aws:iam:{}:server-certificate/test-cert".format(ACCOUNT_ID) | ||||
| 
 | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=name, | ||||
|         Listeners=[ | ||||
|             { | ||||
|                 "Protocol": "https", | ||||
|                 "LoadBalancerPort": 8443, | ||||
|                 "InstancePort": 443, | ||||
|                 "SSLCertificateId": cert_id, | ||||
|             } | ||||
|         ], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
|     describe = client.describe_load_balancers(LoadBalancerNames=[name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     describe["Scheme"].should.equal("internet-facing") | ||||
| 
 | ||||
|     listener = describe["ListenerDescriptions"][0]["Listener"] | ||||
|     listener.should.have.key("Protocol").equal("HTTPS") | ||||
|     listener.should.have.key("SSLCertificateId").equals(cert_id) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_create_and_delete_boto3_support(): | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
| @ -190,6 +349,7 @@ def test_apply_security_groups_to_load_balancer(): | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_add_listener(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -210,6 +370,7 @@ def test_add_listener(): | ||||
|     listener2.protocol.should.equal("TCP") | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_delete_listener(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -272,6 +433,7 @@ def test_create_and_delete_listener_boto3_support(): | ||||
|     list(balancer["ListenerDescriptions"]).should.have.length_of(1) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_set_sslcertificate(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -289,6 +451,38 @@ def test_set_sslcertificate(): | ||||
|     listener1.ssl_certificate_id.should.equal("arn:certificate") | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_set_sslcertificate_boto3(): | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[ | ||||
|             {"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}, | ||||
|             {"Protocol": "https", "LoadBalancerPort": 81, "InstancePort": 8081}, | ||||
|         ], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     client.set_load_balancer_listener_ssl_certificate( | ||||
|         LoadBalancerName=lb_name, | ||||
|         LoadBalancerPort=81, | ||||
|         SSLCertificateId="arn:certificate", | ||||
|     ) | ||||
| 
 | ||||
|     elb = client.describe_load_balancers()["LoadBalancerDescriptions"][0] | ||||
| 
 | ||||
|     listener = elb["ListenerDescriptions"][0]["Listener"] | ||||
|     listener.should.have.key("LoadBalancerPort").equals(80) | ||||
|     listener.should.have.key("SSLCertificateId").equals("None") | ||||
| 
 | ||||
|     listener = elb["ListenerDescriptions"][1]["Listener"] | ||||
|     listener.should.have.key("LoadBalancerPort").equals(81) | ||||
|     listener.should.have.key("SSLCertificateId").equals("arn:certificate") | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_get_load_balancers_by_name(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -306,6 +500,50 @@ def test_get_load_balancers_by_name(): | ||||
|     ).should.have.length_of(2) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_get_load_balancers_by_name_boto3(): | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     lb_name1 = str(uuid4())[0:6] | ||||
|     lb_name2 = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name1, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name2, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     lbs = client.describe_load_balancers(LoadBalancerNames=[lb_name1]) | ||||
|     lbs["LoadBalancerDescriptions"].should.have.length_of(1) | ||||
| 
 | ||||
|     lbs = client.describe_load_balancers(LoadBalancerNames=[lb_name2]) | ||||
|     lbs["LoadBalancerDescriptions"].should.have.length_of(1) | ||||
| 
 | ||||
|     lbs = client.describe_load_balancers(LoadBalancerNames=[lb_name1, lb_name2]) | ||||
|     lbs["LoadBalancerDescriptions"].should.have.length_of(2) | ||||
| 
 | ||||
|     with pytest.raises(ClientError) as ex: | ||||
|         client.describe_load_balancers(LoadBalancerNames=["unknownlb"]) | ||||
|     err = ex.value.response["Error"] | ||||
|     err["Code"].should.equal("LoadBalancerNotFound") | ||||
|     err["Message"].should.equal( | ||||
|         f"The specified load balancer does not exist: unknownlb" | ||||
|     ) | ||||
| 
 | ||||
|     with pytest.raises(ClientError) as ex: | ||||
|         client.describe_load_balancers(LoadBalancerNames=[lb_name1, "unknownlb"]) | ||||
|     err = ex.value.response["Error"] | ||||
|     err["Code"].should.equal("LoadBalancerNotFound") | ||||
|     # Bug - message sometimes shows the lb that does exist | ||||
|     err["Message"].should.match(f"The specified load balancer does not exist:") | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_delete_load_balancer(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -322,6 +560,38 @@ def test_delete_load_balancer(): | ||||
|     balancers.should.have.length_of(0) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_delete_load_balancer_boto3(): | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     lb_name1 = str(uuid4())[0:6] | ||||
|     lb_name2 = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name1, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name2, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     lbs = client.describe_load_balancers()["LoadBalancerDescriptions"] | ||||
|     lb_names = [lb["LoadBalancerName"] for lb in lbs] | ||||
|     lb_names.should.contain(lb_name1) | ||||
|     lb_names.should.contain(lb_name2) | ||||
| 
 | ||||
|     client.delete_load_balancer(LoadBalancerName=lb_name1) | ||||
| 
 | ||||
|     lbs = client.describe_load_balancers()["LoadBalancerDescriptions"] | ||||
|     lb_names = [lb["LoadBalancerName"] for lb in lbs] | ||||
|     lb_names.shouldnt.contain(lb_name1) | ||||
|     lb_names.should.contain(lb_name2) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_create_health_check(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -375,6 +645,7 @@ def test_create_health_check_boto3(): | ||||
|     balancer["HealthCheck"]["UnhealthyThreshold"].should.equal(5) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_ec2_deprecated | ||||
| @mock_elb_deprecated | ||||
| def test_register_instances(): | ||||
| @ -417,6 +688,7 @@ def test_register_instances_boto3(): | ||||
|     set(instance_ids).should.equal(set([instance_id1, instance_id2])) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_ec2_deprecated | ||||
| @mock_elb_deprecated | ||||
| def test_deregister_instances(): | ||||
| @ -470,6 +742,7 @@ def test_deregister_instances_boto3(): | ||||
|     balancer["Instances"][0]["InstanceId"].should.equal(instance_id2) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_default_attributes(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -483,6 +756,27 @@ def test_default_attributes(): | ||||
|     attributes.connecting_settings.idle_timeout.should.equal(60) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_default_attributes_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     attributes = client.describe_load_balancer_attributes(LoadBalancerName=lb_name)[ | ||||
|         "LoadBalancerAttributes" | ||||
|     ] | ||||
|     attributes.should.have.key("CrossZoneLoadBalancing").equal({"Enabled": False}) | ||||
|     attributes.should.have.key("AccessLog").equal({"Enabled": False}) | ||||
|     attributes.should.have.key("ConnectionDraining").equal({"Enabled": False}) | ||||
|     attributes.should.have.key("ConnectionSettings").equal({"IdleTimeout": 60}) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_cross_zone_load_balancing_attribute(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -498,6 +792,43 @@ def test_cross_zone_load_balancing_attribute(): | ||||
|     attributes.cross_zone_load_balancing.enabled.should.be.false | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_cross_zone_load_balancing_attribute_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     client.modify_load_balancer_attributes( | ||||
|         LoadBalancerName=lb_name, | ||||
|         LoadBalancerAttributes={"CrossZoneLoadBalancing": {"Enabled": True}}, | ||||
|     ) | ||||
| 
 | ||||
|     attributes = client.describe_load_balancer_attributes(LoadBalancerName=lb_name)[ | ||||
|         "LoadBalancerAttributes" | ||||
|     ] | ||||
|     # Bug: This property is not properly propagated | ||||
|     attributes.should.have.key("CrossZoneLoadBalancing").equal({"Enabled": False}) | ||||
|     attributes.should.have.key("AccessLog").equal({"Enabled": False}) | ||||
|     attributes.should.have.key("ConnectionDraining").equal({"Enabled": False}) | ||||
|     attributes.should.have.key("ConnectionSettings").equal({"IdleTimeout": 60}) | ||||
| 
 | ||||
|     client.modify_load_balancer_attributes( | ||||
|         LoadBalancerName=lb_name, | ||||
|         LoadBalancerAttributes={"CrossZoneLoadBalancing": {"Enabled": False}}, | ||||
|     ) | ||||
| 
 | ||||
|     attributes = client.describe_load_balancer_attributes(LoadBalancerName=lb_name)[ | ||||
|         "LoadBalancerAttributes" | ||||
|     ] | ||||
|     attributes.should.have.key("CrossZoneLoadBalancing").equal({"Enabled": False}) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_connection_draining_attribute(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -524,6 +855,43 @@ def test_connection_draining_attribute(): | ||||
|     attributes.connection_draining.enabled.should.be.false | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_connection_draining_attribute_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     client.modify_load_balancer_attributes( | ||||
|         LoadBalancerName=lb_name, | ||||
|         LoadBalancerAttributes={"ConnectionDraining": {"Enabled": True, "Timeout": 42}}, | ||||
|     ) | ||||
| 
 | ||||
|     attributes = client.describe_load_balancer_attributes(LoadBalancerName=lb_name)[ | ||||
|         "LoadBalancerAttributes" | ||||
|     ] | ||||
|     attributes.should.have.key("ConnectionDraining").equal( | ||||
|         {"Enabled": True, "Timeout": 42} | ||||
|     ) | ||||
| 
 | ||||
|     client.modify_load_balancer_attributes( | ||||
|         LoadBalancerName=lb_name, | ||||
|         LoadBalancerAttributes={"ConnectionDraining": {"Enabled": False}}, | ||||
|     ) | ||||
| 
 | ||||
|     attributes = client.describe_load_balancer_attributes(LoadBalancerName=lb_name)[ | ||||
|         "LoadBalancerAttributes" | ||||
|     ] | ||||
|     attributes.should.have.key("ConnectionDraining").equal({"Enabled": False}) | ||||
| 
 | ||||
| 
 | ||||
| # This does not work in Boto3, so we can't write a equivalent test | ||||
| # Moto always looks for attribute 's3_bucket_name', but Boto3 sends 'S3BucketName' | ||||
| # We'll need to rewrite this feature completely anyway, to get rid of the boto-objects | ||||
| @mock_elb_deprecated | ||||
| def test_access_log_attribute(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -549,6 +917,9 @@ def test_access_log_attribute(): | ||||
|     attributes.access_log.enabled.should.be.false | ||||
| 
 | ||||
| 
 | ||||
| # This does not work in Boto3, so we can't write a equivalent test | ||||
| # Moto always looks for attribute 'idle_timeout', but Boto3 sends 'IdleTimeout' | ||||
| # We'll need to rewrite this feature completely anyway, to get rid of the boto-objects | ||||
| @mock_elb_deprecated | ||||
| def test_connection_settings_attribute(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -568,6 +939,7 @@ def test_connection_settings_attribute(): | ||||
|     attributes.connecting_settings.idle_timeout.should.equal(60) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_create_lb_cookie_stickiness_policy(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -591,6 +963,37 @@ def test_create_lb_cookie_stickiness_policy(): | ||||
|     lb.policies.lb_cookie_stickiness_policies[0].policy_name.should.equal(policy_name) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_create_lb_cookie_stickiness_policy_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     balancer = client.describe_load_balancers(LoadBalancerNames=[lb_name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     lbc_policies = balancer["Policies"]["LBCookieStickinessPolicies"] | ||||
|     lbc_policies.should.have.length_of(0) | ||||
| 
 | ||||
|     client.create_lb_cookie_stickiness_policy( | ||||
|         LoadBalancerName=lb_name, PolicyName="pname", CookieExpirationPeriod=42 | ||||
|     ) | ||||
| 
 | ||||
|     balancer = client.describe_load_balancers(LoadBalancerNames=[lb_name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     policies = balancer["Policies"] | ||||
|     lbc_policies = policies["LBCookieStickinessPolicies"] | ||||
|     lbc_policies.should.have.length_of(1) | ||||
|     lbc_policies[0].should.equal({"PolicyName": "pname", "CookieExpirationPeriod": 42}) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_create_lb_cookie_stickiness_policy_no_expiry(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -605,6 +1008,37 @@ def test_create_lb_cookie_stickiness_policy_no_expiry(): | ||||
|     lb.policies.lb_cookie_stickiness_policies[0].policy_name.should.equal(policy_name) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_create_lb_cookie_stickiness_policy_no_expiry_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     balancer = client.describe_load_balancers(LoadBalancerNames=[lb_name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     lbc_policies = balancer["Policies"]["LBCookieStickinessPolicies"] | ||||
|     lbc_policies.should.have.length_of(0) | ||||
| 
 | ||||
|     client.create_lb_cookie_stickiness_policy( | ||||
|         LoadBalancerName=lb_name, PolicyName="pname" | ||||
|     ) | ||||
| 
 | ||||
|     balancer = client.describe_load_balancers(LoadBalancerNames=[lb_name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     policies = balancer["Policies"] | ||||
|     lbc_policies = policies["LBCookieStickinessPolicies"] | ||||
|     lbc_policies.should.have.length_of(1) | ||||
|     lbc_policies[0].should.equal({"PolicyName": "pname"}) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_create_app_cookie_stickiness_policy(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -620,6 +1054,37 @@ def test_create_app_cookie_stickiness_policy(): | ||||
|     lb.policies.app_cookie_stickiness_policies[0].policy_name.should.equal(policy_name) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_create_app_cookie_stickiness_policy_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     balancer = client.describe_load_balancers(LoadBalancerNames=[lb_name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     lbc_policies = balancer["Policies"]["AppCookieStickinessPolicies"] | ||||
|     lbc_policies.should.have.length_of(0) | ||||
| 
 | ||||
|     client.create_app_cookie_stickiness_policy( | ||||
|         LoadBalancerName=lb_name, PolicyName="pname", CookieName="cname" | ||||
|     ) | ||||
| 
 | ||||
|     balancer = client.describe_load_balancers(LoadBalancerNames=[lb_name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     policies = balancer["Policies"] | ||||
|     lbc_policies = policies["AppCookieStickinessPolicies"] | ||||
|     lbc_policies.should.have.length_of(1) | ||||
|     lbc_policies[0].should.equal({"CookieName": "cname", "PolicyName": "pname"}) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_create_lb_policy(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -633,6 +1098,34 @@ def test_create_lb_policy(): | ||||
|     lb.policies.other_policies[0].policy_name.should.equal(policy_name) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_create_lb_policy_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[{"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     client.create_load_balancer_policy( | ||||
|         LoadBalancerName=lb_name, | ||||
|         PolicyName="ProxyPolicy", | ||||
|         PolicyTypeName="ProxyProtocolPolicyType", | ||||
|         PolicyAttributes=[ | ||||
|             {"AttributeName": "ProxyProtocol", "AttributeValue": "true",}, | ||||
|         ], | ||||
|     ) | ||||
| 
 | ||||
|     balancer = client.describe_load_balancers(LoadBalancerNames=[lb_name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     policies = balancer["Policies"] | ||||
|     policies.should.have.key("OtherPolicies").equal(["ProxyPolicy"]) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_set_policies_of_listener(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -656,6 +1149,48 @@ def test_set_policies_of_listener(): | ||||
|     listener.policy_names[0].should.equal(policy_name) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_set_policies_of_listener_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[ | ||||
|             {"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}, | ||||
|             {"Protocol": "https", "LoadBalancerPort": 81, "InstancePort": 8081}, | ||||
|         ], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     client.create_app_cookie_stickiness_policy( | ||||
|         LoadBalancerName=lb_name, PolicyName="pname", CookieName="cname" | ||||
|     ) | ||||
| 
 | ||||
|     client.set_load_balancer_policies_of_listener( | ||||
|         LoadBalancerName=lb_name, LoadBalancerPort=81, PolicyNames=["pname"] | ||||
|     ) | ||||
| 
 | ||||
|     balancer = client.describe_load_balancers(LoadBalancerNames=[lb_name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
| 
 | ||||
|     http_l = [ | ||||
|         l | ||||
|         for l in balancer["ListenerDescriptions"] | ||||
|         if l["Listener"]["Protocol"] == "HTTP" | ||||
|     ][0] | ||||
|     http_l.should.have.key("PolicyNames").should.equal([]) | ||||
| 
 | ||||
|     https_l = [ | ||||
|         l | ||||
|         for l in balancer["ListenerDescriptions"] | ||||
|         if l["Listener"]["Protocol"] == "HTTPS" | ||||
|     ][0] | ||||
|     https_l.should.have.key("PolicyNames").should.equal(["pname"]) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_elb_deprecated | ||||
| def test_set_policies_of_backend_server(): | ||||
|     conn = boto.connect_elb() | ||||
| @ -676,6 +1211,38 @@ def test_set_policies_of_backend_server(): | ||||
|     backend.policies[0].policy_name.should.equal(policy_name) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_set_policies_of_backend_server_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
| 
 | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[ | ||||
|             {"Protocol": "http", "LoadBalancerPort": 80, "InstancePort": 8080}, | ||||
|             {"Protocol": "https", "LoadBalancerPort": 81, "InstancePort": 8081}, | ||||
|         ], | ||||
|         AvailabilityZones=["us-east-1a"], | ||||
|     ) | ||||
| 
 | ||||
|     client.create_app_cookie_stickiness_policy( | ||||
|         LoadBalancerName=lb_name, PolicyName="pname", CookieName="cname" | ||||
|     ) | ||||
| 
 | ||||
|     client.set_load_balancer_policies_for_backend_server( | ||||
|         LoadBalancerName=lb_name, InstancePort=8081, PolicyNames=["pname"] | ||||
|     ) | ||||
| 
 | ||||
|     balancer = client.describe_load_balancers(LoadBalancerNames=[lb_name])[ | ||||
|         "LoadBalancerDescriptions" | ||||
|     ][0] | ||||
|     balancer.should.have.key("BackendServerDescriptions") | ||||
|     desc = balancer["BackendServerDescriptions"] | ||||
|     desc.should.have.length_of(1) | ||||
|     desc[0].should.equal({"InstancePort": 8081, "PolicyNames": ["pname"]}) | ||||
| 
 | ||||
| 
 | ||||
| # Has boto3 equivalent | ||||
| @mock_ec2_deprecated | ||||
| @mock_elb_deprecated | ||||
| def test_describe_instance_health(): | ||||
| @ -941,3 +1508,26 @@ def test_create_load_balancer_duplicate(): | ||||
|     conn.create_load_balancer.when.called_with("my-lb", [], ports).should.throw( | ||||
|         BotoServerError | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| @mock_elb | ||||
| def test_create_load_balancer_duplicate_boto3(): | ||||
|     lb_name = str(uuid4())[0:6] | ||||
|     client = boto3.client("elb", region_name="us-east-1") | ||||
|     client.create_load_balancer( | ||||
|         LoadBalancerName=lb_name, | ||||
|         Listeners=[{"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080}], | ||||
|     ) | ||||
| 
 | ||||
|     with pytest.raises(ClientError) as ex: | ||||
|         client.create_load_balancer( | ||||
|             LoadBalancerName=lb_name, | ||||
|             Listeners=[ | ||||
|                 {"Protocol": "tcp", "LoadBalancerPort": 80, "InstancePort": 8080} | ||||
|             ], | ||||
|         ) | ||||
|     err = ex.value.response["Error"] | ||||
|     err["Code"].should.equal("DuplicateLoadBalancerName") | ||||
|     err["Message"].should.equal( | ||||
|         f"The specified load balancer name already exists for this account: {lb_name}" | ||||
|     ) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user