Drop one-shot tmp/axe scripts and agent i18n scratch so the Gitea tree is deployable.
3.0 KiB
Live WooCommerce test (mock-woo WC REST)
Verdict: PASS
Date: 2026-08-04
Tenant: demo@descrybe.local → Local Demo Co (plan Enterprise, 1,000,000 credits)
API: http://127.0.0.1:8080 (restarted with parallel list build)
Worker: worker.exe claiming Woo jobs
Mock store: cmd/mock-woo on http://127.0.0.1:19090
This proves the real WooCommerce REST client path (Basic auth → /wp-json/wc/v3/*), not seed-woo-demo DB inserts.
Start mock-woo
cd f:\laragon\www\_MY\descrybe-v2\apps\api
go run ./cmd/mock-woo -addr 127.0.0.1:19090
# defaults: consumer key ck_mock_local / secret cs_mock_local
Health: GET http://127.0.0.1:19090/healthz → {"status":"ok","service":"mock-woo"}.
Point Local Demo Co at mock
Session login + CSRF, then:
| Step | HTTP | Evidence |
|---|---|---|
PUT /api/woocommerce |
200 | store_url=http://127.0.0.1:19090, is_enabled=true, has_credentials=true |
| Cap for proof (SQL) | — | sync_options.sync_limit=5 (still uses live client/batches) |
POST /api/woocommerce/test |
200 | {"status":"ok","message":"connection successful"} |
POST /api/woocommerce/sync |
202 | woocommerce sync queued |
POST /api/woocommerce/sync-orders |
202 | orders sync queued |
POST /api/woocommerce/sync-reviews |
202 | reviews sync queued |
Worker drained pending flags within ~6s:
| Badge | Result |
|---|---|
last_test_status |
ok |
last_sync_status |
success |
last_orders_sync_status |
success |
last_reviews_sync_status |
success |
Direct mock HTTP (fixture proof)
Auth: Authorization: Basic base64(ck_mock_local:cs_mock_local).
| Request | HTTP | Notes |
|---|---|---|
GET .../wp-json/wc/v3/products?per_page=1 |
200 | After product push, SKUs present (e.g. created id 1001) |
GET .../wp-json/wc/v3/orders?page=1 |
200 | 3 fixture orders (5001–5003) |
GET .../wp-json/wc/v3/products/reviews?page=1 |
200 | 2 fixture reviews (7001–7002) |
DB rows from sync (not seed)
-- Local Demo Co: mock external_ids only
SELECT count(*) FROM woo_orders WHERE external_id IN (5001,5002,5003); -- 3
SELECT count(*) FROM product_reviews WHERE external_id IN (7001,7002); -- 2
GET /api/woocommerce/orders?limit=10 → 200 with cara.buyer@example.com / external_id 5003.
GET /api/woocommerce/reviews?limit=10 → 200 with reviewer Ben Buyer / external_id 7002.
What this is / is not
| Is | Is not |
|---|---|
Live Test Connection + product batch push + orders/reviews pull via internal/woocommerce client |
WordPress/Woo docker |
Loopback HTTP allowed by SSRF (NormalizeStoreURL + SafeHTTPClient(allowLoopback=true)) |
Proof against a public merchant store |
| Suitable local staging gate for Woo connector | Substitute for production HTTPS Woo credentials |
Related: woocommerce-demo.md (seed path), store-connectors.md.