Skip to content

Add ts dev proxy: a local MITM dev proxy serving production hostnames from staging #1794

Add ts dev proxy: a local MITM dev proxy serving production hostnames from staging

Add ts dev proxy: a local MITM dev proxy serving production hostnames from staging #1794

Workflow file for this run

name: "Run Tests"
permissions:
contents: read
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test-rust:
name: cargo test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Retrieve Rust version
id: rust-version
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Retrieve Viceroy version
id: viceroy-version
# `.tool-versions` is the single source of truth so this workflow and
# `.github/actions/setup-integration-test-env/action.yml` can't drift.
run: echo "viceroy-version=$(grep '^viceroy ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}
target: wasm32-wasip1
cache-shared-key: cargo-${{ runner.os }}
- name: Cache Viceroy binary
id: cache-viceroy
uses: actions/cache@v4
with:
path: ~/.cargo/bin/viceroy
key: viceroy-${{ runner.os }}-v${{ steps.viceroy-version.outputs.viceroy-version }}
- name: Install Viceroy
if: steps.cache-viceroy.outputs.cache-hit != 'true'
run: cargo install viceroy --version "${{ steps.viceroy-version.outputs.viceroy-version }}" --locked --force
- name: Run tests
run: cargo test --workspace
- name: Verify Fastly WASM release build
env:
TRUSTED_SERVER__PUBLISHER__ORIGIN_URL: http://127.0.0.1:8080
TRUSTED_SERVER__PUBLISHER__PROXY_SECRET: integration-test-proxy-secret
TRUSTED_SERVER__EC__PASSPHRASE: integration-test-ec-secret-padded-32
TRUSTED_SERVER__PROXY__CERTIFICATE_CHECK: "false"
run: cargo build --package trusted-server-adapter-fastly --release --target wasm32-wasip1
test-cli:
# The native `trusted-server-cli` (`ts dev proxy`) crate is excluded from the
# workspace (the workspace default target is wasm32-wasip1), so the workspace
# fmt/clippy/test jobs do not cover it. It is a macOS tool (Safari/keychain/
# networksetup), so validate it on macOS with an explicit native --target
# (the repo's .cargo/config.toml otherwise forces wasm32-wasip1).
name: cargo test (dev-proxy CLI, native)
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Retrieve Rust version
id: rust-version
run: echo "rust-version=$(grep '^rust ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Set up Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ steps.rust-version.outputs.rust-version }}
components: "clippy, rustfmt"
cache-shared-key: cargo-cli-${{ runner.os }}
- name: cargo fmt (check)
run: cargo fmt --manifest-path crates/trusted-server-cli/Cargo.toml --check
- name: cargo clippy
run: |
cargo clippy --manifest-path crates/trusted-server-cli/Cargo.toml --target "$(rustc -vV | sed -n 's/host: //p')" --all-targets -- -D warnings
- name: cargo test
run: |
cargo test --manifest-path crates/trusted-server-cli/Cargo.toml --target "$(rustc -vV | sed -n 's/host: //p')"
test-typescript:
name: vitest
runs-on: ubuntu-latest
defaults:
run:
working-directory: crates/trusted-server-js/lib
steps:
- uses: actions/checkout@v4
- name: Retrieve Node.js version
id: node-version
working-directory: .
run: echo "node-version=$(grep '^nodejs ' .tool-versions | awk '{print $2}')" >> $GITHUB_OUTPUT
shell: bash
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ steps.node-version.outputs.node-version }}
cache: "npm"
cache-dependency-path: crates/trusted-server-js/lib/package.json
- name: Install dependencies
run: npm ci
- name: Build bundle
run: npm run build
- name: Run unit tests
run: npm test -- --run