/*
 * 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.CreateOrganization;
import io.daytona.api.client.model.CreateOrganizationInvitation;
import io.daytona.api.client.model.CreateOrganizationRole;
import io.daytona.api.client.model.CreateRegion;
import io.daytona.api.client.model.CreateRegionResponse;
import io.daytona.api.client.model.Organization;
import io.daytona.api.client.model.OrganizationInvitation;
import io.daytona.api.client.model.OrganizationRole;
import io.daytona.api.client.model.OrganizationSandboxDefaultLimitedNetworkEgress;
import io.daytona.api.client.model.OrganizationSuspension;
import io.daytona.api.client.model.OrganizationUsageOverview;
import io.daytona.api.client.model.OrganizationUser;
import io.daytona.api.client.model.OtelConfig;
import io.daytona.api.client.model.RegenerateApiKeyResponse;
import io.daytona.api.client.model.Region;
import io.daytona.api.client.model.SnapshotManagerCredentials;
import io.daytona.api.client.model.UpdateOrganizationDefaultRegion;
import io.daytona.api.client.model.UpdateOrganizationInvitation;
import io.daytona.api.client.model.UpdateOrganizationMemberAccess;
import io.daytona.api.client.model.UpdateOrganizationQuota;
import io.daytona.api.client.model.UpdateOrganizationRegionQuota;
import io.daytona.api.client.model.UpdateOrganizationRole;
import io.daytona.api.client.model.UpdateRegion;
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 OrganizationsApi
 */
@Disabled
public class OrganizationsApiTest {

    private final OrganizationsApi api = new OrganizationsApi();

