fixture

package
v1.33.0 Latest Latest
Warning

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

Go to latest
Published: Nov 12, 2026 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package fixture mirrors auditor3's runs module for api registry tests.

Index

Constants

View Source
const ExportCSV = "id,name\n0192f3a1-7b2c-7def-8a12-3456789abcde,nightly\n"

ExportCSV is the CSV body the App returns for ExportRequest.

Variables

View Source
var KnownID = uuid.MustParse("0192f3a1-7b2c-7def-8a12-3456789abcde")

KnownID is a v7 run id the App returns.

View Source
var MissingID = uuid.MustParse("01890a5d-ac96-774b-bcce-b302099a8057")

MissingID is the run id the App reports as not found.

Functions

This section is empty.

Types

type App

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

App is a fake app: its typed handlers record the body they received (after the registry ran Validate, which may normalize it) and the negotiated media type, and return canned responses.

func (*App) Archive

func (a *App) Archive(ctx context.Context, body *ArchiveRequest) (Run, error)

Archive handles ArchiveRequest.

func (*App) Authenticate

func (a *App) Authenticate(request requests.Request) error

Authenticate accepts every request.

func (*App) Create

func (a *App) Create(ctx context.Context, body *CreateRequest) (Run, error)

Create handles CreateRequest.

func (*App) Edit

func (a *App) Edit(ctx context.Context, body *EditRequest) (Run, error)

Edit handles EditRequest.

func (*App) Export

func (a *App) Export(ctx context.Context, body *ExportRequest) (ListResponse, error)

Export lists runs as JSON.

func (*App) ExportCSV

func (a *App) ExportCSV(ctx context.Context, body *ExportRequest) (api.Blob, error)

ExportCSV lists runs as CSV, without a ContentType so the negotiated one is written.

func (*App) Get

func (a *App) Get(ctx context.Context, body *GetRequest) (Run, error)

Get handles GetRequest; MissingID is not found.

func (*App) Health

func (a *App) Health(ctx context.Context, body *HealthRequest) (HealthResponse, error)

Health handles HealthRequest.

func (*App) Last

func (a *App) Last() requests.Body

Last returns the last received body.

func (*App) LastAccept

func (a *App) LastAccept() string

LastAccept returns the media type negotiated for the last request.

func (*App) List

func (a *App) List(ctx context.Context, body *ListRequest) (ListResponse, error)

List handles ListRequest.

func (*App) Report

func (a *App) Report(ctx context.Context, body *ReportRequest) (api.Blob, error)

Report returns the run report as a PDF; MissingID is not found.

func (*App) Update

func (a *App) Update(ctx context.Context, body *UpdateRequest) (Run, error)

Update handles UpdateRequest.

func (*App) Upload

func (a *App) Upload(ctx context.Context, body *UploadRequest) (UploadResponse, error)

Upload handles UploadRequest.

type ArchiveRequest

type ArchiveRequest struct {
	requests.NoRules
	Reason string `json:"reason" required:"true"`
}

ArchiveRequest is only used by a hidden operation, so its component is absent from the public spec but still validated.

type Config

type Config struct {
	Retries int `json:"retries" minimum:"0"`
}

Config is a nested request object used to test nested key handling.

type CreateRequest

type CreateRequest struct {
	requests.NoRules
	Name   string            `json:"name" required:"true" minLength:"1"`
	Trace  string            `json:"-" header:"x-trace"`
	Config *Config           `json:"config,omitempty"`
	Steps  []Config          `json:"steps,omitempty"`
	Labels map[string]Config `json:"labels,omitempty"`
}

CreateRequest requires name and reads a header.

type EditRequest

type EditRequest struct {
	requests.NoRules
	RunID  uuid.UUID                 `json:"-" path:"id"`
	Name   types.Optional[string]    `json:"name" minLength:"1"`
	Status types.Optional[RunStatus] `json:"status"`
	Config types.Optional[Config]    `json:"config"`
}

EditRequest is a partial update whose fields tell absent, null and a value apart.

type ExportRequest

type ExportRequest struct {
	requests.NoRules
	Status RunStatus `json:"-" query:"status"`
}

ExportRequest lists runs as JSON or, when negotiated, as a CSV api.Blob.

type GetRequest

type GetRequest struct {
	requests.NoRules
	RunID uuid.UUID `json:"-" path:"id"`
}

GetRequest has a single path parameter.

type HealthRequest

type HealthRequest struct {
	requests.NoRules
}

HealthRequest is used by the public operation.

type HealthResponse

type HealthResponse struct {
	OK bool `json:"ok"`
}

HealthResponse is the public operation's response.

type ListRequest

type ListRequest struct {
	pagination.CursorRequest
	ProjectID uuid.UUID  `json:"-" query:"project_id"`
	Status    RunStatus  `json:"-" query:"status"`
	At        time.Time  `json:"-" query:"at"`
	Since     *time.Time `json:"-" header:"x-since"`
}

ListRequest has no body: every field is a parameter. It does not embed requests.NoRules because CursorRequest already provides Validate (both at the same depth would make Validate ambiguous).

type ListResponse

type ListResponse struct {
	pagination.CursorResponse
	Runs []Run `json:"runs"`
}

ListResponse embeds the cursor response.

type ReportRequest

type ReportRequest struct {
	requests.NoRules
	RunID uuid.UUID `json:"-" path:"id"`
}

ReportRequest returns a run report as a PDF api.Blob.

type Run

type Run struct {
	ID            uuid.UUID `json:"id"`
	Name          string    `json:"name"`
	Status        RunStatus `json:"status"`
	FailureReason *string   `json:"failure_reason,omitempty"`
	MaxTotalRuns  int       `json:"max_total_runs"`
	CreatedAt     time.Time `json:"created_at"`
}

Run is the main response type.

type RunStatus

type RunStatus string

RunStatus is a named enum registered through enums.Set.

const (
	PendingStatus   RunStatus = "pending"
	RunningStatus   RunStatus = "running"
	CompletedStatus RunStatus = "completed"
	FailedStatus    RunStatus = "failed"
	CancelledStatus RunStatus = "cancelled"
)

type UpdateRequest

type UpdateRequest struct {
	RunID          uuid.UUID  `json:"-" path:"id"`
	MaxTotalRuns   *int       `json:"max_total_runs,omitempty" minimum:"0"`
	CodeSnapshotID *uuid.UUID `json:"code_snapshot_id,omitempty"`
	Status         *RunStatus `json:"status,omitempty" enum:"failed,cancelled"`
	FailureReason  *string    `json:"failure_reason,omitempty"`
}

UpdateRequest is a partial update with a cross-field rule.

func (*UpdateRequest) Validate

func (r *UpdateRequest) Validate() error

Validate keeps only cross-field rules. Shape rules live in tags.

type UploadRequest

type UploadRequest struct {
	requests.NoRules
	RunID    uuid.UUID               `json:"-" path:"id"`
	Category string                  `json:"category" required:"true" enum:"log,report"`
	Attempt  *int                    `json:"attempt,omitempty" minimum:"1"`
	Tags     []string                `json:"tags,omitempty"`
	Manifest *multipart.FileHeader   `json:"-" form:"manifest" required:"true" doc:"Run manifest"`
	Files    []*multipart.FileHeader `json:"-" form:"files"`
}

UploadRequest is a multipart/form-data upload: path param, form values and files.

type UploadResponse

type UploadResponse struct {
	Manifest string   `json:"manifest"`
	Files    []string `json:"files"`
}

UploadResponse echoes what the App received.

Jump to

Keyboard shortcuts

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