testutils

package
v0.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2026 License: GPL-3.0, LGPL-3.0 Imports: 36 Imported by: 0

Documentation

Overview

Package testutils provides utility functions and behaviors for testing.

Index

Constants

View Source
const (

	// IDSeparator is the value used to append values to the sessionID in the broker mock.
	IDSeparator = "_separator_"
)
View Source
const MinimalPathEnv = "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

MinimalPathEnv is the minimal PATH environment variable used to run tests.

Variables

View Source
var IsAutoPkgTest = sync.OnceValue(func() bool {
	_, ok := os.LookupEnv("AUTOPKGTEST_TEST_ARCH")
	return ok
})

IsAutoPkgTest returns true if the tests are running in an autopkgtest environment.

View Source
var IsCI = sync.OnceValue(func() bool {
	_, ok := os.LookupEnv("GITHUB_ACTIONS")
	return ok
})

IsCI returns whether the test is running in CI environment.

View Source
var IsDebianPackageBuild = sync.OnceValue(func() bool {
	_, ok := os.LookupEnv("DEB_BUILD_ARCH")
	return ok
})

IsDebianPackageBuild returns true if the tests are running in a Debian package build environment.

Functions

func AppendCovEnv

func AppendCovEnv(env []string) []string

AppendCovEnv returns the env needed to enable coverage when running a go binary, if coverage is enabled.

func ArtifactsDir

func ArtifactsDir(t *testing.T) string

ArtifactsDir returns the path to the directory where artifacts are stored.

func BubbleWrapCommand

func BubbleWrapCommand(t *testing.T, env []string) *exec.Cmd

BubbleWrapCommand returns a command that runs in bubblewrap.

func BuildAuthctl

func BuildAuthctl() (binaryPath string, cleanup func(), err error)

BuildAuthctl builds the authctl binary in a temporary directory for testing purposes.

func BuildAuthdWithExampleBroker

func BuildAuthdWithExampleBroker() (execPath string, cleanup func(), err error)

BuildAuthdWithExampleBroker builds the authd executable and returns the binary path.

func BuildRustNSSLib

func BuildRustNSSLib(t *testing.T, disableCoverage bool, features ...string) (libPath string, rustCovEnv []string)

BuildRustNSSLib builds the NSS library and links the compiled file to libPath.

func CanRunRustTests

func CanRunRustTests(coverageWanted bool) (err error)

CanRunRustTests returns if we can run rust tests via cargo on this machine. It checks for code coverage report if supported.

func CheckCommand

func CheckCommand(t *testing.T, cmd *exec.Cmd, expectedExitCode int)

CheckCommand runs the given command and: * Checks that it exits with the expected exit code. * Checks that the output matches the golden file.

func CoverDirEnv

func CoverDirEnv() string

CoverDirEnv returns the cover dir env variable to run a go binary, if coverage is enabled.

func CoverDirForTests

func CoverDirForTests() string

CoverDirForTests parses the test arguments and return the cover profile directory, if coverage is enabled.

func CurrentDir

func CurrentDir() string

CurrentDir returns the current file directory.

func GenerateEncryptionKey

func GenerateEncryptionKey(brokerName string) string

GenerateEncryptionKey returns an encryption key that can be used in tests.

func GenerateSessionID

func GenerateSessionID(username string) string

GenerateSessionID returns a sessionID that can be used in tests.

func GetSystemBusConnection

func GetSystemBusConnection(t *testing.T) (*dbus.Conn, error)

GetSystemBusConnection returns a connection to the system bus with a safety check to avoid mistakenly connecting to the actual system bus.

func GoBuildFlags

func GoBuildFlags() []string

GoBuildFlags returns the Go build flags that should be used when building binaries in tests. It includes flags for coverage, address sanitizer, and race detection if they are enabled in the current test environment.

Note: The flags returned by this function must be the first arguments to the `go build` command, because -cover is a "positional flag".

func IsAsan

func IsAsan() bool

IsAsan returns whether the tests are running with address sanitizer.

func IsRace

func IsRace() bool

IsRace returns whether the tests are running with thread sanitizer.

func MakeReadOnly

func MakeReadOnly(t *testing.T, dest string)

MakeReadOnly makes dest read only and restore permission on cleanup.

func MaybeSaveBufferAsArtifactOnCleanup

