testing

package
v0.0.0-...-a753888 Latest Latest
Warning

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

Go to latest
Published: Apr 15, 2024 License: AGPL-3.0 Imports: 57 Imported by: 5

Documentation

Index

Constants

View Source
const (
	StubProviderType               = "stub-provider"
	StubEnvironName                = "stub-environ"
	StubZonedEnvironName           = "stub-zoned-environ"
	StubNetworkingEnvironName      = "stub-networking-environ"
	StubZonedNetworkingEnvironName = "stub-zoned-networking-environ"
)

Variables

View Source
var (
	// SharedStub records all method calls to any of the stubs.
	SharedStub = &testing.Stub{}

	BackingInstance                = &StubBacking{Stub: SharedStub}
	ProviderInstance               = &StubProvider{Stub: SharedStub}
	EnvironInstance                = &StubEnviron{Stub: SharedStub}
	ZonedEnvironInstance           = &StubZonedEnviron{Stub: SharedStub}
	NetworkingEnvironInstance      = &StubNetworkingEnviron{Stub: SharedStub}
	ZonedNetworkingEnvironInstance = &StubZonedNetworkingEnviron{Stub: SharedStub}
)
View Source
var ErrUnauthorized = &params.Error{
	Message: "permission denied",
	Code:    params.CodeUnauthorized,
}

Functions

func AlreadyExistsError

func AlreadyExistsError(what string) *params.Error

func AssertPrincipalApplicationDeployed

func AssertPrincipalApplicationDeployed(c *gc.C, st *state.State, applicationName string, curl string, forced bool, bundle charm.Charm, cons constraints.Value) *state.Application

func AssertResponse

func AssertResponse(c *gc.C, resp *http.Response, expHTTPStatus int, expContentType string) []byte

func CheckMethodCalls

func CheckMethodCalls(c *gc.C, stub *testing.Stub, calls ...StubMethodCall)

CheckMethodCalls works like testing.Stub.CheckCalls, but also checks the receivers.

func EncodedJWT

func EncodedJWT(params JWTParams, jwkSet jwk.Set, signingKey jwk.Key) ([]byte, error)

EncodedJWT returns jwt as bytes signed by the specified key.

func NewJWKSet

func NewJWKSet() (jwk.Set, jwk.Key, error)

NewJWKSet returns a new key set and signing key.

func NewJWT

func NewJWT(params JWTParams) (jwt.Token, error)

NewJWT returns a parsed jwt.

func NotAssignedError

func NotAssignedError(unitName string) *params.Error

func NotFoundError

func NotFoundError(prefixMessage string) *params.Error

func NotProvisionedError

func NotProvisionedError(machineId string) *params.Error

func NotSupportedError

func NotSupportedError(prefixMessage string) *params.Error

func PrefixedError

func PrefixedError(prefix, message string) *params.Error

func ResetStub

func ResetStub(stub *testing.Stub)

ResetStub resets all recorded calls and errors of the given stub.

func SendHTTPRequest

func SendHTTPRequest(c *gc.C, p HTTPRequestParams) *http.Response

func ServerError

func ServerError(message string) *params.Error

Types

type FakeAuditLog

type FakeAuditLog struct {
	testing.Stub
}

FakeAuditLog implements auditlog.AuditLog.

func (*FakeAuditLog) AddConversation

func (l *FakeAuditLog) AddConversation(m auditlog.Conversation) error

func (*FakeAuditLog) AddRequest

func (l *FakeAuditLog) AddRequest(m auditlog.Request) error

func (*FakeAuditLog) AddResponse

func (l *FakeAuditLog) AddResponse(m auditlog.ResponseErrors) error

func (*FakeAuditLog) Close

func (l *FakeAuditLog) Close() error

type FakeAuthorizer

type FakeAuthorizer struct {
	Tag           names.Tag
	Controller    bool
	ModelUUID     string
	AdminTag      names.UserTag
	HasConsumeTag names.UserTag
	HasWriteTag   names.UserTag
}

