Skip to main content

Validation

gswag can validate generated specs for structural correctness and common documentation quality issues.

Validate the in-memory spec​

issues := gswag.ValidateSpec()
for _, issue := range issues {
fmt.Println(issue.String()) // includes severity and message
}

ValidationIssue carries a severity of "error" or "warning".

Validate a spec file on disk​

issues, err := gswag.ValidateSpecFile("./docs/openapi.yaml")
if err != nil {
log.Fatal(err)
}
for _, issue := range issues {
fmt.Println(issue.String())
}

Write and validate in one step​

if err := gswag.WriteAndValidateSpec(); err != nil {
// err wraps ErrSpecInvalid when any error-level issue exists
log.Fatal(err)
}

Use this in AfterSuite instead of WriteSpec when you want the test suite to fail on an invalid spec:

var _ = AfterSuite(func() {
testServer.Close()
Expect(gswag.WriteAndValidateSpec()).To(Succeed())
})

Validation checks​

Errors (block spec output)​

CheckDescription
info.title presentRequired by the OpenAPI spec
info.version presentRequired by the OpenAPI spec
Security scheme references resolveEvery BearerAuth() / Security("name") call must match a scheme declared in Config.SecuritySchemes

Warnings (reported, not blocking)​

CheckDescription
Empty pathsA paths object with no operations
Operations missing summaryOperations should have a human-readable summary
Operations missing tagsUntagged operations may not group correctly in UI tools

Runtime response validation​

Enable response validation during test execution to assert that real responses conform to the declared schema:

Init(&Config{
Title: "My API",
Version: "1.0.0",
EnforceResponseValidation: true,
ValidationMode: "warn", // "fail" (default) or "warn"
})

ValidationMode: "fail" causes a test failure when a response does not match its declared schema. "warn" logs the mismatch without failing.