Documentation
¶
Overview ¶
Package fixture mirrors auditor3's runs module for api registry tests.
Index ¶
- Constants
- Variables
- type App
- func (a *App) Archive(ctx context.Context, body *ArchiveRequest) (Run, error)
- func (a *App) Authenticate(request requests.Request) error
- func (a *App) Create(ctx context.Context, body *CreateRequest) (Run, error)
- func (a *App) Edit(ctx context.Context, body *EditRequest) (Run, error)
- func (a *App) Export(ctx context.Context, body *ExportRequest) (ListResponse, error)
- func (a *App) ExportCSV(ctx context.Context, body *ExportRequest) (api.Blob, error)
- func (a *App) Get(ctx context.Context, body *GetRequest) (Run, error)
- func (a *App) Health(ctx context.Context, body *HealthRequest) (HealthResponse, error)
- func (a *App) Last() requests.Body
- func (a *App) LastAccept() string
- func (a *App) List(ctx context.Context, body *ListRequest) (ListResponse, error)
- func (a *App) Report(ctx context.Context, body *ReportRequest) (api.Blob, error)
- func (a *App) Update(ctx context.Context, body *UpdateRequest) (Run, error)
- func (a *App) Upload(ctx context.Context, body *UploadRequest) (UploadResponse, error)
- type ArchiveRequest
- type Config
- type CreateRequest
- type EditRequest
- type ExportRequest
- type GetRequest
- type HealthRequest
- type HealthResponse
- type ListRequest
- type ListResponse
- type ReportRequest
- type Run
- type RunStatus
- type UpdateRequest
- type UploadRequest
- type UploadResponse
Constants ¶
const ExportCSV = "id,name\n0192f3a1-7b2c-7def-8a12-3456789abcde,nightly\n"
ExportCSV is the CSV body the App returns for ExportRequest.
Variables ¶
var KnownID = uuid.MustParse("0192f3a1-7b2c-7def-8a12-3456789abcde")
KnownID is a v7 run id the App returns.
var MissingID = uuid.MustParse("01890a5d-ac96-774b-bcce-b302099a8057")
MissingID is the run id the App reports as not found.
var RunStatuses = enums.Set([]RunStatus{PendingStatus, RunningStatus, CompletedStatus, FailedStatus, CancelledStatus})
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) Authenticate ¶
Authenticate accepts every request.
func (*App) Export ¶
func (a *App) Export(ctx context.Context, body *ExportRequest) (ListResponse, error)
Export lists runs as JSON.
func (*App) ExportCSV ¶
ExportCSV lists runs as CSV, without a ContentType so the negotiated one is written.
func (*App) Health ¶
func (a *App) Health(ctx context.Context, body *HealthRequest) (HealthResponse, error)
Health handles HealthRequest.
func (*App) LastAccept ¶
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) Upload ¶
func (a *App) Upload(ctx context.Context, body *UploadRequest) (UploadResponse, error)
Upload handles UploadRequest.
type ArchiveRequest ¶
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 ¶
ExportRequest lists runs as JSON or, when negotiated, as a CSV api.Blob.
type GetRequest ¶
GetRequest has a single path parameter.
type HealthRequest ¶
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 ¶
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 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 ¶
UploadResponse echoes what the App received.