Files
devplacepy/tests/unit/services/acceptance/agreements.py
T
retoorandClaude Sonnet 5.5 b616bce0ea Add community node data layer: tables, usage ledger, bandwidth_sharing consent
Phase 2 of plan.md. Seven node_* tables with atomic device, bandwidth and XP caps,
a transactional job ledger whose lifetime totals survive pruning, clamped donor
settings, and the bandwidth_sharing consent kind. The acceptance service now has
an explicit exclusion list so it can never grant that consent.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-14 08:32:17 +02:00

70 lines
2.2 KiB
Python

# retoor <retoor@molodetz.nl>
from devplacepy.database import CONSENT_KINDS
from devplacepy.services.acceptance.agreements import (
AGREEMENTS,
EXCLUDED_CONSENTS,
agreement_for,
label_for,
setting_key,
)
from devplacepy.services.acceptance.service import AcceptanceService
def test_every_consent_kind_is_classified_as_an_agreement():
classified = {agreement.kind for agreement in AGREEMENTS}
assert classified.isdisjoint(EXCLUDED_CONSENTS)
assert classified | set(EXCLUDED_CONSENTS) == set(CONSENT_KINDS)
assert all(EXCLUDED_CONSENTS.values())
def test_setting_keys_are_unique_and_namespaced():
keys = [setting_key(agreement.kind) for agreement in AGREEMENTS]
assert len(keys) == len(set(keys))
for key in keys:
assert key.startswith("acceptance_grant_")
def test_every_agreement_has_a_config_field_in_the_agreements_group():
service = AcceptanceService()
fields = {field.key: field for field in service.config_fields}
for agreement in AGREEMENTS:
field = fields[setting_key(agreement.kind)]
assert field.type == "bool"
assert field.default is False
assert field.group == "Agreements"
def test_labels_come_from_the_consent_registry():
for agreement in AGREEMENTS:
assert label_for(agreement.kind) == CONSENT_KINDS[agreement.kind]
def test_only_terms_declares_a_gate_column():
gated = [agreement.kind for agreement in AGREEMENTS if agreement.gate_column]
assert gated == ["terms"]
def test_versioned_agreements_match_the_application_version_keys():
from devplacepy.routers.profile.consent import VERSION_KEYS
versioned = {
agreement.kind: agreement.version_setting
for agreement in AGREEMENTS
if agreement.version_setting
}
assert versioned == VERSION_KEYS
def test_agreement_lookup_is_total_over_the_registry():
for agreement in AGREEMENTS:
assert agreement_for(agreement.kind) is agreement
assert agreement_for("not_a_consent") is None
def test_the_service_is_opt_in_and_runs_every_five_minutes():
service = AcceptanceService()
assert service.default_enabled is False
assert service.interval_seconds == 300
assert service.is_enabled() is False