forked from p15670423/monkey
UT: Refactor hardcoded URL's to resource references
This commit is contained in:
parent
4069cc8084
commit
0344ee1a7c
|
@ -4,6 +4,7 @@ from unittest.mock import MagicMock
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from common.utils.exceptions import IncorrectCredentialsError
|
from common.utils.exceptions import IncorrectCredentialsError
|
||||||
|
from monkey_island.cc.resources.auth.auth import Authenticate
|
||||||
|
|
||||||
USERNAME = "test_user"
|
USERNAME = "test_user"
|
||||||
PASSWORD = "test_password"
|
PASSWORD = "test_password"
|
||||||
|
@ -22,7 +23,7 @@ def mock_authentication_service(monkeypatch):
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def make_auth_request(flask_client):
|
def make_auth_request(flask_client):
|
||||||
url = "/api/auth"
|
url = Authenticate.urls[0]
|
||||||
|
|
||||||
def inner(request_body):
|
def inner(request_body):
|
||||||
return flask_client.post(url, data=request_body, follow_redirects=True)
|
return flask_client.post(url, data=request_body, follow_redirects=True)
|
||||||
|
|
|
@ -4,8 +4,9 @@ from unittest.mock import MagicMock
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from common.utils.exceptions import AlreadyRegisteredError, InvalidRegistrationCredentialsError
|
from common.utils.exceptions import AlreadyRegisteredError, InvalidRegistrationCredentialsError
|
||||||
|
from monkey_island.cc.resources.auth.registration import Registration
|
||||||
|
|
||||||
REGISTRATION_URL = "/api/registration"
|
REGISTRATION_URL = Registration.urls[0]
|
||||||
|
|
||||||
USERNAME = "test_user"
|
USERNAME = "test_user"
|
||||||
PASSWORD = "test_password"
|
PASSWORD = "test_password"
|
||||||
|
|
|
@ -5,6 +5,7 @@ from tests.utils import raise_
|
||||||
|
|
||||||
from monkey_island.cc.models.island_mode_model import IslandMode
|
from monkey_island.cc.models.island_mode_model import IslandMode
|
||||||
from monkey_island.cc.resources import island_mode as island_mode_resource
|
from monkey_island.cc.resources import island_mode as island_mode_resource
|
||||||
|
from monkey_island.cc.resources.island_mode import IslandMode as IslandModeResource
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="function")
|
@pytest.fixture(scope="function")
|
||||||
|
@ -19,21 +20,21 @@ def test_island_mode_post(flask_client, mode, monkeypatch):
|
||||||
lambda _: None,
|
lambda _: None,
|
||||||
)
|
)
|
||||||
resp = flask_client.post(
|
resp = flask_client.post(
|
||||||
"/api/island-mode", data=json.dumps({"mode": mode}), follow_redirects=True
|
IslandModeResource.urls[0], data=json.dumps({"mode": mode}), follow_redirects=True
|
||||||
)
|
)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
def test_island_mode_post__invalid_mode(flask_client):
|
def test_island_mode_post__invalid_mode(flask_client):
|
||||||
resp = flask_client.post(
|
resp = flask_client.post(
|
||||||
"/api/island-mode", data=json.dumps({"mode": "bogus mode"}), follow_redirects=True
|
IslandModeResource.urls[0], data=json.dumps({"mode": "bogus mode"}), follow_redirects=True
|
||||||
)
|
)
|
||||||
assert resp.status_code == 422
|
assert resp.status_code == 422
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("invalid_json", ["42", "{test"])
|
@pytest.mark.parametrize("invalid_json", ["42", "{test"])
|
||||||
def test_island_mode_post__invalid_json(flask_client, invalid_json):
|
def test_island_mode_post__invalid_json(flask_client, invalid_json):
|
||||||
resp = flask_client.post("/api/island-mode", data="{test", follow_redirects=True)
|
resp = flask_client.post(IslandModeResource.urls[0], data="{test", follow_redirects=True)
|
||||||
assert resp.status_code == 400
|
assert resp.status_code == 400
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,23 +42,25 @@ def test_island_mode_post__internal_server_error(monkeypatch, flask_client):
|
||||||
monkeypatch.setattr(island_mode_resource, "set_mode", lambda x: raise_(Exception()))
|
monkeypatch.setattr(island_mode_resource, "set_mode", lambda x: raise_(Exception()))
|
||||||
|
|
||||||
resp = flask_client.post(
|
resp = flask_client.post(
|
||||||
"/api/island-mode", data=json.dumps({"mode": "ransomware"}), follow_redirects=True
|
IslandModeResource.urls[0], data=json.dumps({"mode": "ransomware"}), follow_redirects=True
|
||||||
)
|
)
|
||||||
assert resp.status_code == 500
|
assert resp.status_code == 500
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("mode", ["ransomware", "advanced"])
|
@pytest.mark.parametrize("mode", ["ransomware", "advanced"])
|
||||||
def test_island_mode_endpoint(flask_client, uses_database, mode):
|
def test_island_mode_endpoint(flask_client, uses_database, mode):
|
||||||
flask_client.post("/api/island-mode", data=json.dumps({"mode": mode}), follow_redirects=True)
|
flask_client.post(
|
||||||
resp = flask_client.get("/api/island-mode", follow_redirects=True)
|
IslandModeResource.urls[0], data=json.dumps({"mode": mode}), follow_redirects=True
|
||||||
|
)
|
||||||
|
resp = flask_client.get(IslandModeResource.urls[0], follow_redirects=True)
|
||||||
assert resp.status_code == 200
|
assert resp.status_code == 200
|
||||||
assert json.loads(resp.data)["mode"] == mode
|
assert json.loads(resp.data)["mode"] == mode
|
||||||
|
|
||||||
|
|
||||||
def test_island_mode_endpoint__invalid_mode(flask_client, uses_database):
|
def test_island_mode_endpoint__invalid_mode(flask_client, uses_database):
|
||||||
resp_post = flask_client.post(
|
resp_post = flask_client.post(
|
||||||
"/api/island-mode", data=json.dumps({"mode": "bogus_mode"}), follow_redirects=True
|
IslandModeResource.urls[0], data=json.dumps({"mode": "bogus_mode"}), follow_redirects=True
|
||||||
)
|
)
|
||||||
resp_get = flask_client.get("/api/island-mode", follow_redirects=True)
|
resp_get = flask_client.get(IslandModeResource.urls[0], follow_redirects=True)
|
||||||
assert resp_post.status_code == 422
|
assert resp_post.status_code == 422
|
||||||
assert json.loads(resp_get.data)["mode"] is None
|
assert json.loads(resp_get.data)["mode"] is None
|
||||||
|
|
|
@ -4,6 +4,7 @@ from unittest.mock import MagicMock
|
||||||
import pytest
|
import pytest
|
||||||
from tests.common import StubDIContainer
|
from tests.common import StubDIContainer
|
||||||
|
|
||||||
|
from monkey_island.cc.resources import RemoteRun
|
||||||
from monkey_island.cc.services import AWSService
|
from monkey_island.cc.services import AWSService
|
||||||
from monkey_island.cc.services.aws import AWSCommandResults, AWSCommandStatus
|
from monkey_island.cc.services.aws import AWSCommandResults, AWSCommandStatus
|
||||||
|
|
||||||
|
@ -23,18 +24,18 @@ def flask_client(build_flask_client, mock_aws_service):
|
||||||
|
|
||||||
|
|
||||||
def test_get_invalid_action(flask_client):
|
def test_get_invalid_action(flask_client):
|
||||||
response = flask_client.get("/api/remote-monkey?action=INVALID")
|
response = flask_client.get(f"{RemoteRun.urls[0]}?action=INVALID")
|
||||||
assert response.text.rstrip() == "{}"
|
assert response.text.rstrip() == "{}"
|
||||||
|
|
||||||
|
|
||||||
def test_get_no_action(flask_client):
|
def test_get_no_action(flask_client):
|
||||||
response = flask_client.get("/api/remote-monkey")
|
response = flask_client.get(RemoteRun.urls[0])
|
||||||
assert response.text.rstrip() == "{}"
|
assert response.text.rstrip() == "{}"
|
||||||
|
|
||||||
|
|
||||||
def test_get_not_aws(flask_client, mock_aws_service):
|
def test_get_not_aws(flask_client, mock_aws_service):
|
||||||
mock_aws_service.island_is_running_on_aws = MagicMock(return_value=False)
|
mock_aws_service.island_is_running_on_aws = MagicMock(return_value=False)
|
||||||
response = flask_client.get("/api/remote-monkey?action=list_aws")
|
response = flask_client.get(f"{RemoteRun.urls[0]}?action=list_aws")
|
||||||
assert response.text.rstrip() == '{"is_aws":false}'
|
assert response.text.rstrip() == '{"is_aws":false}'
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,7 +48,7 @@ def test_get_instances(flask_client, mock_aws_service):
|
||||||
mock_aws_service.island_is_running_on_aws = MagicMock(return_value=True)
|
mock_aws_service.island_is_running_on_aws = MagicMock(return_value=True)
|
||||||
mock_aws_service.get_managed_instances = MagicMock(return_value=instances)
|
mock_aws_service.get_managed_instances = MagicMock(return_value=instances)
|
||||||
|
|
||||||
response = flask_client.get("/api/remote-monkey?action=list_aws")
|
response = flask_client.get(f"{RemoteRun.urls[0]}?action=list_aws")
|
||||||
|
|
||||||
assert json.loads(response.text)["instances"] == instances
|
assert json.loads(response.text)["instances"] == instances
|
||||||
assert json.loads(response.text)["is_aws"] is True
|
assert json.loads(response.text)["is_aws"] is True
|
||||||
|
@ -57,12 +58,12 @@ def test_get_instances(flask_client, mock_aws_service):
|
||||||
|
|
||||||
|
|
||||||
def test_post_no_type(flask_client):
|
def test_post_no_type(flask_client):
|
||||||
response = flask_client.post("/api/remote-monkey", data="{}")
|
response = flask_client.post(RemoteRun.urls[0], data="{}")
|
||||||
assert response.status_code == 500
|
assert response.status_code == 500
|
||||||
|
|
||||||
|
|
||||||
def test_post_invalid_type(flask_client):
|
def test_post_invalid_type(flask_client):
|
||||||
response = flask_client.post("/api/remote-monkey", data='{"type": "INVALID"}')
|
response = flask_client.post(RemoteRun.urls[0], data='{"type": "INVALID"}')
|
||||||
assert response.status_code == 500
|
assert response.status_code == 500
|
||||||
|
|
||||||
|
|
||||||
|
@ -103,6 +104,6 @@ def test_post(flask_client, mock_aws_service):
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
response = flask_client.post("/api/remote-monkey", data=request_body)
|
response = flask_client.post(RemoteRun.urls[0], data=request_body)
|
||||||
|
|
||||||
assert json.loads(response.text)["result"] == expected_result
|
assert json.loads(response.text)["result"] == expected_result
|
||||||
|
|
Loading…
Reference in New Issue