body ## Location
`src/test/TransportTest.cpp` — added to the existing `coretest` GTest binary.
## What it tests
End-to-end lifecycle of a pwsafe database opened via a `file://` URL, exercising the full transport intercept chain (`FOpen` → cache fetch → `FClose` → `store`). Deliberately uses the highest-level API (`PWScore`) rather than `PWSfileV3` directly.
## Scenario (single TEST_F)
1. **Create** a fresh `.psafe3` at a local path; open it via a `file://` URL (`NewFile` + `WriteFile`).
2. **Add Entry 1** — group `Test.Transport`, title `Entry1`, password generated by `CPasswordCharPool` / `PWPolicy`; stash generated password in a local `StringX`.
3. **Add Entry 2** — same group, title `Entry2`, known constant password.
4. **Read back Entry 1** — `PWScore::Find(group, title, user)`, assert password equals stashed value.
5. **Change Entry 1's password** — `EditEntryCommand` with updated item.
6. **Add Entry 3** — same group, title `Entry3`, any password.
7. **Save and close** — `WriteFile(url, V30)`; transport `store()` fires.
8. **Reopen** via same `file://` URL — `ReadDatabase`; assert all 3 entries present and correct.
9. **Cache vs destination** — binary compare `pws_get_cache_path(url)` vs actual file path; hard FAIL if different.
## Key API calls
- `PWScore::NewFile(passkey)` — initialise new db in memory
- `PWScore::WriteFile(url, PWSfile::V30)` — write via transport (triggers store)
- `PWScore::ReadDatabase(url, passkey, ...)` — open via transport (triggers fetch)
- `PWScore::Find(group, title, user)` — locate entry by group+title
- `CPasswordCharPool(policy).MakePassword()` — generate random password
- `EditEntryCommand::Create(core, old, new)` — change password via command pattern
- `pws_get_cache_path(utf8_url)` — get cache file path for comparison
## Plugin availability
Compiled with `-DDEVELOPMENT` so `find_plugin_path` searches cwd. CMakeLists copies `pwsafe-file.so` alongside `coretest` binary at build time.
## Build wiring
Add `TransportTest.cpp` to `TEST_SRCS` in `src/test/CMakeLists.txt`. No extra link libraries (transport already in `os`). · children