    /**
     * Accept organization invitation
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void acceptOrganizationInvitationTest() throws ApiException {
        String invitationId = null;
        OrganizationInvitation response = api.acceptOrganizationInvitation(invitationId);
        // TODO: test validations
    }

    /**
     * Cancel organization invitation
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void cancelOrganizationInvitationTest() throws ApiException {
        String organizationId = null;
        String invitationId = null;
        api.cancelOrganizationInvitation(organizationId, invitationId);
        // TODO: test validations
    }

    /**
     * Create organization
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createOrganizationTest() throws ApiException {
        CreateOrganization createOrganization = null;
        Organization response = api.createOrganization(createOrganization);
        // TODO: test validations
    }

    /**
     * Create organization invitation
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createOrganizationInvitationTest() throws ApiException {
        String organizationId = null;
        CreateOrganizationInvitation createOrganizationInvitation = null;
        OrganizationInvitation response = api.createOrganizationInvitation(organizationId, createOrganizationInvitation);
        // TODO: test validations
    }

    /**
     * Create organization role
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createOrganizationRoleTest() throws ApiException {
        String organizationId = null;
        CreateOrganizationRole createOrganizationRole = null;
        OrganizationRole response = api.createOrganizationRole(organizationId, createOrganizationRole);
        // TODO: test validations
    }

    /**
     * Create a new region
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createRegionTest() throws ApiException {
        CreateRegion createRegion = null;
        String xDaytonaOrganizationID = null;
        CreateRegionResponse response = api.createRegion(createRegion, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Decline organization invitation
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void declineOrganizationInvitationTest() throws ApiException {
        String invitationId = null;
        api.declineOrganizationInvitation(invitationId);
        // TODO: test validations
    }

    /**
     * Delete organization
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deleteOrganizationTest() throws ApiException {
        String organizationId = null;
        api.deleteOrganization(organizationId);
        // TODO: test validations
    }

    /**
     * Delete organization member
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deleteOrganizationMemberTest() throws ApiException {
        String organizationId = null;
        String userId = null;
        api.deleteOrganizationMember(organizationId, userId);
        // TODO: test validations
    }

    /**
     * Delete organization OpenTelemetry configuration
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deleteOrganizationOtelConfigTest() throws ApiException {
        String organizationId = null;
        api.deleteOrganizationOtelConfig(organizationId);
        // TODO: test validations
    }

    /**
     * Delete organization role
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deleteOrganizationRoleTest() throws ApiException {
        String organizationId = null;
        String roleId = null;
        api.deleteOrganizationRole(organizationId, roleId);
        // TODO: test validations
    }

    /**
     * Delete a region
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deleteRegionTest() throws ApiException {
        String id = null;
        String xDaytonaOrganizationID = null;
        api.deleteRegion(id, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Get organization by ID
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getOrganizationTest() throws ApiException {
        String organizationId = null;
        Organization response = api.getOrganization(organizationId);
        // TODO: test validations
    }

    /**
     * Get count of organization invitations for authenticated user
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getOrganizationInvitationsCountForAuthenticatedUserTest() throws ApiException {
        BigDecimal response = api.getOrganizationInvitationsCountForAuthenticatedUser();
        // TODO: test validations
    }

    /**
     * Get organization OTEL config by organization ID
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getOrganizationOtelConfigTest() throws ApiException {
        String organizationId = null;
        OtelConfig response = api.getOrganizationOtelConfig(organizationId);
        // TODO: test validations
    }

    /**
     * Get organization OTEL config by sandbox auth token
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getOrganizationOtelConfigBySandboxAuthTokenTest() throws ApiException {
        String authToken = null;
        OtelConfig response = api.getOrganizationOtelConfigBySandboxAuthToken(authToken);
        // TODO: test validations
    }

    /**
     * Get organization current usage overview
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getOrganizationUsageOverviewTest() throws ApiException {
        String organizationId = null;
        OrganizationUsageOverview response = api.getOrganizationUsageOverview(organizationId);
        // TODO: test validations
    }

    /**
     * Get region by ID
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getRegionByIdTest() throws ApiException {
        String id = null;
        String xDaytonaOrganizationID = null;
        Region response = api.getRegionById(id, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Leave organization
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void leaveOrganizationTest() throws ApiException {
        String organizationId = null;
        api.leaveOrganization(organizationId);
        // TODO: test validations
    }

    /**
     * List all available regions for the organization
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listAvailableRegionsTest() throws ApiException {
        String xDaytonaOrganizationID = null;
        List<Region> response = api.listAvailableRegions(xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * List pending organization invitations
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listOrganizationInvitationsTest() throws ApiException {
        String organizationId = null;
        List<OrganizationInvitation> response = api.listOrganizationInvitations(organizationId);
        // TODO: test validations
    }

    /**
     * List organization invitations for authenticated user
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listOrganizationInvitationsForAuthenticatedUserTest() throws ApiException {
        List<OrganizationInvitation> response = api.listOrganizationInvitationsForAuthenticatedUser();
        // TODO: test validations
    }

    /**
     * List organization members
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listOrganizationMembersTest() throws ApiException {
        String organizationId = null;
        List<OrganizationUser> response = api.listOrganizationMembers(organizationId);
        // TODO: test validations
    }

    /**
     * List organization roles
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listOrganizationRolesTest() throws ApiException {
        String organizationId = null;
        List<OrganizationRole> response = api.listOrganizationRoles(organizationId);
        // TODO: test validations
    }

    /**
     * List organizations
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listOrganizationsTest() throws ApiException {
        List<Organization> response = api.listOrganizations();
        // TODO: test validations
    }

    /**
     * Regenerate proxy API key for a region
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void regenerateProxyApiKeyTest() throws ApiException {
        String id = null;
        String xDaytonaOrganizationID = null;
        RegenerateApiKeyResponse response = api.regenerateProxyApiKey(id, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Regenerate snapshot manager credentials for a region
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void regenerateSnapshotManagerCredentialsTest() throws ApiException {
        String id = null;
        String xDaytonaOrganizationID = null;
        SnapshotManagerCredentials response = api.regenerateSnapshotManagerCredentials(id, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Regenerate SSH gateway API key for a region
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void regenerateSshGatewayApiKeyTest() throws ApiException {
        String id = null;
        String xDaytonaOrganizationID = null;
        RegenerateApiKeyResponse response = api.regenerateSshGatewayApiKey(id, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Set default region for organization
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void setOrganizationDefaultRegionTest() throws ApiException {
        String organizationId = null;
        UpdateOrganizationDefaultRegion updateOrganizationDefaultRegion = null;
        api.setOrganizationDefaultRegion(organizationId, updateOrganizationDefaultRegion);
        // TODO: test validations
    }

    /**
     * Suspend organization
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void suspendOrganizationTest() throws ApiException {
        String organizationId = null;
        OrganizationSuspension organizationSuspension = null;
        api.suspendOrganization(organizationId, organizationSuspension);
        // TODO: test validations
    }

    /**
     * Unsuspend organization
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void unsuspendOrganizationTest() throws ApiException {
        String organizationId = null;
        api.unsuspendOrganization(organizationId);
        // TODO: test validations
    }

    /**
     * Update access for organization member
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateAccessForOrganizationMemberTest() throws ApiException {
        String organizationId = null;
        String userId = null;
        UpdateOrganizationMemberAccess updateOrganizationMemberAccess = null;
        OrganizationUser response = api.updateAccessForOrganizationMember(organizationId, userId, updateOrganizationMemberAccess);
        // TODO: test validations
    }

    /**
     * Update experimental configuration
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateExperimentalConfigTest() throws ApiException {
        String organizationId = null;
        Map<String, Object> requestBody = null;
        api.updateExperimentalConfig(organizationId, requestBody);
        // TODO: test validations
    }

    /**
     * Update organization invitation
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateOrganizationInvitationTest() throws ApiException {
        String organizationId = null;
        String invitationId = null;
        UpdateOrganizationInvitation updateOrganizationInvitation = null;
        OrganizationInvitation response = api.updateOrganizationInvitation(organizationId, invitationId, updateOrganizationInvitation);
        // TODO: test validations
    }

    /**
     * Update organization OpenTelemetry configuration
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateOrganizationOtelConfigTest() throws ApiException {
        String organizationId = null;
        OtelConfig otelConfig = null;
        api.updateOrganizationOtelConfig(organizationId, otelConfig);
        // TODO: test validations
    }

    /**
     * Update organization quota
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateOrganizationQuotaTest() throws ApiException {
        String organizationId = null;
        UpdateOrganizationQuota updateOrganizationQuota = null;
        api.updateOrganizationQuota(organizationId, updateOrganizationQuota);
        // TODO: test validations
    }

    /**
     * Update organization region quota
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateOrganizationRegionQuotaTest() throws ApiException {
        String organizationId = null;
        String regionId = null;
        UpdateOrganizationRegionQuota updateOrganizationRegionQuota = null;
        api.updateOrganizationRegionQuota(organizationId, regionId, updateOrganizationRegionQuota);
        // TODO: test validations
    }

    /**
     * Update organization role
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateOrganizationRoleTest() throws ApiException {
        String organizationId = null;
        String roleId = null;
        UpdateOrganizationRole updateOrganizationRole = null;
        OrganizationRole response = api.updateOrganizationRole(organizationId, roleId, updateOrganizationRole);
        // TODO: test validations
    }

    /**
     * Update region configuration
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateRegionTest() throws ApiException {
        String id = null;
        UpdateRegion updateRegion = null;
        String xDaytonaOrganizationID = null;
        api.updateRegion(id, updateRegion, xDaytonaOrganizationID);
        // TODO: test validations
    }

    /**
     * Update sandbox default limited network egress
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void updateSandboxDefaultLimitedNetworkEgressTest() throws ApiException {
        String organizationId = null;
        OrganizationSandboxDefaultLimitedNetworkEgress organizationSandboxDefaultLimitedNetworkEgress = null;
        api.updateSandboxDefaultLimitedNetworkEgress(organizationId, organizationSandboxDefaultLimitedNetworkEgress);
        // TODO: test validations
    }

}
