fabro/lib/crates/fabro-server/tests/it/api/docs.rs
Bryan Helmkamp b96647314c
docs(deployment): split into local vs self-hosted, drop Render/Fly/DO
Reframe the deployment docs around the actual product story: Fabro
runs as a server, and the only deployment question is where that
server runs (laptop vs self-hosted Docker). Drop the Render, Fly.io,
and DigitalOcean guides and their config files; keep Railway as the
managed shortcut.

- New: administration/deployment.mdx (overview, two-mode framing)
- New: administration/self-host-docker.mdx (compose-first how-to)
- Move: administration/deploy-server.mdx -> reference/server-operations.mdx
  (it was operational reference, not deploy guidance)
- Delete: deploy-render.mdx, deploy-fly-io.mdx, deploy-digital-ocean.mdx
- Delete: render.yaml, fly.toml, railway.toml, Dockerfile.deploy
- docker-compose.yaml: load .env if present so users can drive the
  stack from a single env file end-to-end
- Update internal links and the docs-test that pinned the old path
2026-05-01 09:26:35 -04:00

70 lines
2.5 KiB
Rust

use crate::helpers::read_repo_file as read_doc;
#[test]
fn active_server_docs_describe_the_unix_socket_default() {
let architecture = read_doc("docs/public/reference/architecture.mdx");
assert!(
architecture.contains("~/.fabro/fabro.sock"),
"architecture doc should mention the default Unix socket bind"
);
let api_overview = read_doc("docs/public/api-reference/overview.mdx");
assert!(
api_overview.contains("~/.fabro/fabro.sock"),
"API overview should mention the default Unix socket bind"
);
}
#[test]
fn security_doc_does_not_require_jwt_keys_for_the_current_web_flow() {
let security = read_doc("docs/public/administration/security.mdx");
assert!(
security.contains("SESSION_SECRET"),
"security doc should still mention the session secret"
);
assert!(
!security.contains("FABRO_JWT_PRIVATE_KEY"),
"security doc should not mention removed JWT key settings"
);
assert!(
!security.contains("FABRO_JWT_PUBLIC_KEY"),
"security doc should not mention removed JWT key settings"
);
}
#[test]
fn server_operations_doc_links_to_the_cli_target_section_slug() {
let server_operations = read_doc("docs/public/reference/server-operations.mdx");
assert!(
server_operations.contains("/reference/user-configuration#cli-target-section"),
"server-operations doc should link to the Mintlify slug for the [cli.target] section"
);
}
#[test]
fn changelog_marks_removed_mutual_tls_as_historical() {
let changelog = read_doc("docs/public/changelog/2026-03-03.mdx");
assert!(
changelog.contains("removed inbound mutual TLS listener support"),
"historical changelog should clarify that inbound mutual TLS is no longer supported"
);
}
#[test]
fn github_docs_describe_webhooks_as_strategy_dependent() {
let github = read_doc("docs/public/integrations/github.mdx");
assert!(
!github.contains("enables browser OAuth and webhooks"),
"GitHub integration docs should not imply app auth alone enables webhook delivery"
);
assert!(
!github.contains("| Webhooks | No | Yes |"),
"GitHub strategy matrix should describe webhook delivery as strategy-dependent"
);
let server_configuration = read_doc("docs/public/administration/server-configuration.mdx");
assert!(
!server_configuration.contains("enables the GitHub App flow, browser OAuth, and webhooks"),
"server configuration docs should not imply app auth alone enables webhook delivery"
);
}