2022-01-15 08:07:00 +00:00
|
|
|
package databag
|
2022-01-11 17:36:16 +00:00
|
|
|
|
2022-01-12 07:04:27 +00:00
|
|
|
import (
|
2022-07-22 19:28:14 +00:00
|
|
|
"databag/internal/store"
|
|
|
|
"os"
|
|
|
|
"testing"
|
2022-01-12 07:04:27 +00:00
|
|
|
)
|
2022-01-11 17:36:16 +00:00
|
|
|
|
2022-01-15 08:07:00 +00:00
|
|
|
func TestMain(m *testing.M) {
|
2022-01-12 07:04:27 +00:00
|
|
|
|
2022-07-22 19:28:14 +00:00
|
|
|
os.RemoveAll("testdata")
|
|
|
|
os.RemoveAll("testscripts")
|
2022-02-28 22:59:29 +00:00
|
|
|
|
2022-07-22 19:28:14 +00:00
|
|
|
if err := os.Mkdir("testdata", os.ModePerm); err != nil {
|
|
|
|
panic("failed to create testdata path")
|
|
|
|
}
|
2024-01-14 07:37:18 +00:00
|
|
|
if err := os.Mkdir("testdata/assets", os.ModePerm); err != nil {
|
|
|
|
panic("failed to create assets path")
|
|
|
|
}
|
2022-07-22 19:28:14 +00:00
|
|
|
if err := os.Mkdir("testscripts", os.ModePerm); err != nil {
|
|
|
|
panic("failed to create testscripts path")
|
|
|
|
}
|
|
|
|
script := []byte("#!/bin/bash\n\ncp $1 $2\n")
|
|
|
|
if err := os.WriteFile("testscripts/transform_copy.sh", script, 0555); err != nil {
|
|
|
|
panic("failed to create P01 script")
|
|
|
|
}
|
2022-01-15 08:07:00 +00:00
|
|
|
|
2024-01-14 07:37:18 +00:00
|
|
|
store.SetPath("./testdata", "./testscripts")
|
|
|
|
|
2022-07-22 19:28:14 +00:00
|
|
|
r, w, _ := NewRequest("GET", "/admin/status", nil)
|
|
|
|
GetNodeStatus(w, r)
|
|
|
|
var available bool
|
|
|
|
if ReadResponse(w, &available) != nil {
|
|
|
|
panic("server not claimable")
|
|
|
|
}
|
2022-01-11 17:36:16 +00:00
|
|
|
|
2022-07-22 19:28:14 +00:00
|
|
|
// claim server
|
|
|
|
r, w, _ = NewRequest("PUT", "/admin/status?token=pass", nil)
|
|
|
|
SetNodeStatus(w, r)
|
|
|
|
if ReadResponse(w, nil) != nil {
|
|
|
|
panic("failed to claim server")
|
|
|
|
}
|
2022-01-12 07:16:08 +00:00
|
|
|
|
2022-09-01 07:50:07 +00:00
|
|
|
// config open access
|
2023-07-18 05:45:44 +00:00
|
|
|
access := &store.Config{ConfigID: CNFEnableOpenAccess, BoolValue: true}
|
2022-09-01 07:50:07 +00:00
|
|
|
if err := store.DB.Save(access).Error; err != nil {
|
|
|
|
panic("failed to configure open access")
|
|
|
|
}
|
|
|
|
|
|
|
|
// config account limit
|
2023-07-18 05:45:44 +00:00
|
|
|
limit := &store.Config{ConfigID: CNFOpenAccessLimit, NumValue: 1024}
|
2022-09-01 07:50:07 +00:00
|
|
|
if err := store.DB.Save(limit).Error; err != nil {
|
|
|
|
panic("failed to configure account limit")
|
|
|
|
}
|
|
|
|
|
2024-05-24 05:05:51 +00:00
|
|
|
// admin login
|
|
|
|
r, w, _ = NewRequest("PUT", "/admin/access?token=pass", nil);
|
|
|
|
SetAdminAccess(w, r)
|
|
|
|
var session string
|
|
|
|
if ReadResponse(w, &session) != nil {
|
|
|
|
panic("failed to login as admin")
|
|
|
|
}
|
|
|
|
|
2022-07-22 19:28:14 +00:00
|
|
|
// config server
|
2022-09-01 07:50:07 +00:00
|
|
|
config := NodeConfig{Domain: "databag.coredb.org", AccountStorage: 4096, KeyType: "RSA2048"}
|
2024-05-24 05:05:51 +00:00
|
|
|
r, w, _ = NewRequest("PUT", "/admin/config?token=" + session, &config)
|
2022-07-22 19:28:14 +00:00
|
|
|
SetNodeConfig(w, r)
|
|
|
|
if ReadResponse(w, nil) != nil {
|
|
|
|
panic("failed to set config")
|
|
|
|
}
|
2022-01-15 05:27:43 +00:00
|
|
|
|
2022-07-22 19:28:14 +00:00
|
|
|
// check config
|
2024-05-24 05:05:51 +00:00
|
|
|
r, w, _ = NewRequest("GET", "/admin/config?token=" + session, nil)
|
2022-07-22 19:28:14 +00:00
|
|
|
GetNodeConfig(w, r)
|
|
|
|
var check NodeConfig
|
|
|
|
if ReadResponse(w, &check) != nil {
|
|
|
|
panic("failed to get node config")
|
|
|
|
}
|
|
|
|
if check.Domain != "databag.coredb.org" {
|
|
|
|
panic("failed to set config domain")
|
|
|
|
}
|
|
|
|
if check.AccountStorage != 4096 {
|
|
|
|
panic("failed to set account storage")
|
|
|
|
}
|
2022-01-17 07:00:08 +00:00
|
|
|
|
2022-07-22 19:28:14 +00:00
|
|
|
go SendNotifications()
|
2022-01-27 19:45:01 +00:00
|
|
|
|
2022-07-22 19:28:14 +00:00
|
|
|
m.Run()
|
2022-01-27 19:45:01 +00:00
|
|
|
|
2022-07-22 19:28:14 +00:00
|
|
|
ExitNotifications()
|
2022-01-17 07:00:08 +00:00
|
|
|
}
|