From d4619ec5bafaa06ae31416996b1f5e4e2b987260 Mon Sep 17 00:00:00 2001 From: wt Date: Fri, 30 Oct 2026 13:42:19 +0700 Subject: [PATCH 1/5] ci: derive registry host, owner and user for Docker publish Login failed with "Username required" because REGISTRY_OWNER was not set. Default the registry host to this Gitea instance, the owner to the repository owner and the user to the tag pusher, lowercase the image name, and keep a failed GHA cache export from failing the build. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/docker-publish.yml | 33 ++++++++++++++++++---------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index c36a230..cc97eeb 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -5,11 +5,11 @@ name: Docker publish # Configure the repository by adding these secrets / variables: # Secrets: # REGISTRY_TOKEN - Gitea PAT with `write:package` (and `read:repository`) scope. -# Variables (Settings -> Actions): -# REGISTRY_HOST - the Gitea registry host, e.g. gitea.com (default below) -# REGISTRY_OWNER - owner/namespace of the repo, e.g. your-username or your-org -# REGISTRY_REPO - repository name, e.g. balance-server -# REGISTRY_USER - the username owning the token if it differs from REGISTRY_OWNER. +# Optional variables (Settings -> Actions); defaults come from the repository: +# REGISTRY_HOST - the Gitea registry host (default: host of this Gitea instance) +# REGISTRY_OWNER - owner/namespace of the image (default: repository owner) +# REGISTRY_REPO - image name (default: repository name) +# REGISTRY_USER - the username owning the token (default: user who pushed the tag) # # NOTE: variable/secret names must NOT start with GITEA_ or GITHUB_. @@ -20,10 +20,10 @@ on: - "v*" env: - REGISTRY_HOST: ${{ vars.REGISTRY_HOST || 'gitea.com' }} - REGISTRY_OWNER: ${{ vars.REGISTRY_OWNER }} + REGISTRY_HOST: ${{ vars.REGISTRY_HOST }} + REGISTRY_OWNER: ${{ vars.REGISTRY_OWNER || github.repository_owner }} REGISTRY_REPO: ${{ vars.REGISTRY_REPO || github.event.repository.name }} - REGISTRY_USER: ${{ vars.REGISTRY_USER || vars.REGISTRY_OWNER }} + REGISTRY_USER: ${{ vars.REGISTRY_USER || github.actor }} jobs: publish: @@ -40,10 +40,19 @@ jobs: id: meta env: VERSION: ${{ github.ref_name }} + SERVER_URL: ${{ github.server_url }} run: | # Keep only semver body so "v1.2.3" -> "1.2.3". tag="${VERSION#v}" echo "version_tagname=$tag" >> "$GITHUB_OUTPUT" + # The Gitea registry lives on the same host as the instance itself. + host="${REGISTRY_HOST:-${SERVER_URL#*://}}" + host="${host%%/*}" + echo "host=$host" >> "$GITHUB_OUTPUT" + # Image references must be lowercase ("BalanceServer" -> "balanceserver"). + image="$host/${REGISTRY_OWNER,,}/${REGISTRY_REPO,,}" + echo "image=$image" >> "$GITHUB_OUTPUT" + echo "Publishing $image:$tag as $REGISTRY_USER" - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -51,7 +60,7 @@ jobs: - name: Log in to Gitea Container Registry uses: docker/login-action@v3 with: - registry: ${{ env.REGISTRY_HOST }} + registry: ${{ steps.meta.outputs.host }} username: ${{ env.REGISTRY_USER }} password: ${{ secrets.REGISTRY_TOKEN }} @@ -61,7 +70,7 @@ jobs: context: . push: true tags: | - ${{ env.REGISTRY_HOST }}/${{ env.REGISTRY_OWNER }}/${{ env.REGISTRY_REPO }}:${{ steps.meta.outputs.version_tagname }} - ${{ env.REGISTRY_HOST }}/${{ env.REGISTRY_OWNER }}/${{ env.REGISTRY_REPO }}:latest + ${{ steps.meta.outputs.image }}:${{ steps.meta.outputs.version_tagname }} + ${{ steps.meta.outputs.image }}:latest cache-from: type=gha - cache-to: type=gha,mode=max + cache-to: type=gha,mode=max,ignore-error=true From 7bdf7b79d31d8d8b27d74c6211630a65536cc15d Mon Sep 17 00:00:00 2001 From: wt Date: Fri, 30 Oct 2026 13:50:29 +0700 Subject: [PATCH 2/5] ci: pull Docker Hub base images through a mirror in Docker publish BuildKit's docker-container driver ignores the host daemon's registry-mirrors, and the runner timed out reaching auth.docker.io. Configure a docker.io mirror (DOCKERHUB_MIRROR, default mirror.gcr.io). Co-Authored-By: Claude Opus 5.5 --- .github/workflows/docker-publish.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index cc97eeb..354181e 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -10,6 +10,7 @@ name: Docker publish # REGISTRY_OWNER - owner/namespace of the image (default: repository owner) # REGISTRY_REPO - image name (default: repository name) # REGISTRY_USER - the username owning the token (default: user who pushed the tag) +# DOCKERHUB_MIRROR - Docker Hub mirror for base images (default: mirror.gcr.io) # # NOTE: variable/secret names must NOT start with GITEA_ or GITHUB_. @@ -56,6 +57,12 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + with: + # BuildKit runs in its own container and ignores the host daemon's + # registry-mirrors, so Docker Hub base images go through a mirror here. + buildkitd-config-inline: | + [registry."docker.io"] + mirrors = ["${{ vars.DOCKERHUB_MIRROR || 'mirror.gcr.io' }}"] - name: Log in to Gitea Container Registry uses: docker/login-action@v3 From ae49c8f8c3edc0d9a33212a0fdeb608a4a0e2b71 Mon Sep 17 00:00:00 2001 From: wt Date: Fri, 30 Oct 2026 14:27:42 +0700 Subject: [PATCH 3/5] build: publish multi-platform image (amd64, arm64, arm/v7) The builder stage runs on the build platform and cross-compiles Rust, with GCC cross compilers for bundled SQLite, so only the small runtime stage runs under QEMU. The workflow sets up QEMU via the Docker Hub mirror and pushes all three platforms under the same tags. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/docker-publish.yml | 8 ++++++++ Dockerfile | 29 +++++++++++++++++++++++++--- docs/DEPLOYMENT.md | 7 +++++++ 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 354181e..546016a 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -55,6 +55,13 @@ jobs: echo "image=$image" >> "$GITHUB_OUTPUT" echo "Publishing $image:$tag as $REGISTRY_USER" + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + # Only the runtime stage runs emulated; Rust is cross-compiled natively. + image: ${{ vars.DOCKERHUB_MIRROR || 'mirror.gcr.io' }}/tonistiigi/binfmt:latest + platforms: arm64,arm + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 with: @@ -75,6 +82,7 @@ jobs: uses: docker/build-push-action@v6 with: context: . + platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true tags: | ${{ steps.meta.outputs.image }}:${{ steps.meta.outputs.version_tagname }} diff --git a/Dockerfile b/Dockerfile index df8f1dd..707f217 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,16 +1,39 @@ -FROM rust:1.90-bookworm AS build +# Rust always runs natively on the build machine and cross-compiles for the +# image platform; only the small runtime stage executes under emulation. +FROM --platform=$BUILDPLATFORM rust:1.90-bookworm AS build +ARG TARGETPLATFORM +# Bundled SQLite is C, so a cross target also needs a C cross compiler and +# bookworm's glibc for that architecture (matching the runtime image). +RUN set -eu; \ + case "$TARGETPLATFORM" in \ + linux/amd64) target=x86_64-unknown-linux-gnu; gnu=x86_64-linux-gnu; arch=amd64 ;; \ + linux/arm64) target=aarch64-unknown-linux-gnu; gnu=aarch64-linux-gnu; arch=arm64 ;; \ + linux/arm/v7) target=armv7-unknown-linux-gnueabihf; gnu=arm-linux-gnueabihf; arch=armhf ;; \ + *) echo "Unsupported platform: $TARGETPLATFORM" >&2; exit 1 ;; \ + esac; \ + echo "export RUST_TARGET=$target" > /cross.env; \ + if [ "$target" != "$(rustc -vV | sed -n 's/^host: //p')" ]; then \ + apt-get update; \ + apt-get install -y --no-install-recommends "gcc-$(echo "$gnu" | tr _ -)" "libc6-dev-$arch-cross"; \ + rm -rf /var/lib/apt/lists/*; \ + rustup target add "$target"; \ + env=$(echo "$target" | tr a-z- A-Z_); \ + echo "export CARGO_TARGET_${env}_LINKER=$gnu-gcc CC_$(echo "$target" | tr - _)=$gnu-gcc AR_$(echo "$target" | tr - _)=$gnu-ar" >> /cross.env; \ + fi WORKDIR /src COPY Cargo.toml Cargo.lock ./ COPY src ./src COPY internal/httpapi/web ./internal/httpapi/web -RUN cargo build --locked --release +RUN . /cross.env \ + && cargo build --locked --release --target "$RUST_TARGET" \ + && cp "target/$RUST_TARGET/release/balance-server" /balance-server FROM debian:bookworm-slim # Keep the original Alpine image's numeric identity so existing volumes remain writable. RUN groupadd --system --gid 101 balance \ && useradd --system --uid 100 --gid balance --home-dir /nonexistent --no-log-init balance \ && mkdir /data && chown balance:balance /data -COPY --from=build /src/target/release/balance-server /usr/local/bin/balance-server +COPY --from=build /balance-server /usr/local/bin/balance-server USER balance ENV BALANCE_ADDR=:8080 BALANCE_DB_PATH=/data/balance.db EXPOSE 8080 diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md index 7ad387f..17053cc 100644 --- a/docs/DEPLOYMENT.md +++ b/docs/DEPLOYMENT.md @@ -14,6 +14,13 @@ are compiled at image build time. The numeric identity remains UID 100 / GID 101, matching the original Alpine Go image, so existing volume permissions are preserved across the switch. +The image is multi-platform: `linux/amd64`, `linux/arm64` and `linux/arm/v7` +(armhf) are published under the same tag, and `docker pull` selects the matching +one. The builder stage runs on the build machine's platform and cross-compiles +Rust (with GCC cross compilers for bundled SQLite), so only the runtime stage +needs QEMU. Build all platforms locally with a `docker-container` buildx builder: +`docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 .` + `docker compose up -d --build` publishes **http://localhost:8123** (host 8123, container 8080). `GET /health` is the liveness endpoint. Direct binary execution uses `:8080` by default. Place a TLS reverse proxy in front of the published port From 16dd2a3b3c22d1e2fbce72508cb64ceffe36bc13 Mon Sep 17 00:00:00 2001 From: wt Date: Fri, 30 Oct 2026 14:48:13 +0700 Subject: [PATCH 4/5] docs: add repository cover and avatar images Add a 1280x640 cover shown at the top of the README, a square variant and a text-free repository avatar that stays legible at small sizes. SVG sources are kept next to the rendered PNGs. Co-Authored-By: Claude Opus 5.5 --- README.md | 2 + docs/avatar.png | Bin 0 -> 28779 bytes docs/avatar.svg | 34 +++++++++++++++++ docs/cover-square.png | Bin 0 -> 194609 bytes docs/cover-square.svg | 82 +++++++++++++++++++++++++++++++++++++++ docs/cover.png | Bin 0 -> 162028 bytes docs/cover.svg | 87 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 205 insertions(+) create mode 100644 docs/avatar.png create mode 100644 docs/avatar.svg create mode 100644 docs/cover-square.png create mode 100644 docs/cover-square.svg create mode 100644 docs/cover.png create mode 100644 docs/cover.svg diff --git a/README.md b/README.md index 7df5762..9dc04b8 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Balance Server +![Balance Server — self-hosted sync and accounts for Balance](docs/cover.png) + Self-hosted synchronization, account and web server for the Balance iOS, macOS, watchOS and Android applications. It is a single Rust process with a bundled SQLite engine and a complete browser client, and runs on Linux, Windows and macOS. ## Quick start with Docker diff --git a/docs/avatar.png b/docs/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..573179a3441b242ecdb80870120482e3460d1bcf GIT binary patch literal 28779 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�?`A}8I*_<+y&3R2$4^97ROj1ZFR6(80o=vy>* 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 literal 0 HcmV?d00001 diff --git a/docs/avatar.svg b/docs/avatar.svg new file mode 100644 index 0000000..8c6d559 --- /dev/null +++ b/docs/avatar.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/cover-square.png b/docs/cover-square.png new file mode 100644 index 0000000000000000000000000000000000000000..d57bb5c25641c0920dfa1982823975f732e3b745 GIT binary patch literal 194609 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + iOS + macOS + Android + Web + + + + + + + + + + + + + + + Balance Server + Self-hosted sync & accounts for Balance + + + + + + Rust + + + + SQLite + + + + Docker + + + + PWA + + + diff --git a/docs/cover.png b/docs/cover.png new file mode 100644 index 0000000000000000000000000000000000000000..801e22a5b1b97bf320836242e4b999fb6fe72046 GIT binary patch literal 162028 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

AH-X%JmV&~FYvz~?GEGvF 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%0DiMc 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

