/*
 * Daytona Toolbox API
 * Daytona Toolbox API
 *
 * The version of the OpenAPI document: v0.0.0-dev
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package io.daytona.toolbox.client.api;

import io.daytona.toolbox.client.ApiException;
import io.daytona.toolbox.client.model.CodeRunRequest;
import io.daytona.toolbox.client.model.CodeRunResponse;
import io.daytona.toolbox.client.model.Command;
import io.daytona.toolbox.client.model.CreateSessionRequest;
import io.daytona.toolbox.client.model.ExecuteRequest;
import io.daytona.toolbox.client.model.ExecuteResponse;
import io.daytona.toolbox.client.model.PtyCreateRequest;
import io.daytona.toolbox.client.model.PtyCreateResponse;
import io.daytona.toolbox.client.model.PtyListResponse;
import io.daytona.toolbox.client.model.PtyResizeRequest;
import io.daytona.toolbox.client.model.PtySessionInfo;
import io.daytona.toolbox.client.model.Session;
import io.daytona.toolbox.client.model.SessionCommandLogsResponse;
import io.daytona.toolbox.client.model.SessionExecuteRequest;
import io.daytona.toolbox.client.model.SessionExecuteResponse;
import io.daytona.toolbox.client.model.SessionSendInputRequest;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * API tests for ProcessApi
 */
@Disabled
public class ProcessApiTest {

    private final ProcessApi api = new ProcessApi();

    /**
     * Execute code
     *
     * Execute Python, JavaScript, or TypeScript code and return output, exit code, and artifacts
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void codeRunTest() throws ApiException {
        CodeRunRequest request = null;
        CodeRunResponse response = api.codeRun(request);
        // TODO: test validations
    }

    /**
     * Connect to PTY session via WebSocket
     *
     * Establish a WebSocket connection to interact with a pseudo-terminal session
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void connectPtySessionTest() throws ApiException {
        String sessionId = null;
        api.connectPtySession(sessionId);
        // TODO: test validations
    }

    /**
     * Create a new PTY session
     *
     * Create a new pseudo-terminal session with specified configuration
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createPtySessionTest() throws ApiException {
        PtyCreateRequest request = null;
        PtyCreateResponse response = api.createPtySession(request);
        // TODO: test validations
    }

    /**
     * Create a new session
     *
     * Create a new shell session for command execution
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createSessionTest() throws ApiException {
        CreateSessionRequest request = null;
        api.createSession(request);
        // TODO: test validations
    }

    /**
     * Delete a PTY session
     *
     * Delete a pseudo-terminal session and terminate its process
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deletePtySessionTest() throws ApiException {
        String sessionId = null;
        Map<String, Object> response = api.deletePtySession(sessionId);
        // TODO: test validations
    }

    /**
     * Delete a session
     *
     * Delete an existing shell session
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deleteSessionTest() throws ApiException {
        String sessionId = null;
        api.deleteSession(sessionId);
        // TODO: test validations
    }

    /**
     * Execute a command
     *
     * Execute a shell command and return the output and exit code
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void executeCommandTest() throws ApiException {
        ExecuteRequest request = null;
        ExecuteResponse response = api.executeCommand(request);
        // TODO: test validations
    }

    /**
     * Get entrypoint logs
     *
     * Get logs for a sandbox entrypoint session. Returns JSON with separated stdout/stderr for SDK &gt;&#x3D; 0.161.0, plain text otherwise. Supports WebSocket streaming.
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getEntrypointLogsTest() throws ApiException {
        Boolean follow = null;
        SessionCommandLogsResponse response = api.getEntrypointLogs(follow);
        // TODO: test validations
    }

    /**
     * Get entrypoint session details
     *
     * Get details of an entrypoint session including its commands
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getEntrypointSessionTest() throws ApiException {
        Session response = api.getEntrypointSession();
        // TODO: test validations
    }

    /**
     * Get PTY session information
     *
     * Get detailed information about a specific pseudo-terminal session
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getPtySessionTest() throws ApiException {
        String sessionId = null;
        PtySessionInfo response = api.getPtySession(sessionId);
        // TODO: test validations
    }

    /**
     * Get session details
     *
     * Get details of a specific session including its commands
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSessionTest() throws ApiException {
        String sessionId = null;
        Session response = api.getSession(sessionId);
        // TODO: test validations
    }

    /**
     * Get session command details
     *
     * Get details of a specific command within a session
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSessionCommandTest() throws ApiException {
        String sessionId = null;
        String commandId = null;
        Command response = api.getSessionCommand(sessionId, commandId);
        // TODO: test validations
    }

    /**
     * Get session command logs
     *
     * Get logs for a specific command within a session. Returns JSON with separated stdout/stderr for SDK &gt;&#x3D; 0.167.0, plain text otherwise. Supports WebSocket streaming.
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSessionCommandLogsTest() throws ApiException {
        String sessionId = null;
        String commandId = null;
        Boolean follow = null;
        SessionCommandLogsResponse response = api.getSessionCommandLogs(sessionId, commandId, follow);
        // TODO: test validations
    }

    /**
     * List all PTY sessions
     *
     * Get a list of all active pseudo-terminal sessions
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listPtySessionsTest() throws ApiException {
        PtyListResponse response = api.listPtySessions();
        // TODO: test validations
    }

    /**
     * List all sessions
     *
     * Get a list of all active shell sessions
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listSessionsTest() throws ApiException {
        List<Session> response = api.listSessions();
        // TODO: test validations
    }

    /**
     * Resize a PTY session
     *
     * Resize the terminal dimensions of a pseudo-terminal session
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void resizePtySessionTest() throws ApiException {
        String sessionId = null;
        PtyResizeRequest request = null;
        PtySessionInfo response = api.resizePtySession(sessionId, request);
        // TODO: test validations
    }

    /**
     * Send input to command
     *
     * Send input data to a running command in a session for interactive execution
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void sendInputTest() throws ApiException {
        String sessionId = null;
        String commandId = null;
        SessionSendInputRequest request = null;
        api.sendInput(sessionId, commandId, request);
        // TODO: test validations
    }

    /**
     * Execute command in session
     *
     * Execute a command within an existing shell session
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void sessionExecuteCommandTest() throws ApiException {
        String sessionId = null;
        SessionExecuteRequest request = null;
        SessionExecuteResponse response = api.sessionExecuteCommand(sessionId, request);
        // TODO: test validations
    }

}
