From 6d8aa9d8f14b9a0d460276d0678a218887a65ef0 Mon Sep 17 00:00:00 2001 From: Jack Danger Canty Date: Mon, 8 May 2017 20:05:46 -1000 Subject: [PATCH] support default ports in RDS --- moto/rds2/models.py | 18 ++++++++++++++++++ tests/test_rds2/test_rds2.py | 14 ++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/moto/rds2/models.py b/moto/rds2/models.py index eecb608dd..5e3dfc9c7 100644 --- a/moto/rds2/models.py +++ b/moto/rds2/models.py @@ -57,6 +57,8 @@ class Database(BaseModel): self.source_db_identifier = kwargs.get("source_db_identifier") self.db_instance_class = kwargs.get('db_instance_class') self.port = kwargs.get('port') + if self.port is None: + self.port = Database.default_port(self.engine) self.db_instance_identifier = kwargs.get('db_instance_identifier') self.db_name = kwargs.get("db_name") self.publicly_accessible = kwargs.get("publicly_accessible") @@ -241,6 +243,22 @@ class Database(BaseModel): return self.port raise UnformattedGetAttTemplateException() + @staticmethod + def default_port(engine): + return { + 'mysql': 3306, + 'mariadb': 3306, + 'postgres': 5432, + 'oracle-ee': 1521, + 'oracle-se2': 1521, + 'oracle-se1': 1521, + 'oracle-se': 1521, + 'sqlserver-ee': 1433, + 'sqlserver-ex': 1433, + 'sqlserver-se': 1433, + 'sqlserver-web': 1433, + }[engine] + @classmethod def create_from_cloudformation_json(cls, resource_name, cloudformation_json, region_name): properties = cloudformation_json['Properties'] diff --git a/tests/test_rds2/test_rds2.py b/tests/test_rds2/test_rds2.py index 1e2e0abdf..c5f99c326 100644 --- a/tests/test_rds2/test_rds2.py +++ b/tests/test_rds2/test_rds2.py @@ -973,6 +973,20 @@ def test_create_db_instance_with_parameter_group(): 'ParameterApplyStatus'].should.equal('in-sync') +@disable_on_py3() +@mock_rds2 +def test_create_database_with_default_port(): + conn = boto3.client('rds', region_name='us-west-2') + database = conn.create_db_instance(DBInstanceIdentifier='db-master-1', + AllocatedStorage=10, + Engine='postgres', + DBInstanceClass='db.m1.small', + MasterUsername='root', + MasterUserPassword='hunter2', + DBSecurityGroups=["my_sg"]) + database['DBInstance']['Endpoint']['Port'].should.equal(5432) + + @disable_on_py3() @mock_rds2 def test_modify_db_instance_with_parameter_group():