Verified Commit 132acfe8 authored by Marek Veselý's avatar Marek Veselý
Browse files

add sandbox-log testing

parent 1decc077
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ from running_exercise.models import (
    ActionLog,
    EmailThread,
    Email,
    SandboxLogDetails,
    ThreadParticipant,
    ToolDetails,
    InjectDetails,
@@ -407,6 +408,7 @@ class OpenSearchAccessType(DjangoObjectType):
    team = graphene.Field(TeamType, required=True)
    index_name = graphene.String(required=True)
    username = graphene.String(required=True)
    last_sync = graphene.DateTime()
    password = graphene.String(required=True)

    def resolve_team(self, info):
@@ -995,6 +997,16 @@ class IMilestoneModificationDetailsType(DjangoObjectType):
        )


class TSandboxLogDetailsType(DjangoObjectType):
    class Meta:
        model = SandboxLogDetails


class ISandboxLogDetailsType(DjangoObjectType):
    class Meta:
        model = SandboxLogDetails


class TActionLogDetails(graphene.Union):
    class Meta:
        types = [
@@ -1008,6 +1020,7 @@ class TActionLogDetails(graphene.Union):
            TTeamQuestionnaireStateType,
            TFileDownloadDetailsType,
            TMilestoneModificationDetailsType,
            TSandboxLogDetailsType,
        ]


@@ -1043,6 +1056,7 @@ class IActionLogDetails(graphene.Union):
            ITeamQuestionnaireStateType,
            IFileDownloadDetailsType,
            IMilestoneModificationDetailsType,
            ISandboxLogDetailsType,
        ]


+1 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ class Client:
    def __init__(self, host: str, admin_username: str, admin_password: str):
        self.session = requests.session()
        self.url = host
        self.session.verify = False

        self.session.headers["Accept"] = "application/json"
        login(
+2 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@ class GraphQLUser(HttpUser):
        self.client.headers["Accept"] = "application/json"
        self.client.headers["Content-Type"] = "application/json"

        self.client.verify = False

    def execute_query(self, action: APIAction) -> Response:
        logging.debug(f"Sending {type(action).__name__}")
        with self.client.post(
+13 −0
Original line number Diff line number Diff line
@@ -217,6 +217,19 @@ class TraineeSimulationUser(GraphQLUser):
                    name="downloadFile",
                    headers={"Accept": "*/*"},
                )
        elif action_name == "sandbox_log":
            self.client.post(
                url=f"{self.host}/sandbox/{self.team.id}/",
                name="createSandboxLog",
                json={
                    "@timestamp": action["@timestamp"],
                    "cmd": action["cmd"],
                    "cmd_source": action["cmd_source"],
                    "working_directory": action["working_directory"],
                    "username": action["username"],
                    "container": action["container"],
                },
            )
        else:
            logging.warning(
                f"Unsupported trainee action {action_name}, skipping"
+2 −2
Original line number Diff line number Diff line
@@ -222,8 +222,8 @@ def create_exercise(
    create_team_questionnaire_states(teams, definition)
    create_drive_permissions(teams, definition.files.filter(is_drive=True))

    if exercise.technical:
        create_opensearch_exercise(teams, exercise.id)
    # if exercise.technical:
    #     create_opensearch_exercise(teams, exercise.id)

    return exercise

Loading