Skip to content

Cover auction path against real platform config stores (Viceroy config-store, Cloudflare KV) via manifest binding name #114

Description

@aram356

Summary

PR #110 added config-seeded auction coverage through the Fastly and Cloudflare adapters, but it seeds the config store in-process rather than through each platform's real store. This closes the last mile: prove the auction path works against the actual platform config store, opened by its manifest binding name.

What PR #110 already covers

crates/mocktioneer-adapter-{fastly,cloudflare}/tests/contract.rs each seed a non-default bid_cpm (0.35) into an in-process ConfigStore, inject it via the service builder's with_config_handle, and dispatch POST /openrtb2/auction, asserting the decoded bid price. These run under the real wasm runtimes (Viceroy / wasm-bindgen + headless Firefox) in the existing adapter-wasm-tests CI matrix.

That exercises: request translation → config-store binding → AppConfig extractor → auction handler → response translation.

The gap

Because the handle is injected, the service builder binds it under default_key "default" (see synthesise_store_registries). So these are not covered:

  • The real platform read — Fastly ConfigStore::try_open(...) / Cloudflare KV get(...).
  • The manifest binding name mocktioneer_config (from [stores.config] ids), as resolved by the manifest-driven run_app path.
  • Emulator/local state wiring (Viceroy config-store fixture, miniflare/workerd KV binding).

A binding-name or default-key regression in the manifest path could therefore break all edge auctions while CI stays green.

Proposed work

  • Fastly: add a Viceroy config-store fixture ([local_server.config_stores]) holding the blob envelope under mocktioneer_config, and a test that dispatches an auction through the manifest-driven path.
  • Cloudflare: stand up miniflare/workerd with a seeded KV binding and dispatch an auction against it.
  • Spin: add the equivalent once Spin adapter cannot serve: spin-sdk 6 imports wasi:http@0.3.0-rc, unsupported by released Spin runtimes #113 (the wasi:http ABI blocker) is resolved.
  • Keep the fixtures' blob envelope in sync with what config push writes (canonical JSON + SHA), ideally generated rather than hand-maintained.

Notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions