Help us shape the future of Go! Take the 2026 Go Developer Survey

engine

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Apr 17, 2026 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsValidMode

func IsValidMode(mode string) bool

Types

type Engine

type Engine struct{}

Engine executes scenario steps.

func New

func New() *Engine

func (*Engine) Execute

func (e *Engine) Execute(sc *store.Scenario, stepIndex int) (*Result, error)

Execute returns the Result for step at stepIndex. If stepIndex >= len(steps), the last step is used.

type FailureMode

type FailureMode string
const (
	// Generic
	ModeSuccess FailureMode = "success"

	// Bank-side
	ModeBankDeclineHard FailureMode = "bank_decline_hard"
	ModeBankDeclineSoft FailureMode = "bank_decline_soft"
	ModeBankServerDown  FailureMode = "bank_server_down"
	ModeBankTimeout     FailureMode = "bank_timeout"
	ModeBankInvalidCVV  FailureMode = "bank_invalid_cvv"
	ModeBankDoNotHonour FailureMode = "bank_do_not_honour"

	// PG server-side
	ModePGServerError FailureMode = "pg_server_error"
	ModePGTimeout     FailureMode = "pg_timeout"
	ModePGRateLimited FailureMode = "pg_rate_limited"
	ModePGMaintenance FailureMode = "pg_maintenance"
	ModeNetworkError  FailureMode = "network_error"

	// Webhook anomalies
	ModeWebhookMissing    FailureMode = "webhook_missing"
	ModeWebhookDelayed    FailureMode = "webhook_delayed"
	ModeWebhookDuplicate  FailureMode = "webhook_duplicate"
	ModeWebhookOutOfOrder FailureMode = "webhook_out_of_order"
	ModeWebhookMalformed  FailureMode = "webhook_malformed"

	// Redirect / 3DS
	ModeRedirectSuccess   FailureMode = "redirect_success"
	ModeRedirectAbandoned FailureMode = "redirect_abandoned"
	ModeRedirectTimeout   FailureMode = "redirect_timeout"
	ModeRedirectFailed    FailureMode = "redirect_failed"

	// Charge anomalies
	ModeDoubleCharge   FailureMode = "double_charge"
	ModeAmountMismatch FailureMode = "amount_mismatch"
	ModePartialSuccess FailureMode = "partial_success"

	// Async state transitions
	ModePendingThenFailed   FailureMode = "pending_then_failed"
	ModePendingThenSuccess  FailureMode = "pending_then_success"
	ModeFailedThenSuccess   FailureMode = "failed_then_success"
	ModeSuccessThenReversed FailureMode = "success_then_reversed"
)

type Result

type Result struct {
	Mode             FailureMode
	HTTPStatus       int
	ErrorCode        string // gateway-specific error code, e.g. "insufficient_funds"
	SkipWebhook      bool   // true for webhook_missing
	DuplicateWebhook bool   // true for webhook_duplicate
	WebhookDelayMs   int
	IsPending        bool // true for async pending states
}

Result is the outcome of executing one scenario step.

Jump to

Keyboard shortcuts

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