Skip to content

Commit

Permalink
feat: added testing
Browse files Browse the repository at this point in the history
  • Loading branch information
HugoPBrito committed Oct 16, 2024
1 parent 691b3e4 commit eb3b7d0
Show file tree
Hide file tree
Showing 3 changed files with 170 additions and 2 deletions.
3 changes: 3 additions & 0 deletions prowler/providers/aws/services/mq/mq_service.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from enum import Enum
from typing import Optional

from pydantic import BaseModel

Expand All @@ -13,6 +14,7 @@ def __init__(self, provider):
super().__init__("mq", provider)
self.brokers = {}
self.__threading_call__(self._list_brokers)
self.__threading_call__(self._describe_broker, self.brokers.values())

def _list_brokers(self, regional_client):
logger.info("MQ - Listing brokers...")
Expand Down Expand Up @@ -74,3 +76,4 @@ class Broker(BaseModel):
region: str
engine_type: EngineType = EngineType.ACTIVEMQ
deployment_mode: DeploymentMode = DeploymentMode.SINGLE_INSTANCE
tags: Optional[list] = []
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
from unittest import mock

from boto3 import client
from moto import mock_aws

from tests.providers.aws.utils import (
AWS_ACCOUNT_NUMBER,
AWS_REGION_US_EAST_1,
set_mocked_aws_provider,
)


class Test_mq_activemq_broker_active_standby_mode:
@mock_aws
def test_no_brokers(self):
from prowler.providers.aws.services.mq.mq_service import MQ

aws_provider = set_mocked_aws_provider([AWS_REGION_US_EAST_1])

with mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=aws_provider,
):
with mock.patch(
"prowler.providers.aws.services.mq.mq_activemq_broker_active_standby_mode.mq_activemq_broker_active_standby_mode.mq_client",
new=MQ(aws_provider),
):
# Test Check
from prowler.providers.aws.services.mq.mq_activemq_broker_active_standby_mode.mq_activemq_broker_active_standby_mode import (
mq_activemq_broker_active_standby_mode,
)

check = mq_activemq_broker_active_standby_mode()
result = check.execute()

assert len(result) == 0

@mock_aws
def test_no_activemq_brokers(self):
from prowler.providers.aws.services.mq.mq_service import MQ

aws_provider = set_mocked_aws_provider([AWS_REGION_US_EAST_1])

with mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=aws_provider,
):
with mock.patch(
"prowler.providers.aws.services.mq.mq_activemq_broker_active_standby_mode.mq_activemq_broker_active_standby_mode.mq_client",
new=MQ(aws_provider),
):
# Test Check
from prowler.providers.aws.services.mq.mq_activemq_broker_active_standby_mode.mq_activemq_broker_active_standby_mode import (
mq_activemq_broker_active_standby_mode,
)

check = mq_activemq_broker_active_standby_mode()
result = check.execute()

assert len(result) == 0

@mock_aws
def test_activemq_broker_active_standby_mode_enabled(self):
mq_client = client("mq", region_name=AWS_REGION_US_EAST_1)
broker_id = mq_client.create_broker(
BrokerName="test-broker",
EngineType="ACTIVEMQ",
EngineVersion="5.15.0",
HostInstanceType="mq.t2.micro",
Users=[
{
"Username": "admin",
"Password": "admin",
},
],
DeploymentMode="ACTIVE_STANDBY_MULTI_AZ",
PubliclyAccessible=False,
AutoMinorVersionUpgrade=True,
)["BrokerId"]

from prowler.providers.aws.services.mq.mq_service import MQ

aws_provider = set_mocked_aws_provider([AWS_REGION_US_EAST_1])

with mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=aws_provider,
):
with mock.patch(
"prowler.providers.aws.services.mq.mq_activemq_broker_active_standby_mode.mq_activemq_broker_active_standby_mode.mq_client",
new=MQ(aws_provider),
):
# Test Check
from prowler.providers.aws.services.mq.mq_activemq_broker_active_standby_mode.mq_activemq_broker_active_standby_mode import (
mq_activemq_broker_active_standby_mode,
)

check = mq_activemq_broker_active_standby_mode()
result = check.execute()

assert len(result) == 1
assert result[0].status == "PASS"
assert (
result[0].status_extended
== f"MQ Broker {broker_id} does have active/standby deployment mode enabled."
)
assert result[0].resource_id == broker_id
assert (
result[0].resource_arn
== f"arn:{aws_provider.identity.partition}:mq:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:broker:{broker_id}"
)
assert result[0].region == AWS_REGION_US_EAST_1

@mock_aws
def test_activemq_broker_active_standby_mode_disabled(self):
mq_client = client("mq", region_name=AWS_REGION_US_EAST_1)
broker_id = mq_client.create_broker(
BrokerName="test-broker",
EngineType="ACTIVEMQ",
EngineVersion="5.15.0",
HostInstanceType="mq.t2.micro",
Users=[
{
"Username": "admin",
"Password": "admin",
},
],
DeploymentMode="SINGLE_INSTANCE",
PubliclyAccessible=False,
AutoMinorVersionUpgrade=False,
)["BrokerId"]

from prowler.providers.aws.services.mq.mq_service import MQ

aws_provider = set_mocked_aws_provider([AWS_REGION_US_EAST_1])

with mock.patch(
"prowler.providers.common.provider.Provider.get_global_provider",
return_value=aws_provider,
):
with mock.patch(
"prowler.providers.aws.services.mq.mq_activemq_broker_active_standby_mode.mq_activemq_broker_active_standby_mode.mq_client",
new=MQ(aws_provider),
):
# Test Check
from prowler.providers.aws.services.mq.mq_activemq_broker_active_standby_mode.mq_activemq_broker_active_standby_mode import (
mq_activemq_broker_active_standby_mode,
)

check = mq_activemq_broker_active_standby_mode()
result = check.execute()

assert len(result) == 1
assert result[0].status == "FAIL"
assert (
result[0].status_extended
== f"MQ Broker {broker_id} does not have active/standby deployment mode enabled."
)
assert result[0].resource_id == broker_id
assert (
result[0].resource_arn
== f"arn:{aws_provider.identity.partition}:mq:{AWS_REGION_US_EAST_1}:{AWS_ACCOUNT_NUMBER}:broker:{broker_id}"
)
assert result[0].region == AWS_REGION_US_EAST_1
5 changes: 3 additions & 2 deletions tests/providers/aws/services/mq/mq_service_test.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from boto3 import client
from moto import mock_aws

from prowler.providers.aws.services.mq.mq_service import MQ
from prowler.providers.aws.services.mq.mq_service import MQ, DeploymentMode, EngineType
from tests.providers.aws.utils import AWS_REGION_EU_WEST_1, set_mocked_aws_provider


Expand Down Expand Up @@ -99,4 +99,5 @@ def test_describe_broker(self):
assert mq.brokers[broker_arn].name == "my-broker"
assert mq.brokers[broker_arn].region == AWS_REGION_EU_WEST_1
assert mq.brokers[broker_arn].id == broker["BrokerId"]
assert mq.brokers[broker_arn].engine_type == "ActiveMQ"
assert mq.brokers[broker_arn].engine_type == EngineType.ACTIVEMQ
assert mq.brokers[broker_arn].deployment_mode == DeploymentMode.SINGLE_INSTANCE

0 comments on commit eb3b7d0

Please sign in to comment.