func MaybeSaveBufferAsArtifactOnCleanup(t *testing.T, buf *SyncBuffer, filename string)

MaybeSaveBufferAsArtifactOnCleanup saves the specified buffer to a temporary directory if the test failed or if the AUTHD_TESTS_ARTIFACTS_ALWAYS_SAVE environment variable is set.

func MaybeSaveBytesAsArtifactOnCleanup

func MaybeSaveBytesAsArtifactOnCleanup(t *testing.T, content []byte, filename string)

MaybeSaveBytesAsArtifactOnCleanup saves the specified bytes to a temporary directory if the test failed or if the AUTHD_TESTS_ARTIFACTS_ALWAYS_SAVE environment variable is set.

func MaybeSaveFilesAsArtifactsOnCleanup

func MaybeSaveFilesAsArtifactsOnCleanup(t *testing.T, artifacts ...string)

MaybeSaveFilesAsArtifactsOnCleanup saves the specified artifacts to a temporary directory if the test failed or if the AUTHD_TESTS_ARTIFACTS_ALWAYS_SAVE environment variable is set.

func MultipliedSleepDuration

func MultipliedSleepDuration(in time.Duration) time.Duration

MultipliedSleepDuration returns a duration multiplied by the sleep multiplier provided by MultipliedSleepDuration.

func ProjectRoot

func ProjectRoot() string

ProjectRoot returns the absolute path to the project root.

func RequireBubblewrap

func RequireBubblewrap(t *testing.T)

RequireBubblewrap ensures that bubblewrap is available and usable for running tests. It skips or fails the test if bubblewrap cannot be used in the current environment.

func RunTestAsRoot

func RunTestAsRoot(t *testing.T, args ...string)

RunTestAsRoot runs the given test as root.

func RunTestInBubbleWrap

func RunTestInBubbleWrap(t *testing.T, args ...string)

RunTestInBubbleWrap runs the given test in bubblewrap.

func RunningAsRoot

func RunningAsRoot() bool

RunningAsRoot returns true if the current process is running as root.

func RunningInBubblewrap

func RunningInBubblewrap() bool

RunningInBubblewrap returns true if the test is being run in bubblewrap.

func SkipIfCannotRunAsRoot

func SkipIfCannotRunAsRoot(t *testing.T)

SkipIfCannotRunAsRoot checks whether we can run tests as root or skip the tests otherwise.

func SleepMultiplier

func SleepMultiplier() float64

SleepMultiplier returns the sleep multiplier to be used in tests.

func StartAuthd

func StartAuthd(t *testing.T, execPath string, args ...DaemonOption) (socketPath string)

StartAuthd starts authd in a separate process and returns the socket path.

func StartAuthdWithCancel

func StartAuthdWithCancel(t *testing.T, execPath string, args ...DaemonOption) (socketPath string, cancelFunc func())

StartAuthdWithCancel starts authd in a separate process and returns the socket path and a cancel function.

func StartBusBrokerMock

func StartBusBrokerMock(cfgDir string, brokerName string) (string, func(), error)

StartBusBrokerMock starts the D-Bus service and exports it on the system bus. It returns the configuration file path for the exported broker.

func StartBusMock

func StartBusMock() (string, func(), error)

StartBusMock starts a mock dbus daemon and returns its address and a cancel function to stop it.

func StartSystemBusMock

func StartSystemBusMock() (func(), error)

StartSystemBusMock starts a mock dbus daemon and returns a cancel function to stop it.

This function uses t.Setenv to set the DBUS_SYSTEM_BUS_ADDRESS environment, so it shouldn't be used in parallel tests that rely on the mentioned variable.

func TempDir

func TempDir(t *testing.T) string

TempDir returns a temporary directory for the test. If the SKIP_CLEANUP environment variable is set, it creates a temp dir that is not automatically removed after the test.

func TestFamilyPath

func TestFamilyPath(t *testing.T) string

TestFamilyPath returns the path of the dir for storing fixtures and other files related to the test.

func TestVerbosity

func TestVerbosity() int

TestVerbosity returns the verbosity level that should be used in tests.

Types

type BrokerBusMock

type BrokerBusMock struct {
	// contains filtered or unexported fields
}

BrokerBusMock is the D-Bus object that will answer calls for the broker mock.

func (*BrokerBusMock) CancelIsAuthenticated

