forked from p15670423/monkey
Island: Add stateful AWSService
This commit is contained in:
parent
e83848c8a4
commit
0f4b69a6f7
|
@ -3,3 +3,5 @@ from .directory_file_storage_service import DirectoryFileStorageService
|
||||||
|
|
||||||
from .authentication.authentication_service import AuthenticationService
|
from .authentication.authentication_service import AuthenticationService
|
||||||
from .authentication.json_file_user_datastore import JsonFileUserDatastore
|
from .authentication.json_file_user_datastore import JsonFileUserDatastore
|
||||||
|
|
||||||
|
from .aws_service import AWSService
|
||||||
|
|
|
@ -15,6 +15,18 @@ IP_ADDRESS_KEY = "IPAddress"
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class AWSService:
|
||||||
|
def __init__(self, aws_instance: AWSInstance):
|
||||||
|
self._aws_instance = aws_instance
|
||||||
|
|
||||||
|
def island_is_running_on_aws(self) -> bool:
|
||||||
|
return self._aws_instance.is_instance
|
||||||
|
|
||||||
|
@property
|
||||||
|
def island_aws_instance(self) -> AWSInstance:
|
||||||
|
return self._aws_instance
|
||||||
|
|
||||||
|
|
||||||
def filter_instance_data_from_aws_response(response):
|
def filter_instance_data_from_aws_response(response):
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
import json
|
import json
|
||||||
|
import threading
|
||||||
|
from typing import Optional
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from common.aws import AWSInstance
|
||||||
|
from monkey_island.cc.services import AWSService
|
||||||
from monkey_island.cc.services.aws_service import filter_instance_data_from_aws_response
|
from monkey_island.cc.services.aws_service import filter_instance_data_from_aws_response
|
||||||
|
|
||||||
|
|
||||||
|
@ -54,3 +60,53 @@ class TestAwsService(TestCase):
|
||||||
filter_instance_data_from_aws_response(json.loads(json_response_full)),
|
filter_instance_data_from_aws_response(json.loads(json_response_full)),
|
||||||
[{"instance_id": "string", "ip_address": "string", "name": "string", "os": "string"}],
|
[{"instance_id": "string", "ip_address": "string", "name": "string", "os": "string"}],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class StubAWSInstance(AWSInstance):
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
instance_id: Optional[str] = None,
|
||||||
|
region: Optional[str] = None,
|
||||||
|
account_id: Optional[str] = None,
|
||||||
|
):
|
||||||
|
self._instance_id = instance_id
|
||||||
|
self._region = region
|
||||||
|
self._account_id = account_id
|
||||||
|
|
||||||
|
self._initialization_complete = threading.Event()
|
||||||
|
self._initialization_complete.set()
|
||||||
|
|
||||||
|
|
||||||
|
def test_aws_is_on_aws__true():
|
||||||
|
aws_instance = StubAWSInstance("1")
|
||||||
|
aws_service = AWSService(aws_instance)
|
||||||
|
assert aws_service.island_is_running_on_aws() is True
|
||||||
|
|
||||||
|
|
||||||
|
def test_aws_is_on_aws__False():
|
||||||
|
aws_instance = StubAWSInstance()
|
||||||
|
aws_service = AWSService(aws_instance)
|
||||||
|
assert aws_service.island_is_running_on_aws() is False
|
||||||
|
|
||||||
|
|
||||||
|
INSTANCE_ID = "1"
|
||||||
|
REGION = "2"
|
||||||
|
ACCOUNT_ID = "3"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def aws_service():
|
||||||
|
aws_instance = StubAWSInstance(INSTANCE_ID, REGION, ACCOUNT_ID)
|
||||||
|
return AWSService(aws_instance)
|
||||||
|
|
||||||
|
|
||||||
|
def test_instance_id(aws_service):
|
||||||
|
assert aws_service.island_aws_instance.instance_id == INSTANCE_ID
|
||||||
|
|
||||||
|
|
||||||
|
def test_region(aws_service):
|
||||||
|
assert aws_service.island_aws_instance.region == REGION
|
||||||
|
|
||||||
|
|
||||||
|
def test_account_id(aws_service):
|
||||||
|
assert aws_service.island_aws_instance.account_id == ACCOUNT_ID
|
||||||
|
|
Loading…
Reference in New Issue