v2.50.2 — Cloud/Auth-Tests (http-Mocks): LWW-Sync + Token-Ablauf-Pfade
## Testbarkeit (kein neues Package) - CloudService: http.Client injizierbar (Konstruktor-Parameter, Default unverändert) - AuthService: http.Client + TokenSpeicher injizierbar; SecureTokenSpeicher kapselt FlutterSecureStorage, @visibleForTesting AuthService.fuerTests - Alle HTTP-Calls über _client statt Top-Level http.get/post ## test/cloud_service_test.dart (22 Tests) - login: 200/401/Netzwerkfehler - verbinde() ohne Benutzer → Status fehler, kein Request - statusDaten: 200/401(Auth-Fehler)/Netzwerkfehler - syncChanges LWW-Konflikt-Pfade: updated_at bleibt für Client-Vergleich erhalten, leere/fehlende Changes, 401 → [], Netzwerkfehler → [], since-Body - syncAll (LWW-Schreibpfad): 200/401 - Playlists, Favoriten, History, listSongs, delete, globalList inkl. Fehlerpfade ## test/auth_service_test.dart (19 Tests) - initialisieren: 200 → eingeloggt, 401 → Logout + Speicher gelöscht, Netzwerkfehler → Offline-Trust, 5xx → Token bleibt, ohne Token → kein Request - tokenPruefen: 200/401/Netzwerkfehler/503 - login: ok mit Persistenz, 401, 200-ohne-Token (Fall-Through-Regression), Netzwerkfehler - logout löscht Speicher, authHeader mit/ohne Bearer
This commit is contained in:
@@ -21,7 +21,10 @@ enum CloudStatus { verbinde, verbunden, fehler }
|
||||
/// Merge-Strategie wird NICHT unterstützt (kein 3-Way-Merge) — es gewinnt immer
|
||||
/// der jüngste Timestamp.
|
||||
class CloudService extends ChangeNotifier {
|
||||
static final http.Client _client = http.Client();
|
||||
/// Injizierbarer HTTP-Client (Tests: package:http/testing.dart MockClient).
|
||||
CloudService({http.Client? client}) : _client = client ?? http.Client();
|
||||
|
||||
final http.Client _client;
|
||||
|
||||
static String get _base => AppConfig.cloudUrl;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user