tests and api fix

This commit is contained in:
redanthrax 2022-06-21 17:05:26 -07:00
parent c36ee74c5a
commit 66aca05028
5 changed files with 118 additions and 22 deletions

View file

@ -1,6 +1,7 @@
package choco
import (
"fmt"
"time"
"github.com/amidaware/rmmagent/agent/system"
@ -9,7 +10,7 @@ import (
"github.com/go-resty/resty/v2"
)
func InstallChoco() {
func InstallChoco() error {
config := config.NewAgentConfig()
var result ChocoInstalled
result.AgentID = config.AgentID
@ -25,27 +26,30 @@ func InstallChoco() {
r, err := rClient.R().Get("https://chocolatey.org/install.ps1")
if err != nil {
api.PostPayload(result, url)
return
return err
}
if r.IsError() {
api.PostPayload(result, url)
return
return fmt.Errorf("response code: %d", r.StatusCode())
}
_, _, exitcode, err := system.RunScript(string(r.Body()), "powershell", []string{}, 900)
installScript := string(r.Body())
_, _, exitcode, err := system.RunScript(installScript, "powershell", []string{}, 900)
if err != nil {
api.PostPayload(result, url)
return
return err
}
if exitcode != 0 {
api.PostPayload(result, url)
return
return fmt.Errorf("exit code: %d", exitcode)
}
result.Installed = true
api.PostPayload(result, url)
err = api.PostPayload(result, url)
return err
}
func InstallWithChoco(name string) (string, error) {

View file

@ -0,0 +1,59 @@
package choco_test
import (
"errors"
"strings"
"testing"
"github.com/amidaware/rmmagent/agent/choco"
)
func TestInstallChoco(t *testing.T) {
testTable := []struct {
name string
expectedError error
}{
{
name: "Install Choco",
expectedError: nil,
},
}
for _, tt := range testTable {
t.Run(tt.name, func(t *testing.T) {
err := choco.InstallChoco()
if !errors.Is(tt.expectedError, err) {
t.Errorf("expected error (%v), got (%v)", tt.expectedError, err)
}
})
}
}
func TestInstallWithChoco(t *testing.T) {
testTable := []struct {
name string
software string
expectedString string
expectedError error
}{
{
name: "Install With Choco",
software: "adobereader",
expectedString: "The install of adobereader was successful",
expectedError: nil,
},
}
for _, tt := range testTable {
t.Run(tt.name, func(t *testing.T) {
result, err := choco.InstallWithChoco(tt.software)
if !errors.Is(tt.expectedError, err) {
t.Errorf("expected (%v), got (%v)", tt.expectedError, err)
}
if !strings.Contains(result, tt.expectedString) {
t.Errorf("expected %s, got %s", tt.expectedString, result)
}
})
}
}

View file

@ -9,15 +9,6 @@ import (
)
func TestGetDisks(t *testing.T) {
exampleDisk := disk.Disk{
Device: "C:",
Fstype: "NTFS",
Total: "149.9 GB",
Used: "129.2 GB",
Free: "20.7 GB",
Percent: 86,
}
testTable := []struct {
name string
expected []disk.Disk
@ -26,7 +17,7 @@ func TestGetDisks(t *testing.T) {
}{
{
name: "Get Disks",
expected: []disk.Disk{exampleDisk},
expected: []disk.Disk{},
atLeast: 1,
expectedError: nil,
},

View file

@ -0,0 +1,30 @@
package network_test
import (
"testing"
"github.com/amidaware/rmmagent/agent/network"
)
func TestPublicIP(t *testing.T) {
testTable := []struct {
name string
expected string
proxy string
}{
{
name: "Get Public IP",
expected: network.PublicIP(""),
proxy: "",
},
}
for _, tt := range testTable {
t.Run(tt.name, func(t *testing.T) {
result := network.PublicIP(tt.proxy)
if result != tt.expected {
t.Errorf("expected %s, got %s", tt.expected, result)
}
})
}
}

View file

@ -9,7 +9,7 @@ import (
"github.com/go-resty/resty/v2"
)
var restyC resty.Client
var restyC *resty.Client
func init() {
ac := config.NewAgentConfig()
@ -19,7 +19,7 @@ func init() {
headers["Authorization"] = fmt.Sprintf("Token %s", ac.Token)
}
restyC := resty.New()
restyC = resty.New()
restyC.SetBaseURL(ac.BaseURL)
restyC.SetCloseConnection(true)
restyC.SetHeaders(headers)
@ -37,7 +37,11 @@ func init() {
func PostPayload(payload interface{}, url string) error {
_, err := restyC.R().SetBody(payload).Post("/api/v3/syncmesh/")
return err
if err != nil {
return err
}
return nil
}
func GetResult(result interface{}, url string) (*resty.Response, error) {
@ -60,10 +64,18 @@ func Get(url string) (*resty.Response, error) {
func Patch(payload interface{}, url string) error {
_, err := restyC.R().SetBody(payload).Patch(url)
return err
if err != nil {
return err
}
return nil
}
func Put(payload interface{}, url string) error {
_, err := restyC.R().SetBody(payload).Put(url)
return err
if err != nil {
return err
}
return nil
}