diff --git a/agent/tactical/api/api.go b/agent/tactical/api/api.go index 6a9a6f4..f2e914b 100644 --- a/agent/tactical/api/api.go +++ b/agent/tactical/api/api.go @@ -36,6 +36,7 @@ func init() { } func PostPayload(payload interface{}, url string) error { + fmt.Println(restyC.BaseURL) _, err := restyC.R().SetBody(payload).Post(url) if err != nil { return err diff --git a/agent/tactical/checks/checks_test.go b/agent/tactical/checks/checks_test.go new file mode 100644 index 0000000..6b4e254 --- /dev/null +++ b/agent/tactical/checks/checks_test.go @@ -0,0 +1,85 @@ +package checks_test + +import ( + "errors" + "testing" + + "github.com/amidaware/rmmagent/agent/tactical/checks" + "github.com/amidaware/rmmagent/agent/tactical/config" +) + +func TestGetCheckInterval(t *testing.T) { + config := config.NewAgentConfig() + testTable := []struct { + name string + interval int + expectedError error + }{ + { + name: "Get Check Interval", + interval: 1, + expectedError: nil, + }, + } + + for _, tt := range testTable { + t.Run(tt.name, func(t *testing.T) { + result, err := checks.GetCheckInterval(config.AgentID) + if result < tt.interval { + t.Errorf("expected greater interval than %d, got %d", tt.interval, result) + } + + if !errors.Is(tt.expectedError, err) { + t.Errorf("expected (%v), got (%v)", tt.expectedError, err) + } + }) + } +} + +func TestCheckRunner(t *testing.T) { + config := config.NewAgentConfig() + testTable := []struct { + name string + expectedError error + }{ + { + name: "Check Runner", + expectedError: nil, + }, + } + + for _, tt := range testTable { + t.Run(tt.name, func(t *testing.T) { + err := checks.CheckRunner(config.AgentID) + if !errors.Is(tt.expectedError, err) { + t.Errorf("expected (%v), got (%v)", tt.expectedError, err) + } + }) + } +} + +func TestRunChecks(t *testing.T) { + config := config.NewAgentConfig() + testTable := []struct { + name string + expectedError error + force bool + agentId string + }{ + { + name: "Run Checks", + expectedError: nil, + force: false, + agentId: config.AgentID, + }, + } + + for _, tt := range testTable { + t.Run(tt.name, func(t *testing.T){ + err := checks.RunChecks(tt.agentId, tt.force) + 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/tactical/config/config_unix.go b/agent/tactical/config/config_unix.go index 3322c3d..22e034b 100644 --- a/agent/tactical/config/config_unix.go +++ b/agent/tactical/config/config_unix.go @@ -14,6 +14,7 @@ func NewAgentConfig() *AgentConfig { viper.SetConfigType("json") viper.AddConfigPath("/etc/") viper.AddConfigPath(".") + viper.AddConfigPath("../.") err := viper.ReadInConfig() if err != nil { diff --git a/agent/tactical/rpc/rpc.go b/agent/tactical/rpc/rpc.go index c0ced8a..2bf7c20 100644 --- a/agent/tactical/rpc/rpc.go +++ b/agent/tactical/rpc/rpc.go @@ -36,7 +36,7 @@ var ( installWinUpdateLocker uint32 ) -func RunRPC(version string) { +func RunRPC(version string) error { config := config.NewAgentConfig() go service.RunAsService(version) var wg sync.WaitGroup @@ -45,6 +45,7 @@ func RunRPC(version string) { server := fmt.Sprintf("tls://%s:4222", config.APIURL) nc, err := nats.Connect(server, opts...) if err != nil { + return err } nc.Subscribe(config.AgentID, func(msg *nats.Msg) { @@ -457,11 +458,12 @@ func RunRPC(version string) { nc.Flush() if err := nc.LastError(); err != nil { - //a.Logger.Errorln(err) - os.Exit(1) + return err } wg.Wait() + + return nil } func Start(version string, _ ksvc.Service) error { diff --git a/agent/tactical/rpc/rpc_test.go b/agent/tactical/rpc/rpc_test.go new file mode 100644 index 0000000..6213bfa --- /dev/null +++ b/agent/tactical/rpc/rpc_test.go @@ -0,0 +1,31 @@ +package rpc_test + +import ( + "errors" + "testing" + + "github.com/amidaware/rmmagent/agent/tactical/rpc" +) + +func TestRunRPC(t *testing.T) { + testTable := []struct { + name string + expectedError error + version string + }{ + { + name: "Run RPC", + expectedError: nil, + version: "development", + }, + } + + for _, tt := range testTable { + t.Run(tt.name, func(t *testing.T) { + err := rpc.RunRPC(tt.version) + 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/tactical/service/service.go b/agent/tactical/service/service.go index ac79a43..db0ca4d 100644 --- a/agent/tactical/service/service.go +++ b/agent/tactical/service/service.go @@ -24,7 +24,7 @@ func RunAsService(version string) { wg.Wait() } -func AgentSvc(version string) { +func AgentSvc(version string) error { config := config.NewAgentConfig() go shared.GetPython(false) utils.CreateTRMMTempDir() @@ -35,6 +35,7 @@ func AgentSvc(version string) { server := fmt.Sprintf("tls://%s:4222", config.APIURL) nc, err := nats.Connect(server, opts...) if err != nil { + return err } for _, s := range natsCheckin { diff --git a/agent/tactical/service/service_test.go b/agent/tactical/service/service_test.go new file mode 100644 index 0000000..8d9c0fc --- /dev/null +++ b/agent/tactical/service/service_test.go @@ -0,0 +1,36 @@ +package service_test + +import ( + "errors" + "testing" + + "github.com/amidaware/rmmagent/agent/tactical/service" +) + +func TestAgentSvc(t *testing.T) { + testTable := []struct { + name string + expectedError error + version string + }{ + { + name: "Agent Svc", + expectedError: nil, + version: "2.0.4", + }, + { + name: "Agent Svc Error", + expectedError: nil, + version: "bad version", + }, + } + + for _, tt := range testTable { + t.Run(tt.name, func(t *testing.T) { + err := service.AgentSvc(tt.version) + if errors.Is(tt.expectedError, err) { + t.Errorf("expected (%v), got (%v)", tt.expectedError, err) + } + }) + } +}