FakeAuthorizer implements the facade.Authorizer interface.

func (FakeAuthorizer) AuthApplicationAgent

func (fa FakeAuthorizer) AuthApplicationAgent() bool

AuthApplicationAgent returns whether the current client is an application operator.

func (FakeAuthorizer) AuthClient

func (fa FakeAuthorizer) AuthClient() bool

AuthClient returns whether the authenticated entity is a client user.

func (FakeAuthorizer) AuthController

func (fa FakeAuthorizer) AuthController() bool

func (FakeAuthorizer) AuthMachineAgent

func (fa FakeAuthorizer) AuthMachineAgent() bool

AuthMachineAgent returns whether the current client is a machine agent.

func (FakeAuthorizer) AuthModelAgent

func (fa FakeAuthorizer) AuthModelAgent() bool

AuthModelAgent returns true if the authenticated entity is a model agent

func (FakeAuthorizer) AuthOwner

func (fa FakeAuthorizer) AuthOwner(tag names.Tag) bool

func (FakeAuthorizer) AuthUnitAgent

func (fa FakeAuthorizer) AuthUnitAgent() bool

AuthUnitAgent returns whether the current client is a unit agent.

func (FakeAuthorizer) ConnectedModel

func (fa FakeAuthorizer) ConnectedModel() string

ConnectedModel returns the UUID of the model the current client is connected to.

func (FakeAuthorizer) EntityHasPermission

func (fa FakeAuthorizer) EntityHasPermission(entity names.Tag, operation permission.Access, _ names.Tag) error

EntityHasPermission returns true if the passed entity is admin or has a name equal to the pre-set admin tag.

func (FakeAuthorizer) GetAuthTag

func (fa FakeAuthorizer) GetAuthTag() names.Tag

func (FakeAuthorizer) HasPermission

func (fa FakeAuthorizer) HasPermission(operation permission.Access, target names.Tag) error

HasPermission returns true if the logged in user is admin or has a name equal to the pre-set admin tag.

type FakeNotifyWatcher

type FakeNotifyWatcher struct {
	worker.Worker
	C chan struct{}
}

FakeNotifyWatcher is an implementation of state.NotifyWatcher which is useful in tests.

func NewFakeNotifyWatcher

func NewFakeNotifyWatcher() *FakeNotifyWatcher

func (*FakeNotifyWatcher) Changes

func (w *FakeNotifyWatcher) Changes() <-chan struct{}

Changes is part of the state.NotifyWatcher interface.

func (*FakeNotifyWatcher) Err

func (w *FakeNotifyWatcher) Err() error

Err is part of the state.NotifyWatcher interface.

func (*FakeNotifyWatcher) Stop

func (w *FakeNotifyWatcher) Stop() error

Stop is part of the state.NotifyWatcher interface.

type FakeSpace

type FakeSpace struct {
	SpaceId   string
	SpaceName string
	SubnetIds []string
	Public    bool
	NextErr   errReturner
}

FakeSpace implements networkingcommon.BackingSpace for testing.

func (*FakeSpace) EnsureDead

func (f *FakeSpace) EnsureDead() error

func (*FakeSpace) GoString

func (f *FakeSpace) GoString() string

GoString implements fmt.GoStringer.

func (*FakeSpace) Id

func (f *FakeSpace) Id() string

func (*FakeSpace) Life

func (f *FakeSpace) Life() (life life.Value)

func (*FakeSpace) Name

func (f *FakeSpace) Name() string

func (*FakeSpace) NetworkSpace

func (f *FakeSpace) NetworkSpace() (network.SpaceInfo, error)

func (*FakeSpace) ProviderId

func (f *FakeSpace) ProviderId() (netID network.Id)

func (*FakeSpace) Remove

func (f *FakeSpace) Remove() error

func (*FakeSpace) Zones

func (f *FakeSpace) Zones() []string

type FakeSubnet

