Added Exceptions on create_option_group
This commit is contained in:
parent
e2ed5ed733
commit
40db44f2cd
@ -36,3 +36,4 @@ class DBSubnetGroupNotFoundError(RDSClientError):
|
||||
super(DBSubnetGroupNotFoundError, self).__init__(
|
||||
'DBSubnetGroupNotFound',
|
||||
"Subnet Group {0} not found.".format(subnet_group_name))
|
||||
|
||||
|
@ -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
|
||||
|
@ -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():
|
||||
|
Loading…
x
Reference in New Issue
Block a user