statping/cmd/main_test.go

641 lines
17 KiB
Go
Raw Normal View History

2018-08-16 06:22:20 +00:00
// Statup
// Copyright (C) 2018. Hunter Long and the project contributors
// Written by Hunter Long <info@socialeck.com> and the project contributors
//
// https://github.com/hunterlong/statup
//
// The licenses for most software and other practical works are designed
// to take away your freedom to share and change the works. By contrast,
// the GNU General Public License is intended to guarantee your freedom to
// share and change all versions of a program--to make sure it remains free
// software for all its users.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
2018-06-10 08:05:57 +00:00
package main
import (
2018-06-29 04:16:26 +00:00
"github.com/gorilla/mux"
"github.com/gorilla/sessions"
2018-06-30 00:57:05 +00:00
"github.com/hunterlong/statup/core"
2018-09-12 04:14:22 +00:00
"github.com/hunterlong/statup/core/notifier"
2018-06-30 00:57:05 +00:00
"github.com/hunterlong/statup/handlers"
2018-08-10 04:38:54 +00:00
"github.com/hunterlong/statup/source"
2018-07-14 02:37:39 +00:00
"github.com/hunterlong/statup/types"
2018-07-28 01:50:13 +00:00
"github.com/hunterlong/statup/utils"
2018-06-10 08:05:57 +00:00
"github.com/stretchr/testify/assert"
2018-06-29 04:16:26 +00:00
"net/http"
"net/http/httptest"
"net/url"
2018-06-14 06:38:15 +00:00
"os"
2018-06-29 04:16:26 +00:00
"strings"
2018-06-11 00:20:42 +00:00
"testing"
"time"
2018-06-10 08:05:57 +00:00
)
2018-06-29 04:16:26 +00:00
var (
route *mux.Router
testSession *sessions.Session
dir string
SERVICE_SINCE, _ = time.Parse(time.RFC3339, "2018-08-30T10:42:08-07:00")
2018-06-29 04:16:26 +00:00
)
2018-07-27 04:45:42 +00:00
func init() {
2018-07-28 03:24:54 +00:00
dir = utils.Directory
}
func Clean() {
utils.DeleteFile(dir + "/config.yml")
utils.DeleteFile(dir + "/statup.db")
utils.DeleteDirectory(dir + "/assets")
utils.DeleteDirectory(dir + "/logs")
2018-07-27 04:45:42 +00:00
}
2018-09-19 06:12:42 +00:00
func RunInit(db string, t *testing.T) {
if db == "mssql" {
os.Setenv("DB_DATABASE", "tempdb")
os.Setenv("DB_PASS", "PaSsW0rD123")
os.Setenv("DB_PORT", "1433")
os.Setenv("DB_USER", "sa")
}
2018-08-10 04:38:54 +00:00
source.Assets()
Clean()
route = handlers.Router()
2018-07-04 09:00:16 +00:00
core.CoreApp = core.NewCore()
2018-06-14 06:38:15 +00:00
}
func TestRunAll(t *testing.T) {
2018-08-10 04:38:54 +00:00
//t.Parallel()
databases := []string{"postgres", "sqlite", "mysql"}
2018-08-15 08:08:50 +00:00
if os.Getenv("ONLY_DB") != "" {
databases = []string{os.Getenv("ONLY_DB")}
}
for _, dbt := range databases {
t.Run(dbt+" init", func(t *testing.T) {
2018-09-19 06:12:42 +00:00
RunInit(dbt, t)
})
t.Run(dbt+" Save Config", func(t *testing.T) {
RunSaveConfig(t, dbt)
})
t.Run(dbt+" Load Configs", func(t *testing.T) {
RunLoadConfig(t)
t.Log(core.Configs)
})
t.Run(dbt+" Connect to Database", func(t *testing.T) {
err := core.Configs.Connect(false, dir)
assert.Nil(t, err)
})
t.Run(dbt+" Drop Database", func(t *testing.T) {
RunDropDatabase(t)
})
t.Run(dbt+" Connect to Database Again", func(t *testing.T) {
err := core.Configs.Connect(false, dir)
assert.Nil(t, err)
})
t.Run(dbt+" Inserting Database Structure", func(t *testing.T) {
RunCreateSchema(t, dbt)
2018-07-22 22:17:38 +00:00
})
t.Run(dbt+" Inserting Seed Data", func(t *testing.T) {
2018-08-16 20:55:30 +00:00
RunInsertSampleData(t)
})
t.Run(dbt+" Connect to Database Again", func(t *testing.T) {
err := core.Configs.Connect(false, dir)
assert.Nil(t, err)
})
t.Run(dbt+" Run Database Migrations", func(t *testing.T) {
RunDatabaseMigrations(t, dbt)
2018-07-04 09:00:16 +00:00
})
t.Run(dbt+" Select Core", func(t *testing.T) {
RunSelectCoreMYQL(t, dbt)
t.Log(core.CoreApp)
})
2018-08-21 08:15:17 +00:00
t.Run(dbt+" Select Services", func(t *testing.T) {
RunSelectAllMysqlServices(t)
})
t.Run(dbt+" Select Comms", func(t *testing.T) {
2018-09-12 04:14:22 +00:00
RunSelectAllNotifiers(t)
})
2018-07-03 21:39:56 +00:00
t.Run(dbt+" Create Users", func(t *testing.T) {
RunUserCreate(t)
})
2018-07-08 21:06:10 +00:00
t.Run(dbt+" Update User", func(t *testing.T) {
RunUser_Update(t)
})
2018-07-05 01:50:01 +00:00
t.Run(dbt+" Create Non Unique Users", func(t *testing.T) {
t.SkipNow()
RunUser_NonUniqueCreate(t)
})
2018-07-03 21:39:56 +00:00
t.Run(dbt+" Select Users", func(t *testing.T) {
RunUserSelectAll(t)
2018-07-03 21:39:56 +00:00
})
2018-08-21 01:22:42 +00:00
t.Run(dbt+" Select Services", func(t *testing.T) {
RunSelectAllServices(t)
})
t.Run(dbt+" Select One Service", func(t *testing.T) {
RunOneServiceCheck(t)
})
t.Run(dbt+" Create Service", func(t *testing.T) {
RunServiceCreate(t)
})
t.Run(dbt+" Create Hits", func(t *testing.T) {
RunCreateServiceHits(t)
})
t.Run(dbt+" Service ToJSON()", func(t *testing.T) {
RunServiceToJSON(t)
})
t.Run(dbt+" Avg Time", func(t *testing.T) {
RunService_AvgTime(t)
})
t.Run(dbt+" Online 24h", func(t *testing.T) {
RunServiceOnline24(t)
})
t.Run(dbt+" Chart Data", func(t *testing.T) {
RunServiceGraphData(t)
})
2018-07-03 21:39:56 +00:00
t.Run(dbt+" Create Failing Service", func(t *testing.T) {
RunBadServiceCreate(t)
})
t.Run(dbt+" Check Bad Service", func(t *testing.T) {
RunBadServiceCheck(t)
})
t.Run(dbt+" Select Hits", func(t *testing.T) {
RunServiceHits(t)
})
2018-07-03 21:39:56 +00:00
t.Run(dbt+" Select Failures", func(t *testing.T) {
RunServiceFailures(t)
2018-07-03 21:39:56 +00:00
})
t.Run(dbt+" Select Limited Hits", func(t *testing.T) {
RunServiceLimitedHits(t)
})
2018-07-03 21:39:56 +00:00
t.Run(dbt+" Delete Service", func(t *testing.T) {
RunDeleteService(t)
})
t.Run(dbt+" Delete User", func(t *testing.T) {
RunUserDelete(t)
2018-07-03 21:39:56 +00:00
})
t.Run(dbt+" HTTP /", func(t *testing.T) {
RunIndexHandler(t)
})
t.Run(dbt+" HTTP /service/1", func(t *testing.T) {
RunServiceHandler(t)
})
t.Run(dbt+" HTTP /metrics", func(t *testing.T) {
RunPrometheusHandler(t)
})
t.Run(dbt+" HTTP /metrics", func(t *testing.T) {
RunFailingPrometheusHandler(t)
})
t.Run(dbt+" HTTP /login", func(t *testing.T) {
RunLoginHandler(t)
})
t.Run(dbt+" HTTP /dashboard", func(t *testing.T) {
RunDashboardHandler(t)
})
t.Run(dbt+" HTTP /users", func(t *testing.T) {
RunUsersHandler(t)
})
2018-07-08 21:06:10 +00:00
t.Run(dbt+" HTTP /user/1", func(t *testing.T) {
RunUserViewHandler(t)
})
t.Run(dbt+" HTTP /services", func(t *testing.T) {
RunServicesHandler(t)
})
t.Run(dbt+" HTTP /help", func(t *testing.T) {
RunHelpHandler(t)
})
t.Run(dbt+" HTTP /settings", func(t *testing.T) {
RunSettingsHandler(t)
})
2018-08-16 06:22:20 +00:00
t.Run(dbt+" Cleanup", func(t *testing.T) {
core.Configs.Close()
core.DbSession = nil
2018-09-19 06:12:42 +00:00
if dbt == "mssql" {
os.Setenv("DB_DATABASE", "root")
os.Setenv("DB_PASS", "password123")
os.Setenv("DB_PORT", "1433")
}
//Clean()
2018-08-16 06:22:20 +00:00
})
//<-done
2018-06-15 04:30:10 +00:00
}
2018-06-15 04:30:10 +00:00
2018-08-16 06:22:20 +00:00
}
func RunSaveConfig(t *testing.T, db string) {
var err error
port := 5432
if db == "mysql" {
port = 3306
2018-09-19 06:12:42 +00:00
} else if db == "mssql" {
port = 1433
}
2018-09-27 05:31:39 +00:00
core.Configs = &core.DbConfig{
2018-08-19 08:48:02 +00:00
DbConn: db,
DbHost: os.Getenv("DB_HOST"),
DbUser: os.Getenv("DB_USER"),
DbPass: os.Getenv("DB_PASS"),
DbData: os.Getenv("DB_DATABASE"),
DbPort: port,
Project: "Testing " + db,
Description: "This is a test of Statup.io!",
Domain: "",
Username: "admin",
Password: "admin",
Email: "",
Error: nil,
Location: dir,
2018-09-27 05:31:39 +00:00
}
core.Configs, err = core.Configs.Save()
2018-06-10 08:05:57 +00:00
assert.Nil(t, err)
}
2018-06-15 04:30:10 +00:00
func RunCreateSchema(t *testing.T, db string) {
err := core.Configs.Connect(false, dir)
assert.Nil(t, err)
err = core.Configs.CreateDatabase()
2018-06-15 04:30:10 +00:00
assert.Nil(t, err)
}
2018-06-15 04:30:10 +00:00
2018-07-22 22:17:38 +00:00
func RunDatabaseMigrations(t *testing.T, db string) {
err := core.Configs.MigrateDatabase()
2018-07-22 22:17:38 +00:00
assert.Nil(t, err)
}
2018-08-16 20:55:30 +00:00
func RunInsertSampleData(t *testing.T) {
err := core.InsertLargeSampleData()
assert.Nil(t, err)
2018-06-10 08:05:57 +00:00
}
2018-07-04 09:00:16 +00:00
func RunLoadConfig(t *testing.T) {
var err error
core.Configs, err = core.LoadConfig(dir)
t.Log(core.Configs)
2018-07-04 09:00:16 +00:00
assert.Nil(t, err)
assert.NotNil(t, core.Configs)
}
func RunDropDatabase(t *testing.T) {
err := core.Configs.DropDatabase()
assert.Nil(t, err)
}
func RunSelectCoreMYQL(t *testing.T, db string) {
2018-06-14 06:50:47 +00:00
var err error
2018-06-30 00:57:05 +00:00
core.CoreApp, err = core.SelectCore()
if err != nil {
t.FailNow()
}
2018-06-14 06:50:47 +00:00
assert.Nil(t, err)
t.Log("core: ", core.CoreApp.Core)
assert.Equal(t, "Statup Sample Data", core.CoreApp.Name)
2018-07-04 09:00:16 +00:00
assert.Equal(t, db, core.CoreApp.DbConnection)
2018-07-03 21:39:56 +00:00
assert.NotEmpty(t, core.CoreApp.ApiKey)
assert.NotEmpty(t, core.CoreApp.ApiSecret)
2018-06-30 00:57:05 +00:00
assert.Equal(t, VERSION, core.CoreApp.Version)
2018-06-14 06:38:15 +00:00
}
func RunSelectAllMysqlServices(t *testing.T) {
2018-06-15 04:30:10 +00:00
var err error
services, err := core.CoreApp.SelectAllServices()
2018-06-15 04:30:10 +00:00
assert.Nil(t, err)
assert.Equal(t, 15, len(services))
}
2018-09-12 04:14:22 +00:00
func RunSelectAllNotifiers(t *testing.T) {
var err error
2018-09-12 04:14:22 +00:00
notifier.SetDB(core.DbSession)
core.CoreApp.Notifications = notifier.Load()
assert.Nil(t, err)
2018-10-03 10:47:32 +00:00
assert.Equal(t, 6, len(core.CoreApp.Notifications))
2018-06-14 06:38:15 +00:00
}
2018-06-10 08:05:57 +00:00
func RunUserSelectAll(t *testing.T) {
2018-07-03 21:39:56 +00:00
users, err := core.SelectAllUsers()
assert.Nil(t, err)
assert.Equal(t, 4, len(users))
2018-07-03 21:39:56 +00:00
}
func RunUserCreate(t *testing.T) {
user := core.ReturnUser(&types.User{
Username: "hunterlong",
Password: "password123",
Email: "info@gmail.com",
2018-07-08 21:06:10 +00:00
Admin: true,
})
id, err := user.Create()
2018-06-14 06:38:15 +00:00
assert.Nil(t, err)
assert.Equal(t, int64(3), id)
user2 := core.ReturnUser(&types.User{
2018-07-03 21:39:56 +00:00
Username: "superadmin",
Password: "admin",
Email: "info@adminer.com",
Admin: true,
})
id, err = user2.Create()
2018-07-03 21:39:56 +00:00
assert.Nil(t, err)
assert.Equal(t, int64(4), id)
2018-07-03 21:39:56 +00:00
}
2018-07-08 21:06:10 +00:00
func RunUser_Update(t *testing.T) {
user, err := core.SelectUser(1)
user.Email = "info@updatedemail.com"
assert.Nil(t, err)
err = user.Update()
2018-07-08 21:06:10 +00:00
assert.Nil(t, err)
updatedUser, err := core.SelectUser(1)
assert.Nil(t, err)
assert.Equal(t, "info@updatedemail.com", updatedUser.Email)
}
2018-07-05 01:50:01 +00:00
func RunUser_NonUniqueCreate(t *testing.T) {
user := core.ReturnUser(&types.User{
2018-07-05 01:50:01 +00:00
Username: "admin",
Password: "admin",
Email: "info@testuser.com",
})
admin, err := user.Create()
2018-08-19 02:40:08 +00:00
assert.Error(t, err)
assert.Nil(t, admin)
2018-07-05 01:50:01 +00:00
}
func RunUserDelete(t *testing.T) {
2018-07-03 21:39:56 +00:00
user, err := core.SelectUser(2)
assert.Nil(t, err)
assert.NotNil(t, user)
err = user.Delete()
2018-07-03 21:39:56 +00:00
assert.Nil(t, err)
2018-06-15 04:30:10 +00:00
}
2018-06-14 06:38:15 +00:00
func RunSelectAllServices(t *testing.T) {
2018-06-30 00:57:05 +00:00
var err error
services, err := core.CoreApp.SelectAllServices()
2018-06-30 00:57:05 +00:00
assert.Nil(t, err)
assert.Equal(t, 15, len(services))
for _, s := range services {
assert.NotEmpty(t, s.CreatedAt)
}
2018-06-30 00:57:05 +00:00
}
func RunOneServiceCheck(t *testing.T) {
2018-06-30 00:57:05 +00:00
service := core.SelectService(1)
2018-06-23 00:10:37 +00:00
assert.NotNil(t, service)
2018-08-19 00:37:00 +00:00
assert.Equal(t, "Google", service.Name)
2018-06-14 06:38:15 +00:00
}
func RunServiceCreate(t *testing.T) {
2018-08-21 01:22:42 +00:00
service := core.ReturnService(&types.Service{
2018-06-15 04:30:10 +00:00
Name: "test service",
Domain: "https://google.com",
ExpectedStatus: 200,
Interval: 1,
Port: 0,
Type: "http",
2018-06-15 04:30:10 +00:00
Method: "GET",
Timeout: 30,
2018-08-21 01:22:42 +00:00
})
id, err := service.Create(false)
2018-06-15 04:30:10 +00:00
assert.Nil(t, err)
assert.Equal(t, int64(16), id)
2018-06-15 04:30:10 +00:00
}
func RunServiceToJSON(t *testing.T) {
service := core.SelectService(1)
assert.NotNil(t, service)
jsoned := service.ToJSON()
assert.NotEmpty(t, jsoned)
}
func RunService_AvgTime(t *testing.T) {
2018-06-30 00:57:05 +00:00
service := core.SelectService(1)
2018-06-23 00:10:37 +00:00
assert.NotNil(t, service)
avg := service.AvgUptime24()
2018-06-22 06:56:44 +00:00
assert.Equal(t, "100", avg)
2018-06-15 04:30:10 +00:00
}
func RunServiceOnline24(t *testing.T) {
var dayAgo = time.Now().Add(-24 * time.Hour).Add(-10 * time.Minute)
2018-06-30 00:57:05 +00:00
service := core.SelectService(1)
2018-06-23 00:10:37 +00:00
assert.NotNil(t, service)
online := service.OnlineSince(dayAgo)
2018-09-10 09:27:53 +00:00
assert.NotEqual(t, float32(0), online)
2018-09-06 22:05:28 +00:00
service = core.SelectService(6)
assert.NotNil(t, service)
online = service.OnlineSince(dayAgo)
assert.Equal(t, float32(100), online)
service = core.SelectService(13)
assert.NotNil(t, service)
online = service.OnlineSince(dayAgo)
assert.True(t, online > 99)
2018-09-06 22:05:28 +00:00
service = core.SelectService(14)
assert.NotNil(t, service)
online = service.OnlineSince(dayAgo)
assert.True(t, online > float32(49.00))
2018-06-15 04:30:10 +00:00
}
func RunServiceGraphData(t *testing.T) {
2018-06-30 00:57:05 +00:00
service := core.SelectService(1)
2018-06-23 00:10:37 +00:00
assert.NotNil(t, service)
2018-06-15 04:30:10 +00:00
data := service.GraphData()
2018-07-03 21:39:56 +00:00
t.Log(data)
assert.NotEqual(t, "null", data)
assert.False(t, strings.Contains(data, "0001-01-01T00:00:00Z"))
2018-06-22 09:52:13 +00:00
assert.NotEmpty(t, data)
2018-06-15 04:30:10 +00:00
}
func RunBadServiceCreate(t *testing.T) {
2018-08-21 01:22:42 +00:00
service := core.ReturnService(&types.Service{
Name: "Bad Service",
2018-06-15 04:30:10 +00:00
Domain: "https://9839f83h72gey2g29278hd2od2d.com",
ExpectedStatus: 200,
Interval: 10,
Port: 0,
Type: "http",
2018-06-15 04:30:10 +00:00
Method: "GET",
Timeout: 30,
2018-08-21 01:22:42 +00:00
})
id, err := service.Create(false)
2018-06-15 04:30:10 +00:00
assert.Nil(t, err)
assert.Equal(t, int64(17), id)
2018-06-15 04:30:10 +00:00
}
func RunBadServiceCheck(t *testing.T) {
service := core.SelectService(17)
2018-06-23 00:10:37 +00:00
assert.NotNil(t, service)
assert.Equal(t, "Bad Service", service.Name)
2018-08-19 02:40:08 +00:00
for i := 0; i <= 10; i++ {
2018-08-21 01:22:42 +00:00
service.Check(true)
2018-08-19 02:40:08 +00:00
}
2018-08-19 00:37:00 +00:00
assert.True(t, service.IsRunning())
2018-06-15 04:30:10 +00:00
}
2018-07-03 21:39:56 +00:00
func RunDeleteService(t *testing.T) {
service := core.SelectService(4)
assert.NotNil(t, service)
2018-08-19 00:37:00 +00:00
assert.Equal(t, "JSON API Tester", service.Name)
assert.True(t, service.IsRunning())
err := service.Delete()
2018-08-19 00:37:00 +00:00
assert.False(t, service.IsRunning())
2018-07-03 21:39:56 +00:00
assert.Nil(t, err)
}
func RunCreateServiceHits(t *testing.T) {
services := core.CoreApp.Services
assert.NotNil(t, services)
assert.Equal(t, 16, len(services))
for _, service := range services {
service.Check(true)
assert.NotNil(t, service)
}
}
func RunServiceHits(t *testing.T) {
2018-06-30 00:57:05 +00:00
service := core.SelectService(1)
2018-06-23 00:10:37 +00:00
assert.NotNil(t, service)
2018-06-22 04:02:57 +00:00
hits, err := service.Hits()
assert.Nil(t, err)
2018-06-29 04:16:26 +00:00
assert.NotZero(t, len(hits))
2018-06-22 04:02:57 +00:00
}
func RunServiceFailures(t *testing.T) {
service := core.SelectService(17)
2018-07-03 21:39:56 +00:00
assert.NotNil(t, service)
assert.Equal(t, "Bad Service", service.Name)
assert.NotEmpty(t, service.AllFailures())
2018-07-03 21:39:56 +00:00
}
func RunServiceLimitedHits(t *testing.T) {
2018-06-30 00:57:05 +00:00
service := core.SelectService(1)
2018-06-23 00:10:37 +00:00
assert.NotNil(t, service)
2018-06-22 04:02:57 +00:00
hits, err := service.LimitedHits()
assert.Nil(t, err)
2018-06-29 04:16:26 +00:00
assert.NotZero(t, len(hits))
}
func RunIndexHandler(t *testing.T) {
2018-06-29 04:16:26 +00:00
req, err := http.NewRequest("GET", "/", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
assert.True(t, strings.Contains(rr.Body.String(), "Statup"))
assert.True(t, strings.Contains(rr.Body.String(), "footer"))
2018-06-29 04:16:26 +00:00
}
func RunServiceHandler(t *testing.T) {
2018-06-29 04:16:26 +00:00
req, err := http.NewRequest("GET", "/service/1", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
2018-10-02 06:21:14 +00:00
assert.True(t, strings.Contains(rr.Body.String(), "<title>Google Status</title>"))
assert.True(t, strings.Contains(rr.Body.String(), "footer"))
2018-06-29 04:16:26 +00:00
}
func RunPrometheusHandler(t *testing.T) {
2018-06-29 04:16:26 +00:00
req, err := http.NewRequest("GET", "/metrics", nil)
2018-06-30 05:08:08 +00:00
req.Header.Set("Authorization", core.CoreApp.ApiSecret)
2018-06-29 04:16:26 +00:00
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
t.Log(rr.Body.String())
assert.True(t, strings.Contains(rr.Body.String(), "statup_total_services 16"))
2018-08-16 02:22:10 +00:00
assert.True(t, handlers.IsAuthenticated(req))
2018-06-29 04:16:26 +00:00
}
func RunFailingPrometheusHandler(t *testing.T) {
2018-06-30 05:08:08 +00:00
req, err := http.NewRequest("GET", "/metrics", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
2018-08-16 02:22:10 +00:00
assert.Equal(t, 303, rr.Result().StatusCode)
assert.True(t, handlers.IsAuthenticated(req))
2018-06-30 05:08:08 +00:00
}
func RunLoginHandler(t *testing.T) {
2018-06-29 04:16:26 +00:00
form := url.Values{}
form.Add("username", "admin")
form.Add("password", "password123")
2018-06-29 04:16:26 +00:00
req, err := http.NewRequest("POST", "/dashboard", strings.NewReader(form.Encode()))
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
2018-09-13 01:24:22 +00:00
assert.Equal(t, 200, rr.Result().StatusCode)
2018-08-16 02:22:10 +00:00
assert.True(t, handlers.IsAuthenticated(req))
2018-06-29 04:16:26 +00:00
}
func RunDashboardHandler(t *testing.T) {
2018-06-29 04:16:26 +00:00
req, err := http.NewRequest("GET", "/dashboard", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
assert.True(t, strings.Contains(rr.Body.String(), "<title>Statup | Dashboard</title>"))
assert.True(t, strings.Contains(rr.Body.String(), "footer"))
2018-08-16 02:22:10 +00:00
assert.True(t, handlers.IsAuthenticated(req))
2018-06-29 04:16:26 +00:00
}
func RunUsersHandler(t *testing.T) {
2018-06-29 04:16:26 +00:00
req, err := http.NewRequest("GET", "/users", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
assert.True(t, strings.Contains(rr.Body.String(), "<title>Statup | Users</title>"))
assert.True(t, strings.Contains(rr.Body.String(), "footer"))
2018-08-16 02:22:10 +00:00
assert.True(t, handlers.IsAuthenticated(req))
2018-06-29 04:16:26 +00:00
}
2018-07-08 21:06:10 +00:00
func RunUserViewHandler(t *testing.T) {
req, err := http.NewRequest("GET", "/user/1", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
2018-10-02 06:21:14 +00:00
assert.True(t, strings.Contains(rr.Body.String(), "<title>Statup | testadmin</title>"))
2018-07-08 21:06:10 +00:00
assert.True(t, strings.Contains(rr.Body.String(), "footer"))
2018-08-16 02:22:10 +00:00
assert.True(t, handlers.IsAuthenticated(req))
2018-07-08 21:06:10 +00:00
}
func RunServicesHandler(t *testing.T) {
2018-06-29 04:16:26 +00:00
req, err := http.NewRequest("GET", "/services", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
assert.True(t, strings.Contains(rr.Body.String(), "<title>Statup | Services</title>"))
assert.True(t, strings.Contains(rr.Body.String(), "footer"))
2018-08-16 02:22:10 +00:00
assert.True(t, handlers.IsAuthenticated(req))
2018-06-29 04:16:26 +00:00
}
func RunHelpHandler(t *testing.T) {
2018-06-29 04:16:26 +00:00
req, err := http.NewRequest("GET", "/help", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
assert.True(t, strings.Contains(rr.Body.String(), "<title>Statup | Help</title>"))
assert.True(t, strings.Contains(rr.Body.String(), "footer"))
2018-08-16 02:22:10 +00:00
assert.True(t, handlers.IsAuthenticated(req))
2018-06-29 04:16:26 +00:00
}
func RunSettingsHandler(t *testing.T) {
2018-06-29 04:16:26 +00:00
req, err := http.NewRequest("GET", "/settings", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
route.ServeHTTP(rr, req)
assert.True(t, strings.Contains(rr.Body.String(), "<title>Statup | Settings</title>"))
assert.True(t, strings.Contains(rr.Body.String(), "Theme Editor"))
assert.True(t, strings.Contains(rr.Body.String(), "footer"))
2018-08-16 02:22:10 +00:00
assert.True(t, handlers.IsAuthenticated(req))
2018-06-22 04:02:57 +00:00
}
func fileExists(file string) bool {
if _, err := os.Stat(file); os.IsNotExist(err) {
return false
}
return true
}