← 返回
未分类 中文

openapi-parser

Parses complex OpenAPI specs and generates Drift test cases from them. Use whenever the user wants to generate, write, or scaffold Drift tests from an OpenAP...
解析复杂的OpenAPI规范并生成Drift测试用例。当需要生成、编写或搭建基于OpenAPI的Drift测试时使用。
kevinrvaz kevinrvaz 来源
未分类 clawhub v1.0.0 1 版本 99655.2 Key: 无需
★ 0
Stars
📥 289
下载
💾 0
安装
1
版本
#latest

概述

OpenAPI Parser Skill

Reference files

(anyOf / oneOf / allOf / discriminator / $ref / enum / pattern / nullable / optional),

with real examples from snyk, digitalocean, posthog, and front/core specs

including datasets, expressions, lifecycle hooks for stateful cases, and expected

response matchers for each pattern type

Workflow

> OpenAPI version: This skill targets OpenAPI 3.x. Swagger 2.0 specs use the same structural patterns ($ref, allOf, oneOf) but different envelope syntax — you may need to adapt field names manually.

> If working from the konfig-sdks/openapi-examples collection, see references/example-repos.md for navigation commands.

1. Locate the endpoint

Extract only what's needed:

# Find the line number of the endpoint (macOS/Linux/Git Bash/WSL)
grep -n "^  /path/to/endpoint" spec.yaml

# Read just that block (adjust line range as needed)
# Then follow each $ref to components/schemas
grep -n "SchemaName:" spec.yaml
# PowerShell equivalents (Windows)
Select-String -Path spec.yaml -Pattern "^  /path/to/endpoint" | Select-Object LineNumber, Line
Select-String -Path spec.yaml -Pattern "SchemaName:" | Select-Object LineNumber, Line

Extract: path/query/header parameters, request body schema, and each response status code's schema.

2. Resolve $refs recursively

  1. Grep for Foo: in the spec to find its definition block
  2. If Foo itself contains refs, resolve those too
  3. Stop at primitive types (string, integer, boolean, array, object)

allOf: [$ref: Base, properties: {...}] is inheritance — merge Base fields with local

properties to get the full schema. See references/schema-patterns.md for all patterns.

3. Enumerate viable combinations

For each response status code, enumerate structurally distinct schema variants. Aim for minimum tests that maximise schema coverage — not a combinatorial explosion of optional field permutations.

PatternTests to generate
---------------------------------------------------------------------------------------------------------------
oneOf / anyOf with N branchesN tests — one per branch
discriminator with N mapping valuesN tests — one per discriminator value
allOf (composition / inheritance)1 test — merge all schemas into one payload
enum1 test covers it; add boundary variants only if the value drives behaviour
Optional field cluster2 tests: one with all optional fields, one without
nullable fieldCovered by happy path; add null variant only if it changes behaviour
pattern (regex)1 valid example matching the pattern; 1 invalid for negative testing

4. Generate Drift test cases

For each combination produce a Drift operation block. See references/drift-mapping.md

for full patterns. Key conventions:

  • Name operations as {operationId}_{variant} — e.g. getImage_byId, getImage_bySlug
  • For discriminated unions, set the discriminator property explicitly in the request body
  • For anyOf path parameters, write one test per type variant
  • Use dataset for test data; use inline parameters only for static, non-variant values (e.g. a fixed enum query param like type: user)
  • For 401 tests, strip global auth with exclude: [auth] and pass an invalid bearer token explicitly
  • Add ignore: { schema: true } to any operation that sends an intentionally invalid request body
  • Tag each test to indicate which schema branch it covers
  • Omitting body from expected lets Drift validate the response against the OpenAPI schema automatically; add explicit body matchers only when asserting a specific field value (e.g. the discriminator property came back correctly)

5. Output format

Always produce:

  1. Analysis — number of status codes, which schemas are polymorphic, how many tests

will be generated and why

  1. Drift operations YAML — the complete operations: block, ready to paste
  2. Dataset YAML (if needed) — the datasets: block for any referenced test data
  3. Gaps — schema combinations intentionally excluded, with the reason

Example

Given GET /v2/images/{image_id} where image_id: anyOf: [integer, string]:

operations:
  getImage_byId:
    target: source-oas:getImage
    tags: [images, param-integer]
    parameters:
      path:
        image_id: ${image-data:images.existing.id}
    expected:
      response:
        statusCode: 200

  getImage_bySlug:
    target: source-oas:getImage
    tags: [images, param-string]
    parameters:
      path:
        image_id: ${image-data:images.existing.slug}
    expected:
      response:
        statusCode: 200

  getImage_notFound:
    target: source-oas:getImage
    parameters:
      path:
        image_id: ${image-data:notIn(images.*.id)}
    expected:
      response:
        statusCode: 404

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-07 21:53 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

ai-agent

Skill Vetter

spclaudehome
AI智能体技能安全预审工具。安装ClawdHub、GitHub等来源技能前,检查风险信号、权限范围及可疑模式。
★ 1,226 📥 267,763
dev-programming

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 676 📥 325,377
ai-agent

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,378 📥 320,362