type FakeSubnet struct {
	Info networkingcommon.BackingSubnetInfo
	// contains filtered or unexported fields
}

FakeSubnet implements networkingcommon.BackingSubnet for testing.

func (*FakeSubnet) AvailabilityZones

func (f *FakeSubnet) AvailabilityZones() []string

func (*FakeSubnet) CIDR

func (f *FakeSubnet) CIDR() string

func (*FakeSubnet) GoString

func (f *FakeSubnet) GoString() string

GoString implements fmt.GoStringer.

func (*FakeSubnet) ID

func (f *FakeSubnet) ID() string

func (*FakeSubnet) Life

func (f *FakeSubnet) Life() state.Life

func (*FakeSubnet) ProviderId

func (f *FakeSubnet) ProviderId() network.Id

func (*FakeSubnet) ProviderNetworkId

func (f *FakeSubnet) ProviderNetworkId() network.Id

func (*FakeSubnet) SpaceID

func (f *FakeSubnet) SpaceID() string

func (*FakeSubnet) SpaceName

func (f *FakeSubnet) SpaceName() string

func (*FakeSubnet) VLANTag

func (f *FakeSubnet) VLANTag() int

type FakeZone

type FakeZone struct {
	ZoneName      string
	ZoneAvailable bool
}

FakeZone implements providercommon.AvailabilityZone for testing.

func (*FakeZone) Available

func (f *FakeZone) Available() bool

func (*FakeZone) GoString

func (f *FakeZone) GoString() string

GoString implements fmt.GoStringer.

func (*FakeZone) Name

func (f *FakeZone) Name() string

type HTTPRequestParams

type HTTPRequestParams struct {
	// do is used to make the HTTP request.
	// If it is nil, utils.GetNonValidatingHTTPClient().Do will be used.
	// If the body reader implements io.Seeker,
	// req.Body will also implement that interface.
	Do func(req *http.Request) (*http.Response, error)

	// expectError holds the error regexp to match
	// against the error returned from the HTTP Do
	// request. If it is empty, the error is expected to be
	// nil.
	ExpectError string

	// ExpectStatus holds the expected HTTP status code.
	// http.StatusOK is assumed if this is zero.
	ExpectStatus int

	// tag holds the tag to authenticate as.
	Tag string

	// password holds the password associated with the tag.
	Password string

	// method holds the HTTP method to use for the request.
	Method string

	// url holds the URL to send the HTTP request to.
	URL string

	// contentType holds the content type of the request.
	ContentType string

	// body holds the body of the request.
	Body io.Reader

	// extra headers are added to the http header
	ExtraHeaders map[string]string

	// jsonBody holds an object to be marshaled as JSON
	// as the body of the request. If this is specified, body will
	// be ignored and the Content-Type header will
	// be set to application/json.
	JSONBody interface{}

	// nonce holds the machine nonce to provide in the header.
	Nonce string
}

httpRequestParams holds parameters for the sendHTTPRequest methods.

type JWTParams

type JWTParams struct {
	Controller string
	User       string
	Access     map[string]string
}

JWTParams are the necessary params to issue a ready-to-go JWT.

type Server

type Server struct {
	// Addrs holds the address used for the
	// server, suitable for including in api.Info.Addrs
	Addrs []string

	*httptest.Server
	// contains filtered or unexported fields
}

Server represents a fake API server. It must be closed after use.

func NewAPIServer

func NewAPIServer(newRoot func(modelUUID string) interface{}) *Server

NewAPIServer serves RPC methods on a localhost HTTP server. When a connection is made to the API, the newRoot function is called with the requested model UUID and the returned value defines the API (see the juju/rpc package).

Note that the root value accepts any facade version number - it is not currently possible to use this to serve several different facade versions.

The server uses testing.ServerCert and testing.ServerKey to host the server.

The returned server must be closed after use.

type SetUpFlag