func (b *BrokerBusMock) CancelIsAuthenticated(sessionID string) (dbusErr *dbus.Error)

CancelIsAuthenticated cancels an ongoing IsAuthenticated call if it exists.

func (*BrokerBusMock) EndSession

func (b *BrokerBusMock) EndSession(sessionID string) (dbusErr *dbus.Error)

EndSession returns default values to be used in tests or an error if requested.

func (*BrokerBusMock) GetAuthenticationModes

func (b *BrokerBusMock) GetAuthenticationModes(sessionID string, supportedUILayouts []map[string]string) (authenticationModes []map[string]string, dbusErr *dbus.Error)

GetAuthenticationModes returns default values to be used in tests or an error if requested.

func (*BrokerBusMock) IsAuthenticated

func (b *BrokerBusMock) IsAuthenticated(sessionID, authenticationData string) (access, data string, dbusErr *dbus.Error)

IsAuthenticated returns default values to be used in tests or an error if requested.

func (*BrokerBusMock) NewSession

func (b *BrokerBusMock) NewSession(username, lang, mode string) (sessionID, encryptionKey string, dbusErr *dbus.Error)

NewSession returns default values to be used in tests or an error if requested.

func (*BrokerBusMock) SelectAuthenticationMode

func (b *BrokerBusMock) SelectAuthenticationMode(sessionID, authenticationModeName string) (uiLayoutInfo map[string]string, dbusErr *dbus.Error)

SelectAuthenticationMode returns default values to be used in tests or an error if requested.

func (*BrokerBusMock) UserPreCheck

func (b *BrokerBusMock) UserPreCheck(username string) (userinfo string, dbusErr *dbus.Error)

UserPreCheck returns default values to be used in tests or an error if requested.

type DaemonOption

type DaemonOption func(*daemonOptions)

DaemonOption represents an optional function that can be used to override some of the daemon default values.

var WithCurrentUserAsRoot DaemonOption = func(o *daemonOptions) {
	o.env = append(o.env, "AUTHD_INTEGRATIONTESTS_CURRENT_USER_AS_ROOT=1")
}

WithCurrentUserAsRoot configures authd to accept the current user as root when checking permissions. This is useful for integration tests where the current user is not root, but we want to test the behavior as if it were root.

func WithDBPath

func WithDBPath(path string) DaemonOption

WithDBPath overrides the default database path of the daemon.

func WithEnvironment

func WithEnvironment(env ...string) DaemonOption

WithEnvironment overrides the default environment of the daemon.

func WithGroupFile

func WithGroupFile(groupFile string) DaemonOption

WithGroupFile sets the group file.

func WithGroupFileOutput

func WithGroupFileOutput(groupFile string) DaemonOption

WithGroupFileOutput sets the group output file.

func WithHomeBaseDir

func WithHomeBaseDir(baseDir string) DaemonOption

WithHomeBaseDir sets the base path for the user home directories.

func WithOutputAsTestArtifact

func WithOutputAsTestArtifact() DaemonOption

WithOutputAsTestArtifact saves the daemon output to a test artifact.

func WithPidFile

func WithPidFile(pidFile string) DaemonOption

WithPidFile sets the path where the process pid will be saved while running. The pidFile is also special because when it gets removed, authd is stopped.

func WithPreviousDBState

func WithPreviousDBState(db string) DaemonOption

WithPreviousDBState initializes the database of the daemon with a preexistent database.

func WithSharedDaemon

func WithSharedDaemon(shared bool) DaemonOption

WithSharedDaemon sets whether the daemon is shared between tests.

func WithSocketPath

func WithSocketPath(path string) DaemonOption

WithSocketPath overrides the default socket path of the daemon.

type SyncBuffer

type SyncBuffer struct {
	// contains filtered or unexported fields
}

SyncBuffer is a mutex-protected buffer to avoid data races.

func (*SyncBuffer) Bytes

func (s *SyncBuffer) Bytes() []byte

Bytes returns the buffer content.

func (*SyncBuffer) String

func (s *SyncBuffer) String() string

func (*SyncBuffer) Write

func (s *SyncBuffer) Write(p []byte) (n int, err error)

Directories

Path Synopsis
Package golden provides utilities to compare and update golden files in tests.
Package golden provides utilities to compare and update golden files in tests.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL