Skip to content

feat(transfer): AWS Transfer Family service (71 ops, awsJson1.1, 100% conformance)#2129

Merged
vieiralucas merged 1 commit into
mainfrom
worktree-transfer
Jul 4, 2026
Merged

feat(transfer): AWS Transfer Family service (71 ops, awsJson1.1, 100% conformance)#2129
vieiralucas merged 1 commit into
mainfrom
worktree-transfer

Conversation

@vieiralucas

@vieiralucas vieiralucas commented Jul 4, 2026

Copy link
Copy Markdown
Member

Summary

New fakecloud-transfer crate implementing the full AWS Transfer Family control plane — all 71 operations, awsJson1.1 (X-Amz-Target: TransferService.*), sigv4 transfer. Real handlers, no stubs, no skipped ops.

Covers servers (+ Start/Stop lifecycle), users, SSH public keys, host keys, accesses, workflows (+ executions, SendWorkflowStepState), agreements, connectors (+ TestConnection, file-transfer ops, ListFileTransferResults), profiles, certificates, web apps (+ customization), security policies (real AWS managed-policy catalogue), TestIdentityProvider, and tagging. Create/import -> describe/list reflects -> update mutates -> delete removes; Start/StopServer settle State synchronously; DescribeServer reports live UserCount. AWS-shaped IDs (s-/w-/c-/a-/p-/cert-/hostkey-/webapp-) and ARNs.

Errors: ResourceNotFoundException / InvalidRequestException / ResourceExistsException, matching the model. Model-derived input validation (validate.rs) for enum/length/range constraints.

Conformance

cargo run -p fakecloud-conformance -- run --services transfer -> 71/71 ops, 2756/2756 variants, 100%. Audit passes (all implemented actions have conformance tests). Baseline updated surgically; scripts/check-doc-counts.sh green (60->61 services, 4625->4696 ops).

Surface synced (same PR)

Protocol routing (protocol.rs + service_detection.rs), server registration + persistence (snapshot save/load/restore), workspace member + version-pinned workspace dep, release.yml publish list, audit.rs map, operations index, aws-models/transfer.json + service-map, website services/transfer.md, and the evergreen count sweep (READMEs, supported-services, AGENTS, llms.txt). tfacc: transfer shard (^TestAccTransfer(Server|User|SSHKey|Access)_basic$) + AWS_ENDPOINT_URL_TRANSFER.

