Documentation ¶
Overview ¶
Package envstest defines global test helpers for the entire project.
Index ¶
- Constants
- func AutoConfirmDialogs(ctx context.Context, b bool) <-chan error
- func BuildFormRequest(ctx context.Context, tb testing.TB, meth, pth string, v *url.Values) (*httptest.ResponseRecorder, *http.Request)
- func BuildJSONRequest(ctx context.Context, tb testing.TB, meth, pth string, v interface{}) (*httptest.ResponseRecorder, *http.Request)
- func CaptureJavascriptErrors(ctx context.Context) <-chan error
- func ExerciseBadPagination(t *testing.T, membership *database.Membership, h http.Handler)
- func ExerciseIDNotFound(t *testing.T, membership *database.Membership, h http.Handler)
- func ExerciseMembershipMissing(t *testing.T, h http.Handler)
- func ExercisePermissionMissing(t *testing.T, h http.Handler)
- func ExerciseSessionMissing(t *testing.T, h http.Handler)
- func ExerciseUserMissing(t *testing.T, h http.Handler)
- func NewFailingDatabase() *gorm.DB
- func NewHarnessServer(tb testing.TB, mux http.Handler) *server.Server
- type APIServerConfigResponse
- type APIServerResponse
- type AdminAPIServerConfigResponse
- type AdminAPIServerResponse
- type BootstrapResponse
- type ENXRedirectServerConfigResponse
- type ENXRedirectServerResponse
- type IntegrationSuite
- type SQLConn
- func (c *SQLConn) Begin() (driver.Tx, error)
- func (c *SQLConn) BeginTx() (driver.Tx, error)
- func (c *SQLConn) Close() error
- func (c *SQLConn) Commit() error
- func (c *SQLConn) Exec(query string, args []driver.Value) (driver.Result, error)
- func (c *SQLConn) Prepare(query string) (driver.Stmt, error)
- func (c *SQLConn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error)
- func (c *SQLConn) Query(query string, args []driver.Value) (driver.Rows, error)
- func (c *SQLConn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error)
- func (c *SQLConn) Rollback() error
- type SQLDriver
- type ServerConfigResponse
- type TestHarnessResponse
- type TestServerResponse
- func (r *TestServerResponse) LoggedInSession(session *sessions.Session, email string) (*sessions.Session, error)
- func (r *TestServerResponse) ProvisionAndLogin() (*database.Realm, *database.User, *sessions.Session, error)
- func (r *TestServerResponse) SessionCookie(session *sessions.Session) (*http.Cookie, error)
Constants ¶
const ( RealmName = "e2e-test-realm" RegionCode = "e2e-test" AdminKeyPrefix = "e2e-admin-key." DeviceKeyPrefix = "e2e-device-key." StatsKeyPrefix = "e2e-stats-key." AndroidAppPrefix = "e2e-android-" IOSAppPrefix = "e2e-ios-" )
Variables ¶
This section is empty.
Functions ¶
func AutoConfirmDialogs ¶ added in v0.19.0
AutoConfirmDialogs automatically clicks "confirm" on popup dialogs from window.Confirm prompts.
func BuildFormRequest ¶ added in v0.23.0
func BuildFormRequest(ctx context.Context, tb testing.TB, meth, pth string, v *url.Values) (*httptest.ResponseRecorder, *http.Request)
BuildFormRequest builds an http request and http response recorder for the given form values (expressed as url.Values). It sets the proper headers and response types to post as a form and expect HTML in return.
func BuildJSONRequest ¶ added in v0.23.0
func BuildJSONRequest(ctx context.Context, tb testing.TB, meth, pth string, v interface{}) (*httptest.ResponseRecorder, *http.Request)
BuildJSONRequest builds an http request and http response recorder for the given payload. marshaled as JSON. It sets the proper headers and response types.
func CaptureJavascriptErrors ¶ added in v0.19.0
CaptureJavascriptErrors captures any console errors that occur.
func ExerciseBadPagination ¶ added in v0.19.0
ExerciseBadPagination tests that the proper response code and HTML error page are rendered when the URL includes pagination parameters that fail to parse.
func ExerciseIDNotFound ¶ added in v0.19.0
ExerciseIDNotFound tests that the proper response code and HTML error page are rendered when the route expects an "id" mux parameter, but the one given does not correspond to an actual record.
func ExerciseMembershipMissing ¶ added in v0.19.0
ExerciseMembershipMissing tests that the proper response code and HTML error page are rendered with there is no membership in the context. It sets a session in the context.
func ExercisePermissionMissing ¶ added in v0.19.0
ExercisePermissionMissing tests that the proper response code and HTML error page are rendered when the requestor does not have permission to perform this action.
func ExerciseSessionMissing ¶ added in v0.19.0
ExerciseSessionMissing tests that the proper response code and HTML error page are rendered with the context has no session.
func ExerciseUserMissing ¶ added in v0.22.0
ExerciseUserMissing tests that the proper response code and HTML error page are rendered with there is no user in the context. It sets a session in the context. This only applies to admin pages
func NewFailingDatabase ¶ added in v0.19.0
NewFailingDatabase database creates a new database connection that fails all requests.
Types ¶
type APIServerConfigResponse ¶ added in v0.19.0
type APIServerConfigResponse struct { Config *config.APIServerConfig Database *database.Database BadDatabase *database.Database Cacher cache.Cacher KeyManager keys.KeyManager RateLimiter limiter.Store Renderer *render.Renderer }
APIServerConfigResponse is the response from creating an API server config.
func NewAPIServerConfig ¶ added in v0.19.0
func NewAPIServerConfig(tb testing.TB, testDatabaseInstance *database.TestInstance) *APIServerConfigResponse
NewAPIServerConfig creates a new API server configuration.
func (*APIServerConfigResponse) NewServer ¶ added in v0.19.0
func (r *APIServerConfigResponse) NewServer(tb testing.TB) *APIServerResponse
type APIServerResponse ¶ added in v0.19.0
type APIServerResponse struct { Config *config.APIServerConfig Database *database.Database BadDatabase *database.Database Cacher cache.Cacher KeyManager keys.KeyManager RateLimiter limiter.Store Renderer *render.Renderer Server *server.Server }
APIServerResponse is the response from a test APIServer instance.
func NewAPIServer ¶ added in v0.19.0
func NewAPIServer(tb testing.TB, testDatabaseInstance *database.TestInstance) *APIServerResponse
NewAPIServer creates a new test APIServer server instance. See NewHarnessServer for more information.
type AdminAPIServerConfigResponse ¶ added in v0.19.0
type AdminAPIServerConfigResponse struct { Config *config.AdminAPIServerConfig Database *database.Database BadDatabase *database.Database Cacher cache.Cacher KeyManager keys.KeyManager RateLimiter limiter.Store Renderer *render.Renderer }
AdminAPIServerConfigResponse is the response from creating an AdminAPI server config.
func NewAdminAPIServerConfig ¶ added in v0.19.0
func NewAdminAPIServerConfig(tb testing.TB, testDatabaseInstance *database.TestInstance) *AdminAPIServerConfigResponse
NewAdminAPIServerConfig creates a new API server configuration.
func (*AdminAPIServerConfigResponse) NewServer ¶ added in v0.19.0
func (r *AdminAPIServerConfigResponse) NewServer(tb testing.TB) *AdminAPIServerResponse
NewServer creates a new server.
type AdminAPIServerResponse ¶ added in v0.19.0
type AdminAPIServerResponse struct { Config *config.AdminAPIServerConfig Database *database.Database BadDatabase *database.Database Cacher cache.Cacher KeyManager keys.KeyManager RateLimiter limiter.Store Renderer *render.Renderer Server *server.Server }
AdminAPIServerResponse is the response from a test AdminAPI instance.
func NewAdminAPIServer ¶ added in v0.19.0
func NewAdminAPIServer(tb testing.TB, testDatabaseInstance *database.TestInstance) *AdminAPIServerResponse
NewAdminAPIServer creates a new test AdminAPI server instance. See NewHarnessServer for more information.
type BootstrapResponse ¶ added in v0.20.0
type BootstrapResponse struct { Realm *database.Realm AdminAPIKey string DeviceAPIKey string StatsAPIKey string // contains filtered or unexported fields }
BootstrapResponse is the response from Bootstrap.
func Bootstrap ¶ added in v0.20.0
Bootstrap configures the database with an e2e realm (or re-uses one that already exists), and provisions new authorized apps for accessing the admin apis, device apis, and stats apis.
It also provisions and enables the e2e realm. If the realm already exists, it updates the realms settings to enable settings and configuration that e2e expects.
Callers should always call Cleanup() on the response to ensure temporary resources are purged.
func (*BootstrapResponse) Cleanup ¶ added in v0.20.0
func (r *BootstrapResponse) Cleanup() error
Cleanup deletes temporary resources created by the bootstrap.
type ENXRedirectServerConfigResponse ¶ added in v0.21.0
type ENXRedirectServerConfigResponse struct { Config *config.RedirectConfig Database *database.Database BadDatabase *database.Database Cacher cache.Cacher KeyManager keys.KeyManager RateLimiter limiter.Store Renderer *render.Renderer }
ENXRedirectServerConfigResponse is the response from creating an Redirect server config.
func NewENXRedirectServerConfig ¶ added in v0.21.0
func NewENXRedirectServerConfig(tb testing.TB, testDatabaseInstance *database.TestInstance) *ENXRedirectServerConfigResponse
NewENXRedirectServerConfig creates a new ENX redirect server configuration.
func (*ENXRedirectServerConfigResponse) NewServer ¶ added in v0.21.0
func (r *ENXRedirectServerConfigResponse) NewServer(tb testing.TB) *ENXRedirectServerResponse
NewServer creates a new server.
type ENXRedirectServerResponse ¶ added in v0.21.0
type ENXRedirectServerResponse struct { Config *config.RedirectConfig Database *database.Database BadDatabase *database.Database Cacher cache.Cacher Renderer *render.Renderer Server *server.Server }
ENXRedirectServerResponse is the response from a test ENX redirect instance.
func NewENXRedirectServer ¶ added in v0.21.0
func NewENXRedirectServer(tb testing.TB, testDatabaseInstance *database.TestInstance) *ENXRedirectServerResponse
NewENXRedirectServer creates a new test ENX redirect server instance. See NewHarnessServer for more information.
type IntegrationSuite ¶ added in v0.20.0
type IntegrationSuite struct { AdminAPIAddress string AdminAPIKey string APIServerAddress string APIServerKey string KeyServerAddress string KeyServerData *enkstest.BootstrapResponse ENXRedirectAddress string }
IntegrationSuite encompasses a local API server and Admin API server for testing. Both servers run in-memory on the local machine.
func NewIntegrationSuite ¶ added in v0.20.0
func NewIntegrationSuite(tb testing.TB, testDatabaseInstance *database.TestInstance, testKeyServerDatabaseInstance *keydatabase.TestInstance) *IntegrationSuite
NewIntegrationSuite creates a new test suite for local integration testing.
type SQLConn ¶ added in v0.19.0
type SQLConn struct{}
func (*SQLConn) PrepareContext ¶ added in v0.19.0
func (*SQLConn) QueryContext ¶ added in v0.19.0
type SQLDriver ¶ added in v0.19.0
type SQLDriver struct{}
SQLDriver is a test SQL driver implementation that returns an error for most queries and operations. It's used to test how the system behaves under connection errors or other database-level failures.
type ServerConfigResponse ¶ added in v0.19.0
type ServerConfigResponse struct { AuthProvider auth.Provider Config *config.ServerConfig Database *database.Database BadDatabase *database.Database Cacher cache.Cacher Locales *i18n.LocaleMap KeyManager keys.KeyManager RateLimiter limiter.Store Renderer *render.Renderer }
ServerConfigResponse is the response from creating a server config.
func NewServerConfig ¶ added in v0.19.0
func NewServerConfig(tb testing.TB, testDatabaseInstance *database.TestInstance) *ServerConfigResponse
NewServerConfig creates a new server configuration. It creates all the keys, databases, and cacher, but does not actually start the server. All cleanup is scheduled by t.Cleanup.
func (*ServerConfigResponse) NewServer ¶ added in v0.19.0
func (r *ServerConfigResponse) NewServer(tb testing.TB) *TestServerResponse
func (*ServerConfigResponse) WithCommonMiddlewares ¶ added in v0.26.0
func (r *ServerConfigResponse) WithCommonMiddlewares(next http.Handler) http.Handler
WithCommonMiddlewares returns a helper that injects common middleware onto a handler.
type TestHarnessResponse ¶ added in v0.19.0
type TestHarnessResponse struct { Cacher cache.Cacher CacheConfig *cache.Config Database *database.Database DatabaseConfig *database.Config BadDatabase *database.Database ObservabilityConfig *observability.Config KeyManager keys.KeyManager KeyManagerConfig *keys.Config RateLimiter limiter.Store RateLimiterConfig *ratelimit.Config }
func NewTestHarness ¶ added in v0.19.0
func NewTestHarness(tb testing.TB, testDatabaseInstance *database.TestInstance) *TestHarnessResponse
type TestServerResponse ¶
type TestServerResponse struct { AuthProvider auth.Provider Cacher cache.Cacher Config *config.ServerConfig Database *database.Database BadDatabase *database.Database KeyManager keys.KeyManager Locales *i18n.LocaleMap RateLimiter limiter.Store Renderer *render.Renderer Server *server.Server }
TestServerResponse is used as the reply to creating a test UI server.
func NewServer ¶
func NewServer(tb testing.TB, testDatabaseInstance *database.TestInstance) *TestServerResponse
NewServer creates a new test UI server instance. See NewHarnessServer for more information.
func (*TestServerResponse) LoggedInSession ¶ added in v0.16.0
func (r *TestServerResponse) LoggedInSession(session *sessions.Session, email string) (*sessions.Session, error)
LoggedInSession returns an session with the provided email address logged in. It also stores that email verification and MFA prompting have already occurred for a consistent post-login experience.
The provided email is marked as verified, has MFA enabled, and is not revoked. To test other journeys, manually build the session.
func (*TestServerResponse) ProvisionAndLogin ¶ added in v0.19.0
func (r *TestServerResponse) ProvisionAndLogin() (*database.Realm, *database.User, *sessions.Session, error)
ProvisionAndLogin provisions and authenticates the initial user, realm, permissions on the realm, and session cookie.
func (*TestServerResponse) SessionCookie ¶
SessionCookie returns an encrypted cookie for the given session information, capable of being injected into the browser instance and read by the application. Since the cookie contains the session, it can be used to mutate any server state, including the currently-authenticated user.