mirror of https://github.com/statping/statping
testing
parent
7526a7b083
commit
c27f6a6f30
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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, "<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) {
|
||||
req, err := http.NewRequest("GET", "/logout", nil)
|
||||
assert.Nil(t, err)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
10
utils/log.go
10
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,
|
||||
|
|
|
@ -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 "."
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue