Added Exceptions on create_option_group

This commit is contained in:
Mike Fuller 2015-01-19 17:03:14 +11:00
parent e2ed5ed733
commit 40db44f2cd
3 changed files with 35 additions and 2 deletions

View File

@ -36,3 +36,4 @@ class DBSubnetGroupNotFoundError(RDSClientError):
super(DBSubnetGroupNotFoundError, self).__init__(
'DBSubnetGroupNotFound',
"Subnet Group {0} not found.".format(subnet_group_name))

View File

@ -9,7 +9,7 @@ from moto.cloudformation.exceptions import UnformattedGetAttTemplateException
from moto.core import BaseBackend
from moto.core.utils import get_random_hex
from moto.ec2.models import ec2_backends
from .exceptions import DBInstanceNotFoundError, DBSecurityGroupNotFoundError, DBSubnetGroupNotFoundError
from .exceptions import RDSClientError, DBInstanceNotFoundError, DBSecurityGroupNotFoundError, DBSubnetGroupNotFoundError
class Database(object):
@ -444,13 +444,27 @@ class RDS2Backend(BaseBackend):
def create_option_group(self, option_group_kwargs):
option_group_id = option_group_kwargs['name']
valid_option_group_engines = {'postgres': ['9.3'], 'mysql': []}
if 'description' not in option_group_kwargs or not option_group_kwargs['description']:
raise RDSClientError('InvalidParameterValue',
'The parameter OptionGroupDescription must be provided and must not be blank.')
if option_group_kwargs['engine_name'] not in valid_option_group_engines.keys():
raise RDSClientError('InvalidParameterValue', 'Invalid DB engine: non-existant')
if option_group_kwargs['major_engine_version'] not in\
valid_option_group_engines[option_group_kwargs['engine_name']]:
raise RDSClientError('InvalidParameterCombination',
'Cannot find major version {0} for {1}'.format(
option_group_kwargs['major_engine_version'],
option_group_kwargs['engine_name']
))
option_group = OptionGroup(**option_group_kwargs)
self.option_groups[option_group_id] = option_group
return option_group
class OptionGroup(object):
def __init__(self, name, engine_name, major_engine_version, description):
def __init__(self, name, engine_name, major_engine_version, description=None):
self.engine_name = engine_name
self.major_engine_version = major_engine_version
self.description = description

View File

@ -73,6 +73,24 @@ def test_create_option_group():
option_group['CreateOptionGroupResponse']['CreateOptionGroupResult']['OptionGroup']['OptionGroupDescription'].should.equal('test option group')
option_group['CreateOptionGroupResponse']['CreateOptionGroupResult']['OptionGroup']['MajorEngineVersion'].should.equal('9.3')
@mock_rds2
def test_create_option_group_bad_engine_name():
conn = boto.rds2.connect_to_region("us-west-2")
conn.create_option_group.when.called_with('test', 'invalid_engine', '9.3', 'test invalid engine').should.throw(BotoServerError)
@mock_rds2
def test_create_option_group_bad_engine_major_version():
conn = boto.rds2.connect_to_region("us-west-2")
conn.create_option_group.when.called_with('test', 'postgres', '9.3.a', 'test invalid engine version').should.throw(BotoServerError)
@mock_rds2
def test_create_option_group_empty_description():
conn = boto.rds2.connect_to_region("us-west-2")
conn.create_option_group.when.called_with('test', 'postgres', '9.3', '').should.throw(BotoServerError)
#@disable_on_py3()
#@mock_rds2
#def test_delete_database():