authelia/suites/registry.go
Clement Michaud a991379a74 Declare suites as Go structs and bootstrap e2e test framework in Go.
Some tests are not fully rewritten in Go, a typescript wrapper is called
instead until we remove the remaining TS tests and dependencies.

Also, dockerize every components (mainly Authelia backend, frontend and kind)
so that the project does not interfere with user host anymore (open ports for instance).
The only remaining intrusive change is the one done during bootstrap to add entries in /etc/hosts.
It will soon be avoided using authelia.com domain that I own.
2019-11-15 20:23:06 +01:00

64 lines
1.4 KiB
Go

package suites
import (
"fmt"
"time"
log "github.com/sirupsen/logrus"
)
// Suite the definition of a suite
type Suite struct {
TestTimeout time.Duration
SetUp func(tmpPath string) error
SetUpTimeout time.Duration
TearDown func(tmpPath string) error
TearDownTimeout time.Duration
// A textual description of the suite purpose.
Description string
}
// Registry represent a registry of suite by name
type Registry struct {
registry map[string]Suite
}
// GlobalRegistry a global registry used by Authelia tooling
var GlobalRegistry *Registry
func init() {
GlobalRegistry = NewSuitesRegistry()
}
// NewSuitesRegistry create a suites registry
func NewSuitesRegistry() *Registry {
return &Registry{make(map[string]Suite)}
}
// Register register a suite by name
func (sr *Registry) Register(name string, suite Suite) {
if _, found := sr.registry[name]; found {
log.Fatal(fmt.Sprintf("Trying to register the suite %s multiple times", name))
}
sr.registry[name] = suite
}
// Get return a suite by name
func (sr *Registry) Get(name string) Suite {
s, found := sr.registry[name]
if !found {
log.Fatal(fmt.Sprintf("The suite %s does not exist", name))
}
return s
}
// Suites list available suites
func (sr *Registry) Suites() []string {
suites := make([]string, 0)
for k := range sr.registry {
suites = append(suites, k)
}
return suites
}