/*
 * Daytona
 * Daytona AI platform API Docs
 *
 * The version of the OpenAPI document: 1.0
 * Contact: support@daytona.com
 *
 * 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.api.client.api;

import io.daytona.api.client.ApiException;
import java.math.BigDecimal;
import io.daytona.api.client.model.CreateSandbox;
import io.daytona.api.client.model.CreateSandboxSnapshot;
import io.daytona.api.client.model.ForkSandbox;
import io.daytona.api.client.model.MetricsResponse;
import java.time.OffsetDateTime;
import io.daytona.api.client.model.Organization;
import io.daytona.api.client.model.PaginatedLogs;
import io.daytona.api.client.model.PaginatedSandboxes;
import io.daytona.api.client.model.PaginatedTraces;
import io.daytona.api.client.model.PortPreviewUrl;
import io.daytona.api.client.model.RegionQuota;
import io.daytona.api.client.model.ResizeSandbox;
import io.daytona.api.client.model.Sandbox;
import io.daytona.api.client.model.SandboxLabels;
import io.daytona.api.client.model.SignedPortPreviewUrl;
import io.daytona.api.client.model.SshAccessDto;
import io.daytona.api.client.model.SshAccessValidationDto;
import io.daytona.api.client.model.ToolboxProxyUrl;
import io.daytona.api.client.model.TraceSpan;
import io.daytona.api.client.model.UpdateSandboxNetworkSettings;
import io.daytona.api.client.model.UpdateSandboxStateDto;
import io.daytona.api.client.model.Url;
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 SandboxApi
 */
@Disabled
public class SandboxApiTest {

    private final SandboxApi api = new SandboxApi();

