Manuelle Baka-Anmeldung übernimmt das Passwort jetzt dauerhaft; Auto-Login-Fehler werden geloggt
Nach erfolgreichem manuellem Login im "Baka-Konto"-Dialog wird das neue Passwort jetzt zusätzlich in NavidromeService persistiert (dafür ergänzt: öffentlicher serverUrl-Getter) — vorher schrieb der Dialog es nur ins BakaAuth-Token, nie zurück in die lokale Navidrome-Ablage, aus der autoAnmelden() sich beim nächsten App-Start bedient. Ohne diesen Fix kam der Auto-Login-Fehler nach Ablauf des 7-Tage-Tokens garantiert wieder. Zusätzlich hält BakaAuth.letzterAutoLoginFehler jetzt den Fehlertext des letzten Auto-Login-Versuchs fest, statt ihn zu verwerfen — bisher war aus der App nicht diagnostizierbar, woran ein Auto-Login scheiterte.
This commit is contained in:
@@ -268,6 +268,39 @@ void main() {
|
||||
expect(feld.controller!.text, 'Tinker');
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'Erfolgreiches manuelles Anmelden übernimmt das neue Passwort auch '
|
||||
'für Navidrome — sonst kommt der Auto-Login-Fehler nach Ablauf des '
|
||||
'Baka-Tokens garantiert wieder', (tester) async {
|
||||
final auth = BakaAuth(
|
||||
client: MockClient((request) async {
|
||||
final body = jsonDecode(request.body) as Map<String, dynamic>;
|
||||
if (body['password'] == 'neuesPasswort') {
|
||||
return http.Response(jsonEncode({'token': 'jwt-neu'}), 200);
|
||||
}
|
||||
return http.Response('', 500);
|
||||
}),
|
||||
speicher: _MemorySpeicher(),
|
||||
);
|
||||
final nav = NavidromeService()
|
||||
..setCredentials('https://musik.baka-net.de', 'Tinker', 'altesPasswort');
|
||||
|
||||
await tester.pumpWidget(_wrap(auth,
|
||||
db: db, categories: categories, navidrome: nav));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
await tester.tap(find.text('Beim Baka-Konto anmelden'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
await tester.enterText(find.byType(TextField).last, 'neuesPasswort');
|
||||
await tester.tap(find.text('Anmelden'));
|
||||
await tester.pumpAndSettle();
|
||||
|
||||
expect(nav.passwort, 'neuesPasswort');
|
||||
expect(nav.benutzer, 'Tinker');
|
||||
expect(auth.istAngemeldet, isTrue);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'Server-User meldet sich im Hintergrund mit denselben Zugangsdaten '
|
||||
'beim Baka-Konto an', (tester) async {
|
||||
|
||||
@@ -139,6 +139,20 @@ void main() {
|
||||
expect(auth.benutzer, 'Tinker');
|
||||
});
|
||||
|
||||
test(
|
||||
'autoAnmelden merkt sich den Fehlergrund für die Diagnose, da es '
|
||||
'selbst keinen Rückgabewert liefert', () async {
|
||||
final client = MockClient((_) async => http.Response(
|
||||
jsonEncode({'status': 'error', 'message': 'Falsches Passwort'}),
|
||||
200));
|
||||
final auth = BakaAuth(client: client, speicher: _MemorySpeicher());
|
||||
|
||||
await auth.autoAnmelden('Tinker', 'falsch');
|
||||
|
||||
expect(auth.letzterAutoLoginFehler, 'Falsches Passwort');
|
||||
expect(auth.istAngemeldet, isFalse);
|
||||
});
|
||||
|
||||
test('autoAnmelden tut nichts ohne Zugangsdaten', () async {
|
||||
var aufrufe = 0;
|
||||
final client = MockClient((_) async {
|
||||
|
||||
Reference in New Issue
Block a user