type SetUpFlag bool
const (
	WithZones      SetUpFlag = true
	WithoutZones   SetUpFlag = false
	WithSpaces     SetUpFlag = true
	WithoutSpaces  SetUpFlag = false
	WithSubnets    SetUpFlag = true
	WithoutSubnets SetUpFlag = false
)

type StubBacking

StubBacking implements networkingcommon.NetworkBacking and records calls to its methods.

func (*StubBacking) AddSpace

func (sb *StubBacking) AddSpace(name string, providerId network.Id, subnets []string, public bool) (networkingcommon.BackingSpace, error)

func (*StubBacking) AddSubnet

func (*StubBacking) AdditionalSubnets

func (sb *StubBacking) AdditionalSubnets()

func (*StubBacking) AllEndpointBindingsSpaceNames

func (sb *StubBacking) AllEndpointBindingsSpaceNames() (set.Strings, error)

func (*StubBacking) AllSpaces

func (sb *StubBacking) AllSpaces() ([]networkingcommon.BackingSpace, error)

func (*StubBacking) AllSubnets

func (sb *StubBacking) AllSubnets() ([]networkingcommon.BackingSubnet, error)

func (*StubBacking) AvailabilityZones

func (sb *StubBacking) AvailabilityZones() (network.AvailabilityZones, error)

func (*StubBacking) CloudSpec

func (sb *StubBacking) CloudSpec() (environscloudspec.CloudSpec, error)

func (*StubBacking) DefaultEndpointBindingSpace

func (sb *StubBacking) DefaultEndpointBindingSpace() (string, error)

func (*StubBacking) GoString

func (sb *StubBacking) GoString() string

GoString implements fmt.GoStringer.

func (*StubBacking) ModelConfig

func (sb *StubBacking) ModelConfig() (*config.Config, error)

func (*StubBacking) ModelTag

func (sb *StubBacking) ModelTag() names.ModelTag

func (*StubBacking) SaveProviderSubnets

func (sb *StubBacking) SaveProviderSubnets(subnets []network.SubnetInfo, spaceID string) error

func (*StubBacking) SetAvailabilityZones

func (sb *StubBacking) SetAvailabilityZones(zones network.AvailabilityZones) error

func (*StubBacking) SetUp

func (sb *StubBacking) SetUp(c *gc.C, envName string, withZones, withSpaces, withSubnets SetUpFlag)

func (*StubBacking) SubnetByCIDR

func (sb *StubBacking) SubnetByCIDR(cidr string) (networkingcommon.BackingSubnet, error)

type StubEnviron

type StubEnviron struct {
	*testing.Stub

	environs.Environ // panic on any not implemented method call
}

StubEnviron is used in tests where environs.Environ is needed.

func (*StubEnviron) GoString

func (se *StubEnviron) GoString() string

GoString implements fmt.GoStringer.

type StubLeaseManager

type StubLeaseManager struct {
	lease.Manager
}

StubLeaseManager pretends to implement lease.Manager. The only method called in this package should be Reader(), implemented below.

func (StubLeaseManager) Pinner

func (m StubLeaseManager) Pinner(namespace string, modelUUID string) (lease.Pinner, error)

Pinner returns a StubLeasePinner, which will panic if used.

func (StubLeaseManager) Reader

func (m StubLeaseManager) Reader(namespace string, modelUUID string) (lease.Reader, error)

Reader returns a StubLeaseReader, which will panic if used.

type StubLeasePinner

type StubLeasePinner struct {
	lease.Pinner
}

StubLeasePinner pretends to implement lease.Pinner. The non-implemented methods should not be called by tests in the base apiserver package.

type StubLeaseReader

type StubLeaseReader struct {
	lease.Reader
}

StubLeaseReader pretends to implement lease.Reader. The non-implemented Leases() method should not be called by tests in the base apiserver package.

type StubMethodCall

type StubMethodCall struct {
	Receiver interface{}
	FuncName string
	Args     []interface{}
}

StubMethodCall is like testing.StubCall, but includes the receiver as well.

func BackingCall

func BackingCall(name string, args ...interface{}) StubMethodCall

