Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
212 commits
Select commit Hold shift + click to select a range
180471e
Rename crates to trusted-server-core and trusted-server-adapter-fastly
prk-Jr Mar 18, 2026
f63e5b2
Add platform abstraction layer with traits and RuntimeServices
prk-Jr Mar 19, 2026
020e88c
Merge remote-tracking branch 'origin/main' into feature/edgezero-pr1-…
prk-Jr Mar 19, 2026
37c8fbf
Merge branch 'feature/edgezero-pr1-crate-rename' into feature/edgezer…
prk-Jr Mar 19, 2026
7495d96
Merge branch 'main' into feature/edgezero-pr2-platform-traits
prk-Jr Mar 20, 2026
2c40d58
Address platform layer review feedback
prk-Jr Mar 20, 2026
46e3360
Reject host strings containing control characters in BackendConfig
prk-Jr Mar 20, 2026
2f40b4c
Fix clippy error
prk-Jr Mar 20, 2026
8210a85
Validate scheme and host for control characters in BackendConfig
prk-Jr Mar 20, 2026
99d7bee
Address review findings on platform abstraction layer
prk-Jr Mar 22, 2026
a2597e5
Address review findings on platform abstraction layer
prk-Jr Mar 22, 2026
d7a35a1
Merge branch 'main' into feature/edgezero-pr2-platform-traits
prk-Jr Mar 22, 2026
d8b267b
Add config store read path and storage module split
prk-Jr Mar 23, 2026
591b9b3
Merge branch 'main' into feature/edgezero-pr2-platform-traits
aram356 Mar 23, 2026
ce456a9
Merge branch 'main' into feature/edgezero-pr3-config-store
prk-Jr Mar 23, 2026
ed57b14
Merge branch 'main' into feature/edgezero-pr3-config-store
prk-Jr Mar 24, 2026
a8c5648
Harden legacy config-store reads and align Fastly adapter stubs
prk-Jr Mar 24, 2026
14e54c4
Address storage review feedback
prk-Jr Mar 25, 2026
c682c6d
Resolved github-advanced-security bot problems
prk-Jr Mar 25, 2026
eec34fb
Address PR review feedback on platform abstraction layer
prk-Jr Mar 25, 2026
d6be0b2
Merge branch 'main' into feature/edgezero-pr2-platform-traits
prk-Jr Mar 25, 2026
b25bfd6
Add PR 4 design spec for secret store trait (read-only)
prk-Jr Mar 25, 2026
a641eb0
Clarify test scope and deferred branches in PR 4 spec
prk-Jr Mar 25, 2026
1ee695c
Add implementation plan for PR 4 secret store trait
prk-Jr Mar 25, 2026
5b205bb
Add test for get_secret_bytes open-failure path
prk-Jr Mar 25, 2026
df6bc60
Add NotImplemented tests for FastlyPlatformSecretStore write stubs
prk-Jr Mar 25, 2026
21ec187
Inline StoreId binding and add section comment in write-stub tests
prk-Jr Mar 25, 2026
e51a7d6
Remove plan
prk-Jr Mar 25, 2026
b4bda32
Add PR 6 design spec for backend and HTTP client traits
prk-Jr Mar 25, 2026
57d6bec
Address spec review findings on PR 6 design
prk-Jr Mar 25, 2026
571656c
Implement PlatformHttpClient and thread RuntimeServices through proxy…
prk-Jr Mar 26, 2026
e271dce
Merge branch 'main' into feature/edgezero-pr6-backend-http-client
prk-Jr Mar 26, 2026
7181a92
Merge branch 'main' into feature/edgezero-pr3-config-store
prk-Jr Mar 26, 2026
f4c4b57
Merge branch 'main' into feature/edgezero-pr2-platform-traits
prk-Jr Mar 26, 2026
b8c4daf
Merge branch 'main' into feature/edgezero-pr4-secret-store
prk-Jr Mar 26, 2026
2bc167e
Merge branch 'main' into feature/edgezero-pr2-platform-traits
prk-Jr Mar 30, 2026
b458d64
Address pr review findings
prk-Jr Mar 30, 2026
089a805
Merge branch 'feature/edgezero-pr2-platform-traits' into feature/edge…
prk-Jr Mar 30, 2026
882fd29
Merge branch 'feature/edgezero-pr3-config-store' into feature/edgezer…
prk-Jr Mar 30, 2026
291ad66
Merge branch 'feature/edgezero-pr4-secret-store' into feature/edgezer…
prk-Jr Mar 30, 2026
ebf129b
Resolve pr review findings
prk-Jr Mar 30, 2026
2ff0ce9
Add PR7 design spec for geo lookup + client info extract-once
prk-Jr Mar 30, 2026
ead539c
Fix spec review issues in PR7 design doc
prk-Jr Mar 30, 2026
8bbfc74
Update PR7 spec to address all five agent review findings
prk-Jr Mar 30, 2026
b39cd79
Add PR7 implementation plan and address plan review findings
prk-Jr Mar 30, 2026
d6a624a
Fix three plan review findings and two open questions
prk-Jr Mar 30, 2026
986a1b2
Broaden two low-severity doc cleanup steps in PR7 plan
prk-Jr Mar 30, 2026
86079c5
Fix two remaining low findings in PR7 plan
prk-Jr Mar 30, 2026
a03a765
Fix count drift in Step 7: four → five locations
prk-Jr Mar 30, 2026
ac79961
Add client_info field to AuctionContext and fix all construction sites
prk-Jr Mar 30, 2026
b96aec0
Change RequestInfo::from_request to take &ClientInfo, thread services…
prk-Jr Mar 30, 2026
661e3df
Add Task 2 follow-up coverage and README route fixes
prk-Jr Mar 30, 2026
774a07f
Add services param to generate_synthetic_id, remove Fastly IP/geo cal…
prk-Jr Mar 30, 2026
95ce45e
Revert premature publisher geo change from Task 3
prk-Jr Mar 30, 2026
b10dcec
Replace deprecated GeoInfo::from_request in publisher.rs with service…
prk-Jr Mar 30, 2026
888170d
Remove Fastly IP extraction from Didomi copy_headers, use ClientInfo …
prk-Jr Mar 30, 2026
f856b68
Move IpAddr import to test module level in didomi.rs
prk-Jr Mar 30, 2026
eb12522
Apply rustfmt formatting to didomi.rs, publisher.rs, and synthetic.rs
prk-Jr Mar 30, 2026
7fcb3b4
Add test coverage for generate_synthetic_id with concrete client IP
prk-Jr Mar 31, 2026
1844290
Align geo lookup warn log format with codebase convention ({e} not {e…
prk-Jr Mar 31, 2026
0132a36
Apply Prettier formatting to PR7 plan and spec docs
prk-Jr Mar 31, 2026
ffa1174
Document content rewriting as platform-agnostic in platform module
prk-Jr Mar 31, 2026
fbbf767
Document html_processor as platform-agnostic
prk-Jr Mar 31, 2026
b89a9e6
Document streaming_processor as platform-agnostic
prk-Jr Mar 31, 2026
6fa8b38
Fix unresolved doc link: replace EdgeRequest with edgezero_core::http…
prk-Jr Mar 31, 2026
e9ce63d
Add plan for content rewriting
prk-Jr Mar 31, 2026
794b66d
Add plan for PR9: wire signing to store primitives
prk-Jr Mar 31, 2026
e13537b
Add build_services_with_config_and_secret to test_support
prk-Jr Mar 31, 2026
b0c6571
Merge branch 'main' into feature/edgezero-pr6-backend-http-client
prk-Jr Apr 1, 2026
14f282b
Merge branch 'feature/edgezero-pr6-backend-http-client' into feature/…
prk-Jr Apr 1, 2026
34c44bd
Merge branch 'feature/edgezero-pr7-geo-client-info' into feature/edge…
prk-Jr Apr 1, 2026
04b9cda
Merge branch 'feature/edgezero-pr8-content-rewriting' into feature/ed…
prk-Jr Apr 1, 2026
2c0c4eb
Add FastlyManagementApiClient to adapter
prk-Jr Apr 1, 2026
f6b00c8
Implement FastlyPlatformConfigStore and FastlyPlatformSecretStore wri…
prk-Jr Apr 1, 2026
ec62970
Migrate KeyRotationManager from FastlyApiClient to RuntimeServices st…
prk-Jr Apr 1, 2026
27a0949
Migrate signing.rs from FastlyConfigStore/FastlySecretStore to Runtim…
prk-Jr Apr 1, 2026
5b6555f
Delete storage/api_client.rs from core; remove FastlyApiClient
prk-Jr Apr 1, 2026
0a8915c
Fix formatting after CI gate check
prk-Jr Apr 1, 2026
2f1cc97
Add services to AuctionContext; remove deprecated from_config shim
prk-Jr Apr 2, 2026
ba141fa
Fix prettier formatting in PR9 plan document
prk-Jr Apr 2, 2026
7310198
Add PR 10 logging initialization design
prk-Jr Apr 2, 2026
a05189e
Add PR 10 logging initialization plan
prk-Jr Apr 2, 2026
4617253
Fix PR 10 logging plan to avoid per-log allocation
prk-Jr Apr 2, 2026
236eecf
Extract Fastly logging initialization into adapter module
prk-Jr Apr 2, 2026
cd68357
Wire Fastly main.rs to adapter-local logging module
prk-Jr Apr 2, 2026
41cb0df
Remove log-fastly from core dependencies
prk-Jr Apr 2, 2026
e437454
Format Fastly logging module declaration
prk-Jr Apr 2, 2026
f9b4d62
format plan docs
prk-Jr Apr 2, 2026
1a0c0b6
Address PR findings
prk-Jr Apr 6, 2026
49e3f1d
Restore idiomatic fern logging and improve target label extraction
prk-Jr Apr 6, 2026
086b32c
Migrate utility layer to HTTP types
prk-Jr Apr 8, 2026
a9dd665
Migrate handler layer to HTTP types
prk-Jr Apr 8, 2026
7365ec4
Address PR review findings
prk-Jr Apr 8, 2026
079a97f
Address review findings
prk-Jr Apr 9, 2026
e9ec0a8
Migrate integration and provider HTTP types
prk-Jr Apr 9, 2026
3924a98
Address review findings
prk-Jr Apr 10, 2026
dd6929c
Resolve review findings
prk-Jr Apr 10, 2026
2817761
Resolve PR review findings
prk-Jr Apr 10, 2026
ba9c608
Address review findings
prk-Jr Apr 10, 2026
4cd511c
Removed unused import
prk-Jr Apr 10, 2026
d2fa12d
Merge branch 'feature/edgezero-pr12-handler-layer-types' into feature…
prk-Jr Apr 10, 2026
442a6e2
Resolve PR findings
prk-Jr Apr 10, 2026
0db7beb
Resolve PR findings
prk-Jr Apr 10, 2026
f5a984a
Add dual-path entry point with feature-flag dispatch and legacy_main …
prk-Jr Apr 13, 2026
a81b1d6
Fix clippy doc_markdown, fmt, and add warn log on flag-read failure
prk-Jr Apr 13, 2026
7d2f059
Add FinalizeResponseMiddleware and AuthMiddleware with golden header-…
prk-Jr Apr 13, 2026
4410813
Simplify EdgeError::internal call and fix comment accuracy in middleware
prk-Jr Apr 13, 2026
68ddcba
Revert anyhow direct dependency; use std::io::Error::other for EdgeEr…
prk-Jr Apr 13, 2026
8c9cb56
Implement TrustedServerApp with all routes via Hooks trait
prk-Jr Apr 13, 2026
5e30906
Fix app.rs spec gaps: remove double-Arc, move tsjs into catch-all, fi…
prk-Jr Apr 13, 2026
e1bce63
Clean up app.rs: remove gratuitous allocation, Box::pin inconsistency…
prk-Jr Apr 13, 2026
181d866
Reference legacy-cleanup issue in legacy_main comment
prk-Jr Apr 13, 2026
e8e0d9f
Fix lint issues
prk-Jr Apr 13, 2026
d3c2798
Pin edgezero dependencies to branch=main and bump toml to 1.1
prk-Jr Apr 13, 2026
a300109
Switch EdgeZero dispatch to dispatch_with_config, add routing log lines
prk-Jr Apr 13, 2026
86a44b6
Register explicit GET / and POST / routes to cover matchit root path gap
prk-Jr Apr 13, 2026
a48d956
Add trusted_server_config config store for local dev
prk-Jr Apr 13, 2026
dacc403
Address PR review findings in app.rs
prk-Jr Apr 13, 2026
d5f5c0d
Fix rotate/delete atomicity, HTTP verb, idempotent deletes, and weak …
prk-Jr Apr 15, 2026
f9df8da
Merge branch 'main' into feature/edgezero-pr9-wire-signing-to-store-p…
prk-Jr Apr 15, 2026
1acbfa7
Resolve PR review feedback on logging module
prk-Jr Apr 15, 2026
ae402ff
Address review findings
prk-Jr Apr 15, 2026
ff2e0cd
Resolve PR review findings
prk-Jr Apr 16, 2026
6a2ad3f
Merge feature/edgezero-pr11-utility-layer-migration-v2
prk-Jr Apr 16, 2026
5dbbfb0
Merge feature/edgezero-pr12-handler-layer-types
prk-Jr Apr 16, 2026
94ec947
Address review findings: safe body reads and bounded inbound forwarding
prk-Jr Apr 16, 2026
c2b4bc9
Merge remote-tracking branch 'origin/feature/edgezero-pr13-integratio…
prk-Jr Apr 16, 2026
40b4598
Resolve PR review findings and format lint
prk-Jr Apr 16, 2026
1a2cb46
Address round-3 review findings
prk-Jr Apr 21, 2026
e8c06e9
Address PR review: add body-size caps and remove orchestrator duplica…
prk-Jr Apr 21, 2026
6d9d96a
Merge feature/edgezero-pr12-handler-layer-types: resolve body-cap and…
prk-Jr Apr 21, 2026
4b27087
Address PR review: fmt, testlight body cap, auction constant, stale R…
prk-Jr Apr 21, 2026
3bd4a1b
Merge feature/edgezero-pr13: use AUCTION_MAX_BODY_BYTES and testlight…
prk-Jr Apr 21, 2026
373c8e4
Address PR14 review findings: middleware finalize and missing HTTP me…
prk-Jr Apr 21, 2026
6c016d8
Make AppState private — not part of any public API
prk-Jr Apr 21, 2026
eb6a9e9
Resolve review findings
prk-Jr Apr 22, 2026
9a1fd41
Resolve PR review findings
prk-Jr Apr 23, 2026
cd9cda7
Resolve PR review findings
prk-Jr Apr 23, 2026
cf0df8e
Resolve PR review findings
prk-Jr Apr 25, 2026
3bb3006
Use append_header in place of set_header
prk-Jr Apr 26, 2026
ed3c161
Merge branch 'feature/edgezero-pr11-utility-layer-migration-v2' into …
prk-Jr Apr 26, 2026
7321e79
fix lint
prk-Jr Apr 26, 2026
dfa0386
Merge branch 'main' into feature/edgezero-pr9-wire-signing-to-store-p…
prk-Jr Apr 26, 2026
e0c9bb8
Merge branch 'feature/edgezero-pr9-wire-signing-to-store-primitives' …
prk-Jr Apr 26, 2026
5f5b067
Merge branch 'feature/edgezero-pr10-abstract-logging-initialization' …
prk-Jr Apr 26, 2026
1d22f8c
Route Fastly cookie calls through compat bridge after PR10 merge
prk-Jr Apr 26, 2026
8eb72ee
Remove unused Logger import
prk-Jr Apr 26, 2026
2986f33
Merge branch 'feature/edgezero-pr10-abstract-logging-initialization' …
prk-Jr Apr 26, 2026
caaface
Merge branch 'feature/edgezero-pr11-utility-layer-migration-v2' into …
prk-Jr Apr 27, 2026
a2036eb
Merge branch 'feature/edgezero-pr12-handler-layer-types' into feature…
prk-Jr Apr 27, 2026
16c0978
Merge branch 'feature/edgezero-pr13-integration-provider-type-migrati…
prk-Jr Apr 27, 2026
fb8beac
fix cargo fmt
prk-Jr Apr 27, 2026
a94ddd8
resolve PR review findings
prk-Jr Apr 27, 2026
b901037
Added E2E tests dispatch_auth_rejected_401_carries_finalize_headers, …
prk-Jr Apr 27, 2026
76df6f8
Resolve PR review findings
prk-Jr Apr 30, 2026
2a908d4
Merge branch 'main' into feature/edgezero-pr11-utility-layer-migratio…
prk-Jr Apr 30, 2026
65d1e2d
Fix fmt lint
prk-Jr Apr 30, 2026
73734dd
Rename synthetic_id_cookie_value_is_safe → ec_cookie_value_is_safe
prk-Jr Apr 30, 2026
c23663c
Resolve PR review findings
prk-Jr Apr 30, 2026
ca5585c
Merge branch 'feature/edgezero-pr11-utility-layer-migration-v2' into …
prk-Jr Apr 30, 2026
86bd21e
Resolve PR review findings
prk-Jr Apr 30, 2026
9694980
Merge branch 'feature/edgezero-pr12-handler-layer-types' into feature…
prk-Jr Apr 30, 2026
c17fa27
Address PR review findings
prk-Jr Apr 30, 2026
f797f56
Resolve PR 624 review findings
prk-Jr May 12, 2026
e50068e
Merge main into feature/edgezero-pr12-handler-layer-types
prk-Jr May 12, 2026
cd4c621
Call StreamingBody::finish() to properly terminate chunked response
prk-Jr May 12, 2026
e093d01
Apply cargo fmt formatting
prk-Jr May 12, 2026
bf31cca
Resolve PR 626 review findings
prk-Jr May 12, 2026
f360b82
Apply cargo fmt formatting
prk-Jr May 12, 2026
28205a0
Merge feature/edgezero-pr12-handler-layer-types into PR13
prk-Jr May 12, 2026
611c68f
Merge feature/edgezero-pr13-integration-provider-type-migration
prk-Jr May 12, 2026
3cca51c
Address review Non blocker findings
prk-Jr May 12, 2026
6574790
Address PR 628 review findings
prk-Jr May 13, 2026
189c57c
Update pr review findings
prk-Jr May 14, 2026
b30581c
Merge branch 'main' into feature/edgezero-pr12-handler-layer-types
prk-Jr May 21, 2026
58b754a
Resolve PR 624 round-6 review findings
prk-Jr May 28, 2026
62923fd
Merge branch 'main' into feature/edgezero-pr12-handler-layer-types
prk-Jr May 28, 2026
f551544
Resolve PR 626 round-1 review findings
prk-Jr May 28, 2026
2b17d4c
Merge feature/edgezero-pr12-handler-layer-types into PR13
prk-Jr May 28, 2026
1973b5d
Resolve PR 628 round-1 review findings
prk-Jr May 28, 2026
8a83c5e
Merge feature/edgezero-pr13-integration-provider-type-migration into …
prk-Jr May 28, 2026
971a7f5
Bound publisher response body size and document interim buffering
prk-Jr Jun 6, 2026
a2af24a
Merge main into feature/edgezero-pr12-handler-layer-types
prk-Jr Jun 7, 2026
acf775a
Add edge_cookie module, test helpers, and integration handle signatures
prk-Jr Jun 7, 2026
78302a2
Fix remaining code review findings from merge
prk-Jr Jun 7, 2026
c229146
Fix cargo fmt lint
prk-Jr Jun 7, 2026
936e721
Resolve merge conflicts from feature/edgezero-pr12-handler-layer-types
prk-Jr Jun 8, 2026
b71da80
Resolve PR 626 round-2 review findings
prk-Jr Jun 8, 2026
6c4b66c
Resolve merge conflicts between PR14 and PR13
prk-Jr Jun 8, 2026
ed065ba
Resolve PR14 round-1 review findings
prk-Jr Jun 8, 2026
04ca534
Update integration-tests lock file to fix CI --locked failure
prk-Jr Jun 8, 2026
63538f5
Update root workspace lock file to match integration-tests versions
prk-Jr Jun 8, 2026
79531d6
Merge remote-tracking branch 'origin/main' into feature/edgezero-pr12…
prk-Jr Jun 12, 2026
4fbafd5
Resolve PR14 round-2 review findings
prk-Jr Jun 12, 2026
726301d
Port EC identity lifecycle and EC API routes to the EdgeZero path
prk-Jr Jun 12, 2026
cc9a2e5
Align shared dependency versions in integration-tests lock file
prk-Jr Jun 12, 2026
afecb5d
Strip internal fastly-ssl signal from publisher origin requests
prk-Jr Jun 13, 2026
34e1609
Enforce max_buffered_body_bytes on the buffered publisher post-proces…
prk-Jr Jun 14, 2026
6e191e9
Merge branch 'main' into feature/edgezero-pr12-handler-layer-types
aram356 Jun 14, 2026
cf39f2d
Migrate auction format tests to edgezero http types after merge
prk-Jr Jun 15, 2026
609154e
Merge remote-tracking branch 'origin/feature/edgezero-pr12-handler-la…
prk-Jr Jun 15, 2026
4d57b83
Give auction transport failures a consistent error envelope
prk-Jr Jun 15, 2026
023cb2e
Merge remote-tracking branch 'origin/feature/edgezero-pr13-integratio…
prk-Jr Jun 15, 2026
c869faf
Bound the HTML post-processing accumulator by max_buffered_body_bytes
prk-Jr Jun 15, 2026
eeabc24
Correct max_buffered_body_bytes failure status in sample config
prk-Jr Jun 15, 2026
50c9e2e
Merge remote-tracking branch 'origin/main' into feature/edgezero-pr14…
prk-Jr Jun 15, 2026
36a0ba7
Fix EdgeZero fallback asset-route and EC partner parity
prk-Jr Jun 16, 2026
a1e108f
Merge remote-tracking branch 'origin/main' into feature/edgezero-pr14…
prk-Jr Jun 17, 2026
9785872
Capture EdgeZero device signals before request conversion
prk-Jr Jun 17, 2026
bb180ff
Preserve origin Content-Length for bodiless EdgeZero asset responses
prk-Jr Jun 17, 2026
b0a57ac
Align Publisher Default with the config buffer-cap default
prk-Jr Jun 17, 2026
ba07d4b
Run integration request filters on the EdgeZero entry point
prk-Jr Jun 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,50 @@ jobs:
INTEGRATION_ORIGIN_PORT: ${{ env.ORIGIN_PORT }}
RUST_LOG: info

integration-tests-edgezero:
name: integration tests (EdgeZero entry point)
needs: prepare-artifacts
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4

- name: Set up integration test runtime
id: shared-setup
uses: ./.github/actions/setup-integration-test-env
with:
origin-port: ${{ env.ORIGIN_PORT }}
check-dependency-versions: "false"
install-viceroy: "true"
build-wasm: "false"
build-test-images: "false"

- name: Download integration test artifacts
uses: actions/download-artifact@v4
with:
name: integration-test-artifacts
path: ${{ env.ARTIFACTS_DIR }}

# Exercises the EdgeZero entry point against the same WASM binary by
# pointing Viceroy at a config store with `edgezero_enabled = "true"`.
# Scoped to the container-free EC lifecycle suite (minimal TCP origin), a
# focused parity subset covering Fastly request conversion, config-store
# dispatch, publisher fallback proxying, and end-to-end EC/API wiring on
# the EdgeZero path. The legacy `integration-tests` job above still covers
# the full framework matrix.
- name: Run EdgeZero EC lifecycle tests

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review: P2 / Medium — EdgeZero CI can false-pass on the legacy path.

This job relies on VICEROY_CONFIG_PATH enabling edgezero_enabled, but main() intentionally falls back to legacy_main when the config store cannot be opened/read. The reused EC lifecycle scenarios are also valid on the legacy path, so a fixture/env/config-store regression could make this job green while exercising legacy instead of EdgeZero.

Suggested fix: add an EdgeZero-only canary to this job/suite, such as asserting TRACE / returns the documented EdgeZero router-level 405 rather than the legacy publisher fallback, or exposing a test-only response marker that proves the EdgeZero branch was taken.

run: >-
cargo test
--manifest-path crates/integration-tests/Cargo.toml
--target x86_64-unknown-linux-gnu
test_ec_lifecycle_fastly
-- --include-ignored --test-threads=1
env:
WASM_BINARY_PATH: ${{ env.WASM_ARTIFACT_PATH }}
INTEGRATION_ORIGIN_PORT: ${{ env.ORIGIN_PORT }}
VICEROY_CONFIG_PATH: ${{ github.workspace }}/crates/integration-tests/fixtures/configs/viceroy-template-edgezero.toml
RUST_LOG: info

browser-tests:
name: browser integration tests
needs: prepare-artifacts
Expand Down
14 changes: 7 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,10 @@ config = "0.15.19"
cookie = "0.18.1"
derive_more = { version = "2.0", features = ["display", "error"] }
ed25519-dalek = { version = "2.2", features = ["rand_core"] }
edgezero-adapter-axum = { git = "https://github.com/stackpop/edgezero", rev = "170b74b", default-features = false }
edgezero-adapter-cloudflare = { git = "https://github.com/stackpop/edgezero", rev = "170b74b", default-features = false }
edgezero-adapter-fastly = { git = "https://github.com/stackpop/edgezero", rev = "170b74b", default-features = false }
edgezero-core = { git = "https://github.com/stackpop/edgezero", rev = "170b74b", default-features = false }
edgezero-adapter-axum = { git = "https://github.com/stackpop/edgezero", rev = "38198f9839b70aef03ab971ae5876982773fc2a1", default-features = false }
edgezero-adapter-cloudflare = { git = "https://github.com/stackpop/edgezero", rev = "38198f9839b70aef03ab971ae5876982773fc2a1", default-features = false }
edgezero-adapter-fastly = { git = "https://github.com/stackpop/edgezero", rev = "38198f9839b70aef03ab971ae5876982773fc2a1", default-features = false }
edgezero-core = { git = "https://github.com/stackpop/edgezero", rev = "38198f9839b70aef03ab971ae5876982773fc2a1", default-features = false }
error-stack = "0.6"
fastly = "0.11.12"
fern = "0.7.1"
Expand All @@ -83,7 +83,7 @@ sha2 = "0.10.9"
subtle = "2.6"
temp-env = "0.3.6"
tokio = { version = "1.49", features = ["sync", "macros", "io-util", "rt", "time"] }
toml = "1.0"
toml = "1.1"
trusted-server-core = { path = "crates/trusted-server-core" }
url = "2.5.8"
urlencoding = "2.1"
Expand Down
12 changes: 6 additions & 6 deletions crates/integration-tests/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Viceroy local server configuration template for integration tests —
# EdgeZero entry-point variant.
#
# Identical to `viceroy-template.toml` but adds the `trusted_server_config`
# config store with `edgezero_enabled = "true"`, so the same WASM binary routes
# requests through the EdgeZero entry point instead of the legacy path. Used by
# the `integration-tests-edgezero` CI job (via `VICEROY_CONFIG_PATH`) to exercise
# Fastly request conversion, config-store dispatch, and end-to-end EC wiring on
# the EdgeZero path. Keep the shared stores in sync with `viceroy-template.toml`.
#
# This configures the Viceroy runtime itself (backends, KV stores, etc.),
# separate from the application config (trusted-server.toml).

[local_server]

[local_server.backends]

[local_server.kv_stores]
# These inline placeholders satisfy Viceroy's local KV configuration
# requirements without exercising KV-backed application behavior.
[[local_server.kv_stores.counter_store]]
key = "placeholder"
data = "placeholder"

[[local_server.kv_stores.opid_store]]
key = "placeholder"
data = "placeholder"

[[local_server.kv_stores.creative_store]]
key = "placeholder"
data = "placeholder"

[[local_server.kv_stores.ec_identity_store]]
key = "placeholder"
data = "placeholder"

# Pre-seeded EC rows for KV-backed EC lifecycle tests. Each scenario
# uses a separate row so withdrawal tombstones do not leak across
# sequential scenario execution in the same Viceroy instance.
[[local_server.kv_stores.ec_identity_store]]
key = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.test01"
data = '{"v":1,"created":1700000000,"consent":{"ok":true,"updated":1700000000},"geo":{"country":"US","region":"CA"}}'

[[local_server.kv_stores.ec_identity_store]]
key = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.test02"
data = '{"v":1,"created":1700000000,"consent":{"ok":true,"updated":1700000000},"geo":{"country":"US","region":"CA"}}'

[[local_server.kv_stores.ec_identity_store]]
key = "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc.test03"
data = '{"v":1,"created":1700000000,"consent":{"ok":true,"updated":1700000000},"geo":{"country":"US","region":"CA"}}'

[[local_server.kv_stores.ec_identity_store]]
key = "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd.test04"
data = '{"v":1,"created":1700000000,"consent":{"ok":true,"updated":1700000000},"geo":{"country":"US","region":"CA"}}'

[[local_server.kv_stores.ec_identity_store]]
key = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.test05"
data = '{"v":1,"created":1700000000,"consent":{"ok":true,"updated":1700000000},"geo":{"country":"US","region":"CA"}}'

[[local_server.kv_stores.ec_partner_store]]
key = "placeholder"
data = "placeholder"

# These are generated test-only key pairs, not production credentials.
# The Ed25519 private key (data) and its matching public key (x in jwks_store below)
# exist solely for signing and verifying tokens in the integration test environment.
# They were generated specifically for testing and are safe to commit — they
# have never been used in any production or staging environment.
[local_server.secret_stores]
[[local_server.secret_stores.signing_keys]]
key = "ts-2025-10-A"
data = "NVnTYrw5xoyTJDOwoUWoPJO3A6UCCXOJJUzgGTxxx7k="

[[local_server.secret_stores.api-keys]]
key = "api_key"
data = "test-api-key"

[local_server.config_stores]
# Routes requests through the EdgeZero entry point. `is_edgezero_enabled`
# in the Fastly adapter reads this key at runtime; `"true"` (or `"1"`)
# enables EdgeZero, anything else falls back to the legacy path.
[local_server.config_stores.trusted_server_config]
format = "inline-toml"
[local_server.config_stores.trusted_server_config.contents]
edgezero_enabled = "true"

[local_server.config_stores.jwks_store]
format = "inline-toml"
[local_server.config_stores.jwks_store.contents]
ts-2025-10-A = "{\"kty\":\"OKP\",\"crv\":\"Ed25519\",\"kid\":\"ts-2025-10-A\",\"use\":\"sig\",\"x\":\"UVTi04QLrIuB7jXpVfHjUTVN5aIdcbPNr50umTtN8pw\"}"
ts-2025-10-B = "{\"kty\":\"OKP\",\"crv\":\"Ed25519\",\"kid\":\"ts-2025-10-B\",\"use\":\"sig\",\"x\":\"HVTi04QLrIuB7jXpVfHjUTVN5aIdcbPNr50umTtN8pw\"}"
current-kid = "ts-2025-10-A"
active-kids = "ts-2025-10-A,ts-2025-10-B"
12 changes: 12 additions & 0 deletions crates/integration-tests/tests/environments/fastly.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,19 @@ impl FastlyViceroy {
///
/// This contains `[local_server]` configuration (backends, KV stores,
/// secret stores) that Viceroy needs, separate from the application config.
///
/// Honors the `VICEROY_CONFIG_PATH` environment variable so a CI job can
/// point the same WASM binary at an alternative config store — e.g. the
/// EdgeZero fixture that sets `trusted_server_config.edgezero_enabled =
/// "true"` to exercise the EdgeZero entry point. Mirrors the browser
/// harness's `global-setup.ts`, which reads the same variable. Falls back to
/// the default legacy template when unset.
fn viceroy_config_path(&self) -> std::path::PathBuf {
if let Ok(path) = std::env::var("VICEROY_CONFIG_PATH") {
if !path.is_empty() {
return std::path::PathBuf::from(path);
}
}
std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.join("fixtures/configs/viceroy-template.toml")
}
Expand Down
1 change: 1 addition & 0 deletions crates/trusted-server-adapter-fastly/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@ urlencoding = { workspace = true }

[dev-dependencies]
edgezero-core = { workspace = true, features = ["test-utils"] }
trusted-server-core = { workspace = true, features = ["test-utils"] }
Loading
Loading