428 lines
14 KiB
Python
428 lines
14 KiB
Python
import boto3
|
|
import pytest
|
|
import sure # noqa # pylint: disable=unused-import
|
|
|
|
from botocore.exceptions import ClientError
|
|
from moto import mock_mq
|
|
|
|
# See our Development Tips on writing tests for hints on how to write good tests:
|
|
# http://docs.getmoto.org/en/latest/docs/contributing/development_tips/tests.html
|
|
|
|
|
|
@mock_mq
|
|
def test_create_broker_minimal():
|
|
client = boto3.client("mq", region_name="ap-southeast-1")
|
|
resp = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="dm",
|
|
EngineType="ACTIVEMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Users=[{"Username": "admin", "Password": "adm1n"}],
|
|
)
|
|
|
|
resp.should.have.key("BrokerId")
|
|
resp.should.have.key("BrokerArn").match("arn:aws")
|
|
|
|
|
|
@mock_mq
|
|
def test_create_with_tags():
|
|
client = boto3.client("mq", region_name="us-east-2")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="CLUSTER_MULTI_AZ",
|
|
EngineType="RabbitMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Tags={"key1": "val2", "key2": "val2"},
|
|
Users=[],
|
|
)["BrokerId"]
|
|
|
|
resp = client.describe_broker(BrokerId=broker_id)
|
|
|
|
resp.should.have.key("Tags").equals({"key1": "val2", "key2": "val2"})
|
|
|
|
|
|
@mock_mq
|
|
def test_create_with_multiple_users():
|
|
client = boto3.client("mq", region_name="us-east-2")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="CLUSTER_MULTI_AZ",
|
|
EngineType="RabbitMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Users=[
|
|
{
|
|
"ConsoleAccess": True,
|
|
"Groups": ["second", "first", "third"],
|
|
"Password": "SecondTestTest1234",
|
|
"Username": "SecondTest",
|
|
},
|
|
{
|
|
"ConsoleAccess": False,
|
|
"Groups": [],
|
|
"Password": "TestTest1234",
|
|
"Username": "Test",
|
|
},
|
|
],
|
|
)["BrokerId"]
|
|
|
|
user1 = client.describe_user(BrokerId=broker_id, Username="SecondTest")
|
|
user1.should.have.key("Username").equals("SecondTest")
|
|
user1.should.have.key("Groups").equals(["second", "first", "third"])
|
|
user1.should.have.key("ConsoleAccess").equals(True)
|
|
|
|
user2 = client.describe_user(BrokerId=broker_id, Username="Test")
|
|
user2.should.have.key("Username").equals("Test")
|
|
user2.should.have.key("Groups").equals([])
|
|
user2.should.have.key("ConsoleAccess").equals(False)
|
|
|
|
|
|
@mock_mq
|
|
def test_create_with_configuration():
|
|
client = boto3.client("mq", region_name="us-east-2")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
Configuration={"Id": "config_id_x", "Revision": 3},
|
|
DeploymentMode="CLUSTER_SINGLE",
|
|
EngineType="ActiveMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Tags={"key1": "val2", "key2": "val2"},
|
|
Users=[],
|
|
)["BrokerId"]
|
|
|
|
resp = client.describe_broker(BrokerId=broker_id)
|
|
|
|
resp.should.have.key("Configurations")
|
|
resp["Configurations"].should.have.key("Current").equals(
|
|
{"Id": "config_id_x", "Revision": 3}
|
|
)
|
|
|
|
|
|
@mock_mq
|
|
def test_update_with_configuration():
|
|
client = boto3.client("mq", region_name="us-east-2")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
Configuration={"Id": "config_id_x", "Revision": 1},
|
|
DeploymentMode="CLUSTER_SINGLE",
|
|
EngineType="ActiveMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Tags={"key1": "val2", "key2": "val2"},
|
|
Users=[],
|
|
)["BrokerId"]
|
|
|
|
client.update_broker(
|
|
BrokerId=broker_id, Configuration={"Id": "config_id_x", "Revision": 2}
|
|
)
|
|
|
|
resp = client.describe_broker(BrokerId=broker_id)
|
|
|
|
resp.should.have.key("Configurations")
|
|
resp["Configurations"].should.have.key("Current").equals(
|
|
{"Id": "config_id_x", "Revision": 2}
|
|
)
|
|
|
|
|
|
@mock_mq
|
|
def test_delete_broker():
|
|
client = boto3.client("mq", region_name="ap-southeast-1")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="dm",
|
|
EngineType="ACTIVEMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Users=[{"Username": "admin", "Password": "adm1n"}],
|
|
)["BrokerId"]
|
|
|
|
resp = client.delete_broker(BrokerId=broker_id)
|
|
resp.should.have.key("BrokerId").equals(broker_id)
|
|
|
|
client.list_brokers().should.have.key("BrokerSummaries").length_of(0)
|
|
|
|
|
|
@mock_mq
|
|
def test_describe_broker():
|
|
client = boto3.client("mq", region_name="us-east-2")
|
|
broker_id = client.create_broker(
|
|
AuthenticationStrategy="SIMPLE",
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="dm",
|
|
EncryptionOptions={"KmsKeyId": "kms-key", "UseAwsOwnedKey": False},
|
|
EngineType="ACTIVEMQ",
|
|
EngineVersion="version",
|
|
LdapServerMetadata={
|
|
"Hosts": ["host1"],
|
|
"RoleBase": "role_base_thingy",
|
|
"RoleSearchMatching": "rsm",
|
|
"ServiceAccountUsername": "sau",
|
|
"ServiceAccountPassword": "sap",
|
|
"UserBase": "ub",
|
|
"UserSearchMatching": "usm",
|
|
},
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
SecurityGroups=["secgroup1"],
|
|
StorageType="efs",
|
|
SubnetIds=["s-id"],
|
|
Users=[{"Username": "admin", "Password": "adm1n"}],
|
|
)["BrokerId"]
|
|
|
|
resp = client.describe_broker(BrokerId=broker_id)
|
|
|
|
resp.should.have.key("BrokerId").equals(broker_id)
|
|
resp.should.have.key("BrokerArn").match("arn:aws")
|
|
resp.should.have.key("BrokerState").equals("RUNNING")
|
|
|
|
resp.should.have.key("Created")
|
|
|
|
resp.should.have.key("AuthenticationStrategy").equals("SIMPLE")
|
|
resp.should.have.key("AutoMinorVersionUpgrade").equals(False)
|
|
resp.should.have.key("BrokerName").equals("testbroker")
|
|
resp.should.have.key("DeploymentMode").equals("dm")
|
|
resp.should.have.key("EncryptionOptions").equals(
|
|
{"KmsKeyId": "kms-key", "UseAwsOwnedKey": False}
|
|
)
|
|
resp.should.have.key("EngineType").equals("ACTIVEMQ")
|
|
resp.should.have.key("EngineVersion").equals("version")
|
|
resp.should.have.key("HostInstanceType").equals("hit")
|
|
resp.should.have.key("LdapServerMetadata").equals(
|
|
{
|
|
"Hosts": ["host1"],
|
|
"RoleBase": "role_base_thingy",
|
|
"RoleSearchMatching": "rsm",
|
|
"ServiceAccountUsername": "sau",
|
|
"UserBase": "ub",
|
|
"UserSearchMatching": "usm",
|
|
}
|
|
)
|
|
resp.should.have.key("PubliclyAccessible").equals(True)
|
|
resp.should.have.key("SecurityGroups").equals(["secgroup1"])
|
|
resp.should.have.key("StorageType").equals("efs")
|
|
resp.should.have.key("SubnetIds").equals(["s-id"])
|
|
resp.should.have.key("Users").equals([{"Username": "admin"}])
|
|
|
|
|
|
@mock_mq
|
|
def test_describe_broker_with_defaults():
|
|
client = boto3.client("mq", region_name="us-east-2")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="dm",
|
|
EngineType="ACTIVEMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Users=[],
|
|
)["BrokerId"]
|
|
|
|
resp = client.describe_broker(BrokerId=broker_id)
|
|
|
|
resp.should.have.key("BrokerInstances").length_of(1)
|
|
|
|
resp.should.have.key("Configurations")
|
|
resp["Configurations"].should.have.key("Current")
|
|
resp["Configurations"].should.have.key("History").length_of(0)
|
|
resp["Configurations"].shouldnt.have.key("Pending")
|
|
|
|
resp.should.have.key("EncryptionOptions").equals({"UseAwsOwnedKey": True})
|
|
|
|
resp.should.have.key("MaintenanceWindowStartTime").equals(
|
|
{"DayOfWeek": "Sunday", "TimeOfDay": "00:00", "TimeZone": "UTC"}
|
|
)
|
|
|
|
resp.should.have.key("Logs").equals({"Audit": False, "General": False})
|
|
|
|
resp.should.have.key("SubnetIds").length_of(1)
|
|
|
|
|
|
@mock_mq
|
|
def test_describe_multiple_rabbits():
|
|
client = boto3.client("mq", region_name="us-east-2")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="CLUSTER_MULTI_AZ",
|
|
EngineType="RabbitMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Users=[],
|
|
)["BrokerId"]
|
|
|
|
resp = client.describe_broker(BrokerId=broker_id)
|
|
|
|
resp.should.have.key("BrokerInstances")
|
|
resp["BrokerInstances"][0]["ConsoleURL"].should.equal(
|
|
"https://0000.mq.us-east-2.amazonaws.com"
|
|
)
|
|
resp["BrokerInstances"][0]["Endpoints"].should.have.length_of(1)
|
|
resp.shouldnt.have.key("Configurations")
|
|
resp.should.have.key("Logs").equals({"General": False})
|
|
resp.should.have.key("SubnetIds").length_of(4)
|
|
|
|
|
|
@mock_mq
|
|
def test_describe_active_mq_with_standby():
|
|
client = boto3.client("mq", region_name="us-east-2")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="ACTIVE_STANDBY_MULTI_AZ",
|
|
EngineType="ActiveMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Users=[],
|
|
)["BrokerId"]
|
|
|
|
resp = client.describe_broker(BrokerId=broker_id)
|
|
|
|
# Instances and subnets in two regions - one active, one standby
|
|
resp.should.have.key("BrokerInstances").length_of(2)
|
|
resp.should.have.key("SubnetIds").length_of(2)
|
|
|
|
|
|
@mock_mq
|
|
def test_describe_broker_unknown():
|
|
client = boto3.client("mq", region_name="us-east-2")
|
|
|
|
with pytest.raises(ClientError) as exc:
|
|
client.describe_broker(BrokerId="unknown")
|
|
err = exc.value.response["Error"]
|
|
err["Code"].should.equal("NotFoundException")
|
|
err["Message"].should.equal(
|
|
"Can't find requested broker [unknown]. Make sure your broker exists."
|
|
)
|
|
|
|
|
|
@mock_mq
|
|
def test_list_brokers_empty():
|
|
client = boto3.client("mq", region_name="eu-west-1")
|
|
resp = client.list_brokers()
|
|
|
|
resp.should.have.key("BrokerSummaries").equals([])
|
|
|
|
|
|
@mock_mq
|
|
def test_list_brokers():
|
|
client = boto3.client("mq", region_name="eu-west-1")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="dm",
|
|
EngineType="ACTIVEMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Users=[{"Username": "admin", "Password": "adm1n"}],
|
|
)["BrokerId"]
|
|
|
|
resp = client.list_brokers()
|
|
|
|
resp.should.have.key("BrokerSummaries").length_of(1)
|
|
|
|
summary = resp["BrokerSummaries"][0]
|
|
summary.should.have.key("BrokerArn")
|
|
summary.should.have.key("BrokerId").equals(broker_id)
|
|
summary.should.have.key("BrokerName").equals("testbroker")
|
|
summary.should.have.key("BrokerState").equals("RUNNING")
|
|
summary.should.have.key("Created")
|
|
summary.should.have.key("DeploymentMode").equals("dm")
|
|
summary.should.have.key("EngineType").equals("ACTIVEMQ")
|
|
summary.should.have.key("HostInstanceType").equals("hit")
|
|
|
|
summary.shouldnt.have.key("Users")
|
|
|
|
|
|
@mock_mq
|
|
def test_update_broker_single_attribute():
|
|
client = boto3.client("mq", region_name="ap-southeast-1")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="dm",
|
|
EngineType="ACTIVEMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Users=[{"Username": "admin", "Password": "adm1n"}],
|
|
)["BrokerId"]
|
|
resp = client.update_broker(AutoMinorVersionUpgrade=True, BrokerId=broker_id)
|
|
|
|
# Changed
|
|
resp.should.have.key("AutoMinorVersionUpgrade").equals(True)
|
|
|
|
# Unchanged
|
|
resp.should.have.key("BrokerId").equals(broker_id)
|
|
resp.should.have.key("EngineVersion").equals("version")
|
|
|
|
|
|
@mock_mq
|
|
def test_update_broker_multiple_attributes():
|
|
client = boto3.client("mq", region_name="ap-southeast-1")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="dm",
|
|
EngineType="ACTIVEMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
SecurityGroups=["sg-1"],
|
|
Users=[{"Username": "admin", "Password": "adm1n"}],
|
|
)["BrokerId"]
|
|
resp = client.update_broker(
|
|
AutoMinorVersionUpgrade=True,
|
|
BrokerId=broker_id,
|
|
Logs={"Audit": True, "General": True},
|
|
EngineVersion="version2",
|
|
SecurityGroups=["sg-1", "sg-2"],
|
|
)
|
|
|
|
# Changed
|
|
resp.should.have.key("AutoMinorVersionUpgrade").equals(True)
|
|
resp.should.have.key("Logs").equals({"Audit": True, "General": True})
|
|
resp.should.have.key("EngineVersion").equals("version2")
|
|
resp.should.have.key("SecurityGroups").equals(["sg-1", "sg-2"])
|
|
|
|
# Unchanged
|
|
resp.should.have.key("BrokerId").equals(broker_id)
|
|
|
|
|
|
@mock_mq
|
|
def test_reboot_broker():
|
|
client = boto3.client("mq", region_name="ap-southeast-1")
|
|
broker_id = client.create_broker(
|
|
AutoMinorVersionUpgrade=False,
|
|
BrokerName="testbroker",
|
|
DeploymentMode="dm",
|
|
EngineType="ACTIVEMQ",
|
|
EngineVersion="version",
|
|
HostInstanceType="hit",
|
|
PubliclyAccessible=True,
|
|
Users=[{"Username": "admin", "Password": "adm1n"}],
|
|
)["BrokerId"]
|
|
client.reboot_broker(BrokerId=broker_id)
|
|
|
|
# Noop - nothing to assert or verify
|
|
pass
|