BackingCall makes it easy to check method calls on BackingInstance.

func NetworkingEnvironCall

func NetworkingEnvironCall(name string, args ...interface{}) StubMethodCall

NetworkingEnvironCall makes it easy to check method calls on NetworkingEnvironInstance.

func ProviderCall

func ProviderCall(name string, args ...interface{}) StubMethodCall

ProviderCall makes it easy to check method calls on ProviderInstance.

func ZonedEnvironCall

func ZonedEnvironCall(name string, args ...interface{}) StubMethodCall

ZonedEnvironCall makes it easy to check method calls on ZonedEnvironInstance.

func ZonedNetworkingEnvironCall

func ZonedNetworkingEnvironCall(name string, args ...interface{}) StubMethodCall

ZonedNetworkingEnvironCall makes it easy to check method calls on ZonedNetworkingEnvironInstance.

type StubNetwork

type StubNetwork struct {
}

func (StubNetwork) SetUpSuite

func (s StubNetwork) SetUpSuite(c *gc.C)

type StubNetworkingEnviron

type StubNetworkingEnviron struct {
	*testing.Stub

	environs.NetworkingEnviron // panic on any not implemented method call
}

StubNetworkingEnviron is used in tests where environs.NetworkingEnviron is needed.

func (*StubNetworkingEnviron) GoString

func (se *StubNetworkingEnviron) GoString() string

GoString implements fmt.GoStringer.

func (*StubNetworkingEnviron) Subnets

func (se *StubNetworkingEnviron) Subnets(
	ctx context.ProviderCallContext, instId instance.Id, subIds []network.Id,
) ([]network.SubnetInfo, error)

func (*StubNetworkingEnviron) SupportsSpaces

func (se *StubNetworkingEnviron) SupportsSpaces(ctx context.ProviderCallContext) (bool, error)

type StubPoolHelper

type StubPoolHelper struct {
	StubRelease func() bool
}

StubPoolHelper implements state.PoolHelper

func (StubPoolHelper) Annotate

func (s StubPoolHelper) Annotate(_ string)

func (StubPoolHelper) Release

func (s StubPoolHelper) Release() bool

type StubProvider

type StubProvider struct {
	*testing.Stub

	Zones   network.AvailabilityZones
	Subnets []network.SubnetInfo

	environs.EnvironProvider // panic on any not implemented method call.
}

StubProvider implements a subset of environs.EnvironProvider methods used in tests.

func (*StubProvider) GoString

func (se *StubProvider) GoString() string

GoString implements fmt.GoStringer.

func (*StubProvider) Open

type StubZonedEnviron

type StubZonedEnviron struct {
	*testing.Stub

	providercommon.ZonedEnviron // panic on any not implemented method call
}

StubZonedEnviron is used in tests where providercommon.ZonedEnviron is needed.

func (*StubZonedEnviron) AvailabilityZones

func (*StubZonedEnviron) GoString

func (se *StubZonedEnviron) GoString() string

GoString implements fmt.GoStringer.

type StubZonedNetworkingEnviron

type StubZonedNetworkingEnviron struct {
	*testing.Stub

	// panic on any not implemented method call
	providercommon.ZonedEnviron
	environs.Networking
}

StubZonedNetworkingEnviron is used in tests where features from both environs.Networking and providercommon.ZonedEnviron are needed.

func (*StubZonedNetworkingEnviron) AvailabilityZones

func (*StubZonedNetworkingEnviron) GoString

func (se *StubZonedNetworkingEnviron) GoString() string

GoString implements fmt.GoStringer.

func (*StubZonedNetworkingEnviron) Subnets

func (*StubZonedNetworkingEnviron) SupportsSpaceDiscovery

func (se *StubZonedNetworkingEnviron) SupportsSpaceDiscovery(ctx context.ProviderCallContext) (bool, error)

func (*StubZonedNetworkingEnviron) SupportsSpaces

Jump to

Keyboard shortcuts

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