mirror of https://github.com/statping/statping
testing
parent
7526a7b083
commit
c27f6a6f30
|
@ -22,7 +22,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
func CatchCLI(args []string) {
|
func CatchCLI(args []string) {
|
||||||
dir := utils.Dir()
|
dir := utils.Directory
|
||||||
switch args[1] {
|
switch args[1] {
|
||||||
case "version":
|
case "version":
|
||||||
fmt.Printf("Statup v%v\n", VERSION)
|
fmt.Printf("Statup v%v\n", VERSION)
|
||||||
|
|
|
@ -21,19 +21,18 @@ import (
|
||||||
var (
|
var (
|
||||||
route *mux.Router
|
route *mux.Router
|
||||||
testSession *sessions.Session
|
testSession *sessions.Session
|
||||||
gopath string
|
dir string
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
gopath := os.Getenv("GOPATH")
|
dir = utils.Directory
|
||||||
gopath += "/src/github.com/hunterlong/statup"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunInit(t *testing.T) {
|
func RunInit(t *testing.T) {
|
||||||
core.RenderBoxes()
|
core.RenderBoxes()
|
||||||
os.Remove(gopath + "/statup.db")
|
os.Remove(dir + "/statup.db")
|
||||||
os.Remove(gopath + "/cmd/config.yml")
|
os.Remove(dir + "/cmd/config.yml")
|
||||||
os.Remove(gopath + "/cmd/index.html")
|
os.Remove(dir + "/cmd/index.html")
|
||||||
route = handlers.Router()
|
route = handlers.Router()
|
||||||
LoadDotEnvs()
|
LoadDotEnvs()
|
||||||
core.CoreApp = core.NewCore()
|
core.CoreApp = core.NewCore()
|
||||||
|
@ -186,14 +185,13 @@ func TestExportCommand(t *testing.T) {
|
||||||
c.Run()
|
c.Run()
|
||||||
t.Log(c.Stdout())
|
t.Log(c.Stdout())
|
||||||
assert.True(t, c.StdoutContains("Exporting Static 'index.html' page"))
|
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) {
|
func TestAssetsCommand(t *testing.T) {
|
||||||
c := testcli.Command("statup", "assets")
|
c := testcli.Command("statup", "assets")
|
||||||
c.Run()
|
c.Run()
|
||||||
t.Log(c.Stdout())
|
t.Log(c.Stdout())
|
||||||
dir := utils.Dir()
|
|
||||||
assert.True(t, fileExists(dir+"/assets/robots.txt"))
|
assert.True(t, fileExists(dir+"/assets/robots.txt"))
|
||||||
assert.True(t, fileExists(dir+"/assets/js/main.js"))
|
assert.True(t, fileExists(dir+"/assets/js/main.js"))
|
||||||
assert.True(t, fileExists(dir+"/assets/css/base.css"))
|
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) {
|
func RunMakeDatabaseConfig(t *testing.T, db string) {
|
||||||
dir := utils.Dir()
|
|
||||||
port := 5432
|
port := 5432
|
||||||
if db == "mysql" {
|
if db == "mysql" {
|
||||||
port = 3306
|
port = 3306
|
||||||
|
@ -562,10 +559,10 @@ func RunSettingsHandler(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Cleanup(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.Remove(gopath+"/cmd/config.yml")
|
||||||
os.RemoveAll(gopath + "/cmd/assets")
|
os.RemoveAll(dir + "/assets")
|
||||||
os.RemoveAll(gopath + "/cmd/logs")
|
os.RemoveAll(dir + "/logs")
|
||||||
}
|
}
|
||||||
|
|
||||||
func fileExists(file string) bool {
|
func fileExists(file string) bool {
|
||||||
|
|
|
@ -92,9 +92,6 @@ func ExecuteResponse(w http.ResponseWriter, r *http.Request, file string, data i
|
||||||
"underscore": func(html string) string {
|
"underscore": func(html string) string {
|
||||||
return utils.UnderScoreString(html)
|
return utils.UnderScoreString(html)
|
||||||
},
|
},
|
||||||
"User": func() *types.User {
|
|
||||||
return SessionUser(r)
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
t, _ = t.Parse(nav)
|
t, _ = t.Parse(nav)
|
||||||
t, _ = t.Parse(footer)
|
t, _ = t.Parse(footer)
|
||||||
|
|
|
@ -308,6 +308,14 @@ func TestViewTCPServicesHandler(t *testing.T) {
|
||||||
assert.Contains(t, body, "Statup made with ❤️")
|
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) {
|
func TestServicesUpdateHandler(t *testing.T) {
|
||||||
form := url.Values{}
|
form := url.Values{}
|
||||||
form.Add("name", "The Bravery - An Honest Mistake")
|
form.Add("name", "The Bravery - An Honest Mistake")
|
||||||
|
@ -386,6 +394,27 @@ func TestViewSettingsHandler(t *testing.T) {
|
||||||
assert.Contains(t, body, "Statup made with ❤️")
|
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) {
|
func TestPrometheusHandler(t *testing.T) {
|
||||||
req, err := http.NewRequest("GET", "/metrics", nil)
|
req, err := http.NewRequest("GET", "/metrics", nil)
|
||||||
req.Header.Set("Authorization", core.CoreApp.ApiSecret)
|
req.Header.Set("Authorization", core.CoreApp.ApiSecret)
|
||||||
|
@ -397,6 +426,52 @@ func TestPrometheusHandler(t *testing.T) {
|
||||||
assert.Contains(t, body, "statup_total_services 6")
|
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, "<title>Statup | Settings</title>")
|
||||||
|
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) {
|
func TestLogoutHandler(t *testing.T) {
|
||||||
req, err := http.NewRequest("GET", "/logout", nil)
|
req, err := http.NewRequest("GET", "/logout", nil)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
|
@ -68,10 +68,11 @@ func SaveAssetsHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
http.Redirect(w, r, "/", http.StatusSeeOther)
|
http.Redirect(w, r, "/", http.StatusSeeOther)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
core.CreateAllAssets(".")
|
dir := utils.Directory
|
||||||
err := core.CompileSASS(".")
|
core.CreateAllAssets(dir)
|
||||||
|
err := core.CompileSASS(dir)
|
||||||
if err != nil {
|
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.")
|
utils.Log(2, "Default 'base.css' was insert because SASS did not work.")
|
||||||
}
|
}
|
||||||
core.UsingAssets = true
|
core.UsingAssets = true
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package handlers
|
package handlers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/hunterlong/statup/core"
|
"github.com/hunterlong/statup/core"
|
||||||
"github.com/hunterlong/statup/types"
|
"github.com/hunterlong/statup/types"
|
||||||
|
@ -10,23 +9,6 @@ import (
|
||||||
"strconv"
|
"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) {
|
func UsersHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
if !IsAuthenticated(r) {
|
if !IsAuthenticated(r) {
|
||||||
http.Redirect(w, r, "/", http.StatusSeeOther)
|
http.Redirect(w, r, "/", http.StatusSeeOther)
|
||||||
|
|
10
utils/log.go
10
utils/log.go
|
@ -20,23 +20,23 @@ var (
|
||||||
func InitLogs() error {
|
func InitLogs() error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
if _, err := os.Stat("./logs"); os.IsNotExist(err) {
|
if _, err := os.Stat(Directory + "/logs"); os.IsNotExist(err) {
|
||||||
os.Mkdir("./logs", 0777)
|
os.Mkdir(Directory+"/logs", 0777)
|
||||||
}
|
}
|
||||||
|
|
||||||
file, err := os.Create("./logs/statup.log")
|
file, err := os.Create(Directory + "/logs/statup.log")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer file.Close()
|
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 {
|
if err != nil {
|
||||||
log.Printf("ERROR opening file: %v", err)
|
log.Printf("ERROR opening file: %v", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
ljLogger = &lumberjack.Logger{
|
ljLogger = &lumberjack.Logger{
|
||||||
Filename: "./logs/statup.log",
|
Filename: Directory + "/logs/statup.log",
|
||||||
MaxSize: 16,
|
MaxSize: 16,
|
||||||
MaxBackups: 3,
|
MaxBackups: 3,
|
||||||
MaxAge: 28,
|
MaxAge: 28,
|
||||||
|
|
|
@ -9,6 +9,14 @@ import (
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
Directory string
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
Directory = dir()
|
||||||
|
}
|
||||||
|
|
||||||
func StringInt(s string) int64 {
|
func StringInt(s string) int64 {
|
||||||
num, _ := strconv.Atoi(s)
|
num, _ := strconv.Atoi(s)
|
||||||
return int64(num)
|
return int64(num)
|
||||||
|
@ -18,7 +26,7 @@ func IntString(s int) string {
|
||||||
return strconv.Itoa(s)
|
return strconv.Itoa(s)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Dir() string {
|
func dir() string {
|
||||||
dir, err := os.Getwd()
|
dir, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "."
|
return "."
|
||||||
|
|
|
@ -13,7 +13,7 @@ func TestInitLogs(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDir(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) {
|
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")))
|
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) {
|
func TestLogHTTP(t *testing.T) {
|
||||||
req, err := http.NewRequest("GET", "/", nil)
|
req, err := http.NewRequest("GET", "/", nil)
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
|
Loading…
Reference in New Issue