Skip to content

Integration Test

Integration Test #56

name: Integration Test
on:
workflow_dispatch:
inputs:
os:
description: "Platform to test"
required: true
type: choice
options:
- windows-latest
- ubuntu-latest
- macos-latest
jobs:
build:
permissions:
contents: read
uses: ./.github/workflows/build.yml
with:
os_list: "['${{ inputs.os }}']"
test-ubuntu-latest:
permissions:
contents: read
needs: build
if: inputs.os == 'ubuntu-latest'
runs-on: ubuntu-latest
steps:
- name: Download compiled binary
uses: actions/download-artifact@v4
with:
name: ubuntu-latest
path: ./dist
- name: Make binary executable
run: chmod +x ./dist/rewst_agent_config.linux.bin
- name: Install agent
id: install_agent
shell: bash
run: |
sudo ./dist/rewst_agent_config.linux.bin --config-url ${{ vars.IT_CONFIG_URL }} --config-secret ${{ secrets.IT_CONFIG_SECRET }} --org-id ${{ vars.IT_ORG_ID }}
echo "service=rewst_remote_agent_${{ vars.IT_ORG_ID }}" >> $GITHUB_OUTPUT
- name: Check service
shell: bash
run: |
systemctl status ${{ steps.install_agent.outputs.service }}
- name: Get device id
id: get_device_id
shell: bash
run: |
echo "value=$(cat /etc/rewst_remote_agent/${{ vars.IT_ORG_ID }}/config.json | jq -r '.device_id')" >> "$GITHUB_OUTPUT"
- name: Send test command
shell: bash
run: |
curl --location '${{ vars.IT_SEND_COMMAND_TRIGGER_URL }}' \
--form 'device_id="${{ steps.get_device_id.outputs.value }}"' \
--form 'commands="echo \"hello world\""'
- name: Uninstall agent
shell: bash
run: |
sudo ./dist/rewst_agent_config.linux.bin --uninstall --org-id ${{ vars.IT_ORG_ID }}
- name: Check deleted directories
shell: pwsh
run: |
if (Test-Path -Path "/etc/rewst_remote_agent/${{ vars.IT_ORG_ID }}") { exit 1 }
if (Test-Path -Path "/usr/local/bin/rewst_remote_agent/${{ vars.IT_ORG_ID }}") { exit 1 }
if (Test-Path -Path "/tmp/rewst_remote_agent/scripts/${{ vars.IT_ORG_ID }}") { exit 1 }
echo "All directories have been deleted"
test-windows-latest:
permissions:
contents: read
needs: build
if: inputs.os == 'windows-latest'
runs-on: windows-latest
steps:
- name: Download compiled binary
uses: actions/download-artifact@v4
with:
name: windows-latest
path: ./dist
- name: Install agent
id: install_agent
shell: pwsh
run: |
./dist/rewst_agent_config.win.exe --config-url ${{ vars.IT_CONFIG_URL }} --config-secret ${{ secrets.IT_CONFIG_SECRET }} --org-id ${{ vars.IT_ORG_ID }}
Write-Output "service=RewstRemoteAgent_${{ vars.IT_ORG_ID }}" >> $env:GITHUB_OUTPUT
- name: Check service
shell: pwsh
run: |
sc.exe query ${{ steps.install_agent.outputs.service }}
- name: Get device id
id: get_device_id
shell: pwsh
run: |
(Get-Content C:\ProgramData\RewstRemoteAgent\${{ vars.IT_ORG_ID }}\config.json | ConvertFrom-Json).device_id | % { "value=$_" } >> $env:GITHUB_OUTPUT
- name: Send test command
shell: pwsh
run: |
curl --location '${{ vars.IT_SEND_COMMAND_TRIGGER_URL }}' `
--form 'device_id="${{ steps.get_device_id.outputs.value }}"' `
--form 'commands="[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$PS_Results = New-Object -TypeName psobject
# Start of typed powershell
$PS_Results | Add-Member -MemberType NoteProperty -Name \"error\" -Value \"\"
$PS_Results | Add-Member -MemberType NoteProperty -Name \"output\" -Value \"hello world`n\"
# Post results back to Rewst
$postData = $PS_Results | ConvertTo-Json
Invoke-RestMethod -Method \"Post\" -Uri $post_url -Body $postData -ContentType \"application/json\""'
- name: Uninstall agent
shell: pwsh
run: |
./dist/rewst_agent_config.win.exe --uninstall --org-id ${{ vars.IT_ORG_ID }}
- name: Check deleted directories
shell: pwsh
run: |
if (Test-Path -Path "C:\ProgramData\RewstRemoteAgent\${{ vars.IT_ORG_ID }}") { exit 1 }
if (Test-Path -Path "C:\Program Files\RewstRemoteAgent\${{ vars.IT_ORG_ID }}") { exit 1 }
if (Test-Path -Path "C:\RewstRemoteAgent\scripts\${{ vars.IT_ORG_ID }}") { exit 1 }
echo "All directories have been deleted"
test-macos-latest:
permissions:
contents: read
needs: build
if: inputs.os == 'macos-latest'
runs-on: macos-latest
steps:
- name: Download compiled binary
uses: actions/download-artifact@v4
with:
name: macos-latest
path: ./dist
- name: Make binary executable
run: chmod +x ./dist/rewst_agent_config.mac-os.bin
- name: Install agent
id: install_agent
shell: bash
run: |
sudo ./dist/rewst_agent_config.mac-os.bin --config-url ${{ vars.IT_CONFIG_URL }} --config-secret ${{ secrets.IT_CONFIG_SECRET }} --org-id ${{ vars.IT_ORG_ID }}
echo "service=io.rewst.remote_agent_${{ vars.IT_ORG_ID }}" >> $GITHUB_OUTPUT
- name: Check service
shell: bash
run: |
sudo launchctl print system/${{ steps.install_agent.outputs.service }}
- name: Get device id
id: get_device_id
shell: bash
run: |
echo "value=$(cat "/Library/Application Support/rewst_remote_agent/${{ vars.IT_ORG_ID }}/config.json" | jq -r '.device_id')" >> "$GITHUB_OUTPUT"
- name: Send test command
shell: bash
run: |
curl --location '${{ vars.IT_SEND_COMMAND_TRIGGER_URL }}' \
--form 'device_id="${{ steps.get_device_id.outputs.value }}"' \
--form 'commands="echo \"hello world\""'
- name: Uninstall agent
shell: bash
run: |
sudo ./dist/rewst_agent_config.mac-os.bin --uninstall --org-id ${{ vars.IT_ORG_ID }}
- name: Check deleted directories
shell: pwsh
run: |
if (Test-Path -Path "/Library/Application Support/rewst_remote_agent/${{ vars.IT_ORG_ID }}") { exit 1 }
if (Test-Path -Path "/usr/local/bin/rewst_remote_agent/${{ vars.IT_ORG_ID }}") { exit 1 }
if (Test-Path -Path "$env:TMPDIR/rewst_remote_agent/scripts/${{ vars.IT_ORG_ID }}") { exit 1 }
echo "All directories have been deleted"