91 lines
2.3 KiB
Go
91 lines
2.3 KiB
Go
package access
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/safing/portmaster/base/config"
|
|
"github.com/safing/portmaster/base/database"
|
|
_ "github.com/safing/portmaster/base/database/storage/hashmap"
|
|
"github.com/safing/portmaster/service/mgr"
|
|
"github.com/safing/portmaster/spn/conf"
|
|
)
|
|
|
|
type testInstance struct {
|
|
config *config.Config
|
|
}
|
|
|
|
func (stub *testInstance) Config() *config.Config { return stub.config }
|
|
func (stub *testInstance) SPNGroup() *mgr.ExtendedGroup { return nil }
|
|
func (stub *testInstance) Stopping() bool { return false }
|
|
func (stub *testInstance) IsShuttingDown() bool { return false }
|
|
func (stub *testInstance) SetCmdLineOperation(f func() error) {}
|
|
func (stub *testInstance) DataDir() string { return _dataDir }
|
|
|
|
var _dataDir string
|
|
|
|
func TestMain(m *testing.M) {
|
|
exitCode := 1
|
|
defer func() {
|
|
if exitCode != 0 {
|
|
os.Exit(exitCode)
|
|
}
|
|
}()
|
|
|
|
var err error
|
|
// Create a temporary directory for the data
|
|
_dataDir, err = os.MkdirTemp("", "")
|
|
if err != nil {
|
|
fmt.Printf("failed to create temporary data directory: %s", err)
|
|
return // Exit with error
|
|
}
|
|
defer func() { _ = os.RemoveAll(_dataDir) }()
|
|
|
|
// Initialize the database module
|
|
err = database.Initialize(_dataDir)
|
|
if err != nil {
|
|
fmt.Printf("failed to initialize database module: %s", err)
|
|
return // Exit with error
|
|
}
|
|
_, err = database.Register(&database.Database{
|
|
Name: "core",
|
|
Description: "Holds core data, such as settings and profiles",
|
|
StorageType: "hashmap",
|
|
})
|
|
if err != nil {
|
|
fmt.Printf("failed to register core database: %s", err)
|
|
return // Exit with error
|
|
}
|
|
|
|
// Initialize the instance
|
|
instance := &testInstance{}
|
|
|
|
instance.config, err = config.New(instance)
|
|
if err != nil {
|
|
fmt.Printf("failed to create config module: %s", err)
|
|
return // Exit with error
|
|
}
|
|
module, err = New(instance)
|
|
if err != nil {
|
|
fmt.Printf("failed to create access module: %s", err)
|
|
return // Exit with error
|
|
}
|
|
|
|
err = instance.config.Start()
|
|
if err != nil {
|
|
fmt.Printf("failed to start config module: %s", err)
|
|
return // Exit with error
|
|
}
|
|
err = module.Start()
|
|
if err != nil {
|
|
fmt.Printf("failed to start access module: %s", err)
|
|
return // Exit with error
|
|
}
|
|
|
|
conf.EnableClient(true)
|
|
m.Run()
|
|
|
|
exitCode = 0 // success
|
|
}
|