SDKs: no change (Transfer is a normal AWS service with no new /_fakecloud/* introspection endpoint — checked conclusion).

Test plan

  • 11 e2e CRUD/lifecycle/error tests + 3 persistence round-trip tests, all pass.
  • cargo clippy --workspace --all-targets -- -D warnings clean; cargo build --bin fakecloud + --workspace succeed.

Summary by cubic

Add fakecloud-transfer: full AWS Transfer Family control plane (transfer, awsJson1.1) with real, persisted state and 100% conformance. This raises coverage to 61 services and 4,696 operations.

  • New Features
    • 71 operation handlers: servers (Start/Stop settle), users, SSH/host keys, accesses, workflows/executions, agreements, connectors, profiles, certificates, web apps, security policies, TestIdentityProvider, tagging.
    • Real CRUD with AWS-shaped IDs/ARNs; account-partitioned state with snapshot save/load.
    • Model-derived input validation; precise errors: InvalidRequestException, ResourceNotFoundException, ResourceExistsException.
    • Connector actions: TestConnection, StartFileTransfer/DirectoryListing/RemoteDelete/Move, ListFileTransferResults.
    • Protocol routing for TransferService, server registration, and release publishing wired.
    • Conformance: 71/71 ops, 2,756/2,756 variants; baseline and audit updated.
    • Terraform: new shard and AWS_ENDPOINT_URL_TRANSFER.
    • Docs and indices updated; new service page.

Written for commit d08058d. Summary will update on new commits.

Review in cubic

… conformance)

New fakecloud-transfer crate implementing the full 71-operation AWS Transfer
Family control plane (awsJson1.1, target prefix TransferService): SFTP/FTPS/FTP/
AS2 servers with synchronous ONLINE/OFFLINE state transitions, users + SSH
public keys, host keys, service-managed accesses, workflows + executions, AS2
agreements, connectors (SFTP + AS2, with TestConnection, StartFileTransfer,
StartDirectoryListing, StartRemoteDelete/Move, ListFileTransferResults),
profiles, certificates, the managed security-policy catalogue, web apps (+
customization), TestIdentityProvider, and tagging.

- Real CRUD: create/import is reflected by describe/list, update mutates,
  delete removes; nested config round-trips verbatim. AWS-shaped IDs and ARNs.
- Model-derived input validation (string @Length, integer @range, enum sets)
  returning InvalidRequestException; ResourceNotFoundException for missing
  parents/resources; ResourceExistsException on duplicates.
- Account-partitioned state with snapshot persistence + restore.
- Protocol routing wired in core::protocol and conformance service_detection.
- Registered in the server, workspace members + version-pinned workspace dep,
  release.yml publish list, conformance audit map, and tfacc allowlist/shard/
  endpoint env (TestAccTransfer(Server|User|SSHKey|Access)_basic).
- Conformance: 71/71 ops, 2756/2756 Smithy probe variants pass; baseline +
  doc-counts (parity, operations index, service lists) updated.
- Tests: 11 e2e CRUD/lifecycle/error tests + persistence round-trip.
@vieiralucas vieiralucas requested a review from Copilot July 4, 2026 04:17
@vieiralucas vieiralucas merged commit 971ea29 into main Jul 4, 2026
122 checks passed
@vieiralucas vieiralucas deleted the worktree-transfer branch July 4, 2026 04:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Adds a new AWS Transfer Family control-plane implementation to FakeCloud, wiring it into protocol detection, persistence, conformance, Terraform acceptance CI, and public docs so Transfer becomes a first-class, conformance-tested service in the emulator.

Changes:

  • Introduce fakecloud-transfer crate implementing Transfer (awsJson1.1, TransferService.*) with persisted, account-partitioned state plus model-derived input validation.
  • Register Transfer in the server, protocol routing, conformance probe/audit/baseline, and tfacc allowlist/sharding.
  • Update website/docs/readme/service indices and global service/operation/conformance counts to include Transfer.

Reviewed changes

Copilot reviewed 47 out of 49 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
website/templates/index.html Updates homepage proof points for service/operation/variant totals
website/static/llms.txt Updates LLM-facing summary counts and variant totals
website/static/llms-full.txt Updates detailed LLM-facing coverage/persistence counts
website/content/vs/sam-local.md Updates comparison page metadata and conformance variant totals
website/content/vs/moto.md Updates comparison table conformance variant totals
website/content/vs/ministack.md Updates comparison copy and conformance variant totals
website/content/vs/localstack.md Updates comparison table conformance variant totals
website/content/vs/floci.md Updates comparison copy and conformance variant totals
website/content/vs/elasticmq.md Updates comparison copy service count
website/content/supported-services.md Updates supported-services page counts and adds Transfer entry
website/content/localstack-alternative.md Updates alternative landing page counts and variant totals
website/content/glossary.md Updates glossary conformance variant total
website/content/faq.md Updates FAQ counts and embedded JSON-LD answer text
website/content/fake-bedrock.md Updates landing page conformance variant total
website/content/fake-aws-server.md Updates landing page counts/variant totals
website/content/dynamodb-emulator.md Updates DynamoDB page conformance variant total
website/content/docs/services/transfer.md Adds new Transfer Family service documentation page
website/content/docs/services/_index.md Updates services index intro and adds Transfer row
website/content/docs/parity.md Updates parity matrix totals and adds Transfer row
website/content/docs/operations/_index.md Adds Transfer operation list section
website/content/docs/migration-from-localstack.md Updates migration guide operation count
website/content/docs/about/what-it-is.md Updates “what it is” counts/variant totals
website/content/docs/about/conformance.md Updates conformance coverage counts/variant totals
scripts/update-aws-models.sh Adds Transfer to model update script service list
scripts/generate-operations-index.sh Adds Transfer to operations index generator
README.md Updates repo-level counts and adds Transfer to supported services tables
crates/fakecloud-transfer/tests/service_tests.rs Adds end-to-end handler-driven CRUD/lifecycle/error tests for Transfer
crates/fakecloud-transfer/src/validate.rs Adds model-derived top-level input validation rules for Transfer ops
crates/fakecloud-transfer/src/state.rs Adds serializable, account-partitioned Transfer state model
crates/fakecloud-transfer/src/service.rs Implements Transfer dispatch and the 71 operation handlers
crates/fakecloud-transfer/src/persistence.rs Implements snapshot save/load for Transfer state
crates/fakecloud-transfer/src/lib.rs Exposes Transfer service/state/persistence modules
crates/fakecloud-transfer/Cargo.toml Adds new crate manifest and dependencies
crates/fakecloud-tfacc/tests/acc.rs Adds Transfer shard test entrypoint
crates/fakecloud-tfacc/src/lib.rs Adds Transfer endpoint env var mapping
crates/fakecloud-tfacc/src/allowlist.rs Adds Transfer service allowlist entry + CI shard definition
crates/fakecloud-server/src/main.rs Wires Transfer state init, snapshot load, and service registration
crates/fakecloud-server/Cargo.toml Adds fakecloud-transfer dependency to server
crates/fakecloud-core/src/protocol.rs Adds TransferService X-Amz-Target prefix -> transfer routing
crates/fakecloud-conformance/tests/transfer.rs Adds Transfer conformance probe test_action list
crates/fakecloud-conformance/src/probe/service_detection.rs Adds Transfer protocol detection metadata
crates/fakecloud-conformance/src/audit.rs Adds Transfer -> source file mapping for conformance audit
conformance-baseline.json Updates global/per-service conformance variant baseline to include Transfer
Cargo.toml Adds workspace member and workspace dependency entry for fakecloud-transfer
Cargo.lock Adds lock entries for the new crate
aws-models/service-map.json Adds Transfer model mapping
AGENTS.md Updates repo-level service/ops/variant totals
.github/workflows/release.yml Adds fakecloud-transfer to release publish list

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

<div class="label">Tested</div>
<h3>Conformance tested</h3>
<p>True 100% conformance across all 3,932 implemented API operations: 152,159/152,159 Smithy-model-generated test variants pass on every commit, backed by end-to-end tests against the official AWS SDKs.</p>
<p>True 100% conformance across all 3,932 implemented API operations: 154,915/154,915 Smithy-model-generated test variants pass on every commit, backed by end-to-end tests against the official AWS SDKs.</p>
+++

fakecloud implements 60 AWS services with 3,966 total operations. 152,159/152,159 generated Smithy conformance variants pass on every commit — true 100% across the board. Per-service feature matrices and gotchas live on individual service pages — use the sidebar to navigate.
fakecloud implements 61 AWS services with 3,966 total operations. 154,915/154,915 generated Smithy conformance variants pass on every commit — true 100% across the board. Per-service feature matrices and gotchas live on individual service pages — use the sidebar to navigate.
Comment on lines 9 to 13
## Coverage Summary
- **Total Services**: 54
- **Total Operations**: 4,220
- **Conformance Engine**: 152,159 Smithy-based test variants
- **Conformance Engine**: 154,915 Smithy-based test variants
- **Startup Time**: ~300ms
AWS SAM Local is AWS's official tool for running Lambda functions locally. It invokes Lambda inside a Docker container with the real AWS runtime image, and provides a limited HTTP / API Gateway surface in front.

fakecloud runs Lambda the same way — real runtime containers, 23 runtimes supported — and also runs 46 other AWS services end-to-end at true 100% Smithy conformance (152,159/152,159 variants pass).
fakecloud runs Lambda the same way — real runtime containers, 23 runtimes supported — and also runs 46 other AWS services end-to-end at true 100% Smithy conformance (154,915/154,915 variants pass).
Comment on lines +148 to +153
/// Read/test operations never mutate state. Everything else (Create, Import,
/// Update, Delete, Start, Stop, Send, Tag, Untag) can, so it triggers a
/// snapshot save on success.
fn is_mutating(action: &str) -> bool {
!(action.starts_with("Describe") || action.starts_with("List") || action.starts_with("Test"))
}
Comment on lines +514 to +521
if let Some(arn) = srv.get("Arn").and_then(Value::as_str) {
data.tags.remove(arn);
}
let prefix = format!("{server_id}/");
data.users.retain(|k, _| !k.starts_with(&prefix));
data.accesses.retain(|k, _| !k.starts_with(&prefix));
data.host_keys.retain(|k, _| !k.starts_with(&prefix));
data.agreements.retain(|k, _| !k.starts_with(&prefix));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants