/*
 * 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 java.io.File;
import io.daytona.toolbox.client.model.FileInfo;
import io.daytona.toolbox.client.model.FilesDownloadRequest;
import io.daytona.toolbox.client.model.Match;
import io.daytona.toolbox.client.model.ReplaceRequest;
import io.daytona.toolbox.client.model.ReplaceResult;
import io.daytona.toolbox.client.model.SearchFilesResponse;
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 FileSystemApi
 */
@Disabled
public class FileSystemApiTest {

    private final FileSystemApi api = new FileSystemApi();

    /**
     * Create a folder
     *
     * Create a folder with the specified path and optional permissions
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void createFolderTest() throws ApiException {
        String path = null;
        String mode = null;
        api.createFolder(path, mode);
        // TODO: test validations
    }

    /**
     * Delete a file or directory
     *
     * Delete a file or directory at the specified path
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deleteFileTest() throws ApiException {
        String path = null;
        Boolean recursive = null;
        api.deleteFile(path, recursive);
        // TODO: test validations
    }

    /**
     * Download a file
     *
     * Download a file by providing its path
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void downloadFileTest() throws ApiException {
        String path = null;
        File response = api.downloadFile(path);
        // TODO: test validations
    }

    /**
     * Download multiple files
     *
     * Download multiple files by providing their paths. Successful files are returned as multipart parts named &#x60;file&#x60;. Per-file failures are returned as multipart parts named &#x60;error&#x60; with JSON payloads shaped like ErrorResponse.
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void downloadFilesTest() throws ApiException {
        FilesDownloadRequest downloadFiles = null;
        Map<String, Object> response = api.downloadFiles(downloadFiles);
        // TODO: test validations
    }

    /**
     * Find text in files
     *
     * Search for text pattern within files in a directory
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void findInFilesTest() throws ApiException {
        String path = null;
        String pattern = null;
        List<Match> response = api.findInFiles(path, pattern);
        // TODO: test validations
    }

    /**
     * Get file information
     *
     * Get detailed information about a file or directory
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getFileInfoTest() throws ApiException {
        String path = null;
        FileInfo response = api.getFileInfo(path);
        // TODO: test validations
    }

    /**
     * List files and directories
     *
     * List files and directories in the specified path
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listFilesTest() throws ApiException {
        String path = null;
        List<FileInfo> response = api.listFiles(path);
        // TODO: test validations
    }

    /**
     * Move or rename file/directory
     *
     * Move or rename a file or directory from source to destination
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void moveFileTest() throws ApiException {
        String source = null;
        String destination = null;
        api.moveFile(source, destination);
        // TODO: test validations
    }

    /**
     * Replace text in files
     *
     * Replace text pattern with new value in multiple files
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void replaceInFilesTest() throws ApiException {
        ReplaceRequest request = null;
        List<ReplaceResult> response = api.replaceInFiles(request);
        // TODO: test validations
    }

    /**
     * Search files by pattern
     *
     * Search for files matching a specific pattern in a directory
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void searchFilesTest() throws ApiException {
        String path = null;
        String pattern = null;
        SearchFilesResponse response = api.searchFiles(path, pattern);
        // TODO: test validations
    }

    /**
     * Set file permissions
     *
     * Set file permissions, ownership, and group for a file or directory
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void setFilePermissionsTest() throws ApiException {
        String path = null;
        String owner = null;
        String group = null;
        String mode = null;
        api.setFilePermissions(path, owner, group, mode);
        // TODO: test validations
    }

    /**
     * Upload a file
     *
     * Upload a file to the specified path
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void uploadFileTest() throws ApiException {
        String path = null;
        File _file = null;
        Map<String, Object> response = api.uploadFile(path, _file);
        // TODO: test validations
    }

    /**
     * Upload multiple files
     *
     * Upload multiple files with their destination paths
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void uploadFilesTest() throws ApiException {
        api.uploadFiles();
        // TODO: test validations
    }

}
