Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 11:45
· 52 commits to master since this release
b5c45ad
  • ParameterSerializer emits the wire format the specification declares for
    label and the delimited styles (#45), matching the parser fix in
    rasuvaeff/openapi-contract 0.4.0 — which this package now requires
    (^0.4, was ^0.3). An unexploded label array is comma-separated
    (.blue,black,brown), not dot-separated; spaceDelimited emits the
    separator as %20, since a raw space is not a legal URI character. The two
    packages carried mirror-image bugs, so they agreed with each other and every
    generated request was accepted by the oracle while no conforming server would
    have taken it. Generating a list item that contains its own separator now
    fails closed as UnsupportedGeneration: the styles have no escape for one,
    so such a value has no representation on the wire.
  • An optional multipart/form-data request body generates instead of throwing
    LogicException from inside the arbitrary (#41). The "body present" branch of
    an optional body wrapped the generated body and read its shape back, and that
    read accepted the json and form encodings only — multipart carries parts
    rather than a value. The optional form now picks between the body arbitrary
    and no body at all, so nothing re-reads a shape the generator just built.
    Every multipart fixture declared required: true, which is why the hole was
    invisible.
  • A negative type-mismatch witness is built only for a parameter with a single
    declared type (#42). An OAS 3.1 union admits every type it lists, so
    not-null is a valid value for ["string", "null"] — the "invalid" case was
    valid and falsified the whole negative phase. ResponseTargets already
    required a single type; the parameter side now agrees.
  • The JSON body encoder reads the additionalProperties schema for a key
    outside properties (#43). Losing it encoded a nested empty object as []
    instead of {}, and the contract correctly rejected the result — surfacing as
    invalidGeneratedRequest on a valid contract.
  • allOf merges OAS 3.0 nullable as an intersection (#44): null is generated
    only where every branch admits it. Merging it as an ordinary last-write key
    let {type: string, nullable: true} next to {type: string, minLength: 3}
    generate null, which the second branch rejects. A branch omitting nullable
    now counts as nullable: false, which is what OAS 3.0 means by it. The OAS
    3.1 spelling of the same shape (type: [..., "null"] in one branch only)
    already failed closed as conflicting types.