    /**
     * Archive sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void archiveSandboxTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.archiveSandbox(sandboxIdOrName, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Create sandbox backup
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createBackupTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.createBackup(sandboxIdOrName, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Create a new sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createSandboxTest() throws ApiException {
        CreateSandbox createSandbox = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.createSandbox(createSandbox, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Create a snapshot from a sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createSandboxSnapshotTest() throws ApiException {
        String sandboxIdOrName = null;
        CreateSandboxSnapshot createSandboxSnapshot = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.createSandboxSnapshot(sandboxIdOrName, createSandboxSnapshot, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Create SSH access for sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createSshAccessTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        BigDecimal expiresInMinutes = null;
        SshAccessDto response = api.createSshAccess(sandboxIdOrName, xDaytonaOrganizationID, expiresInMinutes);
        // TODO: test validations
    }

    /**
     * Delete sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deleteSandboxTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.deleteSandbox(sandboxIdOrName, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Expire signed preview URL for a sandbox port
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void expireSignedPortPreviewUrlTest() throws ApiException {
        String sandboxIdOrName = null;
        Integer port = null;
        String token = null;
        String xDaytonaOrganizationID = null;
        api.expireSignedPortPreviewUrl(sandboxIdOrName, port, token, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Fork a sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void forkSandboxTest() throws ApiException {
        String sandboxIdOrName = null;
        ForkSandbox forkSandbox = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.forkSandbox(sandboxIdOrName, forkSandbox, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Get build logs
     *
     * This endpoint is deprecated. Use &#x60;getBuildLogsUrl&#x60; instead.
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getBuildLogsTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Boolean follow = null;
        api.getBuildLogs(sandboxIdOrName, xDaytonaOrganizationID, follow);
        // TODO: test validations
    }

    /**
     * Get build logs URL
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getBuildLogsUrlTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Url response = api.getBuildLogsUrl(sandboxIdOrName, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Get organization by sandbox ID
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getOrganizationBySandboxIdTest() throws ApiException {
        String sandboxId = null;
        String xDaytonaOrganizationID = null;
        Organization response = api.getOrganizationBySandboxId(sandboxId, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Get preview URL for a sandbox port
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getPortPreviewUrlTest() throws ApiException {
        String sandboxIdOrName = null;
        BigDecimal port = null;
        String xDaytonaOrganizationID = null;
        PortPreviewUrl response = api.getPortPreviewUrl(sandboxIdOrName, port, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Get region quota by sandbox ID
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getRegionQuotaBySandboxIdTest() throws ApiException {
        String sandboxId = null;
        String xDaytonaOrganizationID = null;
        RegionQuota response = api.getRegionQuotaBySandboxId(sandboxId, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Get sandbox details
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSandboxTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Boolean verbose = null;
        Sandbox response = api.getSandbox(sandboxIdOrName, xDaytonaOrganizationID, verbose);
        // TODO: test validations
    }

    /**
     * Get sandbox fork ancestor chain
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSandboxAncestorsTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        List<Sandbox> response = api.getSandboxAncestors(sandboxIdOrName, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Get sandbox fork children
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSandboxForksTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Boolean includeDestroyed = null;
        List<Sandbox> response = api.getSandboxForks(sandboxIdOrName, xDaytonaOrganizationID, includeDestroyed);
        // TODO: test validations
    }

    /**
     * Get sandbox logs
     *
     * Retrieve OTEL logs for a sandbox within a time range
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSandboxLogsTest() throws ApiException {
        String sandboxId = null;
        OffsetDateTime from = null;
        OffsetDateTime to = null;
        String xDaytonaOrganizationID = null;
        BigDecimal page = null;
        BigDecimal limit = null;
        List<String> severities = null;
        String search = null;
        PaginatedLogs response = api.getSandboxLogs(sandboxId, from, to, xDaytonaOrganizationID, page, limit, severities, search);
        // TODO: test validations
    }

    /**
     * Get sandbox metrics
     *
     * Retrieve OTEL metrics for a sandbox within a time range
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSandboxMetricsTest() throws ApiException {
        String sandboxId = null;
        OffsetDateTime from = null;
        OffsetDateTime to = null;
        String xDaytonaOrganizationID = null;
        List<String> metricNames = null;
        MetricsResponse response = api.getSandboxMetrics(sandboxId, from, to, xDaytonaOrganizationID, metricNames);
        // TODO: test validations
    }

    /**
     * Get sandbox fork parent
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSandboxParentTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.getSandboxParent(sandboxIdOrName, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Get trace spans
     *
     * Retrieve all spans for a specific trace
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSandboxTraceSpansTest() throws ApiException {
        String sandboxId = null;
        String traceId = null;
        String xDaytonaOrganizationID = null;
        List<TraceSpan> response = api.getSandboxTraceSpans(sandboxId, traceId, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Get sandbox traces
     *
     * Retrieve OTEL traces for a sandbox within a time range
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSandboxTracesTest() throws ApiException {
        String sandboxId = null;
        OffsetDateTime from = null;
        OffsetDateTime to = null;
        String xDaytonaOrganizationID = null;
        BigDecimal page = null;
        BigDecimal limit = null;
        PaginatedTraces response = api.getSandboxTraces(sandboxId, from, to, xDaytonaOrganizationID, page, limit);
        // TODO: test validations
    }

    /**
     * Get sandboxes for the authenticated runner
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSandboxesForRunnerTest() throws ApiException {
        String xDaytonaOrganizationID = null;
        String states = null;
        Boolean skipReconcilingSandboxes = null;
        List<Sandbox> response = api.getSandboxesForRunner(xDaytonaOrganizationID, states, skipReconcilingSandboxes);
        // TODO: test validations
    }

    /**
     * Get signed preview URL for a sandbox port
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getSignedPortPreviewUrlTest() throws ApiException {
        String sandboxIdOrName = null;
        Integer port = null;
        String xDaytonaOrganizationID = null;
        Integer expiresInSeconds = null;
        SignedPortPreviewUrl response = api.getSignedPortPreviewUrl(sandboxIdOrName, port, xDaytonaOrganizationID, expiresInSeconds);
        // TODO: test validations
    }

    /**
     * Get toolbox proxy URL for a sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getToolboxProxyUrlTest() throws ApiException {
        String sandboxId = null;
        String xDaytonaOrganizationID = null;
        ToolboxProxyUrl response = api.getToolboxProxyUrl(sandboxId, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * List all sandboxes
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listSandboxesTest() throws ApiException {
        String xDaytonaOrganizationID = null;
        Boolean verbose = null;
        String labels = null;
        Boolean includeErroredDeleted = null;
        List<Sandbox> response = api.listSandboxes(xDaytonaOrganizationID, verbose, labels, includeErroredDeleted);
        // TODO: test validations
    }

    /**
     * List all sandboxes paginated
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listSandboxesPaginatedTest() throws ApiException {
        String xDaytonaOrganizationID = null;
        BigDecimal page = null;
        BigDecimal limit = null;
        String id = null;
        String name = null;
        String labels = null;
        Boolean includeErroredDeleted = null;
        List<String> states = null;
        List<String> snapshots = null;
        List<String> regions = null;
        BigDecimal minCpu = null;
        BigDecimal maxCpu = null;
        BigDecimal minMemoryGiB = null;
        BigDecimal maxMemoryGiB = null;
        BigDecimal minDiskGiB = null;
        BigDecimal maxDiskGiB = null;
        OffsetDateTime lastEventAfter = null;
        OffsetDateTime lastEventBefore = null;
        String sort = null;
        String order = null;
        PaginatedSandboxes response = api.listSandboxesPaginated(xDaytonaOrganizationID, page, limit, id, name, labels, includeErroredDeleted, states, snapshots, regions, minCpu, maxCpu, minMemoryGiB, maxMemoryGiB, minDiskGiB, maxDiskGiB, lastEventAfter, lastEventBefore, sort, order);
        // TODO: test validations
    }

    /**
     * Recover sandbox from error state
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void recoverSandboxTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Boolean skipStart = null;
        Sandbox response = api.recoverSandbox(sandboxIdOrName, xDaytonaOrganizationID, skipStart);
        // TODO: test validations
    }

    /**
     * Replace sandbox labels
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void replaceLabelsTest() throws ApiException {
        String sandboxIdOrName = null;
        SandboxLabels sandboxLabels = null;
        String xDaytonaOrganizationID = null;
        SandboxLabels response = api.replaceLabels(sandboxIdOrName, sandboxLabels, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Resize sandbox resources
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void resizeSandboxTest() throws ApiException {
        String sandboxIdOrName = null;
        ResizeSandbox resizeSandbox = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.resizeSandbox(sandboxIdOrName, resizeSandbox, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Revoke SSH access for sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void revokeSshAccessTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        String token = null;
        Sandbox response = api.revokeSshAccess(sandboxIdOrName, xDaytonaOrganizationID, token);
        // TODO: test validations
    }

    /**
     * Set sandbox auto-archive interval
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void setAutoArchiveIntervalTest() throws ApiException {
        String sandboxIdOrName = null;
        BigDecimal interval = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.setAutoArchiveInterval(sandboxIdOrName, interval, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Set sandbox auto-delete interval
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void setAutoDeleteIntervalTest() throws ApiException {
        String sandboxIdOrName = null;
        BigDecimal interval = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.setAutoDeleteInterval(sandboxIdOrName, interval, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Set sandbox auto-stop interval
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void setAutostopIntervalTest() throws ApiException {
        String sandboxIdOrName = null;
        BigDecimal interval = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.setAutostopInterval(sandboxIdOrName, interval, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Start sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void startSandboxTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.startSandbox(sandboxIdOrName, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Stop sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void stopSandboxTest() throws ApiException {
        String sandboxIdOrName = null;
        String xDaytonaOrganizationID = null;
        Boolean force = null;
        Sandbox response = api.stopSandbox(sandboxIdOrName, xDaytonaOrganizationID, force);
        // TODO: test validations
    }

    /**
     * Update sandbox last activity
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateLastActivityTest() throws ApiException {
        String sandboxId = null;
        String xDaytonaOrganizationID = null;
        api.updateLastActivity(sandboxId, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Update sandbox network settings
     *
     * Changes outbound network policy on the runner for a running sandbox (for example block all traffic, restore access, or set a CIDR allow list).
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateNetworkSettingsTest() throws ApiException {
        String sandboxIdOrName = null;
        UpdateSandboxNetworkSettings updateSandboxNetworkSettings = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.updateNetworkSettings(sandboxIdOrName, updateSandboxNetworkSettings, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Update public status
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updatePublicStatusTest() throws ApiException {
        String sandboxIdOrName = null;
        Boolean isPublic = null;
        String xDaytonaOrganizationID = null;
        Sandbox response = api.updatePublicStatus(sandboxIdOrName, isPublic, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Update sandbox state
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateSandboxStateTest() throws ApiException {
        String sandboxId = null;
        UpdateSandboxStateDto updateSandboxStateDto = null;
        String xDaytonaOrganizationID = null;
        api.updateSandboxState(sandboxId, updateSandboxStateDto, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Validate SSH access for sandbox
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void validateSshAccessTest() throws ApiException {
        String token = null;
        String xDaytonaOrganizationID = null;
        SshAccessValidationDto response = api.validateSshAccess(token, xDaytonaOrganizationID);
        // TODO: test validations
    }

}
