pgm/main_test.go

161 lines
3.3 KiB
Go

package main_test
import (
"fmt"
"github.com/spf13/viper"
"os"
"pgm/config"
"pgm/data"
"pgm/loader"
"pgm/logger"
"testing"
)
// init should always return true
// init will not write incorrect values to file
func TestInit(t *testing.T) {
t.Parallel()
var cfg string
testCases := []initTest{
{a: "junk", b: "notreal", c: "failingonpurpose", want: true},
{a: "test_host_dir", b: "test_screen_dr", c: "test_log_dir", want: true},
}
cfg, err := os.UserHomeDir()
if err != nil {
logger.Logger("failed to find home dir " + err.Error())
fmt.Println("an error was encountered and logged")
os.Exit(0)
}
for _, tc := range testCases {
got := config.IsInit(tc.a, tc.b, tc.c, cfg + "/.pgm.yml")
if tc.want != got {
t.Errorf("want %t, got %t", tc.want, got)
}
}
}
func TestLogs(t *testing.T) {
t.Parallel()
var s string
var want bool = true
s = "test"
got := logger.Logger(s)
if want != got {
t.Errorf("want %t, got %t", want, got)
}
}
func TestLoadConfig(t *testing.T) {
t.Parallel()
var v *viper.Viper
var want error = nil
v, got := config.ReadConfig()
_ = v
if want != got {
t.Error("load config reaturned a non nil error")
}
}
// loader function will test that it can load the ui to chose a database
// and quits the ui.
// "test" is added into the array of files a user has configured and selected
func TestLoader(t *testing.T) {
t.Parallel()
var tc []string
var s string
var b string
var want error = nil
s = "test"
b = "test"
tc = data.ReadHosts()
tc = append(tc, "test")
got := loader.Loader(tc, s, b)
if want != got {
t.Errorf("want %t, got %t", want, got)
}
}
func TestViperPgmConfig(t *testing.T) {
t.Parallel()
testCases := []viperReturnKey{
{a: "junk", b: "r", want: false, need: ""},
{a: "test_user", b: "r", want: true, need: "test"},
}
for _, tc := range testCases{
found, got := data.ViperPgmConfig(tc.a, tc.b)
if tc.want != found{
t.Errorf("want %t, got %t", tc.want, found)
}
if tc.need != got {
t.Errorf("want %s, got %s", tc.need, got)
}
}
}
func TestViperScnConfig(t *testing.T) {
t.Parallel()
testCases := []viperScnReturn {
{t: "test", want: "test"},
{t: "userSessions", want: "active sessions"},
}
for _, tc := range testCases {
var v *viper.Viper
v, err := data.ViperScrConfig("scn", map[string]interface{}{})
if err != nil {
logger.Logger("[ERROR] scn cfg test error: " + err.Error())
}
got := v.GetString(tc.t + ".title")
if tc.want != got {
t.Errorf("want %s, got %s", tc.want, got)
}
}
}
//func TestScreener(t *testing.T) {
// t.Parallel()
// var p data.HostDetails
// var testDb string
// var found bool
// var want error = nil
// found, testDb = data.ViperPgmConfig("test_db", "r")
// if found != true {
// t.Error("missing test_db parameter in .pgm.yaml for screener test")
// logger.Logger("[LOG] missing test_db parameter in .pgm.yaml for TestScreener test")
// os.Exit(1)
// }
// err := json.Unmarshal([]byte(testDb), &p)
// if err != nil {
// logger.Logger("[LOG] test screener failed: " + err.Error())
// os.Exit(1)
// }
// got := loader.Screener(p)
// if want != got {
// t.Errorf("want %t, got %t", want, got)
// }
//
//}
type viperScnReturn struct {
t string
want string
}
type viperReturnKey struct {
a, b string
want bool
need string
}
type initTest struct {
a, b, c string
want bool
}