/**
 * Standard batch-op example workflow for e2e tests.
 * Covers: connect, command (create file + log), sftp_download,
 *         sftp_upload, command (verify + cleanup).
 */

const {
  TEST_HOST,
  TEST_PORT,
  TEST_USER,
  TEST_PASS
} = require('./env')

module.exports = [
  {
    name: 'Connect SSH',
    action: 'connect',
    params: {
      host: TEST_HOST,
      port: parseInt(TEST_PORT, 10),
      username: TEST_USER,
      authType: 'password',
      password: TEST_PASS,
      enableSftp: true
    }
  },
  {
    name: 'Create 5M Test File',
    action: 'command',
    prevDelay: 500,
    afterDelay: 500,
    command: "fallocate -l 5M /tmp/test_5m_file.bin && rm -f /tmp/test_log.log && echo '[LOG] Created 5M test file at $(date)' >> /tmp/test_log.log"
  },
  {
    name: 'Log creation',
    action: 'command',
    afterDelay: 200,
    command: "ls -la /tmp/test_5m_file.bin >> /tmp/test_log.log 2>&1 && echo '[LOG] File size logged at $(date)' >> /tmp/test_log.log"
  },
  {
    name: 'Download 5M File',
    action: 'sftp_download',
    afterDelay: 200,
    remotePath: '/tmp/test_5m_file.bin',
    localPath: '/tmp/test_5m_file.bin'
  },
  {
    name: 'Log after download',
    action: 'command',
    afterDelay: 200,
    command: "echo '[LOG] Download complete at $(date)' >> /tmp/test_log.log"
  },
  {
    name: 'Delete Remote 5M File',
    action: 'command',
    afterDelay: 200,
    command: "rm /tmp/test_5m_file.bin && echo '[LOG] Deleted remote 5M file at $(date)' >> /tmp/test_log.log"
  },
  {
    name: 'Upload Downloaded File to Remote',
    action: 'sftp_upload',
    afterDelay: 200,
    localPath: '/tmp/test_5m_file.bin',
    remotePath: '/tmp/test_5m_file_uploaded.bin'
  },
  {
    name: 'Log after upload',
    action: 'command',
    afterDelay: 200,
    command: "echo '[LOG] Upload complete at $(date)' >> /tmp/test_log.log"
  },
  {
    name: 'Verify and clean up',
    action: 'command',
    command: "ls -la /tmp/test_5m_file_uploaded.bin >> /tmp/test_log.log 2>&1 && rm -f /tmp/test_5m_file*.bin && echo '[LOG] Cleaned up at $(date)' >> /tmp/test_log.log"
  }
]
