Dev přihlašovací údaje — jeden soubor pro každý test
Všechny přihlašovací údaje, které testovací sady potřebují, žijí v jediném souboru ignorovaném gitem:
secrets/dev-credentials.local.json. Zkopírujte z commitované šablony a vyplňte, co máte — každá hodnota je volitelná a testy, které potřebují chybějící hodnotu, čistě přeskočí.
mkdir -p secrets
cp dev-credentials.example.json secrets/dev-credentials.local.json
# upravte secrets/dev-credentials.local.json
Co každá testovací úroveň čte
| Úroveň | Potřebuje | Od | |
|---|---|---|---|
Unit (tests/UnitTests) | nic | — deterministické, bez tajemství, bez sítě | |
Integration (tests/IntegrationTests) | Postgres | Testcontainers (Docker) — automaticky | |
Live copy (tests/IntegrationTests/CopyLive) | OpenAPI aplikace + cache tokenů | OpenApi.App, OpenApi.Tokens | |
E2E onboarding (tests/E2ETests/CopyLive) | OpenAPI aplikace + cID přihlášení | OpenApi.App, OpenApi.Cids | |
E2E reálný běh/backtest (CBotRealRunBacktestTests) | cID přihlášení + demo číslo účtu | OpenApi.Cids[].{Username,Password,Accounts} | |
| AI funkce | Anthropic klíč | Ai.ApiKey (není nastaveno ⇒ AI funkce vracejí disabled, aplikace stále běží) | |
Live economic-calendar sources (tests/IntegrationTests/Calendar/CalendarSourceLiveTests) | FRED / BLS API keys | Calendar.FredApiKey, Calendar.BlsApiKey (unset ⇒ that source's live test skips; the keyless central-bank schedule still works) |
Schema
Viz dev-credentials.example.json v kořeni repozitáře. Sekce:
-
OpenApi.App—{ ClientId, ClientSecret }cTrader Open API aplikace. -
OpenApi.Cids— cTrader ID přihlášení používaná headless OAuth onboardingu. Každá položka také nese poleAccounts— cTrader obchodní čísla účtů (přihlašovací/číslo účtu, např.3635817) pod tím cID, které je testovací infrastruktura oprávněna propojit do aplikace a ovládat.CBotRealRunBacktestTestsčte první položku, která má neprázdné poleAccounts, přidá toto cID + účet do aplikace a pak skutečně spustí a backtestuje cBot na něm. Sem dávejte pouze demo účty — nikdy živý účet; testy běhu/backtestu umisťují reálné příkazy na jakýkoli účet, který uvedete. Prázdné/chybějícíAccounts⇒ test reálného běhu/backtestu čistě přeskočí. -
OpenApi.Tokens— cache tokenů pro více cID (jedna položka na autorizované cID s jeho refresh/access tokenem + seznam účtů). Automaticky zapisováno onboardingu a krokem obnovy tokenu; zřídka editováno ručně. -
Owner— seed vlastník přihlášení pro aplikaci pod E2E. -
Database.ConnectionString— pouze když směřujete testy na externí Postgres místo Testcontainers. -
Ai.ApiKey— Anthropic API klíč pro AI funkce. -
Calendar.FredApiKey— FRED (St. Louis Fed) API key. The primary economic-calendar value source (interest rates, inflation, employment). -
Calendar.BlsApiKey— BLS (US Bureau of Labor Statistics) v2 registration key (CPI, PPI, employment, JOLTS). Absent ⇒ the low-quota public tier.Both feed the exact
FredSource/BlsSourcethe ingestion worker uses. With a key present,CalendarSourceLiveTestshits the real provider and asserts observations come back; absent, that source's test skips cleanly. The app also reads these at runtime viaApp:Calendar:FredApiKey/App:Calendar:BlsApiKey(environment variables override — e.g.FRED_API_KEY,BLS_API_KEY).
Priorita
- Proměnné prostředí přepisují vše (např.
App__OwnerPassword,App:Ai:ApiKey). secrets/dev-credentials.local.json— sjednocený soubor (preferovaný).- Legacy split soubory —
openapi-test-app.local.json,openapi-cids.local.json,openapi-tokens.local.jsonjsou stále čteny, když sjednocený soubor chybí, takže existující stroje fungují dál. Nové setupy by měly používat jediný soubor.
Bezpečnost
secrets/a*.local.jsonjsou gitignored — nic se tu nikdy necommituje.- Testy live copy odmítají běžet proti nedemo účtům (
IsLiveúčty jsou odfiltroványLiveCopyFixture). V cache tokenů mějte pouze demo účty. - In-cluster (Kubernetes) běhy mountují soubor jako read-only Secret; obnovy tokenů jsou drženy v paměti a read-only write-back je tichý no-op.