rmmagent/agent/agent_test.go
2022-06-24 09:11:35 -07:00

108 lines
No EOL
2.1 KiB
Go

package agent
import (
"errors"
"strings"
"testing"
"github.com/sirupsen/logrus"
)
var (
version = "2.0.4"
lg = logrus.New()
a = New(lg, version)
)
func TestGetDisks(t *testing.T) {
disks := a.GetDisks()
if(len(disks) < 1) {
t.Errorf("Could not get disks")
}
t.Logf("Result: %v", disks)
}
func TestAgentId(t *testing.T) {
if a.AgentID == "" {
t.Error("AgentID not set")
} else {
t.Logf("AgentID: %s", a.AgentID)
}
}
func TestSystemRebootRequired(t *testing.T) {
result, err := a.SystemRebootRequired()
if err != nil {
t.Error(err)
}
t.Logf("Result: %t", result)
}
func TestLoggedOnUser(t *testing.T) {
result := a.LoggedOnUser()
if result == "" {
t.Errorf("Could not get logged on user.")
}
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)
}
})
}
}