U;u8wuLjynI8y* zHZzr~Rn_>|p%E2`hLyLbSPTb*biA~fGMUrP;_}cnRr6$$G=YEM-!rf-Z`)$;TQi@q z&2O8pSf3)!(w%44aK>#Rfw<$;cyLyo7%SZk*~2uKEaQt++Rj!+-5iqO3O(xU{z(kr zA2=Wfp=WrdKXu`>w0tkgLg8TLEbcm^?R9TlN%vspvkxmj5-gpEZ zQQg4#ZCo=FaR|yf);tf7el(78ZPFPQ(LDH6#`K5CN`7xrA$T~ojOkmCE}aGyv!SbH zYhuOM0;M0wnAr5`ZrLmGHtAd%Ib-GtXe~ypIl|8~u>a-$LcH|Xx-eqZ!XYvvGz#|5 z#elKwud5i~^sgKnDl9$SsJ|qqd8qsPh+cjFQu(c(dn_O}3u}aM^`}Jvnl7EmN2!xZ z7!Cw9_t2E)IsZ;B&*0EXSYgOF^Q8guUqZWJI&zv47XZxkx<2;J`>lAsl4HbN{F)mC z%-@sVmCfo?!WpCaUC(Q#XJCI`2Oe?Xf?28DYSbV6OpIwv4sk2Q1Ya_LDCw}rIcwV) z!9k{!uCR~8*!M__@cu0|^z3cha03DgE|83;;WvPfZ2tiCKw!`m#|4YL_nDNhkMFaB zB)VCrGl1()4d}tc@y1BPxmrk#yU2XyQwDy?8dW=D*hc%-u+H1I*1dw@O(-kaOj4gW zZr{k?^e#9cFAaXJf}(6(JJv78A2o?nlPB_k5-^o{#lDa_dFLEyq%6 z#!6g{HQt-OP_f+=DDYpYn*`m zOTR0(%<~*#cr@*qbv`&qeW01)e+=k5t1JGYEb*XWfs3a6GL)&eL;09?Rpmldd01|O z{4pAyA1~My!sDlSAH1P>JL8zc$ccZyV>2kK`_(}xMm}(z1O$;`xRr++9n#{&{N#t1 zNc8@C(R}?*MxkA*PoDrC0+`ts=xi)$@bHs@QC&7zH0rbaTv=bI)bnlOXP0%=bMv4I ztETI#!INI^VB?M$tGi+{s$cmc3%OQJypiMxA8uyRFIF|FkA z>_@$6(b!6wsRL9tvx>vy{Z$WR8h?e6)NjHD=AUmMt}~^&E*%}#6ci$zLxe`U#$8njzzepR^8tY zN-U{z#RFd?$~CG)W%dOVczc)Jt~&|qekrTcg^o9CRSnDz>h zc#KTJLA2(+kx=?b+l7bfUa5%hHRNq$<|lO(Znj4oHuOWBi5QTQY^KWf9KO?QVQNH{ z^w47afAS*gL<2NscsB?beY?se$zx8g zn*~?`^vt1XxEN}WWWuKH>8+Y$6fw+@uZeECTb!!j#Ye8u{cZAwoaVBy0Vq_jG1;(C zXrwQXI^cbb#;t^l3XMQ96`2<})q8xh_mi5w8`JA^Y5~gWdPwYk3_6Gj8@B@VJS3ee z(O}a54;-pLBm=*6fL-#<(G`d@X*IK85aR+pQ@dx$J?vkJV5ZR+xh2aFEuNSTZR3!3 zq3+P#n{+Y09Llb>^q$p5#do~s8wCYw&pOnMYu()T2YqaloeT6IOP_?XIsg;{f&7`8 zORGrB>a5&ZKlR*zo(V31q$70`Lo?6x+ax_-+t^lT~bRzVpZGZ1H8!31%VDr zuOaiAnSo#b+vFbDbeUM)2w>RN#1^Z$!rS_u$h%TNzB(H5rnGyeW%hY3X-p zT+Y-N258GJVTUOI zlRQEAzi>ruTsg__X!Fb%eUQPoHf52rxw)6#os#N|4;!C&=eBlrH-u!(t2DU=8yQWa z*XR%>c7@;d(y_bEpZ!y(DA&!+e$XfU3kzla6dSFlw2IM#2j7Cobn=5`N+TzG@6qav zdee(M9_J=|H8Kp*HEAL>bh^K69qq-$h^3*sCPAb+sxeIY|A}Mld8R4 z#*P`sg^QZ39l_5WA^!EY$>Y(?wu_-J3<*ers8p6C*O>X7x>%eYY)r!cqTI2IcXgRI z7C(eZt@|f#pc%*Z>mnkZ6)7~DmPhlXs(7tBWXpCco?W$B3i{d%tq}}$Ti~!_J8*09 z)W-Yts3$tV^+rhkCuMZ?XKbItACT_E;j%L15Gm^4Vpg&|d7jN;%u-^I0*UQ~%mqOO ze)i?xk$C4VF$?>=Mn{iQ`M&&THfOAPPpLLG$a#KY`k#K>$LsS(k~~rTgRcO79`q^) zLZ^@Ub+GZQZruyQp!zRU^>AM`fS$c~tEFs6)vZ0ev;aa)c}Ijz^_24lu1TGE4rSc@ zG7h+43i2=aceL*vKIRuBljbZtw5JZ_M9*E~Y->Ts;n)t_-s($Zr-nVtpJ zYkjSH6HRI6HDlO#Pj8WpcD<#Kq||06UM1Af)O&_({S%4z>`5f=0>FEckUvoxn>LIf zzZa3+ozdNsGfwT{0qPh9FzNJ@kVBQ!np;*7!9eB4X5Gv^(iCcU#o4tr{}*$WmXHI0 zRKS=V6s5$wNUyI?ku7uXrXodG-#KSf3v`Nda@@Ou51~qxzw7q_lhAX2_fY$x;L#1Z zG(2FD&6{tc;80A?x^vldhbJL&5gxf$squq8^?#yo*+dc$<@?Cwk+o=G@{p3_V8v~Sotx4^yp~bxmB$Wi~K(=$XjIq literal 0 HcmV?d00001 diff --git a/docs/cover.svg b/docs/cover.svg new file mode 100644 index 0000000..743b77b --- /dev/null +++ b/docs/cover.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + iOS + macOS + Android + Web + + + + + + + + + + + + + + + Balance + Server + Self-hosted sync & accounts for Balance + + + + + + Rust + + + + SQLite + + + + Docker + + + + PWA + + + + + POST /v1/sync → 200 OK + + From 10272f3851e5ced4d87b60fb69ce5889bb125f54 Mon Sep 17 00:00:00 2001 From: wt Date: Fri, 30 Oct 2026 16:27:33 +0700 Subject: [PATCH 5/5] Remove the Go reference server; keep only Rust The Go implementation is preserved in the v1.0.0 tag. Its observable behaviour stays the API reference: responses recorded from the Go server live in tools/compatibility_expected.txt, and tools/compatibility.py now compares the Rust server against them (--update re-records after an intentional change). The Go SQLite schema is frozen in tests/fixtures/go_schema_v1.sql for the existing-database test. Move the web client from internal/httpapi/web to web/, drop the Go CI job and Go version pin, and update README, AGENTS.md and docs. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 52 +- AGENTS.md | 37 +- Dockerfile | 2 +- README.md | 26 +- cmd/balance-server/main.go | 55 -- docs/ARCHITECTURE.md | 11 +- docs/DATA_MODEL.md | 25 +- docs/DEPLOYMENT.md | 22 +- docs/DEVELOPMENT.md | 17 +- docs/avatar.svg | 2 +- docs/cover-square.svg | 2 +- docs/cover.svg | 2 +- go.mod | 21 - go.sum | 51 -- internal/auth/password.go | 61 -- internal/auth/tokens.go | 90 -- internal/config/config.go | 93 --- internal/httpapi/auth_handlers.go | 245 ------ internal/httpapi/server.go | 185 ----- internal/httpapi/server_test.go | 204 ----- internal/httpapi/sync_handler.go | 169 ---- internal/httpapi/web.go | 34 - src/database.rs | 13 +- src/server.rs | 15 +- .../fixtures/go_schema_v1.sql | 46 +- tools/compatibility.py | 79 +- tools/compatibility_expected.txt | 769 ++++++++++++++++++ {internal/httpapi/web => web}/app.js | 0 {internal/httpapi/web => web}/icon.svg | 0 {internal/httpapi/web => web}/index.html | 0 .../httpapi/web => web}/manifest.webmanifest | 0 .../httpapi/web => web}/service-worker.js | 0 {internal/httpapi/web => web}/styles.css | 0 33 files changed, 890 insertions(+), 1438 deletions(-) delete mode 100644 cmd/balance-server/main.go delete mode 100644 go.mod delete mode 100644 go.sum delete mode 100644 internal/auth/password.go delete mode 100644 internal/auth/tokens.go delete mode 100644 internal/config/config.go delete mode 100644 internal/httpapi/auth_handlers.go delete mode 100644 internal/httpapi/server.go delete mode 100644 internal/httpapi/server_test.go delete mode 100644 internal/httpapi/sync_handler.go delete mode 100644 internal/httpapi/web.go rename internal/database/database.go => tests/fixtures/go_schema_v1.sql (56%) create mode 100644 tools/compatibility_expected.txt rename {internal/httpapi/web => web}/app.js (100%) rename {internal/httpapi/web => web}/icon.svg (100%) rename {internal/httpapi/web => web}/index.html (100%) rename {internal/httpapi/web => web}/manifest.webmanifest (100%) rename {internal/httpapi/web => web}/service-worker.js (100%) rename {internal/httpapi/web => web}/styles.css (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f7988f..e5694b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,10 +9,6 @@ env: CARGO_TERM_COLOR: always # Pin the toolchain to the declared MSRV so CI matches production. RUST_TOOLCHAIN: 1.90.0 - # The differential check compares Rust against net/http behaviour, which - # changes between Go releases (e.g. ServeMux redirects 301 -> 307), so the - # reference must be built with the same Go the Rust port mirrors. - GO_VERSION: "1.27.3" jobs: rust: @@ -58,39 +54,10 @@ jobs: path: target/release/balance-server if-no-files-found: error - go: - name: Go (test / vet / build) - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GO_VERSION }} - - - name: Cache Go modules - uses: actions/cache@v4 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - - name: Test - run: go test ./... - - - name: Vet - run: go vet ./... - - - name: Build - run: go build ./... - compatibility: - name: Go ↔ Rust differential + SQLite takeover + name: HTTP/JSON reference + SQLite persistence runs-on: ubuntu-latest - needs: [rust, go] + needs: [rust] steps: - name: Checkout uses: actions/checkout@v4 @@ -100,11 +67,6 @@ jobs: with: toolchain: ${{ env.RUST_TOOLCHAIN }} - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: ${{ env.GO_VERSION }} - - name: Install Python uses: actions/setup-python@v5 with: @@ -121,10 +83,8 @@ jobs: restore-keys: | ${{ runner.os }}-cargo- - - name: Build Rust (debug) and Go reference - run: | - cargo build --locked - go build -o target/integration/go-server ./cmd/balance-server + - name: Build Rust (debug) + run: cargo build --locked - - name: Run differential compatibility scenarios - run: python3 tools/compatibility.py --rust-binary target/debug/balance-server + - name: Compare against the recorded Go reference + run: python3 tools/compatibility.py --binary target/debug/balance-server diff --git a/AGENTS.md b/AGENTS.md index 10f627d..17def6b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -8,28 +8,14 @@ ## Быстрая карта проекта -Production-сервер написан на Rust 1.90+. Go 1.25.0+ сохранён как -эталон совместимости API/SQLite и вариант отката. +Сервер написан на Rust 1.90+. Исходная Go-реализация удалена после v1.0.0 +(её исходники остались в теге `v1.0.0`), но её поведение остаётся эталоном API: +ответы Go записаны в `tools/compatibility_expected.txt`, а исходная SQLite-схема +Go — в `tests/fixtures/go_schema_v1.sql`. Оба файла не правь вручную. Основные Rust-модули: `src/main.rs`, `runtime.rs`, `config.rs`, `database.rs`, `auth.rs`, `server.rs`, `sync.rs`, `go_json.rs`. -Веб-клиент из `internal/httpapi/web` встроен в Rust executable. - -Основные Go-файлы: - -```text -- internal/database/database.go -- internal/config/config.go -- internal/auth/tokens.go -- internal/auth/password.go -- internal/httpapi/auth_handlers.go -- internal/httpapi/server.go -- internal/httpapi/sync_handler.go -- internal/httpapi/web.go -- internal/httpapi/server_test.go -``` - -Количество Go-файлов: **9**. +Веб-клиент из `web/` встроен в Rust executable. Обнаруженные технологии/интеграции: SQLite, Docker. @@ -106,12 +92,13 @@ cargo fmt --check cargo test --locked cargo clippy --locked --all-targets -- -D warnings cargo build --locked --release -python3 tools/compatibility.py --rust-binary target/release/balance-server -go test ./... -go vet ./... -go build ./... +python3 tools/compatibility.py --binary target/release/balance-server ``` +Если `tools/compatibility.py` нашёл расхождение, это изменение видно клиентам. +Перезаписывай эталон (`--update`) только для намеренного изменения API и +после обновления документации. + Если проект использует дополнительные проверки/линтеры, запускай их по Makefile/CI. ### 8. Документация @@ -130,8 +117,6 @@ go build ./... - [ ] Sync остаётся идемпотентным. - [ ] DB migration учтена. - [ ] Concurrent requests безопасны. -- [ ] `go test ./...` проходит. - [ ] Rust tests, fmt, clippy и release build проходят. -- [ ] Differential HTTP/JSON и Go ↔ Rust SQLite takeover проходят. -- [ ] `go vet ./...` проходит. +- [ ] `tools/compatibility.py` совпадает с записанным эталоном Go. - [ ] Документация обновлена. diff --git a/Dockerfile b/Dockerfile index 707f217..2f13cd0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,7 @@ RUN set -eu; \ WORKDIR /src COPY Cargo.toml Cargo.lock ./ COPY src ./src -COPY internal/httpapi/web ./internal/httpapi/web +COPY web ./web RUN . /cross.env \ && cargo build --locked --release --target "$RUST_TARGET" \ && cp "target/$RUST_TARGET/release/balance-server" /balance-server diff --git a/README.md b/README.md index 9dc04b8..934b922 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,7 @@ $env:BALANCE_DB_PATH = ".\data\balance.db" For another platform, build on that platform or install its Rust target and C toolchain for bundled SQLite. `cargo build --locked --release --target ` requires the -matching linker and C compiler. The retained Go implementation is a compatibility -reference and rollback option: `go build -o balance-server-go ./cmd/balance-server`. +matching linker and C compiler. After starting the binary, open `http://localhost:8080` in a browser. The web assets are embedded into the executable, so there is no separate frontend build, Node.js process or static directory to deploy. @@ -114,9 +113,10 @@ The sync endpoint accepts transactions, custom categories and monthly budgets. T ## Compatibility and migration -The Rust server retains the HTTP/JSON API, embedded web client, environment -variables, SQLite schema, Argon2id password hashes, JWT format, refresh sessions -and sync cursor semantics of the Go implementation. Docker Compose still maps +The Rust server replaced the original Go implementation and retains its HTTP/JSON +API, embedded web client, environment variables, SQLite schema, Argon2id password +hashes, JWT format, refresh sessions and sync cursor semantics. The Go sources were +removed after v1.0.0; that tag still contains them for reference or rollback. Docker Compose still maps host port **8123** to container port **8080** and keeps `/data` in `balance-data`. Direct binary execution defaults to port 8080. @@ -126,8 +126,7 @@ against the same `BALANCE_DB_PATH`; do not run both writers simultaneously. Existing accounts, access/refresh tokens and saved device cursors remain usable. See [deployment and rollback](docs/DEPLOYMENT.md) for the full procedure. -Verify the implementations locally with Go 1.27.3 (the version CI uses for the -differential check), Rust and Python 3: +Verify the server locally with Rust and Python 3: ```sh cargo test --locked @@ -135,12 +134,11 @@ cargo fmt --check cargo clippy --locked --all-targets -- -D warnings cargo build --locked python3 tools/compatibility.py -go test ./... -go vet ./... -go build ./... ``` -The Python standard-library suite builds the Go reference, starts both binaries -on temporary loopback ports and databases, compares API responses and assets, -and tests SQLite takeover and rollback in both directions. To use release or -prebuilt executables, pass `--rust-binary PATH` and optionally `--go-binary PATH`. +The Python standard-library suite starts the server on temporary loopback ports +and databases, compares its API responses and assets with the responses recorded +from the original Go server (`tools/compatibility_expected.txt`), and checks that +SQLite data survives restarts. To test a release or prebuilt executable, pass +`--binary PATH`. After an intentional API change, review the difference and +re-record the reference with `--update`. diff --git a/cmd/balance-server/main.go b/cmd/balance-server/main.go deleted file mode 100644 index e1d6f7f..0000000 --- a/cmd/balance-server/main.go +++ /dev/null @@ -1,55 +0,0 @@ -package main - -import ( - "context" - "log/slog" - "net/http" - "os" - "os/signal" - "syscall" - "time" - - "balance-server/internal/config" - "balance-server/internal/database" - "balance-server/internal/httpapi" -) - -func main() { - logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) - cfg, err := config.Load() - if err != nil { - logger.Error("configuration error", "error", err) - os.Exit(1) - } - db, err := database.Open(cfg.DatabasePath) - if err != nil { - logger.Error("database error", "error", err) - os.Exit(1) - } - defer db.Close() - - server := &http.Server{ - Addr: cfg.Address, - Handler: httpapi.New(cfg, db, logger), - ReadHeaderTimeout: 5 * time.Second, - ReadTimeout: 15 * time.Second, - WriteTimeout: 30 * time.Second, - IdleTimeout: 60 * time.Second, - } - go func() { - logger.Info("Balance server started", "address", cfg.Address, "database", cfg.DatabasePath) - if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed { - logger.Error("server stopped", "error", err) - os.Exit(1) - } - }() - - stop := make(chan os.Signal, 1) - signal.Notify(stop, os.Interrupt, syscall.SIGTERM) - <-stop - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - if err := server.Shutdown(ctx); err != nil { - logger.Error("graceful shutdown failed", "error", err) - } -} diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index ef89480..771ea95 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -23,16 +23,9 @@ Android ───────────┘ ## Исходный код -Production runtime — один Rust-процесс: `src/main.rs`, `runtime.rs`, `config.rs`, `database.rs`, `auth.rs`, `sync.rs`, `server.rs`, `go_json.rs`. SQLite bundled через rusqlite; HTTP обслуживается axum/hyper. `runtime.rs` сохраняет socket deadlines Go (header 5s, read 15s, write 30s, idle 60s) и ограничивает graceful shutdown десятью секундами. `go_json.rs` сохраняет особенности encoding/json и исходные payload bytes. Статические файлы из `internal/httpapi/web` встроены при компиляции. Go-код сохранён как эталон совместимости и вариант rollback. +Production runtime — один Rust-процесс: `src/main.rs`, `runtime.rs`, `config.rs`, `database.rs`, `auth.rs`, `sync.rs`, `server.rs`, `go_json.rs`. SQLite bundled через rusqlite; HTTP обслуживается axum/hyper. `runtime.rs` сохраняет socket deadlines Go (header 5s, read 15s, write 30s, idle 60s) и ограничивает graceful shutdown десятью секундами. `go_json.rs` сохраняет особенности encoding/json и исходные payload bytes. Статические файлы из `web/` встроены при компиляции. -Пути сохранённой Go-реализации: - -```text -- internal/auth -- internal/config -- internal/database -- internal/httpapi -``` +Исходная Go-реализация удалена после v1.0.0 (исходники остались в теге `v1.0.0`). Её наблюдаемое поведение зафиксировано в `tools/compatibility_expected.txt`, а SQLite-схема — в `tests/fixtures/go_schema_v1.sql`; Rust сверяется с обоими в CI. Конкретные границы package/handler/service/repository нужно сохранять при рефакторинге: перенос кода между слоями не должен менять внешний API. diff --git a/docs/DATA_MODEL.md b/docs/DATA_MODEL.md index 507ebee..8a0e604 100644 --- a/docs/DATA_MODEL.md +++ b/docs/DATA_MODEL.md @@ -2,27 +2,12 @@ Ниже описана серверная модель на основании исходного кода проекта. При изменении schema обновляйте этот документ. -## Найденные определения моделей/schema +## Где определена schema -- internal/database/database.go -- internal/database/database.go -- internal/database/database.go -- internal/config/config.go -- internal/auth/tokens.go -- internal/auth/tokens.go -- internal/httpapi/auth_handlers.go -- internal/httpapi/auth_handlers.go -- internal/httpapi/auth_handlers.go -- internal/httpapi/server.go -- internal/httpapi/server.go -- internal/httpapi/server.go -- internal/httpapi/sync_handler.go -- internal/httpapi/sync_handler.go -- internal/httpapi/sync_handler.go -- internal/httpapi/web.go -- internal/httpapi/server_test.go -- internal/httpapi/server_test.go -- internal/httpapi/server_test.go +- `src/database.rs` — создание и открытие схемы SQLite; +- `tests/fixtures/go_schema_v1.sql` — исходная схема Go-сервера v1.0.0; Rust обязан открывать такие базы без изменений; +- `src/sync.rs` — валидация и сериализация синхронизируемых записей; +- `src/auth.rs` — пользователи, пароли и refresh-сессии. ## Общие сущности diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md index 17053cc..6e40d5a 100644 --- a/docs/DEPLOYMENT.md +++ b/docs/DEPLOYMENT.md @@ -3,9 +3,9 @@ ## Runtime and configuration The production executable is the Rust server, built with `cargo build --locked ---release`. SQLite is bundled into the executable. The Go implementation remains -in `cmd/balance-server` and `internal/` as a compatibility reference and rollback -option; build it with `go build -o balance-server-go ./cmd/balance-server`. +--release`. SQLite is bundled into the executable. The original Go implementation +was removed after v1.0.0; the `v1.0.0` tag still contains its sources for the +migration and rollback below (`go build -o balance-server-go ./cmd/balance-server`). The Dockerfile uses a Rust 1.90 Debian Bookworm builder and a Debian Bookworm slim runtime, running as the unprivileged `balance` user. The image embeds the existing @@ -65,8 +65,9 @@ required. Do not start both implementations against the same database at once. Stop Rust first. Start the retained Go executable/image with the same current database directory and secret. Rust-written accounts, password hashes, refresh sessions, records, tombstones and cursors remain readable by Go. Check health, -login, refresh and sync again. The compatibility suite exercises both directions, -including a second takeover back to the original implementation. +login, refresh and sync again. Before the Go sources were removed, the +compatibility suite verified takeover and rollback in both directions; Rust still +writes the same schema (`tests/fixtures/go_schema_v1.sql`). For database corruption or an unrelated failed migration, stop all writers before restoring the complete backup directory. Restoring an older backup discards @@ -77,12 +78,11 @@ an active database or delete a Compose volume as part of an upgrade. ## Validation and operations Before release run `cargo test --locked`, `cargo build --locked --release`, -`python3 tools/compatibility.py --rust-binary target/release/balance-server`, and -the retained reference checks `go test ./...`, `go vet ./...`, `go build ./...`. -The differential suite uses temporary databases and loopback listeners, compares -API/errors/security headers/assets, tests browser cookies, pagination, LWW, -tombstones, concurrent pushes, token expiration, refresh rotation, rate limiting, -and shared-database takeover/rollback in both directions. +and `python3 tools/compatibility.py --binary target/release/balance-server`. +The suite uses temporary databases and loopback listeners, compares +API/errors/security headers/assets with the recorded Go reference, tests browser +cookies, pagination, LWW, tombstones, concurrent pushes, token expiration, refresh +rotation, rate limiting, and SQLite persistence across restarts. Keep regular encrypted backups with retention and restore drills. Monitor HTTP 5xx, sync errors, authentication failures, latency, database/change-log growth diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 1c2923f..be16816 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -2,28 +2,26 @@ ## Требования -Production-сервер использует Rust 1.90+ и bundled SQLite. Go 1.25+ нужен для сохранённой эталонной реализации; differential-проверки (`tools/compatibility.py`) требуют Go 1.27.3, как в CI: поведение `net/http` (например, код редиректа ServeMux 301/307) зависит от версии Go. Python 3 используется без сторонних пакетов. +Сервер использует Rust 1.90+ и bundled SQLite. Python 3 нужен для `tools/compatibility.py` и используется без сторонних пакетов. Go больше не нужен. Проверить локальную версию: ```bash rustc --version cargo --version -go version +python3 --version ``` ## Установка зависимостей ```bash cargo fetch --locked -go mod download ``` ## Сборка ```bash cargo build --locked -go build ./... ``` ## Тесты @@ -32,13 +30,15 @@ go build ./... cargo test --locked cargo build --locked python3 tools/compatibility.py -go test ./... ``` -С race detector: +`tools/compatibility.py` запускает сервер на временных портах и базах и сравнивает +ответы API и статику с ответами исходного Go-сервера, записанными в +`tools/compatibility_expected.txt`. Расхождение означает изменение, видимое +клиентам. Если изменение намеренное, проверьте diff и перезапишите эталон: ```bash -go test -race ./... +python3 tools/compatibility.py --update ``` ## Static checks @@ -46,7 +46,6 @@ go test -race ./... ```bash cargo fmt --check cargo clippy --locked --all-targets -- -D warnings -go vet ./... ``` Если в проекте есть Makefile/CI, его команды имеют приоритет как canonical build pipeline. @@ -89,7 +88,7 @@ cargo clippy --locked --all-targets -- -D warnings ↓ cargo build --locked --release ↓ -python3 tools/compatibility.py --rust-binary target/release/balance-server +python3 tools/compatibility.py --binary target/release/balance-server ↓ container/package ↓ diff --git a/docs/avatar.svg b/docs/avatar.svg index 8c6d559..ca22ff1 100644 --- a/docs/avatar.svg +++ b/docs/avatar.svg @@ -14,7 +14,7 @@ - + diff --git a/docs/cover-square.svg b/docs/cover-square.svg index 1274332..9bd7ec9 100644 --- a/docs/cover-square.svg +++ b/docs/cover-square.svg @@ -45,7 +45,7 @@ Web - + diff --git a/docs/cover.svg b/docs/cover.svg index 743b77b..bd3d120 100644 --- a/docs/cover.svg +++ b/docs/cover.svg @@ -45,7 +45,7 @@ Web - + diff --git a/go.mod b/go.mod deleted file mode 100644 index dcfe93b..0000000 --- a/go.mod +++ /dev/null @@ -1,21 +0,0 @@ -module balance-server - -go 1.25.0 - -require ( - golang.org/x/crypto v0.41.0 - modernc.org/sqlite v1.39.1 -) - -require ( - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/ncruces/go-strftime v0.1.9 // indirect - github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect - golang.org/x/sys v0.36.0 // indirect - modernc.org/libc v1.66.10 // indirect - modernc.org/mathutil v1.7.1 // indirect - modernc.org/memory v1.11.0 // indirect -) diff --git a/go.sum b/go.sum deleted file mode 100644 index 3b7389a..0000000 --- a/go.sum +++ /dev/null @@ -1,51 +0,0 @@ -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e h1:ijClszYn+mADRFY17kjQEVQ1XRhq2/JR1M3sGqeJoxs= -github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= -github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= -github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= -github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= -golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= -golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= -golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= -golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= -modernc.org/cc/v4 v4.26.5 h1:xM3bX7Mve6G8K8b+T11ReenJOT+BmVqQj0FY5T4+5Y4= -modernc.org/cc/v4 v4.26.5/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= -modernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A= -modernc.org/ccgo/v4 v4.28.1/go.mod h1:uD+4RnfrVgE6ec9NGguUNdhqzNIeeomeXf6CL0GTE5Q= -modernc.org/fileutil v1.3.40 h1:ZGMswMNc9JOCrcrakF1HrvmergNLAmxOPjizirpfqBA= -modernc.org/fileutil v1.3.40/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= -modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= -modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= -modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks= -modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI= -modernc.org/libc v1.66.10 h1:yZkb3YeLx4oynyR+iUsXsybsX4Ubx7MQlSYEw4yj59A= -modernc.org/libc v1.66.10/go.mod h1:8vGSEwvoUoltr4dlywvHqjtAqHBaw0j1jI7iFBTAr2I= -modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= -modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= -modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI= -modernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw= -modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= -modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= -modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= -modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= -modernc.org/sqlite v1.39.1 h1:H+/wGFzuSCIEVCvXYVHX5RQglwhMOvtHSv+VtidL2r4= -modernc.org/sqlite v1.39.1/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE= -modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= -modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= -modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= -modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= diff --git a/internal/auth/password.go b/internal/auth/password.go deleted file mode 100644 index 97c9ece..0000000 --- a/internal/auth/password.go +++ /dev/null @@ -1,61 +0,0 @@ -package auth - -import ( - "crypto/rand" - "crypto/subtle" - "encoding/base64" - "errors" - "fmt" - "strings" - - "golang.org/x/crypto/argon2" -) - -const ( - argonMemory = 64 * 1024 - argonTime = 3 - argonThreads = 2 - argonKeyLen = 32 -) - -func HashPassword(password string) (string, error) { - if len(password) < 8 { - return "", errors.New("password must contain at least 8 characters") - } - if len(password) > 1024 { - return "", errors.New("password is too long") - } - salt := make([]byte, 16) - if _, err := rand.Read(salt); err != nil { - return "", err - } - hash := argon2.IDKey([]byte(password), salt, argonTime, argonMemory, argonThreads, argonKeyLen) - return fmt.Sprintf("$argon2id$v=19$m=%d,t=%d,p=%d$%s$%s", argonMemory, argonTime, argonThreads, - base64.RawStdEncoding.EncodeToString(salt), base64.RawStdEncoding.EncodeToString(hash)), nil -} - -func VerifyPassword(encoded, password string) bool { - parts := strings.Split(encoded, "$") - if len(parts) != 6 || parts[1] != "argon2id" || parts[2] != "v=19" { - return false - } - var memory uint32 - var iterations uint32 - var threads uint8 - if _, err := fmt.Sscanf(parts[3], "m=%d,t=%d,p=%d", &memory, &iterations, &threads); err != nil { - return false - } - if memory > 256*1024 || iterations > 10 || threads > 16 { - return false - } - salt, err := base64.RawStdEncoding.DecodeString(parts[4]) - if err != nil { - return false - } - expected, err := base64.RawStdEncoding.DecodeString(parts[5]) - if err != nil || len(expected) == 0 { - return false - } - actual := argon2.IDKey([]byte(password), salt, iterations, memory, threads, uint32(len(expected))) - return subtle.ConstantTimeCompare(actual, expected) == 1 -} diff --git a/internal/auth/tokens.go b/internal/auth/tokens.go deleted file mode 100644 index a037b46..0000000 --- a/internal/auth/tokens.go +++ /dev/null @@ -1,90 +0,0 @@ -package auth - -import ( - "crypto/hmac" - "crypto/rand" - "crypto/sha256" - "encoding/base64" - "encoding/hex" - "encoding/json" - "errors" - "strings" - "time" -) - -type Claims struct { - Subject string `json:"sub"` - Email string `json:"email"` - Issuer string `json:"iss"` - Issued int64 `json:"iat"` - Expires int64 `json:"exp"` - ID string `json:"jti"` -} - -type TokenManager struct { - secret []byte - accessTTL time.Duration -} - -func NewTokenManager(secret string, accessTTL time.Duration) TokenManager { - return TokenManager{secret: []byte(secret), accessTTL: accessTTL} -} - -func (manager TokenManager) AccessToken(userID, email string) (string, time.Time, error) { - now := time.Now().UTC() - expires := now.Add(manager.accessTTL) - id, err := RandomToken(16) - if err != nil { - return "", time.Time{}, err - } - header, _ := json.Marshal(map[string]string{"alg": "HS256", "typ": "JWT"}) - claims, _ := json.Marshal(Claims{Subject: userID, Email: email, Issuer: "balance-server", Issued: now.Unix(), Expires: expires.Unix(), ID: id}) - unsigned := encode(header) + "." + encode(claims) - signature := manager.sign(unsigned) - return unsigned + "." + signature, expires, nil -} - -func (manager TokenManager) Verify(token string) (Claims, error) { - parts := strings.Split(token, ".") - if len(parts) != 3 { - return Claims{}, errors.New("invalid token") - } - unsigned := parts[0] + "." + parts[1] - expected := manager.sign(unsigned) - if !hmac.Equal([]byte(parts[2]), []byte(expected)) { - return Claims{}, errors.New("invalid token signature") - } - payload, err := base64.RawURLEncoding.DecodeString(parts[1]) - if err != nil { - return Claims{}, errors.New("invalid token payload") - } - var claims Claims - if err := json.Unmarshal(payload, &claims); err != nil { - return Claims{}, errors.New("invalid token claims") - } - if claims.Issuer != "balance-server" || claims.Subject == "" || time.Now().UTC().Unix() >= claims.Expires { - return Claims{}, errors.New("expired or invalid token") - } - return claims, nil -} - -func RandomToken(bytes int) (string, error) { - value := make([]byte, bytes) - if _, err := rand.Read(value); err != nil { - return "", err - } - return base64.RawURLEncoding.EncodeToString(value), nil -} - -func TokenHash(token string) string { - hash := sha256.Sum256([]byte(token)) - return hex.EncodeToString(hash[:]) -} - -func (manager TokenManager) sign(value string) string { - mac := hmac.New(sha256.New, manager.secret) - _, _ = mac.Write([]byte(value)) - return base64.RawURLEncoding.EncodeToString(mac.Sum(nil)) -} - -func encode(value []byte) string { return base64.RawURLEncoding.EncodeToString(value) } diff --git a/internal/config/config.go b/internal/config/config.go deleted file mode 100644 index 5ddc8ec..0000000 --- a/internal/config/config.go +++ /dev/null @@ -1,93 +0,0 @@ -package config - -import ( - "errors" - "os" - "strconv" - "strings" - "time" -) - -type Config struct { - Address string - DatabasePath string - JWTSecret string - AccessTTL time.Duration - RefreshTTL time.Duration - AllowRegistration bool - CORSOrigins []string -} - -func Load() (Config, error) { - accessTTL, err := duration("BALANCE_ACCESS_TTL", 15*time.Minute) - if err != nil { - return Config{}, err - } - refreshTTL, err := duration("BALANCE_REFRESH_TTL", 30*24*time.Hour) - if err != nil { - return Config{}, err - } - allowRegistration, err := boolean("BALANCE_ALLOW_REGISTRATION", true) - if err != nil { - return Config{}, err - } - - cfg := Config{ - Address: env("BALANCE_ADDR", ":8080"), - DatabasePath: env("BALANCE_DB_PATH", "./data/balance.db"), - JWTSecret: strings.TrimSpace(os.Getenv("BALANCE_JWT_SECRET")), - AccessTTL: accessTTL, - RefreshTTL: refreshTTL, - AllowRegistration: allowRegistration, - CORSOrigins: split(os.Getenv("BALANCE_CORS_ORIGINS")), - } - if len(cfg.JWTSecret) < 32 { - return Config{}, errors.New("BALANCE_JWT_SECRET must contain at least 32 characters") - } - return cfg, nil -} - -func env(key, fallback string) string { - if value := strings.TrimSpace(os.Getenv(key)); value != "" { - return value - } - return fallback -} - -func duration(key string, fallback time.Duration) (time.Duration, error) { - value := strings.TrimSpace(os.Getenv(key)) - if value == "" { - return fallback, nil - } - parsed, err := time.ParseDuration(value) - if err != nil { - return 0, errors.New(key + " must be a Go duration such as 15m or 720h") - } - return parsed, nil -} - -func boolean(key string, fallback bool) (bool, error) { - value := strings.TrimSpace(os.Getenv(key)) - if value == "" { - return fallback, nil - } - parsed, err := strconv.ParseBool(value) - if err != nil { - return false, errors.New(key + " must be true or false") - } - return parsed, nil -} - -func split(value string) []string { - if strings.TrimSpace(value) == "" { - return nil - } - parts := strings.Split(value, ",") - result := make([]string, 0, len(parts)) - for _, part := range parts { - if item := strings.TrimSpace(part); item != "" { - result = append(result, item) - } - } - return result -} diff --git a/internal/httpapi/auth_handlers.go b/internal/httpapi/auth_handlers.go deleted file mode 100644 index 0b192d3..0000000 --- a/internal/httpapi/auth_handlers.go +++ /dev/null @@ -1,245 +0,0 @@ -package httpapi - -import ( - "context" - "crypto/rand" - "database/sql" - "encoding/hex" - "net/http" - "strings" - "time" - - "balance-server/internal/auth" -) - -type credentials struct { - Email string `json:"email"` - Password string `json:"password"` -} -type refreshRequest struct { - RefreshToken string `json:"refreshToken"` -} -type userResponse struct { - ID string `json:"id"` - Email string `json:"email"` -} -type sessionResponse struct { - AccessToken string `json:"accessToken"` - RefreshToken string `json:"refreshToken"` - ExpiresAt time.Time `json:"expiresAt"` - User userResponse `json:"user"` -} - -func (api *API) register(w http.ResponseWriter, r *http.Request) { - if !api.cfg.AllowRegistration { - writeError(w, http.StatusForbidden, "registration_disabled", "Registration is disabled") - return - } - var request credentials - if !decodeJSON(w, r, &request) { - return - } - email, err := normalizeEmail(request.Email) - if err != nil { - writeError(w, http.StatusBadRequest, "invalid_email", "Enter a valid email address") - return - } - passwordHash, err := auth.HashPassword(request.Password) - if err != nil { - writeError(w, http.StatusBadRequest, "invalid_password", err.Error()) - return - } - userID, err := identifier() - if err != nil { - writeError(w, http.StatusInternalServerError, "internal_error", "Could not create account") - return - } - _, err = api.db.ExecContext(r.Context(), `INSERT INTO users(id,email,password_hash,created_at) VALUES(?,?,?,?)`, userID, email, passwordHash, time.Now().UTC().Format(time.RFC3339Nano)) - if err != nil { - if containsUnique(err) { - writeError(w, http.StatusConflict, "email_exists", "An account with this email already exists") - return - } - api.logger.Error("create user", "error", err) - writeError(w, http.StatusInternalServerError, "internal_error", "Could not create account") - return - } - response, err := api.createSession(r, userID, email) - if err != nil { - api.logger.Error("create session", "error", err) - writeError(w, http.StatusInternalServerError, "internal_error", "Could not create session") - return - } - api.setSessionCookies(w, r, response) - writeJSON(w, http.StatusCreated, response) -} - -func (api *API) login(w http.ResponseWriter, r *http.Request) { - var request credentials - if !decodeJSON(w, r, &request) { - return - } - email, err := normalizeEmail(request.Email) - if err != nil { - writeError(w, http.StatusUnauthorized, "invalid_credentials", "Email or password is incorrect") - return - } - var userID, passwordHash string - err = api.db.QueryRowContext(r.Context(), `SELECT id,password_hash FROM users WHERE email=?`, email).Scan(&userID, &passwordHash) - if err != nil || !auth.VerifyPassword(passwordHash, request.Password) { - writeError(w, http.StatusUnauthorized, "invalid_credentials", "Email or password is incorrect") - return - } - response, err := api.createSession(r, userID, email) - if err != nil { - api.logger.Error("create session", "error", err) - writeError(w, http.StatusInternalServerError, "internal_error", "Could not create session") - return - } - api.setSessionCookies(w, r, response) - writeJSON(w, http.StatusOK, response) -} - -func (api *API) refresh(w http.ResponseWriter, r *http.Request) { - var request refreshRequest - if !decodeJSON(w, r, &request) { - return - } - request.RefreshToken = api.refreshToken(r, request.RefreshToken) - if request.RefreshToken == "" { - writeError(w, http.StatusBadRequest, "refresh_token_required", "Refresh token is required") - return - } - tx, err := api.db.BeginTx(r.Context(), nil) - if err != nil { - writeError(w, http.StatusInternalServerError, "internal_error", "Could not refresh session") - return - } - defer tx.Rollback() - var userID, email, expiresText string - err = tx.QueryRowContext(r.Context(), `SELECT u.id,u.email,t.expires_at FROM refresh_tokens t JOIN users u ON u.id=t.user_id WHERE t.token_hash=? AND t.revoked_at IS NULL`, auth.TokenHash(request.RefreshToken)).Scan(&userID, &email, &expiresText) - if err != nil { - writeError(w, http.StatusUnauthorized, "invalid_refresh_token", "Refresh token is invalid or expired") - return - } - expires, err := time.Parse(time.RFC3339Nano, expiresText) - if err != nil || !time.Now().UTC().Before(expires) { - writeError(w, http.StatusUnauthorized, "invalid_refresh_token", "Refresh token is invalid or expired") - return - } - _, err = tx.ExecContext(r.Context(), `UPDATE refresh_tokens SET revoked_at=? WHERE token_hash=?`, time.Now().UTC().Format(time.RFC3339Nano), auth.TokenHash(request.RefreshToken)) - if err != nil { - writeError(w, http.StatusInternalServerError, "internal_error", "Could not refresh session") - return - } - response, err := api.createSessionWithExecutor(r, userID, email, tx) - if err != nil || tx.Commit() != nil { - writeError(w, http.StatusInternalServerError, "internal_error", "Could not refresh session") - return - } - api.setSessionCookies(w, r, response) - writeJSON(w, http.StatusOK, response) -} - -func (api *API) logout(w http.ResponseWriter, r *http.Request) { - var request refreshRequest - if !decodeJSON(w, r, &request) { - return - } - request.RefreshToken = api.refreshToken(r, request.RefreshToken) - if request.RefreshToken != "" { - _, _ = api.db.ExecContext(r.Context(), `UPDATE refresh_tokens SET revoked_at=? WHERE token_hash=? AND revoked_at IS NULL`, time.Now().UTC().Format(time.RFC3339Nano), auth.TokenHash(request.RefreshToken)) - } - api.clearSessionCookies(w, r) - w.WriteHeader(http.StatusNoContent) -} - -func (api *API) me(w http.ResponseWriter, r *http.Request) { - value := claims(r) - writeJSON(w, http.StatusOK, userResponse{ID: value.Subject, Email: value.Email}) -} - -func (api *API) createSession(r *http.Request, userID, email string) (sessionResponse, error) { - return api.createSessionWithExecutor(r, userID, email, api.db) -} - -func (api *API) createSessionWithExecutor(r *http.Request, userID, email string, executor interface { - ExecContext(context.Context, string, ...any) (sql.Result, error) -}) (sessionResponse, error) { - accessToken, expiresAt, err := api.tokens.AccessToken(userID, email) - if err != nil { - return sessionResponse{}, err - } - refreshToken, err := auth.RandomToken(48) - if err != nil { - return sessionResponse{}, err - } - refreshExpires := time.Now().UTC().Add(api.cfg.RefreshTTL) - _, err = executor.ExecContext(r.Context(), `INSERT INTO refresh_tokens(token_hash,user_id,expires_at,created_at) VALUES(?,?,?,?)`, auth.TokenHash(refreshToken), userID, refreshExpires.Format(time.RFC3339Nano), time.Now().UTC().Format(time.RFC3339Nano)) - if err != nil { - return sessionResponse{}, err - } - return sessionResponse{AccessToken: accessToken, RefreshToken: refreshToken, ExpiresAt: expiresAt, User: userResponse{ID: userID, Email: email}}, nil -} - -func identifier() (string, error) { - value := make([]byte, 16) - if _, err := rand.Read(value); err != nil { - return "", err - } - return hex.EncodeToString(value), nil -} -func containsUnique(err error) bool { - return err != nil && strings.Contains(err.Error(), "UNIQUE constraint failed") -} - -const ( - accessCookieName = "balance_access" - refreshCookieName = "balance_refresh" -) - -func (api *API) setSessionCookies(w http.ResponseWriter, r *http.Request, session sessionResponse) { - secure := requestIsSecure(r) - http.SetCookie(w, &http.Cookie{ - Name: accessCookieName, Value: session.AccessToken, Path: "/", HttpOnly: true, - Secure: secure, SameSite: http.SameSiteStrictMode, - Expires: session.ExpiresAt, MaxAge: maxAge(session.ExpiresAt), - }) - refreshExpires := time.Now().UTC().Add(api.cfg.RefreshTTL) - http.SetCookie(w, &http.Cookie{ - Name: refreshCookieName, Value: session.RefreshToken, Path: "/", HttpOnly: true, - Secure: secure, SameSite: http.SameSiteStrictMode, - Expires: refreshExpires, MaxAge: maxAge(refreshExpires), - }) -} - -func (api *API) clearSessionCookies(w http.ResponseWriter, r *http.Request) { - for _, name := range []string{accessCookieName, refreshCookieName} { - http.SetCookie(w, &http.Cookie{ - Name: name, Value: "", Path: "/", HttpOnly: true, Secure: requestIsSecure(r), - SameSite: http.SameSiteStrictMode, MaxAge: -1, Expires: time.Unix(1, 0), - }) - } -} - -func (api *API) refreshToken(r *http.Request, value string) string { - if value = strings.TrimSpace(value); value != "" { - return value - } - if cookie, err := r.Cookie(refreshCookieName); err == nil { - return strings.TrimSpace(cookie.Value) - } - return "" -} - -func requestIsSecure(r *http.Request) bool { - return r.TLS != nil || strings.EqualFold(strings.TrimSpace(r.Header.Get("X-Forwarded-Proto")), "https") -} - -func maxAge(expires time.Time) int { - seconds := int(time.Until(expires).Seconds()) - if seconds < 1 { - return 1 - } - return seconds -} diff --git a/internal/httpapi/server.go b/internal/httpapi/server.go deleted file mode 100644 index 27c1591..0000000 --- a/internal/httpapi/server.go +++ /dev/null @@ -1,185 +0,0 @@ -package httpapi - -import ( - "context" - "database/sql" - "encoding/json" - "errors" - "log/slog" - "net" - "net/http" - "strings" - "sync" - "time" - - "balance-server/internal/auth" - "balance-server/internal/config" -) - -type contextKey string - -const claimsKey contextKey = "claims" - -type API struct { - cfg config.Config - db *sql.DB - tokens auth.TokenManager - logger *slog.Logger - limiter *rateLimiter -} - -func New(cfg config.Config, db *sql.DB, logger *slog.Logger) http.Handler { - api := &API{cfg: cfg, db: db, tokens: auth.NewTokenManager(cfg.JWTSecret, cfg.AccessTTL), logger: logger, limiter: newRateLimiter()} - mux := http.NewServeMux() - mux.HandleFunc("GET /health", api.health) - mux.Handle("POST /v1/auth/register", api.limited(http.HandlerFunc(api.register))) - mux.Handle("POST /v1/auth/login", api.limited(http.HandlerFunc(api.login))) - mux.Handle("POST /v1/auth/refresh", api.limited(http.HandlerFunc(api.refresh))) - mux.HandleFunc("POST /v1/auth/logout", api.logout) - mux.Handle("GET /v1/me", api.authorized(http.HandlerFunc(api.me))) - mux.Handle("POST /v1/sync", api.authorized(http.HandlerFunc(api.sync))) - mux.HandleFunc("GET /", api.webApp) - return api.recover(api.security(api.cors(mux))) -} - -func (api *API) health(w http.ResponseWriter, _ *http.Request) { - writeJSON(w, http.StatusOK, map[string]any{"status": "ok", "time": time.Now().UTC()}) -} - -func (api *API) authorized(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - header := strings.TrimSpace(r.Header.Get("Authorization")) - token := "" - if strings.HasPrefix(header, "Bearer ") { - token = strings.TrimSpace(strings.TrimPrefix(header, "Bearer ")) - } else if cookie, err := r.Cookie(accessCookieName); err == nil { - token = strings.TrimSpace(cookie.Value) - } - if token == "" { - writeError(w, http.StatusUnauthorized, "authorization_required", "Authorization Bearer token is required") - return - } - claims, err := api.tokens.Verify(token) - if err != nil { - writeError(w, http.StatusUnauthorized, "invalid_token", "Access token is invalid or expired") - return - } - next.ServeHTTP(w, r.WithContext(context.WithValue(r.Context(), claimsKey, claims))) - }) -} - -func claims(r *http.Request) auth.Claims { - value, _ := r.Context().Value(claimsKey).(auth.Claims) - return value -} - -func (api *API) security(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.Header().Set("X-Content-Type-Options", "nosniff") - w.Header().Set("X-Frame-Options", "DENY") - w.Header().Set("Referrer-Policy", "no-referrer") - w.Header().Set("Permissions-Policy", "camera=(), microphone=(), geolocation=(), payment=()") - w.Header().Set("Content-Security-Policy", "default-src 'self'; base-uri 'none'; connect-src 'self'; font-src 'self'; form-action 'self'; frame-ancestors 'none'; img-src 'self' data:; manifest-src 'self'; script-src 'self'; style-src 'self'; worker-src 'self'") - if strings.HasPrefix(r.URL.Path, "/v1/") { - w.Header().Set("Cache-Control", "no-store") - } - next.ServeHTTP(w, r) - }) -} - -func (api *API) cors(next http.Handler) http.Handler { - allowed := make(map[string]bool, len(api.cfg.CORSOrigins)) - for _, origin := range api.cfg.CORSOrigins { - allowed[origin] = true - } - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - origin := r.Header.Get("Origin") - if origin != "" && (allowed[origin] || allowed["*"]) { - w.Header().Set("Access-Control-Allow-Origin", origin) - w.Header().Set("Vary", "Origin") - w.Header().Set("Access-Control-Allow-Headers", "Authorization, Content-Type") - w.Header().Set("Access-Control-Allow-Methods", "GET, POST, OPTIONS") - } - if r.Method == http.MethodOptions { - w.WriteHeader(http.StatusNoContent) - return - } - next.ServeHTTP(w, r) - }) -} - -func (api *API) recover(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - defer func() { - if value := recover(); value != nil { - api.logger.Error("request panic", "value", value) - writeError(w, http.StatusInternalServerError, "internal_error", "Internal server error") - } - }() - next.ServeHTTP(w, r) - }) -} - -func decodeJSON(w http.ResponseWriter, r *http.Request, destination any) bool { - r.Body = http.MaxBytesReader(w, r.Body, 2<<20) - decoder := json.NewDecoder(r.Body) - decoder.DisallowUnknownFields() - if err := decoder.Decode(destination); err != nil { - writeError(w, http.StatusBadRequest, "invalid_json", "Request body is not valid JSON") - return false - } - return true -} - -func writeJSON(w http.ResponseWriter, status int, value any) { - w.Header().Set("Content-Type", "application/json; charset=utf-8") - w.WriteHeader(status) - _ = json.NewEncoder(w).Encode(value) -} - -func writeError(w http.ResponseWriter, status int, code, message string) { - writeJSON(w, status, map[string]any{"error": map[string]string{"code": code, "message": message}}) -} - -type rateLimiter struct { - mu sync.Mutex - clients map[string]*rateBucket -} -type rateBucket struct { - started time.Time - count int -} - -func newRateLimiter() *rateLimiter { return &rateLimiter{clients: make(map[string]*rateBucket)} } -func (api *API) limited(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - host, _, err := net.SplitHostPort(r.RemoteAddr) - if err != nil { - host = r.RemoteAddr - } - now := time.Now() - api.limiter.mu.Lock() - bucket := api.limiter.clients[host] - if bucket == nil || now.Sub(bucket.started) >= time.Minute { - bucket = &rateBucket{started: now} - api.limiter.clients[host] = bucket - } - bucket.count++ - blocked := bucket.count > 30 - api.limiter.mu.Unlock() - if blocked { - w.Header().Set("Retry-After", "60") - writeError(w, http.StatusTooManyRequests, "rate_limited", "Too many authentication requests") - return - } - next.ServeHTTP(w, r) - }) -} - -func normalizeEmail(value string) (string, error) { - email := strings.ToLower(strings.TrimSpace(value)) - if len(email) < 3 || len(email) > 254 || !strings.Contains(email, "@") { - return "", errors.New("invalid email") - } - return email, nil -} diff --git a/internal/httpapi/server_test.go b/internal/httpapi/server_test.go deleted file mode 100644 index 07b4028..0000000 --- a/internal/httpapi/server_test.go +++ /dev/null @@ -1,204 +0,0 @@ -package httpapi - -import ( - "bytes" - "encoding/json" - "io" - "log/slog" - "net/http" - "net/http/httptest" - "path/filepath" - "strings" - "testing" - "time" - - "balance-server/internal/config" - "balance-server/internal/database" -) - -func TestRegisterAndSynchronize(t *testing.T) { - db, err := database.Open(filepath.Join(t.TempDir(), "test.db")) - if err != nil { - t.Fatal(err) - } - defer db.Close() - cfg := config.Config{JWTSecret: "test-secret-that-is-longer-than-thirty-two-characters", AccessTTL: 15 * time.Minute, RefreshTTL: time.Hour, AllowRegistration: true} - server := httptest.NewServer(New(cfg, db, slog.New(slog.NewTextHandler(io.Discard, nil)))) - defer server.Close() - - register := request(t, http.MethodPost, server.URL+"/v1/auth/register", map[string]any{"email": "person@example.com", "password": "correct horse battery staple"}, "") - if register.StatusCode != http.StatusCreated { - t.Fatalf("register status: %d", register.StatusCode) - } - var session sessionResponse - decode(t, register, &session) - if session.AccessToken == "" || session.RefreshToken == "" { - t.Fatal("session tokens are empty") - } - - now := time.Now().UTC().Add(-time.Second) - pull := false - syncBody := syncRequest{DeviceID: "test", Pull: &pull, Changes: []syncChange{{Entity: "category", ID: "category-1", UpdatedAt: now, Payload: json.RawMessage(`{"name":"Food"}`)}}} - synchronized := request(t, http.MethodPost, server.URL+"/v1/sync", syncBody, session.AccessToken) - if synchronized.StatusCode != http.StatusOK { - t.Fatalf("sync status: %d", synchronized.StatusCode) - } - var result syncResponse - decode(t, synchronized, &result) - if result.Cursor != 0 || len(result.Changes) != 0 { - t.Fatalf("push-only response included pulled changes: %+v", result) - } - - pull = true - synchronized = request(t, http.MethodPost, server.URL+"/v1/sync", syncRequest{DeviceID: "test", Pull: &pull}, session.AccessToken) - if synchronized.StatusCode != http.StatusOK { - t.Fatalf("pull status: %d", synchronized.StatusCode) - } - decode(t, synchronized, &result) - if result.Cursor == 0 || len(result.Changes) != 1 || result.Changes[0].ID != "category-1" { - t.Fatalf("unexpected sync response: %+v", result) - } - - pageStart := result.Cursor - pageChanges := make([]syncChange, syncPageSize+1) - for index := range pageChanges { - pageChanges[index] = syncChange{ - Entity: "category", ID: "page-" + time.Unix(int64(index), 0).UTC().Format("150405"), - UpdatedAt: now.Add(time.Duration(index+1) * time.Millisecond), Payload: json.RawMessage(`{"name":"Paged"}`), - } - } - pull = false - synchronized = request(t, http.MethodPost, server.URL+"/v1/sync", syncRequest{DeviceID: "test", Pull: &pull, Changes: pageChanges}, session.AccessToken) - if synchronized.StatusCode != http.StatusOK { - t.Fatalf("paged push status: %d", synchronized.StatusCode) - } - synchronized.Body.Close() - - pull = true - synchronized = request(t, http.MethodPost, server.URL+"/v1/sync", syncRequest{Cursor: pageStart, DeviceID: "test", Pull: &pull}, session.AccessToken) - decode(t, synchronized, &result) - if len(result.Changes) != syncPageSize || !result.HasMore { - t.Fatalf("first page mismatch: count=%d hasMore=%v", len(result.Changes), result.HasMore) - } - synchronized = request(t, http.MethodPost, server.URL+"/v1/sync", syncRequest{Cursor: result.Cursor, DeviceID: "test", Pull: &pull}, session.AccessToken) - decode(t, synchronized, &result) - if len(result.Changes) != 1 || result.HasMore { - t.Fatalf("last page mismatch: count=%d hasMore=%v", len(result.Changes), result.HasMore) - } -} - -func TestEmbeddedWebAppAndCookieSession(t *testing.T) { - db, err := database.Open(filepath.Join(t.TempDir(), "web.db")) - if err != nil { - t.Fatal(err) - } - defer db.Close() - cfg := config.Config{JWTSecret: "test-secret-that-is-longer-than-thirty-two-characters", AccessTTL: 15 * time.Minute, RefreshTTL: time.Hour, AllowRegistration: true} - server := httptest.NewServer(New(cfg, db, slog.New(slog.NewTextHandler(io.Discard, nil)))) - defer server.Close() - - home, err := http.Get(server.URL + "/") - if err != nil { - t.Fatal(err) - } - homeBody, err := io.ReadAll(home.Body) - home.Body.Close() - if err != nil { - t.Fatal(err) - } - if home.StatusCode != http.StatusOK || !strings.Contains(string(homeBody), "id=\"app-view\"") { - t.Fatalf("web app response: status=%d body=%q", home.StatusCode, string(homeBody)) - } - if !strings.Contains(home.Header.Get("Content-Security-Policy"), "script-src 'self'") { - t.Fatal("web app is missing its content security policy") - } - - register := request(t, http.MethodPost, server.URL+"/v1/auth/register", map[string]any{"email": "web@example.com", "password": "correct horse battery staple"}, "") - if register.StatusCode != http.StatusCreated { - t.Fatalf("register status: %d", register.StatusCode) - } - cookies := register.Cookies() - var session sessionResponse - decode(t, register, &session) - var accessCookie, refreshCookie *http.Cookie - for _, cookie := range cookies { - switch cookie.Name { - case accessCookieName: - accessCookie = cookie - case refreshCookieName: - refreshCookie = cookie - } - if !cookie.HttpOnly || cookie.SameSite != http.SameSiteStrictMode { - t.Fatalf("insecure session cookie: %+v", cookie) - } - } - if accessCookie == nil || refreshCookie == nil { - t.Fatal("session cookies were not returned") - } - - meRequest, err := http.NewRequest(http.MethodGet, server.URL+"/v1/me", nil) - if err != nil { - t.Fatal(err) - } - meRequest.AddCookie(accessCookie) - me, err := http.DefaultClient.Do(meRequest) - if err != nil { - t.Fatal(err) - } - if me.StatusCode != http.StatusOK { - t.Fatalf("cookie authentication status: %d", me.StatusCode) - } - var user userResponse - decode(t, me, &user) - if user.Email != "web@example.com" { - t.Fatalf("unexpected web user: %+v", user) - } - - refreshData, err := json.Marshal(refreshRequest{}) - if err != nil { - t.Fatal(err) - } - refreshHTTP, err := http.NewRequest(http.MethodPost, server.URL+"/v1/auth/refresh", bytes.NewReader(refreshData)) - if err != nil { - t.Fatal(err) - } - refreshHTTP.Header.Set("Content-Type", "application/json") - refreshHTTP.AddCookie(refreshCookie) - refreshed, err := http.DefaultClient.Do(refreshHTTP) - if err != nil { - t.Fatal(err) - } - if refreshed.StatusCode != http.StatusOK { - t.Fatalf("cookie refresh status: %d", refreshed.StatusCode) - } - refreshed.Body.Close() -} - -func request(t *testing.T, method, url string, value any, token string) *http.Response { - t.Helper() - data, err := json.Marshal(value) - if err != nil { - t.Fatal(err) - } - req, err := http.NewRequest(method, url, bytes.NewReader(data)) - if err != nil { - t.Fatal(err) - } - req.Header.Set("Content-Type", "application/json") - if token != "" { - req.Header.Set("Authorization", "Bearer "+token) - } - response, err := http.DefaultClient.Do(req) - if err != nil { - t.Fatal(err) - } - return response -} - -func decode(t *testing.T, response *http.Response, value any) { - t.Helper() - defer response.Body.Close() - if err := json.NewDecoder(response.Body).Decode(value); err != nil { - t.Fatal(err) - } -} diff --git a/internal/httpapi/sync_handler.go b/internal/httpapi/sync_handler.go deleted file mode 100644 index d3c8f55..0000000 --- a/internal/httpapi/sync_handler.go +++ /dev/null @@ -1,169 +0,0 @@ -package httpapi - -import ( - "database/sql" - "encoding/json" - "errors" - "net/http" - "time" -) - -const maxSyncChanges = 5000 -const syncPageSize = 500 - -type syncChange struct { - Entity string `json:"entity"` - ID string `json:"id"` - Deleted bool `json:"deleted"` - UpdatedAt time.Time `json:"updatedAt"` - Payload json.RawMessage `json:"payload,omitempty"` - Version int64 `json:"version,omitempty"` - Sequence int64 `json:"sequence,omitempty"` -} -type syncRequest struct { - Cursor int64 `json:"cursor"` - DeviceID string `json:"deviceId"` - Changes []syncChange `json:"changes"` - Pull *bool `json:"pull,omitempty"` -} -type syncResponse struct { - Cursor int64 `json:"cursor"` - Changes []syncChange `json:"changes"` - ServerTime time.Time `json:"serverTime"` - HasMore bool `json:"hasMore"` -} - -func (api *API) sync(w http.ResponseWriter, r *http.Request) { - var request syncRequest - if !decodeJSON(w, r, &request) { - return - } - if request.Cursor < 0 || len(request.Changes) > maxSyncChanges { - writeError(w, http.StatusBadRequest, "invalid_sync_request", "Cursor or change count is invalid") - return - } - for index := range request.Changes { - if err := validateChange(request.Changes[index]); err != nil { - writeError(w, http.StatusBadRequest, "invalid_change", err.Error()) - return - } - } - userID := claims(r).Subject - tx, err := api.db.BeginTx(r.Context(), nil) - if err != nil { - writeError(w, http.StatusInternalServerError, "sync_failed", "Could not begin synchronization") - return - } - defer tx.Rollback() - for _, change := range request.Changes { - if err := applyChange(r, tx, userID, change); err != nil { - api.logger.Error("apply sync change", "error", err) - writeError(w, http.StatusInternalServerError, "sync_failed", "Could not apply changes") - return - } - } - changes := make([]syncChange, 0) - cursor := request.Cursor - hasMore := false - shouldPull := request.Pull == nil || *request.Pull - if shouldPull { - changes, cursor, hasMore, err = loadChanges(r, tx, userID, request.Cursor) - if err != nil { - api.logger.Error("load sync changes", "error", err) - writeError(w, http.StatusInternalServerError, "sync_failed", "Could not load changes") - return - } - } - if err := tx.Commit(); err != nil { - writeError(w, http.StatusInternalServerError, "sync_failed", "Could not complete synchronization") - return - } - writeJSON(w, http.StatusOK, syncResponse{Cursor: cursor, Changes: changes, ServerTime: time.Now().UTC(), HasMore: hasMore}) -} - -func validateChange(change syncChange) error { - if change.Entity != "transaction" && change.Entity != "category" && change.Entity != "budget" { - return errors.New("entity must be transaction, category, or budget") - } - if len(change.ID) < 1 || len(change.ID) > 128 { - return errors.New("record id is invalid") - } - if change.UpdatedAt.IsZero() { - return errors.New("updatedAt is required") - } - if change.UpdatedAt.After(time.Now().UTC().Add(24 * time.Hour)) { - return errors.New("updatedAt is too far in the future") - } - if !change.Deleted && (len(change.Payload) == 0 || !json.Valid(change.Payload)) { - return errors.New("payload is required for active records") - } - if len(change.Payload) > 256*1024 { - return errors.New("payload is too large") - } - return nil -} - -func applyChange(r *http.Request, tx *sql.Tx, userID string, incoming syncChange) error { - var currentUpdated string - var currentVersion int64 - err := tx.QueryRowContext(r.Context(), `SELECT updated_at,version FROM records WHERE user_id=? AND entity=? AND record_id=?`, userID, incoming.Entity, incoming.ID).Scan(¤tUpdated, ¤tVersion) - if err != nil && !errors.Is(err, sql.ErrNoRows) { - return err - } - if err == nil { - parsed, parseErr := time.Parse(time.RFC3339Nano, currentUpdated) - if parseErr != nil { - return parseErr - } - if !incoming.UpdatedAt.After(parsed) { - return nil - } - } - version := currentVersion + 1 - updated := incoming.UpdatedAt.UTC().Format(time.RFC3339Nano) - var payload any - if !incoming.Deleted { - payload = string(incoming.Payload) - } - _, err = tx.ExecContext(r.Context(), `INSERT INTO records(user_id,entity,record_id,payload,updated_at,deleted,version) VALUES(?,?,?,?,?,?,?) - ON CONFLICT(user_id,entity,record_id) DO UPDATE SET payload=excluded.payload,updated_at=excluded.updated_at,deleted=excluded.deleted,version=excluded.version`, - userID, incoming.Entity, incoming.ID, payload, updated, incoming.Deleted, version) - if err != nil { - return err - } - _, err = tx.ExecContext(r.Context(), `INSERT INTO changes(user_id,entity,record_id,payload,updated_at,deleted,version) VALUES(?,?,?,?,?,?,?)`, userID, incoming.Entity, incoming.ID, payload, updated, incoming.Deleted, version) - return err -} - -func loadChanges(r *http.Request, tx *sql.Tx, userID string, after int64) ([]syncChange, int64, bool, error) { - rows, err := tx.QueryContext(r.Context(), `SELECT sequence,entity,record_id,payload,updated_at,deleted,version FROM changes WHERE user_id=? AND sequence>? ORDER BY sequence ASC LIMIT ?`, userID, after, syncPageSize+1) - if err != nil { - return nil, after, false, err - } - defer rows.Close() - result := make([]syncChange, 0) - cursor := after - hasMore := false - for rows.Next() { - if len(result) == syncPageSize { - hasMore = true - break - } - var item syncChange - var payload sql.NullString - var updated string - if err := rows.Scan(&item.Sequence, &item.Entity, &item.ID, &payload, &updated, &item.Deleted, &item.Version); err != nil { - return nil, after, false, err - } - item.UpdatedAt, err = time.Parse(time.RFC3339Nano, updated) - if err != nil { - return nil, after, false, err - } - if payload.Valid { - item.Payload = json.RawMessage(payload.String) - } - cursor = item.Sequence - result = append(result, item) - } - return result, cursor, hasMore, rows.Err() -} diff --git a/internal/httpapi/web.go b/internal/httpapi/web.go deleted file mode 100644 index d593821..0000000 --- a/internal/httpapi/web.go +++ /dev/null @@ -1,34 +0,0 @@ -package httpapi - -import ( - "embed" - "io/fs" - "net/http" - "path" - "strings" -) - -//go:embed web/* -var embeddedWeb embed.FS - -var webContent = func() http.Handler { - content, err := fs.Sub(embeddedWeb, "web") - if err != nil { - panic(err) - } - return http.FileServer(http.FS(content)) -}() - -func (api *API) webApp(w http.ResponseWriter, r *http.Request) { - if strings.HasPrefix(r.URL.Path, "/v1/") { - writeError(w, http.StatusNotFound, "not_found", "Endpoint not found") - return - } - cleaned := path.Clean(r.URL.Path) - if cleaned == "." || cleaned == "/" || cleaned == "/index.html" || cleaned == "/service-worker.js" { - w.Header().Set("Cache-Control", "no-cache") - } else { - w.Header().Set("Cache-Control", "public, max-age=3600") - } - webContent.ServeHTTP(w, r) -} diff --git a/src/database.rs b/src/database.rs index 9e8d864..07b9369 100644 --- a/src/database.rs +++ b/src/database.rs @@ -114,17 +114,10 @@ mod tests { let path = directory.join("existing.sqlite"); { let db = Connection::open(&path).unwrap(); - // Use the original schema, so a divergence between implementations - // is caught even when Rust's migration is internally consistent. - let go_source = include_str!("../internal/database/database.go"); - let schema = go_source - .split("const schema = `") - .nth(1) - .unwrap() - .split('`') - .next() + // Use the original Go schema, so a divergence is caught even when + // Rust's migration is internally consistent. + db.execute_batch(include_str!("../tests/fixtures/go_schema_v1.sql")) .unwrap(); - db.execute_batch(schema).unwrap(); db.execute_batch( "INSERT INTO users VALUES ('go-user','go@example.com','existing hash','2026-01-01T00:00:00.123456789Z'); INSERT INTO refresh_tokens(id,token_hash,user_id,expires_at,created_at) VALUES (7,'existing-token-hash','go-user','2099-01-01T00:00:00Z','2026-01-01T00:00:00Z'); diff --git a/src/server.rs b/src/server.rs index 1dde41b..b6dc94c 100644 --- a/src/server.rs +++ b/src/server.rs @@ -687,27 +687,24 @@ fn web(path: &str, headers: &HeaderMap) -> Response { } let (bytes, mime): (&'static [u8], &'static str) = match cleaned.as_str() { "/" => ( - include_bytes!("../internal/httpapi/web/index.html"), + include_bytes!("../web/index.html"), "text/html; charset=utf-8", ), "/app.js" => ( - include_bytes!("../internal/httpapi/web/app.js"), + include_bytes!("../web/app.js"), "text/javascript; charset=utf-8", ), "/service-worker.js" => ( - include_bytes!("../internal/httpapi/web/service-worker.js"), + include_bytes!("../web/service-worker.js"), "text/javascript; charset=utf-8", ), "/styles.css" => ( - include_bytes!("../internal/httpapi/web/styles.css"), + include_bytes!("../web/styles.css"), "text/css; charset=utf-8", ), - "/icon.svg" => ( - include_bytes!("../internal/httpapi/web/icon.svg"), - "image/svg+xml", - ), + "/icon.svg" => (include_bytes!("../web/icon.svg"), "image/svg+xml"), "/manifest.webmanifest" => ( - include_bytes!("../internal/httpapi/web/manifest.webmanifest"), + include_bytes!("../web/manifest.webmanifest"), "text/plain; charset=utf-8", ), _ => return plain(404, "404 page not found\n"), diff --git a/internal/database/database.go b/tests/fixtures/go_schema_v1.sql similarity index 56% rename from internal/database/database.go rename to tests/fixtures/go_schema_v1.sql index b1c001c..25dec1a 100644 --- a/internal/database/database.go +++ b/tests/fixtures/go_schema_v1.sql @@ -1,43 +1,5 @@ -package database - -import ( - "context" - "database/sql" - "fmt" - "os" - "path/filepath" - "time" - - _ "modernc.org/sqlite" -) - -func Open(path string) (*sql.DB, error) { - directory := filepath.Dir(path) - if directory != "." { - if err := os.MkdirAll(directory, 0o750); err != nil { - return nil, fmt.Errorf("create database directory: %w", err) - } - } - db, err := sql.Open("sqlite", path+"?_pragma=foreign_keys(1)&_pragma=journal_mode(WAL)&_pragma=busy_timeout(5000)") - if err != nil { - return nil, err - } - db.SetMaxOpenConns(1) - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - if err := db.PingContext(ctx); err != nil { - _ = db.Close() - return nil, err - } - if err := migrate(ctx, db); err != nil { - _ = db.Close() - return nil, err - } - return db, nil -} - -func migrate(ctx context.Context, db *sql.DB) error { - const schema = ` +-- SQLite schema created by the original Go server (v1.0.0, internal/database/database.go). +-- Rust must keep opening databases with exactly this schema; do not edit. CREATE TABLE IF NOT EXISTS users ( id TEXT PRIMARY KEY, email TEXT NOT NULL UNIQUE COLLATE NOCASE, @@ -74,7 +36,3 @@ CREATE TABLE IF NOT EXISTS changes ( version INTEGER NOT NULL ); CREATE INDEX IF NOT EXISTS changes_user_sequence_idx ON changes(user_id, sequence); -` - _, err := db.ExecContext(ctx, schema) - return err -} diff --git a/tools/compatibility.py b/tools/compatibility.py index f68bb49..936f42a 100644 --- a/tools/compatibility.py +++ b/tools/compatibility.py @@ -1,6 +1,13 @@ #!/usr/bin/env python3 -"""Black-box Go/Rust compatibility and bilateral SQLite takeover checks (stdlib only).""" +"""Black-box HTTP/JSON regression checks against the recorded Go reference (stdlib only). + +compatibility_expected.txt holds the observable responses of the original Go +server (v1.0.0), which the Apple and Android clients were built against. Any +difference is a client-visible API change. After an intentional change, review +the diff and re-record with --update. +""" import argparse +import ast import base64 import concurrent.futures import contextlib @@ -9,6 +16,7 @@ import hashlib import hmac import json import os +import pprint from pathlib import Path import socket import sqlite3 @@ -17,6 +25,7 @@ import tempfile import time ROOT = Path(__file__).resolve().parents[1] +EXPECTED = Path(__file__).with_name('compatibility_expected.txt') SECRET = 'compatibility-test-secret-not-for-deployment-0123456789' PASSWORD = 'compatibility password' @@ -370,38 +379,52 @@ def raw_json_scenarios(binary, database): return observed +def web_assets(value): + """Stand in for embedded web files, so the reference survives web client edits.""" + if isinstance(value, bytes): + for asset in sorted((ROOT / 'web').iterdir()): + if value == asset.read_bytes(): + return ('web asset', asset.name) + return value + if isinstance(value, dict): + return {k: web_assets(v) for k, v in value.items()} + if isinstance(value, (list, tuple)): + return type(value)(web_assets(v) for v in value) + return value + + def main(): parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('--go-binary', type=Path) - parser.add_argument('--rust-binary', type=Path, default=ROOT / 'target/debug/balance-server') + parser.add_argument('--binary', type=Path, default=ROOT / 'target/debug/balance-server') + parser.add_argument('--update', action='store_true', + help=f'record the responses as the new reference in {EXPECTED.name}') args = parser.parse_args() + binary = args.binary.resolve() + assert binary.is_file(), f'Build first: cargo build --locked (missing {binary})' with tempfile.TemporaryDirectory(prefix='balance-compatibility-') as directory: directory = Path(directory) - go = args.go_binary.resolve() if args.go_binary else directory / 'go-server' - if args.go_binary is None: - subprocess.run(['go','build','-o',str(go),'./cmd/balance-server'], cwd=ROOT, check=True) - rust = args.rust_binary.resolve() - assert rust.is_file(), f'Build Rust first: cargo build --locked (missing {rust})' - print('Running Go reference scenarios...', flush=True) - expected = scenario(go, directory / 'go.db') - print('Running Rust scenarios...', flush=True) - actual = scenario(rust, directory / 'rust.db') - for key in expected: - assert actual[key] == expected[key], f'Differential mismatch: {key}\nGo: {expected[key]!r}\nRust: {actual[key]!r}' - print('Comparing HTTP/JSON edge cases...', flush=True) - expected = edge_scenarios(go, directory / 'go-edge.db') - actual = edge_scenarios(rust, directory / 'rust-edge.db') - for key in expected: - assert actual[key] == expected[key], f'Differential mismatch: {key}\nGo: {expected[key]!r}\nRust: {actual[key]!r}' - print('Comparing raw JSON payload and Unicode preservation...', flush=True) - expected = raw_json_scenarios(go, directory / 'go-raw.db') - actual = raw_json_scenarios(rust, directory / 'rust-raw.db') - for key in expected: - assert actual[key] == expected[key], f'Differential mismatch: {key}\nGo: {expected[key]!r}\nRust: {actual[key]!r}' - for first, second, name in [(go,rust,'go-rust'),(rust,go,'rust-go')]: - print(f'Checking {name} SQLite takeover and rollback...', flush=True) - takeover(first, second, directory / f'{name}.db') - print('PASS: HTTP differential scenarios and bilateral SQLite takeover/rollback') + actual = {} + print('Running HTTP/JSON scenarios...', flush=True) + actual['scenario'] = scenario(binary, directory / 'scenario.db') + print('Running HTTP/JSON edge cases...', flush=True) + actual['edge'] = edge_scenarios(binary, directory / 'edge.db') + print('Running raw JSON payload and Unicode preservation...', flush=True) + actual['raw'] = raw_json_scenarios(binary, directory / 'raw.db') + actual = web_assets(actual) + if args.update: + EXPECTED.write_text(pprint.pformat(actual, width=100) + '\n') + print(f'Recorded {EXPECTED.relative_to(ROOT)}') + else: + expected = ast.literal_eval(EXPECTED.read_text()) + for group in expected: + for key in expected[group]: + assert actual[group].get(key) == expected[group][key], ( + f'Reference mismatch: {group} {key}\n' + f'Expected: {expected[group][key]!r}\nActual: {actual[group].get(key)!r}') + assert actual[group].keys() == expected[group].keys(), f'Scenario set changed in {group}; re-record with --update' + print('Checking SQLite persistence across restarts...', flush=True) + takeover(binary, binary, directory / 'restart.db') + print('PASS: HTTP/JSON reference scenarios and SQLite persistence') if __name__ == '__main__': diff --git a/tools/compatibility_expected.txt b/tools/compatibility_expected.txt new file mode 100644 index 0000000..7f5749e --- /dev/null +++ b/tools/compatibility_expected.txt @@ -0,0 +1,769 @@ +{'edge': {'expired refresh': (401, + {}, + {'error': {'code': 'invalid_refresh_token', + 'message': 'Refresh token is invalid or expired'}}), + ('DELETE', '/app.js'): (405, + {'allow': 'GET, HEAD', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('DELETE', '/health'): (405, + {'allow': 'GET, HEAD', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('DELETE', '/v1/auth/login'): (405, + {'allow': 'GET, HEAD, POST', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('DELETE', '/v1/me'): (405, + {'allow': 'GET, HEAD', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('DELETE', '/v1/sync'): (405, + {'allow': 'GET, HEAD, POST', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('HEAD', '/app.js'): (200, {'content-type': 'text/javascript; charset=utf-8'}, b''), + ('HEAD', '/health'): (200, {'content-type': 'application/json; charset=utf-8'}, b''), + ('HEAD', '/v1/auth/login'): (404, + {'content-type': 'application/json; charset=utf-8'}, + b''), + ('HEAD', '/v1/me'): (401, {'content-type': 'application/json; charset=utf-8'}, b''), + ('HEAD', '/v1/sync'): (404, {'content-type': 'application/json; charset=utf-8'}, b''), + ('PATCH', '/app.js'): (405, + {'allow': 'GET, HEAD', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('PATCH', '/health'): (405, + {'allow': 'GET, HEAD', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('PATCH', '/v1/auth/login'): (405, + {'allow': 'GET, HEAD, POST', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('PATCH', '/v1/me'): (405, + {'allow': 'GET, HEAD', 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('PATCH', '/v1/sync'): (405, + {'allow': 'GET, HEAD, POST', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('POST', '/app.js'): (405, + {'allow': 'GET, HEAD', 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('POST', '/health'): (405, + {'allow': 'GET, HEAD', 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('POST', '/v1/auth/login'): (400, + {'content-type': 'application/json; charset=utf-8'}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('POST', '/v1/me'): (405, + {'allow': 'GET, HEAD', 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('POST', '/v1/sync'): (401, + {'content-type': 'application/json; charset=utf-8'}, + {'error': {'code': 'authorization_required', + 'message': 'Authorization Bearer token is required'}}), + ('PUT', '/app.js'): (405, + {'allow': 'GET, HEAD', 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('PUT', '/health'): (405, + {'allow': 'GET, HEAD', 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('PUT', '/v1/auth/login'): (405, + {'allow': 'GET, HEAD, POST', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('PUT', '/v1/me'): (405, + {'allow': 'GET, HEAD', 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('PUT', '/v1/sync'): (405, + {'allow': 'GET, HEAD, POST', + 'content-type': 'text/plain; charset=utf-8'}, + b'Method Not Allowed\n'), + ('bearer', ''): (401, + {}, + {'error': {'code': 'authorization_required', + 'message': 'Authorization Bearer token is required'}}), + ('bearer', 'Basic bad'): (401, + {}, + {'error': {'code': 'authorization_required', + 'message': 'Authorization Bearer token is ' + 'required'}}), + ('bearer', 'Bearer '): (401, + {}, + {'error': {'code': 'authorization_required', + 'message': 'Authorization Bearer token is required'}}), + ('bearer', 'Bearer bad'): (401, + {}, + {'error': {'code': 'invalid_token', + 'message': 'Access token is invalid or expired'}}), + ('bearer', 'bearer bad'): (401, + {}, + {'error': {'code': 'authorization_required', + 'message': 'Authorization Bearer token is ' + 'required'}}), + ('login', 0): (401, + {}, + {'error': {'code': 'invalid_credentials', + 'message': 'Email or password is incorrect'}}), + ('login', 1): (401, + {}, + {'error': {'code': 'invalid_credentials', + 'message': 'Email or password is incorrect'}}), + ('login', 2): (401, + {}, + {'error': {'code': 'invalid_credentials', + 'message': 'Email or password is incorrect'}}), + ('login', 3): (401, + {}, + {'error': {'code': 'invalid_credentials', + 'message': 'Email or password is incorrect'}}), + ('login', 4): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('login', 5): (401, + {}, + {'error': {'code': 'invalid_credentials', + 'message': 'Email or password is incorrect'}}), + ('login', 6): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('logout JSON', 0): (204, {}, b''), + ('logout JSON', 1): (204, {}, b''), + ('logout JSON', 2): (204, {}, b''), + ('logout JSON', 3): (204, {}, b''), + ('logout JSON', 4): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('logout JSON', 5): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('password boundary', 0): 201, + ('password boundary', 1): 201, + ('password boundary', 2): (400, + {}, + {'error': {'code': 'invalid_password', + 'message': 'password is too long'}}), + ('path', '/%2e%2e/app.js'): (200, + {'cache-control': 'public, max-age=3600', + 'content-type': 'text/javascript; charset=utf-8'}, + ('web asset', 'app.js')), + ('path', '/%61pp.js'): (200, + {'cache-control': 'public, max-age=3600', + 'content-type': 'text/javascript; charset=utf-8'}, + ('web asset', 'app.js')), + ('path', '//app.js'): (307, + {'content-type': 'text/html; charset=utf-8', + 'location': '/app.js'}, + b'Temporary Redirect.\n\n'), + ('path', '/a/../app.js'): (307, + {'content-type': 'text/html; charset=utf-8', + 'location': '/app.js'}, + b'Temporary Redirect.\n\n'), + ('path', '/app.js/'): (301, + {'cache-control': 'public, max-age=3600', 'location': '../app.js'}, + b''), + ('path', '/index.html'): (301, {'cache-control': 'no-cache', 'location': './'}, b''), + ('path', '/v1'): (404, + {'content-type': 'text/plain; charset=utf-8'}, + b'404 page not found\n'), + ('path', '/v1/'): (404, + {'cache-control': 'no-store', + 'content-type': 'application/json; charset=utf-8'}, + {'error': {'code': 'not_found', 'message': 'Endpoint not found'}}), + ('path', '/v1/../app.js'): (307, + {'cache-control': 'no-store', + 'content-type': 'text/html; charset=utf-8', + 'location': '/app.js'}, + b'Temporary Redirect.\n\n'), + ('path', '/v1//me'): (307, + {'cache-control': 'no-store', + 'content-type': 'text/html; charset=utf-8', + 'location': '/v1/me'}, + b'Temporary Redirect.\n\n'), + ('range', 'bytes=-10'): (206, + {'accept-ranges': 'bytes', + 'content-range': 'bytes 1112-1121/1122', + 'content-type': 'image/svg+xml'}, + b'/>\n\n'), + ('range', 'bytes=0-0,2-2'): (200, + {'accept-ranges': 'bytes', 'content-type': 'image/svg+xml'}, + ('web asset', 'icon.svg')), + ('range', 'bytes=0-9'): (206, + {'accept-ranges': 'bytes', + 'content-range': 'bytes 0-9/1122', + 'content-type': 'image/svg+xml'}, + b'\n Balance\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n'), + ('range', 'bytes=10-1'): (416, + {'content-type': 'text/plain; charset=utf-8'}, + b'invalid range\n'), + ('range', 'bytes=99999999-'): (416, + {'content-range': 'bytes */1122', + 'content-type': 'text/plain; charset=utf-8'}, + b'invalid range: failed to overlap\n'), + ('range', 'bytes=bad'): (416, + {'content-type': 'text/plain; charset=utf-8'}, + b'invalid range\n'), + ('range', 'items=0-1'): (416, + {'content-type': 'text/plain; charset=utf-8'}, + b'invalid range\n'), + ('raw sync', 0): (200, {}, {'changes': [], 'cursor': 0, 'hasMore': False}), + ('raw sync', 1): (200, {}, {'changes': [], 'cursor': 0, 'hasMore': False}), + ('raw sync', 2): (200, {}, {'changes': [], 'cursor': 0, 'hasMore': False}), + ('raw sync', 3): (200, {}, {'changes': [], 'cursor': 0, 'hasMore': False}), + ('raw sync', 4): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('raw sync', 5): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('raw sync', 6): (400, + {}, + {'error': {'code': 'invalid_change', + 'message': 'entity must be transaction, category, or ' + 'budget'}}), + ('raw sync', 7): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('raw sync', 8): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('raw sync', 9): (200, {}, {'changes': [], 'cursor': 0, 'hasMore': False}), + ('raw sync', 10): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('refresh JSON', 0): (400, + {}, + {'error': {'code': 'refresh_token_required', + 'message': 'Refresh token is required'}}), + ('refresh JSON', 1): (400, + {}, + {'error': {'code': 'refresh_token_required', + 'message': 'Refresh token is required'}}), + ('refresh JSON', 2): (400, + {}, + {'error': {'code': 'refresh_token_required', + 'message': 'Refresh token is required'}}), + ('refresh JSON', 3): (401, + {}, + {'error': {'code': 'invalid_refresh_token', + 'message': 'Refresh token is invalid or expired'}}), + ('refresh JSON', 4): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('refresh JSON', 5): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('register', 0): (400, + {}, + {'error': {'code': 'invalid_email', + 'message': 'Enter a valid email address'}}), + ('register', 1): (400, + {}, + {'error': {'code': 'invalid_email', + 'message': 'Enter a valid email address'}}), + ('register', 2): (400, + {}, + {'error': {'code': 'invalid_email', + 'message': 'Enter a valid email address'}}), + ('register', 3): (400, + {}, + {'error': {'code': 'invalid_email', + 'message': 'Enter a valid email address'}}), + ('register', 4): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('register', 5): (400, + {}, + {'error': {'code': 'invalid_email', + 'message': 'Enter a valid email address'}}), + ('register', 6): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('signed claims', 0): (200, {}, {'email': 'e', 'id': 'u'}), + ('signed claims', 1): (200, {}, {'email': 'e', 'id': 'u'}), + ('signed claims', 2): (200, {}, {'email': '', 'id': 'u'}), + ('signed claims', 3): (200, {}, {'email': '', 'id': 'u'}), + ('signed claims', 4): (401, + {}, + {'error': {'code': 'invalid_token', + 'message': 'Access token is invalid or expired'}}), + ('signed claims', 5): (401, + {}, + {'error': {'code': 'invalid_token', + 'message': 'Access token is invalid or expired'}}), + ('signed claims', 6): (401, + {}, + {'error': {'code': 'invalid_token', + 'message': 'Access token is invalid or expired'}}), + ('sync validation', 0): (400, + {}, + {'error': {'code': 'invalid_change', + 'message': 'entity must be transaction, category, or ' + 'budget'}}), + ('sync validation', 1): (400, + {}, + {'error': {'code': 'invalid_change', + 'message': 'record id is invalid'}}), + ('sync validation', 2): (200, + {}, + {'changes': [{'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': None, + 'sequence': 1, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}], + 'cursor': 1, + 'hasMore': False}), + ('sync validation', 3): (200, + {}, + {'changes': [{'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': None, + 'sequence': 1, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}], + 'cursor': 1, + 'hasMore': False}), + ('sync validation', 4): (400, + {}, + {'error': {'code': 'invalid_change', + 'message': 'updatedAt is required'}}), + ('sync validation', 5): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('sync validation', 6): (200, + {}, + {'changes': [{'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': None, + 'sequence': 1, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}], + 'cursor': 1, + 'hasMore': False}), + ('sync validation', 7): (400, + {}, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}), + ('sync validation', 8): (200, + {}, + {'changes': [{'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': None, + 'sequence': 1, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}, + {'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': {'amount': 125.5, + 'nested': [None, True, 1], + 'note': 'Тест €'}, + 'sequence': 2, + 'updatedAt': '2025-01-01T00:00:00.123456789Z', + 'version': 2}], + 'cursor': 2, + 'hasMore': False}), + ('sync validation', 9): (200, + {}, + {'changes': [{'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': None, + 'sequence': 1, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}, + {'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': {'amount': 125.5, + 'nested': [None, True, 1], + 'note': 'Тест €'}, + 'sequence': 2, + 'updatedAt': '2025-01-01T00:00:00.123456789Z', + 'version': 2}], + 'cursor': 2, + 'hasMore': False}), + ('sync validation', 10): (200, + {}, + {'changes': [{'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': None, + 'sequence': 1, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}, + {'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': {'amount': 125.5, + 'nested': [None, True, 1], + 'note': 'Тест €'}, + 'sequence': 2, + 'updatedAt': '2025-01-01T00:00:00.123456789Z', + 'version': 2}], + 'cursor': 2, + 'hasMore': False}), + ('sync validation', 11): (200, + {}, + {'changes': [{'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': None, + 'sequence': 1, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}, + {'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': {'amount': 125.5, + 'nested': [None, True, 1], + 'note': 'Тест €'}, + 'sequence': 2, + 'updatedAt': '2025-01-01T00:00:00.123456789Z', + 'version': 2}], + 'cursor': 2, + 'hasMore': False}), + ('sync validation', 12): (400, + {}, + {'error': {'code': 'invalid_change', + 'message': 'updatedAt is too far in the future'}}), + ('sync validation', 13): (400, + {}, + {'error': {'code': 'invalid_change', + 'message': 'payload is too large'}})}, + 'raw': {'raw database payloads': [(b'wire-0', + b'{ "duplicate":1, "duplicate":2, "n":123456789012345678901234' + b'567890, "big":1e999 }'), + (b'wire-1', + b'{"lone":"\\ud800","low":"\\udfff","pair":"\\ud83d\\ude00"}'), + (b'wire-2', b'{"invalid":"\xff\xc0\xed\xa0\x80"}'), + (b'wire-3', + b'{"html":"<>&","separator":"\xe2\x80\xa8\xe2\x80\xa9"}'), + (b'wire-4', + b'{"nested":[{"payload":{"id":"inner"}},"quote\\"end",null,true' + b']}'), + (b'\xef\xbf\xbd', b'{}')], + ('unicode credentials', 0): (401, + {'error': {'code': 'invalid_credentials', + 'message': 'Email or password is incorrect'}}), + ('unicode credentials', 1): (401, + {'error': {'code': 'invalid_credentials', + 'message': 'Email or password is incorrect'}}), + ('unicode id', 0): {'changes': [{'deleted': False, + 'entity': 'category', + 'id': '�', + 'payload': {}, + 'sequence': 6, + 'updatedAt': '2025-01-02T00:00:00Z', + 'version': 1}], + 'cursor': 6, + 'hasMore': False}, + ('unicode id', 1): {'changes': [], 'cursor': 6, 'hasMore': False}, + ('wire payload', 0): b'{"duplicate":1,"duplicate":2,"n":123456789012345678901234567890,' + b'"big":1e999}', + ('wire payload', 1): b'{"lone":"\\ud800","low":"\\udfff","pair":"\\ud83d\\ude00"}', + ('wire payload', 2): b'{"invalid":"\xff\xc0\xed\xa0\x80"}', + ('wire payload', 3): b'{"html":"\\u003c\\u003e\\u0026","separator":"\\u2028\\u2029"}', + ('wire payload', 4): b'{"nested":[{"payload":{"id":"inner"}},"quote\\"end",null,true]}'}, + 'scenario': {'/': (200, + {'cache-control': 'no-cache', + 'content-security-policy': "default-src 'self'; base-uri 'none'; connect-src " + "'self'; font-src 'self'; form-action 'self'; " + "frame-ancestors 'none'; img-src 'self' data:; " + "manifest-src 'self'; script-src 'self'; style-src " + "'self'; worker-src 'self'", + 'content-type': 'text/html; charset=utf-8', + 'permissions-policy': 'camera=(), microphone=(), geolocation=(), payment=()', + 'referrer-policy': 'no-referrer', + 'x-content-type-options': 'nosniff', + 'x-frame-options': 'DENY'}, + ('web asset', 'index.html')), + '/app.js': (200, + {'cache-control': 'public, max-age=3600', + 'content-security-policy': "default-src 'self'; base-uri 'none'; " + "connect-src 'self'; font-src 'self'; " + "form-action 'self'; frame-ancestors 'none'; " + "img-src 'self' data:; manifest-src 'self'; " + "script-src 'self'; style-src 'self'; " + "worker-src 'self'", + 'content-type': 'text/javascript; charset=utf-8', + 'permissions-policy': 'camera=(), microphone=(), geolocation=(), ' + 'payment=()', + 'referrer-policy': 'no-referrer', + 'x-content-type-options': 'nosniff', + 'x-frame-options': 'DENY'}, + ('web asset', 'app.js')), + '/icon.svg': (200, + {'cache-control': 'public, max-age=3600', + 'content-security-policy': "default-src 'self'; base-uri 'none'; " + "connect-src 'self'; font-src 'self'; " + "form-action 'self'; frame-ancestors " + "'none'; img-src 'self' data:; " + "manifest-src 'self'; script-src 'self'; " + "style-src 'self'; worker-src 'self'", + 'content-type': 'image/svg+xml', + 'permissions-policy': 'camera=(), microphone=(), geolocation=(), ' + 'payment=()', + 'referrer-policy': 'no-referrer', + 'x-content-type-options': 'nosniff', + 'x-frame-options': 'DENY'}, + ('web asset', 'icon.svg')), + '/manifest.webmanifest': (200, + {'cache-control': 'public, max-age=3600', + 'content-security-policy': "default-src 'self'; base-uri " + "'none'; connect-src 'self'; " + "font-src 'self'; form-action " + "'self'; frame-ancestors " + "'none'; img-src 'self' data:; " + "manifest-src 'self'; " + "script-src 'self'; style-src " + "'self'; worker-src 'self'", + 'content-type': 'text/plain; charset=utf-8', + 'permissions-policy': 'camera=(), microphone=(), ' + 'geolocation=(), payment=()', + 'referrer-policy': 'no-referrer', + 'x-content-type-options': 'nosniff', + 'x-frame-options': 'DENY'}, + ('web asset', 'manifest.webmanifest')), + '/missing-file': (404, + {'cache-control': None, + 'content-security-policy': "default-src 'self'; base-uri 'none'; " + "connect-src 'self'; font-src 'self'; " + "form-action 'self'; frame-ancestors " + "'none'; img-src 'self' data:; " + "manifest-src 'self'; script-src " + "'self'; style-src 'self'; worker-src " + "'self'", + 'content-type': 'text/plain; charset=utf-8', + 'permissions-policy': 'camera=(), microphone=(), geolocation=(), ' + 'payment=()', + 'referrer-policy': 'no-referrer', + 'x-content-type-options': 'nosniff', + 'x-frame-options': 'DENY'}, + b'404 page not found\n'), + '/service-worker.js': (200, + {'cache-control': 'no-cache', + 'content-security-policy': "default-src 'self'; base-uri " + "'none'; connect-src 'self'; " + "font-src 'self'; form-action " + "'self'; frame-ancestors 'none'; " + "img-src 'self' data:; " + "manifest-src 'self'; script-src " + "'self'; style-src 'self'; " + "worker-src 'self'", + 'content-type': 'text/javascript; charset=utf-8', + 'permissions-policy': 'camera=(), microphone=(), ' + 'geolocation=(), payment=()', + 'referrer-policy': 'no-referrer', + 'x-content-type-options': 'nosniff', + 'x-frame-options': 'DENY'}, + ('web asset', 'service-worker.js')), + '/styles.css': (200, + {'cache-control': 'public, max-age=3600', + 'content-security-policy': "default-src 'self'; base-uri 'none'; " + "connect-src 'self'; font-src 'self'; " + "form-action 'self'; frame-ancestors " + "'none'; img-src 'self' data:; " + "manifest-src 'self'; script-src 'self'; " + "style-src 'self'; worker-src 'self'", + 'content-type': 'text/css; charset=utf-8', + 'permissions-policy': 'camera=(), microphone=(), geolocation=(), ' + 'payment=()', + 'referrer-policy': 'no-referrer', + 'x-content-type-options': 'nosniff', + 'x-frame-options': 'DENY'}, + ('web asset', 'styles.css')), + 'GET /v1/me None': (401, + {'error': {'code': 'authorization_required', + 'message': 'Authorization Bearer token is required'}}), + 'GET /v1/missing None': (404, + {'error': {'code': 'not_found', + 'message': 'Endpoint not found'}}), + "POST /v1/auth/login {'email': 'User@Example.COM', 'password': 'compatibility password'}": (401, + {'error': {'code': 'invalid_credentials', + 'message': 'Email ' + 'or ' + 'password ' + 'is ' + 'incorrect'}}), + "POST /v1/auth/login {'unknown': 1}": (400, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not ' + 'valid JSON'}}), + "POST /v1/auth/refresh {'refreshToken': 'bad'}": (401, + {'error': {'code': 'invalid_refresh_token', + 'message': 'Refresh ' + 'token is ' + 'invalid or ' + 'expired'}}), + 'POST /v1/auth/refresh {}': (400, + {'error': {'code': 'refresh_token_required', + 'message': 'Refresh token is required'}}), + "POST /v1/auth/register {'email': 'a@b', 'password': 'short'}": (400, + {'error': {'code': 'invalid_password', + 'message': 'password ' + 'must ' + 'contain ' + 'at ' + 'least ' + '8 ' + 'characters'}}), + "POST /v1/auth/register {'email': 'bad', 'password': 'compatibility password'}": (400, + {'error': {'code': 'invalid_email', + 'message': 'Enter ' + 'a ' + 'valid ' + 'email ' + 'address'}}), + 'deleted': {'changes': [{'deleted': True, + 'entity': 'transaction', + 'id': 'one', + 'sequence': 5, + 'updatedAt': '2025-01-02T00:00:00Z', + 'version': 2}], + 'cursor': 5, + 'hasMore': False}, + 'duplicate': {'error': {'code': 'email_exists', + 'message': 'An account with this email already exists'}}, + 'expired access': {'error': {'code': 'invalid_token', + 'message': 'Access token is invalid or expired'}}, + 'first': {'changes': [{'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': None, + 'sequence': 1, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}, + {'deleted': False, + 'entity': 'transaction', + 'id': 'one', + 'payload': {'amount': 125.5, + 'nested': [None, True, 1], + 'note': 'Тест €'}, + 'sequence': 2, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}, + {'deleted': False, + 'entity': 'category', + 'id': 'cat', + 'payload': {'amount': 125.5, + 'nested': [None, True, 1], + 'note': 'Тест €'}, + 'sequence': 3, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}, + {'deleted': False, + 'entity': 'budget', + 'id': 'budget', + 'payload': {'amount': 125.5, + 'nested': [None, True, 1], + 'note': 'Тест €'}, + 'sequence': 4, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}], + 'cursor': 4, + 'hasMore': False}, + 'https://allowed.example': (204, + {'access-control-allow-headers': 'Authorization, ' + 'Content-Type', + 'access-control-allow-methods': 'GET, POST, OPTIONS', + 'access-control-allow-origin': 'https://allowed.example', + 'vary': 'Origin'}), + 'https://denied.example': (204, {}), + 'idempotent': {'changes': [], 'cursor': 4, 'hasMore': False}, + 'invalid bearer': {'error': {'code': 'invalid_token', + 'message': 'Access token is invalid or expired'}}, + "invalid sync {'changes': [{'entity': 'category', 'id': 'x'}]}": (400, + {'error': {'code': 'invalid_change', + 'message': 'updatedAt ' + 'is ' + 'required'}}), + "invalid sync {'changes': [{'entity': 'transaction', 'id': '', 'updatedAt': '2025-01-01T00:00:00Z', 'payload': {'amount': 125.5, 'note': 'Тест €', 'nested': [None, True, 1]}}]}": (400, + {'error': {'code': 'invalid_change', + 'message': 'record ' + 'id ' + 'is ' + 'invalid'}}), + "invalid sync {'changes': [{'entity': 'transaction', 'id': 'x', 'updatedAt': '2025-01-01T00:00:00Z', 'payload': None}]}": (200, + {'changes': [{'deleted': False, + 'entity': 'transaction', + 'id': 'x', + 'payload': None, + 'sequence': 1, + 'updatedAt': '2025-01-01T00:00:00Z', + 'version': 1}], + 'cursor': 1, + 'hasMore': False}), + "invalid sync {'changes': [{'entity': 'unknown', 'id': 'x', 'updatedAt': '2025-01-01T00:00:00Z', 'payload': {'amount': 125.5, 'note': 'Тест €', 'nested': [None, True, 1]}}]}": (400, + {'error': {'code': 'invalid_change', + 'message': 'entity ' + 'must ' + 'be ' + 'transaction, ' + 'category, ' + 'or ' + 'budget'}}), + "invalid sync {'cursor': -1}": (400, + {'error': {'code': 'invalid_sync_request', + 'message': 'Cursor or change count is ' + 'invalid'}}), + "invalid sync {'extra': 1}": (400, + {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid ' + 'JSON'}}), + 'logout refresh': {'error': {'code': 'invalid_refresh_token', + 'message': 'Refresh token is invalid or expired'}}, + 'malformed': {'error': {'code': 'invalid_json', + 'message': 'Request body is not valid JSON'}}, + 'pagination': (505, 510), + 'rate limit': {'error': {'code': 'rate_limited', + 'message': 'Too many authentication requests'}}, + 'refresh replay': {'error': {'code': 'invalid_refresh_token', + 'message': 'Refresh token is invalid or expired'}}, + 'registration disabled': {'error': {'code': 'registration_disabled', + 'message': 'Registration is disabled'}}}} diff --git a/internal/httpapi/web/app.js b/web/app.js similarity index 100% rename from internal/httpapi/web/app.js rename to web/app.js diff --git a/internal/httpapi/web/icon.svg b/web/icon.svg similarity index 100% rename from internal/httpapi/web/icon.svg rename to web/icon.svg diff --git a/internal/httpapi/web/index.html b/web/index.html similarity index 100% rename from internal/httpapi/web/index.html rename to web/index.html diff --git a/internal/httpapi/web/manifest.webmanifest b/web/manifest.webmanifest similarity index 100% rename from internal/httpapi/web/manifest.webmanifest rename to web/manifest.webmanifest diff --git a/internal/httpapi/web/service-worker.js b/web/service-worker.js similarity index 100% rename from internal/httpapi/web/service-worker.js rename to web/service-worker.js diff --git a/internal/httpapi/web/styles.css b/web/styles.css similarity index 100% rename from internal/httpapi/web/styles.css rename to web/styles.css