Files
Raki aabdf1eef9 feat: Blackbox REST API testing harness (#739)
## Description

The PR includes a Mock Fabric REST API Server, that uses a snapshot of
real HTTP calls made against Fabric Control Plane.

This allows us to test the CICD project against a blackbox:

<img width="510" height="538" alt="test-harness"
src="https://github.com/user-attachments/assets/02a66914-4a35-47ea-945e-06aedc77016a"
/>

---

It also centralizes various runtime behaviors using constants and
env-vars (not exhaustive yet to reduce diffs):

* Env-vars
* Retry params

This allows overriding behavior via tests to allow tests to run rapidly.

---

Finally, the only functional change made in this PR is to switch over
invoking the Fabric endpoint to be duration based, and not attempt based
- this helps us handle backpressure in future when we will be using
parallel calls. Durations are generally more "human oriented" - because
we can control how long we want the end user to wait, as opposed to
attempts, which is more inherent to the code (e.g. if we wait a second
with no backoff, 5 attempts run out fast - versus, 300 seconds is
absolute).

## Linked Issue (REQUIRED)

Resolves #738
2026-01-26 09:36:56 +02:00

55 lines
1.5 KiB
TOML

line-length = 120
exclude = ["sample/*", "docs/*"]
[lint]
# https://docs.astral.sh/ruff/rules/
select = [
"A", # flake8-builtins
"ANN", # flake8-annotations-complexity
"ARG", # flake8-unused-arguments
"B", # flake8-bugbear
"D", # pydocstyle
"EM", # flake8-errmsg
"F", # Pyflakes
"I", # isort
"INP", # flake8-no-pep420
"N", # pep8-naming
"PT", # flake8-pytest-style
"PTH", # flake8-use-pathlib
"RET", # flake8-return
"RUF", # Ruff-specific rules
"SIM", # flake8-simplify
"UP", # pyupgrade
]
ignore = [
"D203", # No blank lines between a section header and its content
"D205", # 1 blank line required between summary line and description
"D212", # Multi-line docstring summary should start at the first line
"D400", # First line should end with a period
"D401", # First line should be in imperative mood
"D415", # First line should end with a period, question mark, or exclamation point
"ANN003", # Missing type annotation for kwargs
"RUF100", # Unused noqa directive (version-dependent on ruff and not deterministic)
]
pydocstyle.convention = "google"
[lint.per-file-ignores]
"{tests}/*" = [
"D", # pydocstyle
"INP", # flake8-no-pep420
"ANN", # flake8-annotations-complexity
]
"{devtools}/*" = [
"D", # pydocstyle
"INP", # flake8-no-pep420
"F401", # unused import
"ANN", # flake8-annotations-complexity
]
[format]
preview = true
docstring-code-format = false
docstring-code-line-length = "dynamic"