From c27f6a6f309b76206c506dfd63a83352d9a7c648 Mon Sep 17 00:00:00 2001 From: Hunter Long Date: Fri, 27 Jul 2018 20:24:54 -0700 Subject: [PATCH] testing --- cmd/cli.go | 2 +- cmd/main_test.go | 21 +++++------ handlers/handlers.go | 3 -- handlers/handlers_test.go | 75 +++++++++++++++++++++++++++++++++++++++ handlers/settings.go | 7 ++-- handlers/users.go | 18 ---------- utils/log.go | 10 +++--- utils/utils.go | 10 +++++- utils/utils_test.go | 6 +++- 9 files changed, 108 insertions(+), 44 deletions(-) diff --git a/cmd/cli.go b/cmd/cli.go index df13724f..70459551 100644 --- a/cmd/cli.go +++ b/cmd/cli.go @@ -22,7 +22,7 @@ const ( ) func CatchCLI(args []string) { - dir := utils.Dir() + dir := utils.Directory switch args[1] { case "version": fmt.Printf("Statup v%v\n", VERSION) diff --git a/cmd/main_test.go b/cmd/main_test.go index 4de80984..d6e92207 100644 --- a/cmd/main_test.go +++ b/cmd/main_test.go @@ -21,19 +21,18 @@ import ( var ( route *mux.Router testSession *sessions.Session - gopath string + dir string ) func init() { - gopath := os.Getenv("GOPATH") - gopath += "/src/github.com/hunterlong/statup" + dir = utils.Directory } func RunInit(t *testing.T) { core.RenderBoxes() - os.Remove(gopath + "/statup.db") - os.Remove(gopath + "/cmd/config.yml") - os.Remove(gopath + "/cmd/index.html") + os.Remove(dir + "/statup.db") + os.Remove(dir + "/cmd/config.yml") + os.Remove(dir + "/cmd/index.html") route = handlers.Router() LoadDotEnvs() core.CoreApp = core.NewCore() @@ -186,14 +185,13 @@ func TestExportCommand(t *testing.T) { c.Run() t.Log(c.Stdout()) assert.True(t, c.StdoutContains("Exporting Static 'index.html' page")) - assert.True(t, fileExists(gopath+"/cmd/index.html")) + assert.True(t, fileExists(dir+"/cmd/index.html")) } func TestAssetsCommand(t *testing.T) { c := testcli.Command("statup", "assets") c.Run() t.Log(c.Stdout()) - dir := utils.Dir() assert.True(t, fileExists(dir+"/assets/robots.txt")) assert.True(t, fileExists(dir+"/assets/js/main.js")) assert.True(t, fileExists(dir+"/assets/css/base.css")) @@ -201,7 +199,6 @@ func TestAssetsCommand(t *testing.T) { } func RunMakeDatabaseConfig(t *testing.T, db string) { - dir := utils.Dir() port := 5432 if db == "mysql" { port = 3306 @@ -562,10 +559,10 @@ func RunSettingsHandler(t *testing.T) { } func Cleanup(t *testing.T) { - os.Remove(gopath + "/cmd/statup.db") + os.Remove(dir + "/statup.db") //os.Remove(gopath+"/cmd/config.yml") - os.RemoveAll(gopath + "/cmd/assets") - os.RemoveAll(gopath + "/cmd/logs") + os.RemoveAll(dir + "/assets") + os.RemoveAll(dir + "/logs") } func fileExists(file string) bool { diff --git a/handlers/handlers.go b/handlers/handlers.go index 3061314c..370af2c4 100644 --- a/handlers/handlers.go +++ b/handlers/handlers.go @@ -92,9 +92,6 @@ func ExecuteResponse(w http.ResponseWriter, r *http.Request, file string, data i "underscore": func(html string) string { return utils.UnderScoreString(html) }, - "User": func() *types.User { - return SessionUser(r) - }, }) t, _ = t.Parse(nav) t, _ = t.Parse(footer) diff --git a/handlers/handlers_test.go b/handlers/handlers_test.go index 15dc0478..ce906976 100644 --- a/handlers/handlers_test.go +++ b/handlers/handlers_test.go @@ -308,6 +308,14 @@ func TestViewTCPServicesHandler(t *testing.T) { assert.Contains(t, body, "Statup made with ❤️") } +func TestServicesDeleteFailuresHandler(t *testing.T) { + req, err := http.NewRequest("GET", "/service/7/delete_failures", nil) + assert.Nil(t, err) + rr := httptest.NewRecorder() + Router().ServeHTTP(rr, req) + assert.Equal(t, 303, rr.Code) +} + func TestServicesUpdateHandler(t *testing.T) { form := url.Values{} form.Add("name", "The Bravery - An Honest Mistake") @@ -386,6 +394,27 @@ func TestViewSettingsHandler(t *testing.T) { assert.Contains(t, body, "Statup made with ❤️") } +func TestSaveAssetsHandler(t *testing.T) { + req, err := http.NewRequest("GET", "/settings/build", nil) + assert.Nil(t, err) + rr := httptest.NewRecorder() + Router().ServeHTTP(rr, req) + assert.Equal(t, 303, rr.Code) + assert.FileExists(t, utils.Directory+"/assets/css/base.css") + assert.FileExists(t, utils.Directory+"/assets/js/main.js") + assert.DirExists(t, utils.Directory+"/assets") + assert.True(t, core.UsingAssets) +} + +func TestDeleteAssetsHandler(t *testing.T) { + req, err := http.NewRequest("GET", "/settings/delete_assets", nil) + assert.Nil(t, err) + rr := httptest.NewRecorder() + Router().ServeHTTP(rr, req) + assert.Equal(t, 303, rr.Code) + assert.False(t, core.UsingAssets) +} + func TestPrometheusHandler(t *testing.T) { req, err := http.NewRequest("GET", "/metrics", nil) req.Header.Set("Authorization", core.CoreApp.ApiSecret) @@ -397,6 +426,52 @@ func TestPrometheusHandler(t *testing.T) { assert.Contains(t, body, "statup_total_services 6") } +func TestSaveNotificationHandler(t *testing.T) { + form := url.Values{} + form.Add("enable", "on") + form.Add("host", "smtp.emailer.com") + form.Add("port", "587") + form.Add("username", "exampleuser") + form.Add("password", "password123") + form.Add("var1", "info@betatude.com") + form.Add("var2", "sendto@gmail.com") + form.Add("api_key", "") + form.Add("api_secret", "") + form.Add("limits", "7") + req, err := http.NewRequest("POST", "/settings/notifier/1", strings.NewReader(form.Encode())) + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + assert.Nil(t, err) + rr := httptest.NewRecorder() + Router().ServeHTTP(rr, req) + assert.Equal(t, 303, rr.Code) +} + +func TestViewNotificationSettingsHandler(t *testing.T) { + req, err := http.NewRequest("GET", "/settings", nil) + assert.Nil(t, err) + rr := httptest.NewRecorder() + Router().ServeHTTP(rr, req) + body := rr.Body.String() + assert.Equal(t, 200, rr.Code) + assert.Contains(t, body, "Statup | Settings") + assert.Contains(t, body, `value="exampleuser" id="smtp_username"`) + assert.Contains(t, body, `value="##########" id="smtp_password"`) + assert.Contains(t, body, `value="587" id="smtp_port"`) + assert.Contains(t, body, `value="info@betatude.com" id="outgoing_email_address"`) + assert.Contains(t, body, `value="sendto@gmail.com" id="send_alerts_to"`) + assert.Contains(t, body, `value="7" id="limits_per_hour_email"`) + assert.Contains(t, body, `id="switch-email" checked`) + assert.Contains(t, body, "Statup made with ❤️") +} + +func TestError404Handler(t *testing.T) { + req, err := http.NewRequest("GET", "/404me", nil) + assert.Nil(t, err) + rr := httptest.NewRecorder() + Router().ServeHTTP(rr, req) + assert.Equal(t, 404, rr.Code) +} + func TestLogoutHandler(t *testing.T) { req, err := http.NewRequest("GET", "/logout", nil) assert.Nil(t, err) diff --git a/handlers/settings.go b/handlers/settings.go index af3ef8b3..afb28313 100644 --- a/handlers/settings.go +++ b/handlers/settings.go @@ -68,10 +68,11 @@ func SaveAssetsHandler(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, "/", http.StatusSeeOther) return } - core.CreateAllAssets(".") - err := core.CompileSASS(".") + dir := utils.Directory + core.CreateAllAssets(dir) + err := core.CompileSASS(dir) if err != nil { - core.CopyToPublic(core.CssBox, "css", "base.css") + core.CopyToPublic(core.CssBox, dir+"/assets/css", "base.css") utils.Log(2, "Default 'base.css' was insert because SASS did not work.") } core.UsingAssets = true diff --git a/handlers/users.go b/handlers/users.go index d74e2ddd..b1876cb8 100644 --- a/handlers/users.go +++ b/handlers/users.go @@ -1,7 +1,6 @@ package handlers import ( - "fmt" "github.com/gorilla/mux" "github.com/hunterlong/statup/core" "github.com/hunterlong/statup/types" @@ -10,23 +9,6 @@ import ( "strconv" ) -func SessionUser(r *http.Request) *types.User { - session, _ := Store.Get(r, COOKIE_KEY) - if session == nil { - return nil - } - uuid := session.Values["user_id"] - var user *types.User - col := core.DbSession.Collection("users") - res := col.Find("id", uuid) - err := res.One(&user) - if err != nil { - utils.Log(3, fmt.Sprintf("cannot fetch user %v", uuid)) - return nil - } - return user -} - func UsersHandler(w http.ResponseWriter, r *http.Request) { if !IsAuthenticated(r) { http.Redirect(w, r, "/", http.StatusSeeOther) diff --git a/utils/log.go b/utils/log.go index c54206e5..bfe85607 100644 --- a/utils/log.go +++ b/utils/log.go @@ -20,23 +20,23 @@ var ( func InitLogs() error { var err error - if _, err := os.Stat("./logs"); os.IsNotExist(err) { - os.Mkdir("./logs", 0777) + if _, err := os.Stat(Directory + "/logs"); os.IsNotExist(err) { + os.Mkdir(Directory+"/logs", 0777) } - file, err := os.Create("./logs/statup.log") + file, err := os.Create(Directory + "/logs/statup.log") if err != nil { return err } defer file.Close() - logFile, err = os.OpenFile("./logs/statup.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755) + logFile, err = os.OpenFile(Directory+"/logs/statup.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0755) if err != nil { log.Printf("ERROR opening file: %v", err) return err } ljLogger = &lumberjack.Logger{ - Filename: "./logs/statup.log", + Filename: Directory + "/logs/statup.log", MaxSize: 16, MaxBackups: 3, MaxAge: 28, diff --git a/utils/utils.go b/utils/utils.go index 59638793..4f8170a6 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -9,6 +9,14 @@ import ( "time" ) +var ( + Directory string +) + +func init() { + Directory = dir() +} + func StringInt(s string) int64 { num, _ := strconv.Atoi(s) return int64(num) @@ -18,7 +26,7 @@ func IntString(s int) string { return strconv.Itoa(s) } -func Dir() string { +func dir() string { dir, err := os.Getwd() if err != nil { return "." diff --git a/utils/utils_test.go b/utils/utils_test.go index 4c0e4a72..62d500d6 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -13,7 +13,7 @@ func TestInitLogs(t *testing.T) { } func TestDir(t *testing.T) { - assert.Contains(t, Dir(), "github.com/hunterlong/statup") + assert.Contains(t, Directory, "github.com/hunterlong/statup") } func TestLog(t *testing.T) { @@ -25,6 +25,10 @@ func TestLog(t *testing.T) { assert.Nil(t, Log(5, errors.New("this is a 5 level error"))) } +func TestDeleteFile(t *testing.T) { + assert.True(t, DeleteFile(Directory+"/logs/statup.log")) +} + func TestLogHTTP(t *testing.T) { req, err := http.NewRequest("GET", "/", nil) assert.Nil(t, err)