diff --git a/agent/agent_test.go b/agent/agent_test.go index 1b78849..aa0aac8 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -1,8 +1,6 @@ package agent import ( - "errors" - "strings" "testing" "github.com/sirupsen/logrus" @@ -10,13 +8,13 @@ import ( var ( version = "2.0.4" - lg = logrus.New() - a = New(lg, version) + lg = logrus.New() + a = New(lg, version) ) func TestGetDisks(t *testing.T) { disks := a.GetDisks() - if(len(disks) < 1) { + if len(disks) < 1 { t.Errorf("Could not get disks") } @@ -40,61 +38,3 @@ func TestLoggedOnUser(t *testing.T) { t.Logf("Result: %s", result) } - -func TestRunScript(t *testing.T){ - testTable := []struct { - name string - code string - shell string - args []string - timeout int - expectedStdout string - expectedStderr string - expectedExitcode int - expectedError error - }{ - { - name: "Run Script", - code: "#!/bin/sh\necho 'test'", - shell: "/bin/sh", - args: []string{}, - timeout: 30, - expectedStdout: "test\n", - expectedStderr: "", - expectedExitcode: 0, - expectedError: nil, - }, - { - name: "Run Bad Script No Hash Bang", - code: "echo 'test'", - shell: "/bin/sh", - args: []string{}, - timeout: 30, - expectedStdout: "", - expectedStderr: "exec format error", - expectedExitcode: -1, - expectedError: nil, - }, - } - - for _, tt := range testTable { - t.Run(tt.name, func(t *testing.T) { - stdout, stderr, exitcode, err := a.RunScript(tt.code, tt.shell, tt.args, tt.timeout) - if tt.expectedStdout != stdout { - t.Errorf("expected %s, got %s", tt.expectedStdout, stdout) - } - - if !strings.Contains(stderr, tt.expectedStderr) { - t.Errorf("expected stderr to contain %s, got %s", tt.expectedStderr, stderr) - } - - if tt.expectedExitcode != exitcode { - t.Errorf("expected exit %d, got exit %d", tt.expectedExitcode, exitcode) - } - - if !errors.Is(tt.expectedError, err) { - t.Errorf("expected (%v), got (%v)", tt.expectedError, err) - } - }) - } -} \ No newline at end of file diff --git a/agent/agent_unix_test.go b/agent/agent_unix_test.go new file mode 100644 index 0000000..251fd64 --- /dev/null +++ b/agent/agent_unix_test.go @@ -0,0 +1,67 @@ +//go:build !windows +// +build !windows + +package agent + +import ( + "errors" + "strings" +) + +func TestRunScript(t *testing.T){ + testTable := []struct { + name string + code string + shell string + args []string + timeout int + expectedStdout string + expectedStderr string + expectedExitcode int + expectedError error + }{ + { + name: "Run Script", + code: "#!/bin/sh\necho 'test'", + shell: "/bin/sh", + args: []string{}, + timeout: 30, + expectedStdout: "test\n", + expectedStderr: "", + expectedExitcode: 0, + expectedError: nil, + }, + { + name: "Run Bad Script No Hash Bang", + code: "echo 'test'", + shell: "/bin/sh", + args: []string{}, + timeout: 30, + expectedStdout: "", + expectedStderr: "exec format error", + expectedExitcode: -1, + expectedError: nil, + }, + } + + for _, tt := range testTable { + t.Run(tt.name, func(t *testing.T) { + stdout, stderr, exitcode, err := a.RunScript(tt.code, tt.shell, tt.args, tt.timeout) + if tt.expectedStdout != stdout { + t.Errorf("expected %s, got %s", tt.expectedStdout, stdout) + } + + if !strings.Contains(stderr, tt.expectedStderr) { + t.Errorf("expected stderr to contain %s, got %s", tt.expectedStderr, stderr) + } + + if tt.expectedExitcode != exitcode { + t.Errorf("expected exit %d, got exit %d", tt.expectedExitcode, exitcode) + } + + if !errors.Is(tt.expectedError, err) { + t.Errorf("expected (%v), got (%v)", tt.expectedError, err) + } + }) + } +} \ No newline at end of file diff --git a/agent/agent_windows_test.go b/agent/agent_windows_test.go new file mode 100644 index 0000000..88faecd --- /dev/null +++ b/agent/agent_windows_test.go @@ -0,0 +1,65 @@ +package agent + +import ( + "errors" + "strings" + "testing" +) + +func TestRunScript(t *testing.T){ + testTable := []struct { + name string + code string + shell string + args []string + timeout int + expectedStdout string + expectedStderr string + expectedExitcode int + expectedError error + }{ + { + name: "Run Script", + code: "Write-Output \"test\"", + shell: "powershell", + args: []string{}, + timeout: 30, + expectedStdout: "test\r\n", + expectedStderr: "", + expectedExitcode: 0, + expectedError: nil, + }, + { + name: "Run Bad Script", + code: "Bad-Command", + shell: "powershell", + args: []string{}, + timeout: 30, + expectedStdout: "", + expectedStderr: "is not recognized as the name of a cmdlet", + expectedExitcode: 0, + expectedError: nil, + }, + } + + for _, tt := range testTable { + t.Run(tt.name, func(t *testing.T) { + stdout, stderr, exitcode, err := a.RunScript(tt.code, tt.shell, tt.args, tt.timeout) + if tt.expectedStdout != stdout { + t.Errorf("expected %s, got %s", tt.expectedStdout, stdout) + } + + if !strings.Contains(stderr, tt.expectedStderr) { + t.Errorf("expected stderr to contain %s, got %s", tt.expectedStderr, stderr) + } + + if tt.expectedExitcode != exitcode { + t.Errorf("expected exit %d, got exit %d", tt.expectedExitcode, exitcode) + } + + if !errors.Is(tt.expectedError, err) { + t.Errorf("expected (%v), got (%v)", tt.expectedError, err) + } + }) + } +} \ No newline at end of file