Documentation ¶
Overview ¶
Package storagetest provides utilities to assist in testing caddytls.Storage implementations.
Index ¶
- func InMemoryStorageCreator(caURL *url.URL) (caddytls.Storage, error)
- type InMemoryStorage
- func (s *InMemoryStorage) Clear()
- func (s *InMemoryStorage) DeleteSite(domain string) error
- func (s *InMemoryStorage) LoadSite(domain string) (*caddytls.SiteData, error)
- func (s *InMemoryStorage) LoadUser(email string) (*caddytls.UserData, error)
- func (s *InMemoryStorage) LockRegister(domain string) (bool, error)
- func (s *InMemoryStorage) MostRecentUserEmail() string
- func (s *InMemoryStorage) SiteExists(domain string) bool
- func (s *InMemoryStorage) StoreSite(domain string, data *caddytls.SiteData) error
- func (s *InMemoryStorage) StoreUser(email string, data *caddytls.UserData) error
- func (s *InMemoryStorage) UnlockRegister(domain string) error
- type StorageTest
- func (s *StorageTest) AllFuncs() []TestFunc
- func (s *StorageTest) Test(t *testing.T, eagerFail bool)
- func (s *StorageTest) TestAll(eagerFail bool) (errs []error)
- func (s *StorageTest) TestMostRecentUserEmail() error
- func (s *StorageTest) TestSite() error
- func (s *StorageTest) TestSiteExists() error
- func (s *StorageTest) TestUser() error
- type TestFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type InMemoryStorage ¶
type InMemoryStorage struct { // Sites are exposed for testing purposes. Sites map[string]*caddytls.SiteData // Users are exposed for testing purposes. Users map[string]*caddytls.UserData // LastUserEmail is exposed for testing purposes. LastUserEmail string }
InMemoryStorage is a caddytls.Storage implementation for use in testing. It simply stores information in runtime memory.
func NewInMemoryStorage ¶
func NewInMemoryStorage() *InMemoryStorage
NewInMemoryStorage constructs an InMemoryStorage instance. For use with caddytls, the InMemoryStorageCreator should be used instead.
func (*InMemoryStorage) Clear ¶
func (s *InMemoryStorage) Clear()
Clear completely clears all values associated with this storage.
func (*InMemoryStorage) DeleteSite ¶
func (s *InMemoryStorage) DeleteSite(domain string) error
DeleteSite implements caddytls.Storage.DeleteSite in memory.
func (*InMemoryStorage) LoadSite ¶
func (s *InMemoryStorage) LoadSite(domain string) (*caddytls.SiteData, error)
LoadSite implements caddytls.Storage.LoadSite in memory.
func (*InMemoryStorage) LoadUser ¶
func (s *InMemoryStorage) LoadUser(email string) (*caddytls.UserData, error)
LoadUser implements caddytls.Storage.LoadUser in memory.
func (*InMemoryStorage) LockRegister ¶
func (s *InMemoryStorage) LockRegister(domain string) (bool, error)
LockRegister implements Storage.LockRegister by just returning true because it is not a multi-server storage implementation.
func (*InMemoryStorage) MostRecentUserEmail ¶
func (s *InMemoryStorage) MostRecentUserEmail() string
MostRecentUserEmail implements caddytls.Storage.MostRecentUserEmail in memory.
func (*InMemoryStorage) SiteExists ¶
func (s *InMemoryStorage) SiteExists(domain string) bool
SiteExists implements caddytls.Storage.SiteExists in memory.
func (*InMemoryStorage) StoreSite ¶
func (s *InMemoryStorage) StoreSite(domain string, data *caddytls.SiteData) error
StoreSite implements caddytls.Storage.StoreSite in memory.
func (*InMemoryStorage) StoreUser ¶
func (s *InMemoryStorage) StoreUser(email string, data *caddytls.UserData) error
StoreUser implements caddytls.Storage.StoreUser in memory.
func (*InMemoryStorage) UnlockRegister ¶
func (s *InMemoryStorage) UnlockRegister(domain string) error
UnlockRegister implements Storage.UnlockRegister as a no-op because it is not a multi-server storage implementation.
type StorageTest ¶
type StorageTest struct { // Storage is the implementation to use during tests. This must be // present. caddytls.Storage // PreTest, if present, is called before every test. Any error returned // is returned from the test and the test does not continue. PreTest func() error // PostTest, if present, is executed after every test via defer which // means it executes even on failure of the test (but not on failure of // PreTest). PostTest func() // AfterUserEmailStore, if present, is invoked during // TestMostRecentUserEmail after each storage just in case anything // needs to be mocked. AfterUserEmailStore func(email string) error }
StorageTest is a test harness that contains tests to execute all exposed parts of a Storage implementation.
func (*StorageTest) AllFuncs ¶
func (s *StorageTest) AllFuncs() []TestFunc
AllFuncs returns all test functions that are part of this harness.
func (*StorageTest) Test ¶
func (s *StorageTest) Test(t *testing.T, eagerFail bool)
Test executes the entire harness using the testing package. Failures are reported via T.Fatal. If eagerFail is true, the first failure causes all testing to stop immediately.
func (*StorageTest) TestAll ¶
func (s *StorageTest) TestAll(eagerFail bool) (errs []error)
TestAll executes the entire harness and returns the results as an array of errors. If eagerFail is true, the first failure causes all testing to stop immediately.
func (*StorageTest) TestMostRecentUserEmail ¶
func (s *StorageTest) TestMostRecentUserEmail() error
TestMostRecentUserEmail tests Storage.MostRecentUserEmail.
func (*StorageTest) TestSite ¶
func (s *StorageTest) TestSite() error
TestSite tests Storage.LoadSite, Storage.StoreSite, and Storage.DeleteSite.
func (*StorageTest) TestSiteExists ¶
func (s *StorageTest) TestSiteExists() error
TestSiteExists tests Storage.SiteExists.
func (*StorageTest) TestUser ¶
func (s *StorageTest) TestUser() error
TestUser tests Storage.LoadUser and Storage.StoreUser.