Test Report : test-results.xml

📊 Test Execution Summary Report Generated On: 2026-09-11 00:34:03

158
Total
158
Passed
0
Failed
0
Skipped
4.579s
Duration

    Test Suite: D:.working.flipdare.code.packages.services.test.test_bundle.bundle

    Suite Properties

    platformvm

    Results

    Duration0.0 sec
    Tests158
    Failures0

    Tests

    D:.working.flipdare.code.packages.services.test.test_bundle.bundle

    Test case:tests unit/alert/alert_manager_test.dart AlertManager Overlay tests pushes overlay into the Overlay
    Outcome:Passed
    Duration:0.485 sec
    Stdout
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:26 797ms | Added alert app||info||title||N/A||hello! to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:67:9) [AlertQueue.peek] -> 
     
     [ DEBUG] | 21:36:26 804ms | Peeking at alert app||info||title||N/A||hello!, queue length: 1
    
    
     (package:services/alert/alert_queue.dart:117:11) [AlertQueue.remove] -> 
     
     [ DEBUG] | 21:36:26 805ms | Removed alert app||info||title||N/A||hello! from queue, remaining length: 0
    
    
      [_FakeAlertDisplayState.initState] -> 
     
     [ DEBUG] | 21:36:26 814ms | Starting timer for alert app||info||title||N/A||hello! with duration 2000ms
    
    
     (package:core/admin/service_manager.dart:135:11) [ServiceManager.unregister] -> 
     
     [ DEBUG] | 21:36:26 863ms | Unregistered GetIt of Type AlertManagerInterface
    Test case:tests unit/alert/alert_manager_test.dart AlertManager Overlay tests completing overlay drains the queue
    Outcome:Passed
    Duration:0.057 sec
    Stdout
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:26 896ms | Added alert payment||info||firsttitle||N/A|| to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:67:9) [AlertQueue.peek] -> 
     
     [ DEBUG] | 21:36:26 896ms | Peeking at alert payment||info||firsttitle||N/A||, queue length: 1
    
    
     (package:services/alert/alert_queue.dart:117:11) [AlertQueue.remove] -> 
     
     [ DEBUG] | 21:36:26 896ms | Removed alert payment||info||firsttitle||N/A|| from queue, remaining length: 0
    
    
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:26 897ms | Added alert permission||info||secondtitle||N to queue, total length: 1
    
    
      [_FakeAlertDisplayState.initState] -> 
     
     [ DEBUG] | 21:36:26 901ms | Starting timer for alert payment||info||first title||N/A||first with duration 1000ms
    
    
      [_FakeAlertDisplayState.initState.<anonymous] -> 
     
     [ WARNING] | 21:36:26 906ms | Alert payment||info||first title||N/A||first timed out
    
    
     (package:services/alert/alert_manager.dart:341:9) [AlertManager.checkStatusDebug] -> 
     
     [ INFO] | 21:36:26 908ms | ============================== ALERT MANAGER STATUS ==============================	AlertManager is not persisting, CAN process alerts
     1 alerts in the Queue.
     	Waiting Alert: info - permission||info||secondtitle||N
     Can PROCEED = true
     ==============================
    
    
     (package:services/alert/alert_queue.dart:67:9) [AlertQueue.peek] -> 
     
     [ DEBUG] | 21:36:26 908ms | Peeking at alert permission||info||secondtitle||N, queue length: 1
    
    
     (package:services/alert/alert_queue.dart:117:11) [AlertQueue.remove] -> 
     
     [ DEBUG] | 21:36:26 908ms | Removed alert permission||info||secondtitle||N from queue, remaining length: 0
    
    
      [_FakeAlertDisplayState.initState] -> 
     
     [ DEBUG] | 21:36:26 910ms | Starting timer for alert permission||info||second title||N/A||second with duration 2000ms
    
    
     (package:core/admin/service_manager.dart:135:11) [ServiceManager.unregister] -> 
     
     [ DEBUG] | 21:36:26 920ms | Unregistered GetIt of Type AlertManagerInterface
    Test case:tests unit/alert/alert_manager_test.dart AlertManager Overlay tests handles multiple alert types correctly
    Outcome:Passed
    Duration:0.055 sec
    Stdout
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:26 956ms | Added alert backend||error||errortitle||N/A| to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:67:9) [AlertQueue.peek] -> 
     
     [ DEBUG] | 21:36:26 957ms | Peeking at alert backend||error||errortitle||N/A|, queue length: 1
    
    
     (package:services/alert/alert_queue.dart:117:11) [AlertQueue.remove] -> 
     
     [ DEBUG] | 21:36:26 957ms | Removed alert backend||error||errortitle||N/A| from queue, remaining length: 0
    
    
      [_FakeAlertDisplayState.initState] -> 
     
     [ DEBUG] | 21:36:26 959ms | Starting timer for alert backend||error||error title||N/A||error message with duration 2000ms
    
    
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:26 964ms | Added alert app||info||infotitle||N/A||infom to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:67:9) [AlertQueue.peek] -> 
     
     [ DEBUG] | 21:36:26 964ms | Peeking at alert app||info||infotitle||N/A||infom, queue length: 1
    
    
     (package:services/alert/alert_manager.dart:341:9) [AlertManager.checkStatusDebug] -> 
     
     [ INFO] | 21:36:26 965ms | ============================== ALERT MANAGER STATUS ==============================	AlertManager is not persisting, CAN process alerts
     1 alerts in the Queue.
     	Waiting Alert: info - app||info||infotitle||N/A||infom
     Can PROCEED = true
     ==============================
    
    
     (package:services/alert/alert_queue.dart:67:9) [AlertQueue.peek] -> 
     
     [ DEBUG] | 21:36:26 966ms | Peeking at alert app||info||infotitle||N/A||infom, queue length: 1
    
    
     (package:services/alert/alert_queue.dart:117:11) [AlertQueue.remove] -> 
     
     [ DEBUG] | 21:36:26 966ms | Removed alert app||info||infotitle||N/A||infom from queue, remaining length: 0
    
    
      [_FakeAlertDisplayState.initState] -> 
     
     [ DEBUG] | 21:36:26 969ms | Starting timer for alert app||info||info title||N/A||info message with duration 2000ms
    
    
     (package:core/admin/service_manager.dart:135:11) [ServiceManager.unregister] -> 
     
     [ DEBUG] | 21:36:26 976ms | Unregistered GetIt of Type AlertManagerInterface
    Test case:tests unit/alert/alert_manager_test.dart AlertManager Overlay tests alerts are dismissed when navigating away
    Outcome:Passed
    Duration:0.19 sec
    Stdout
     (package:services/route/app_route_observer.dart:49:9) [AppRouteObserver.didPush] -> 
     
     [ DEBUG] | 21:36:26 999ms | Push Navigation Event:to / with args: null
    
    
     (package:core/analytics/analytics_interface.dart:52:9) [AnalyticsInterface.logRoute] -> 
     
     [ DEBUG] | 21:36:27 1ms | Logging route: / with extra: null
    
    
     (package:core/analytics/analytics_interface.dart:55:11) [AnalyticsInterface.logRoute] -> 
     
     [ WARNING] | 21:36:27 2ms | No analytics required for route: /
    
    
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:27 36ms | Added alert network||info||title||N/A||persi to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:67:9) [AlertQueue.peek] -> 
     
     [ DEBUG] | 21:36:27 36ms | Peeking at alert network||info||title||N/A||persi, queue length: 1
    
    
     (package:services/alert/alert_queue.dart:117:11) [AlertQueue.remove] -> 
     
     [ DEBUG] | 21:36:27 37ms | Removed alert network||info||title||N/A||persi from queue, remaining length: 0
    
    
      [_FakeAlertDisplayState.initState] -> 
     
     [ DEBUG] | 21:36:27 40ms | Starting timer for alert network||info||title||N/A||persistent with duration 2000ms
    
    
     (package:services/route/app_route_observer.dart:49:9) [AppRouteObserver.didPush] -> 
     
     [ DEBUG] | 21:36:27 93ms | Push Navigation Event:to null with args: null
    
    
     (package:core/analytics/analytics_interface.dart:47:11) [AnalyticsInterface.logRoute] -> 
     
     [ WARNING] | 21:36:27 94ms | Route name is null, skipping route logging
    
    
     (package:core/analytics/analytics_interface.dart:48:11) [AnalyticsInterface.logRoute] -> 
     
     [ DEBUG] | 21:36:27 94ms | Route details: MaterialPageRoute<dynamic>(RouteSettings(none, null), animation: AnimationController#1adcc( 0.000; for MaterialPageRoute<dynamic>(null)))
    
    
     (package:core/admin/service_manager.dart:135:11) [ServiceManager.unregister] -> 
     
     [ DEBUG] | 21:36:27 161ms | Unregistered GetIt of Type AlertManagerInterface
    Test case:tests unit/alert/alert_queue_test.dart AlertQueue: add: adds alert to queue
    Outcome:Passed
    Duration:0.004 sec
    Stdout
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:27 189ms | Added alert app||error||TestAlert||N/A||This to queue, total length: 1
    Test case:tests unit/alert/alert_queue_test.dart AlertQueue: add: does not add duplicate alert
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:27 193ms | Added alert app||error||TestAlert2||N/A||Thi to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:52:11) [AlertQueue.add] -> 
     
     [ WARNING] | 21:36:27 194ms | Alert app||error||TestAlert2||N/A||Thi is already active, ignoring
    Test case:tests unit/alert/alert_queue_test.dart AlertQueue: remove: removes alert from queue
    Outcome:Passed
    Duration:0.007 sec
    Stdout
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:27 201ms | Added alert app||error||TestAlert3||N/A||Thi to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:117:11) [AlertQueue.remove] -> 
     
     [ DEBUG] | 21:36:27 201ms | Removed alert app||error||TestAlert3||N/A||Thi from queue, remaining length: 0
    Test case:tests unit/alert/alert_queue_test.dart AlertQueue: remove: does not remove non-existent alert
    Outcome:Passed
    Duration:0.005 sec
    Stdout
     (package:services/alert/alert_queue.dart:120:9) [AlertQueue.remove] -> 
     
     [ WARNING] | 21:36:27 208ms | Alert app||error||Non-existentAlert||N not found in queue, cannot remove
    Test case:tests unit/alert/alert_queue_test.dart AlertQueue: peek: returns first alert without removing it
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:27 215ms | Added alert app||error||PeekTestAlert||N/A|| to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:67:9) [AlertQueue.peek] -> 
     
     [ DEBUG] | 21:36:27 216ms | Peeking at alert app||error||PeekTestAlert||N/A||, queue length: 1
    Test case:tests unit/alert/alert_queue_test.dart AlertQueue: peek: returns null if queue is empty
    Outcome:Passed
    Duration:0.003 sec
    Test case:tests unit/alert/alert_queue_test.dart AlertQueue: Comparable: alerts are comparable based on type
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:27 229ms | Added alert app||error||Alert1||N/A||Thisisa to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:27 229ms | Added alert app||info||Alert2||N/A||Thisisal to queue, total length: 2
    
    
     (package:services/alert/alert_queue.dart:67:9) [AlertQueue.peek] -> 
     
     [ DEBUG] | 21:36:27 229ms | Peeking at alert app||error||Alert1||N/A||Thisisa, queue length: 2
    Test case:tests unit/alert/alert_queue_test.dart AlertQueue: clear: clears all alerts from the queue
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:27 236ms | Added alert app||error||ClearTestAlert1||N/A to queue, total length: 1
    
    
     (package:services/alert/alert_queue.dart:58:9) [AlertQueue.add] -> 
     
     [ DEBUG] | 21:36:27 237ms | Added alert app||info||ClearTestAlert2||N/A| to queue, total length: 2
    Test case:tests unit/auth/auth_client_test.dart AuthClient Tests isSignedIn Tests isSignedIn returns null when no user is signed in
    Outcome:Passed
    Duration:0.024 sec
    Stdout
     (package:services/auth/auth_client.dart:33:11) [AuthClient.isSignedIn] -> 
     
     [ INFO] | 21:36:27 266ms | No user is currently signed in.
    Test case:tests unit/auth/auth_client_test.dart AuthClient Tests isSignedIn Tests isSignedIn returns AuthResult when user is signed in with supported provider
    Outcome:Passed
    Duration:0.009 sec
    Stdout
     (package:services/auth/auth_client.dart:37:9) [AuthClient.isSignedIn] -> 
     
     [ INFO] | 21:36:27 275ms | User is currently signed in: test@gmail.com
    
    
     (package:services/auth/auth_client.dart:42:11) [AuthClient.isSignedIn] -> 
     
     [ DEBUG] | 21:36:27 275ms | Checking if providerId password is supported
    Test case:tests unit/auth/auth_client_test.dart AuthClient Tests signInToFirebaseWithCred Tests signInToFirebaseWithCred returns valid AuthResult when credentials are valid
    Outcome:Passed
    Duration:0.012 sec
    Stdout
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 283ms | checkCred: checking credentials for attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 283ms | Checking if providerId password is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 284ms | Successfully checked credentials for user test@gmail.com:
     	providerId     = password
     	uid            = ac06e0d8-1d61-41e8-91ae-f3e31efbda64
     	emailVerified  = true
     	Attempt        = AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null)
    Test case:tests unit/auth/auth_client_test.dart AuthClient Tests signInWithCustomToken Tests signInWithCustomToken returns valid AuthResult when credentials are valid
    Outcome:Passed
    Duration:0.009 sec
    Stdout
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 295ms | checkCred: checking credentials for attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 295ms | Checking if providerId password is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 295ms | Successfully checked credentials for user test@gmail.com:
     	providerId     = password
     	uid            = 21557cd8-ff3e-4965-9134-5e07a3a5344e
     	emailVerified  = true
     	Attempt        = AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null)
    Test case:tests unit/auth/auth_client_test.dart AuthClient Tests checkCred Tests checkCred throws exception when no Credential
    Outcome:Passed
    Duration:0.007 sec
    Stdout
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 304ms | checkCred: checking credentials for attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null): null
    
    
     (package:services/auth/auth_client.dart:152:11) [AuthClient.checkCred] -> 
     
     [ ERROR] | 21:36:27 304ms | No credentials for user with attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null)
    Test case:tests unit/auth/auth_client_test.dart AuthClient Tests checkCred Tests checkCred throws AuthException when user is null
    Outcome:Passed
    Duration:0.011 sec
    Stdout
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 314ms | checkCred: checking credentials for attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null): MockUserCredential
    
    
     (package:services/auth/auth_client.dart:163:11) [AuthClient.checkCred] -> 
     
     [ ERROR] | 21:36:27 317ms | No user for credentials with attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null)
     cred=MockUserCredential
    Test case:tests unit/auth/auth_client_test.dart AuthClient Tests checkCred Tests checkCred throws AuthException when email is null (and email is required)
    Outcome:Passed
    Duration:0.005 sec
    Stdout
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 323ms | checkCred: checking credentials for attempt: PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signIn, email: test@gmail.com, password: password): MockUserCredential
    
    
     (package:services/auth/auth_client.dart:173:11) [AuthClient.checkCred] -> 
     
     [ ERROR] | 21:36:27 324ms | User has no email for credentials with attempt: PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signIn, email: test@gmail.com, password: password)
     cred=MockUserCredential
    Test case:tests unit/auth/auth_client_test.dart AuthClient Tests checkCred Tests checkCred returns AuthResult when credentials are valid
    Outcome:Passed
    Duration:0.007 sec
    Stdout
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 329ms | checkCred: checking credentials for attempt: PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signIn, email: test@gmail.com, password: password): MockUserCredential
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 329ms | Checking if providerId google.com is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 329ms | Successfully checked credentials for user test@gmail.com:
     	providerId     = google.com
     	uid            = 6b36bb1a-1cfe-40e0-ac27-ba9232e1548b
     	emailVerified  = true
     	Attempt        = PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signIn, email: test@gmail.com, password: password)
    Test case:tests unit/auth/google_auth_client_test.dart GoogleAuthClient Tests signIn signIn with valid credentials
    Outcome:Passed
    Duration:0.019 sec
    Stdout
     (package:services/auth/google_auth_client.dart:106:11) [GoogleAuthClient._authenticate] -> 
     
     [ INFO] | 21:36:27 345ms | Authenticating to firebase with id=idToken
    
    
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 346ms | checkCred: checking credentials for attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 346ms | Checking if providerId google.com is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 346ms | Successfully checked credentials for user good.email@gmail.com:
     	providerId     = google.com
     	uid            = a84efb42-83d4-48e2-9322-6a2b3bf8ff60
     	emailVerified  = true
     	Attempt        = AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null)
    
    
     (package:services/auth/google_auth_client.dart:117:11) [GoogleAuthClient._authenticate] -> 
     
     [ DEBUG] | 21:36:27 346ms | Successfully signed in with Google: AuthResult(authType: AuthType.google, operation: AuthOperation.signIn, email: good.email@gmail.com, uid: a84efb42-83d4-48e2-9322-6a2b3bf8ff60, isEmailVerified: true, displayName: Test User)
    Test case:tests unit/auth/google_auth_client_test.dart GoogleAuthClient Tests signIn signIn error, email mismatch
    Outcome:Passed
    Duration:0.017 sec
    Stdout
     (package:services/auth/google_auth_client.dart:106:11) [GoogleAuthClient._authenticate] -> 
     
     [ INFO] | 21:36:27 360ms | Authenticating to firebase with id=idToken
    
    
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 361ms | checkCred: checking credentials for attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 361ms | Checking if providerId google.com is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 361ms | Successfully checked credentials for user bad.email@gmail.com:
     	providerId     = google.com
     	uid            = 100757a0-8607-409f-8291-c7e03cbe7f0c
     	emailVerified  = true
     	Attempt        = AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null)
    
    
     (package:services/auth/auth_error_handler.dart:127:11) [AuthErrorHandler.validateEmailMatch] -> 
     
     [ WARNING] | 21:36:27 361ms | Email mismatch between Google/firebase: good.email@gmail.com != bad.email@gmail.com
    Test case:tests unit/auth/google_auth_client_test.dart GoogleAuthClient Tests signIn signIn error, returns no idToken
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/auth/auth_error_handler.dart:60:9) [AuthErrorHandler.handleTokenError] -> 
     
     [ ERROR] | 21:36:27 376ms | Failed to retrieve token from Google
    Test case:tests unit/auth/google_auth_client_test.dart GoogleAuthClient Tests signUp signUp with valid credentials
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/auth/google_auth_client.dart:106:11) [GoogleAuthClient._authenticate] -> 
     
     [ INFO] | 21:36:27 381ms | Authenticating to firebase with id=idToken
    
    
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 382ms | checkCred: checking credentials for attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 382ms | Checking if providerId google.com is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 382ms | Successfully checked credentials for user good.email@gmail.com:
     	providerId     = google.com
     	uid            = d0114746-85d0-4de4-bef1-bc1551bc16eb
     	emailVerified  = true
     	Attempt        = AuthAttempt(authType: AuthType.google, operation: AuthOperation.signIn, email: null)
    
    
     (package:services/auth/google_auth_client.dart:117:11) [GoogleAuthClient._authenticate] -> 
     
     [ DEBUG] | 21:36:27 382ms | Successfully signed in with Google: AuthResult(authType: AuthType.google, operation: AuthOperation.signIn, email: good.email@gmail.com, uid: d0114746-85d0-4de4-bef1-bc1551bc16eb, isEmailVerified: true, displayName: Test User)
    Test case:tests unit/auth/google_auth_client_test.dart GoogleAuthClient Tests signUp signUp error, email mismatch
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/auth/google_auth_client.dart:106:11) [GoogleAuthClient._authenticate] -> 
     
     [ INFO] | 21:36:27 393ms | Authenticating to firebase with id=idToken
    
    
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 393ms | checkCred: checking credentials for attempt: AuthAttempt(authType: AuthType.google, operation: AuthOperation.signUp, email: null): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 393ms | Checking if providerId google.com is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 393ms | Successfully checked credentials for user bad.email@gmail.com:
     	providerId     = google.com
     	uid            = e964045b-b8d7-4862-bb48-e4c0c9ec2501
     	emailVerified  = true
     	Attempt        = AuthAttempt(authType: AuthType.google, operation: AuthOperation.signUp, email: null)
    
    
     (package:services/auth/auth_error_handler.dart:127:11) [AuthErrorHandler.validateEmailMatch] -> 
     
     [ WARNING] | 21:36:27 393ms | Email mismatch between Google/firebase: good.email@gmail.com != bad.email@gmail.com
    Test case:tests unit/auth/google_auth_client_test.dart GoogleAuthClient Tests signUp signUp error, returns no idToken
    Outcome:Passed
    Duration:0.005 sec
    Stdout
     (package:services/auth/auth_error_handler.dart:60:9) [AuthErrorHandler.handleTokenError] -> 
     
     [ ERROR] | 21:36:27 402ms | Failed to retrieve token from Google
    Test case:tests unit/auth/password_auth_client_test.dart PasswordAuthClient: signIn signIn with valid credentials
    Outcome:Passed
    Duration:0.009 sec
    Stdout
     (package:services/auth/password_auth_client.dart:42:11) [PasswordAuthClient.signIn] -> 
     
     [ DEBUG] | 21:36:27 407ms | Sign-In attempt with email:good.email@gmail.com password:password
    
    
     (package:services/auth/password_auth_client.dart:49:13) [PasswordAuthClient.signIn] -> 
     
     [ DEBUG] | 21:36:27 408ms | Signing in with email credential for good.email@gmail.com: AuthCredential(providerId: password, signInMethod: password, token: null, accessToken: null)
    
    
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 408ms | checkCred: checking credentials for attempt: PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signIn, email: good.email@gmail.com, password: password): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 408ms | Checking if providerId password is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 408ms | Successfully checked credentials for user good.email@gmail.com:
     	providerId     = password
     	uid            = 8674e44c-de05-4c7e-98af-b79e56cfce4b
     	emailVerified  = true
     	Attempt        = PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signIn, email: good.email@gmail.com, password: password)
    
    
     (package:services/auth/password_auth_client.dart:63:13) [PasswordAuthClient.signIn] -> 
     
     [ DEBUG] | 21:36:27 408ms | Successfully signed in for email good.email@gmail.com: AuthResult(authType: AuthType.password, operation: AuthOperation.signIn, email: good.email@gmail.com, uid: 8674e44c-de05-4c7e-98af-b79e56cfce4b, isEmailVerified: true, displayName: Test User)
    Test case:tests unit/auth/password_auth_client_test.dart PasswordAuthClient: signUp signUp with valid credentials
    Outcome:Passed
    Duration:0.012 sec
    Stdout
     (package:services/auth/password_auth_client.dart:83:11) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:27 417ms | Sign-up attempt with email: good.email@gmail.com
    
    
     (package:services/auth/password_auth_client.dart:93:13) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:27 418ms | Created user with email good.email@gmail.com: Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 418ms | checkCred: checking credentials for attempt: PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signUp, email: good.email@gmail.com, password: password): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 418ms | Checking if providerId password is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 418ms | Successfully checked credentials for user good.email@gmail.com:
     	providerId     = password
     	uid            = 6f8e64d3-68a4-4c3c-9f7c-280ecb45c366
     	emailVerified  = true
     	Attempt        = PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signUp, email: good.email@gmail.com, password: password)
    
    
     (package:services/auth/password_auth_client.dart:108:11) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:27 419ms | Successfully signed up for email good.email@gmail.com: AuthResult(authType: AuthType.password, operation: AuthOperation.signUp, email: good.email@gmail.com, uid: 6f8e64d3-68a4-4c3c-9f7c-280ecb45c366, isEmailVerified: true, displayName: Mock User)
    Test case:tests unit/auth/password_auth_client_test.dart PasswordAuthClient: signUp signUp error, email already in use
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/auth/password_auth_client.dart:83:11) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:27 429ms | Sign-up attempt with email: good.email@gmail.com
    
    
     (package:services/auth/password_auth_client.dart:97:11) [PasswordAuthClient.signUp] -> 
     
     [ ERROR] | 21:36:27 430ms | Failed to sign up with email good.email@gmail.com: [firebase_auth/email-already-in-use] null
     [firebase_auth/email-already-in-use] null
     StackTrace: #0      maybeThrowException (package:mock_exceptions/src/mock_exceptions.dart:20:7)
     #1      MockFirebaseAuth.createUserWithEmailAndPassword (package:firebase_auth_mocks/src/firebase_auth_mocks_base.dart:124:5)
     #2      PasswordAuthClient.signUp (package:services/auth/password_auth_client.dart:87:43)
     #3      _runSignUpTests.<anonymous closure>.<anonymous closure>.<anonymous closure> (file:///D:/working/flipdare/code/packages/services/test/unit/auth/password_auth_client_test.dart:91:22)
     #4      Throws.matchAsync (package:matcher/src/expect/throws_matcher.dart:85:37)
     #5      _expect (package:matcher/src/expect/expect.dart:137:26)
     #6      expectLater (package:matcher/src/expect/expect.dart:91:7)
     #7      expectLater (package:flutter_test/src/widget_tester.dart:507:8)
     #8      _runSignUpTests.<anonymous closure>.<anonymous closure> (file:///D:/working/flipdare/code/packages/services/test/unit/auth/password_auth_client_test.dart:90:13)
     #9      Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:253:25)
     <asynchronous suspension>
     #10     Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:250:11)
     <asynchronous suspension>
     #11     Invoker._waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:318:9)
     <asynchronous suspension>
     
    Test case:tests unit/auth/password_auth_client_test.dart PasswordAuthClient: signUp signUp error, returns no refreshToken
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/auth/password_auth_client.dart:83:11) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:27 439ms | Sign-up attempt with email: bad.email@gmail.com
    
    
     (package:services/auth/password_auth_client.dart:93:13) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:27 439ms | Created user with email bad.email@gmail.com: Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 439ms | checkCred: checking credentials for attempt: PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signUp, email: bad.email@gmail.com, password: password): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 439ms | Checking if providerId password is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:27 439ms | Successfully checked credentials for user bad.email@gmail.com:
     	providerId     = password
     	uid            = c2edf1f0-bfeb-454f-a17e-46e723389865
     	emailVerified  = false
     	Attempt        = PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signUp, email: bad.email@gmail.com, password: password)
    
    
     (package:services/auth/password_auth_client.dart:108:11) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:27 440ms | Successfully signed up for email bad.email@gmail.com: AuthResult(authType: AuthType.password, operation: AuthOperation.signUp, email: bad.email@gmail.com, uid: c2edf1f0-bfeb-454f-a17e-46e723389865, isEmailVerified: false, displayName: Mock User)
    Test case:tests unit/currency/currency_converter_test.dart CurrencyConverter: getRate returns correct exchange rate
    Outcome:Passed
    Duration:0.003 sec
    Test case:tests unit/currency/currency_converter_test.dart CurrencyConverter: basic conversion
    Outcome:Passed
    Duration:0.003 sec
    Test case:tests unit/currency/currency_converter_test.dart CurrencyConverter: basic conversion (eur)
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/currency/currency_converter_test.dart CurrencyConverter: zero decimal conversion
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/data/pledge_create_data_test.dart pledge_create_data_tests UserPledgeData UserPledgeData creation
    Outcome:Passed
    Duration:0.012 sec
    Test case:tests unit/data/pledge_create_data_test.dart pledge_create_data_tests UserPledgeData UserPledgeData when
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/data/pledge_create_data_test.dart pledge_create_data_tests GroupPledgeData GroupPledgeData creation
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/data/pledge_create_data_test.dart pledge_create_data_tests GroupPledgeData GroupPledgeData when
    Outcome:Passed
    Duration:0.004 sec
    Test case:tests unit/data/pledge_payment_data_test.dart pledge_payment_data_test PledgePaymentData PledgePaymentData creation
    Outcome:Passed
    Duration:0.003 sec
    Test case:tests unit/data/pledge_payment_data_test.dart pledge_payment_data_test PledgePaymentData PledgePaymentData when
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/function/app_callable_error_test.dart CallableFunctionError: exception constructor
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/function/app_callable_error_test.dart CallableFunctionError: unknownError constructor
    Outcome:Passed
    Duration:0.003 sec
    Test case:tests unit/function/app_callable_error_test.dart CallableFunctionError: parseError
    Outcome:Passed
    Duration:0.004 sec
    Test case:tests unit/function/app_callable_error_test.dart CallableFunctionError: generates correct error schema from FirebaseFunctionsException
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/function/app_function_service_test.dart AppFunctionService: singleton instance
    Outcome:Passed
    Duration:0.003 sec
    Test case:tests unit/function/app_function_service_test.dart AppFunctionService: custom timeout
    Outcome:Passed
    Duration:0.003 sec
    Test case:tests unit/function/app_function_service_test.dart AppFunctionService: custom FirebaseFunctions instance
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/function/app_function_service_test.dart AppFunctionService: executeCallable returns ErrorSchema on exception
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/function/app_function_service.dart:47:11) [AppFunctionService.executeCallable] -> 
     
     [ WARNING] | 21:36:27 523ms | Calling Firebase function: testFunction with args: null and timeout: 0:00:50.000000
    
    
     (package:services/function/app_function_service.dart:63:11) [AppFunctionService.executeCallable] -> 
     
     [ ERROR] | 21:36:27 525ms | FirebaseFunctionsException in testFunction: test-error - Test error
    Test case:tests unit/function/app_function_service_test.dart AppFunctionService: executeCallable returns Right on success
    Outcome:Passed
    Duration:0.011 sec
    Stdout
     (package:services/function/app_function_service.dart:47:11) [AppFunctionService.executeCallable] -> 
     
     [ WARNING] | 21:36:27 531ms | Calling Firebase function: testFunction with args: null and timeout: 0:00:50.000000
    
    
     (package:services/function/app_function_service.dart:58:13) [AppFunctionService.executeCallable] -> 
     
     [ DEBUG] | 21:36:27 532ms | Successfully called Firebase function: testFunction
    
    
     (package:services/function/app_function_service.dart:162:11) [AppFunctionService._parseEitherResponse] -> 
     
     [ DEBUG] | 21:36:27 534ms | Parsing response with isError=false
     {result1: value1}
    Test case:tests unit/function/pin/pin_confirm_fn_test.dart PinConfirmFn: returns valid success response
    Outcome:Passed
    Duration:0.013 sec
    Stdout
     (package:services/function/app_function_service.dart:47:11) [AppFunctionService.executeCallable] -> 
     
     [ WARNING] | 21:36:27 545ms | Calling Firebase function: c_confirm_pin with args: {email: test@gmail.com, uid: test-uid, pin_code: 1234} and timeout: 0:00:50.000000
    
    
     (package:services/function/app_function_service.dart:58:13) [AppFunctionService.executeCallable] -> 
     
     [ DEBUG] | 21:36:27 546ms | Successfully called Firebase function: c_confirm_pin
    
    
     (package:services/function/app_function_service.dart:162:11) [AppFunctionService._parseEitherResponse] -> 
     
     [ DEBUG] | 21:36:27 546ms | Parsing response with isError=false
     {email: test@gmail.com, uid: test-uid, error_message: null, matched: true}
    Test case:tests unit/function/pin/pin_confirm_fn_test.dart PinConfirmFn: returns valid error response
    Outcome:Passed
    Duration:0.009 sec
    Stdout
     (package:services/function/app_function_service.dart:47:11) [AppFunctionService.executeCallable] -> 
     
     [ WARNING] | 21:36:27 555ms | Calling Firebase function: c_confirm_pin with args: {email: test@gmail.com, uid: test-uid, pin_code: 1234} and timeout: 0:00:50.000000
    
    
     (package:services/function/app_function_service.dart:58:13) [AppFunctionService.executeCallable] -> 
     
     [ DEBUG] | 21:36:27 556ms | Successfully called Firebase function: c_confirm_pin
    
    
     (package:services/function/app_function_service.dart:162:11) [AppFunctionService._parseEitherResponse] -> 
     
     [ DEBUG] | 21:36:27 556ms | Parsing response with isError=true
     {endpoint: pinConfirm, error_type: app, code: invalid_data, category: auth, title: Invalid PIN, message: The PIN code you entered is incorrect. Please try again., action: null, cause: null}
    Test case:tests unit/function/pin/pin_generate_fn_test.dart PinGenerateFn: returns valid success response
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/function/app_function_service.dart:47:11) [AppFunctionService.executeCallable] -> 
     
     [ WARNING] | 21:36:27 566ms | Calling Firebase function: c_generate_pin with args: {email: test@gmail.com, uid: test-uid} and timeout: 0:00:50.000000
    
    
     (package:services/function/app_function_service.dart:58:13) [AppFunctionService.executeCallable] -> 
     
     [ DEBUG] | 21:36:27 566ms | Successfully called Firebase function: c_generate_pin
    
    
     (package:services/function/app_function_service.dart:162:11) [AppFunctionService._parseEitherResponse] -> 
     
     [ DEBUG] | 21:36:27 566ms | Parsing response with isError=false
     {pin_code: 1234, uid: test-uid}
    Test case:tests unit/function/pin/pin_generate_fn_test.dart PinGenerateFn: returns valid error response
    Outcome:Passed
    Duration:0.008 sec
    Stdout
     (package:services/function/app_function_service.dart:47:11) [AppFunctionService.executeCallable] -> 
     
     [ WARNING] | 21:36:27 575ms | Calling Firebase function: c_generate_pin with args: {email: test@gmail.com, uid: test-uid} and timeout: 0:00:50.000000
    
    
     (package:services/function/app_function_service.dart:58:13) [AppFunctionService.executeCallable] -> 
     
     [ DEBUG] | 21:36:27 576ms | Successfully called Firebase function: c_generate_pin
    
    
     (package:services/function/app_function_service.dart:162:11) [AppFunctionService._parseEitherResponse] -> 
     
     [ DEBUG] | 21:36:27 577ms | Parsing response with isError=true
     {endpoint: pinGenerate, error_type: app, code: invalid_data, category: auth, title: Invalid PIN, message: The PIN code you entered is incorrect. Please try again., action: null, cause: null}
    Test case:tests unit/function/search/search_results_test.dart SearchResults/SearchResult: SearchResults: fromJson
    Outcome:Passed
    Duration:0.019 sec
    Test case:tests unit/function/search/search_results_test.dart SearchResults/SearchResult: SearchResult: fromJson for user
    Outcome:Passed
    Duration:0.003 sec
    Test case:tests unit/function/search/search_results_test.dart SearchResults/SearchResult: SearchResult: fromUser for group
    Outcome:Passed
    Duration:0.004 sec
    Test case:tests unit/function/search/search_results_test.dart SearchResults/SearchResult: SearchResult: fromJson for dare
    Outcome:Passed
    Duration:0.003 sec
    Test case:tests unit/function/search/search_results_test.dart SearchResults/SearchResult: SearchResult: fromJson for group dare
    Outcome:Passed
    Duration:0.004 sec
    Test case:tests unit/function/search/search_results_test.dart SearchResults/SearchResult: SearchResult: fromJson for friend
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/geo/data/geo_location_model_test.dart GeoLocationModel creation
    Outcome:Passed
    Duration:0.006 sec
    Test case:tests unit/geo/data/geo_location_model_test.dart GeoLocationModel fromJson should parse JSON correctly
    Outcome:Passed
    Duration:0.008 sec
    Test case:tests unit/geo/data/ip_lookup_model_test.dart IpLookupModel creation
    Outcome:Passed
    Duration:0.007 sec
    Test case:tests unit/geo/data/ip_lookup_model_test.dart IpLookupModel fromJson should parse JSON correctly
    Outcome:Passed
    Duration:0.009 sec
    Test case:tests unit/geo/geoapify_client_test.dart GeoApifyClient: getLocationFromIp returns data
    Outcome:Passed
    Duration:0.027 sec
    Stdout
     (package:services/geo/geoapify_client.dart:84:13) [GeoApifyClient.getLocationFromIp] -> 
     
     [ DEBUG] | 21:36:27 678ms | Requesting GeoApify IP geocode with URL: https://api.geoapify.com/v1/ipinfo?
    
    
     (package:services/geo/geoapify_client.dart:328:9) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 680ms | MockGeoApifyClient returning mock result for URI: https://api.geoapify.com/v1/ipinfo?apiKey=e8488c88fb54474296de5e98965410cb
    
    
     (package:services/geo/geoapify_client.dart:330:11) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 680ms | Returning mock IP lookup result
    
    
     (package:services/geo/geoapify_client.dart:95:13) [GeoApifyClient.getLocationFromIp] -> 
     
     [ DEBUG] | 21:36:27 681ms | GeoApify IP geocode result: GeoApiFyRawResult
     {"city":{"name":"New York","names":{"en":"New York","de":"New York City","es":"Nueva York","fa":"","fr":"New York","ja":"","ko":"","pt-BR":"Nova Iorque","ru":"-","zh-CN":""}},"country":{"name":"United States","iso_code":"US","names":{"en":"United States","de":"Vereinigte Staaten von Amerika","es":"Estados Unidos de Amrica (los)","fa":"  ","fr":"tats-Unis","ja":"","ko":"","pt-BR":"Estados Unidos","ru":"","zh-CN":""},"geoname_id":6252001,"name_native":"United States","phone_code":"1","capital":"Washington D.C.","currency":"USD,USN,USS","flag":"","languages":[{"iso_code":"en","name":"English","name_native":"English"}]},"state":{"name":"New York"},"location":{"latitude":40.7121,"longitude":-74.0134},"continent":{"code":"NA","name":"North America","names":{"de":"Nordamerika","en":"North America","es":"Norteamrica","fa":" ","fr":"Amrique du Nord","ja":"","ko":"","pt-BR":"Amrica do Norte","ru":" ","zh-CN":""},"geoname_id":6255149},"subdivisions":[{"names":{"en":"New York","de":"New York","es":"Nueva York","fa":"","fr":"New York","ja":"","ko":"","pt-BR":"Nova Iorque","ru":"-","zh-CN":""}},{"names":{"en":"New York","fr":"Comt de New York","zh-CN":""}}],"postal":{"code":"10123"},"ip":"159.102.105.250"}
    
    
     (package:services/geo/geoapify_client.dart:106:13) [GeoApifyClient.getLocationFromIp] -> 
     
     [ DEBUG] | 21:36:27 683ms | Decoded GeoApify IP geocode JSON: {city: {name: New York, names: {en: New York, de: New York City, es: Nueva York, fa: , fr: New York, ja: , ko: , pt-BR: Nova Iorque, ru: -, zh-CN: }}, country: {name: United States, iso_code: US, names: {en: United States, de: Vereinigte Staaten von Amerika, es: Estados Unidos de Amrica (los), fa:   , fr: tats-Unis, ja: , ko: , pt-BR: Estados Unidos, ru: , zh-CN: }, geoname_id: 6252001, name_native: United States, phone_code: 1, capital: Washington D.C., currency: USD,USN,USS, flag: , languages: [{iso_code: en, name: English, name_native: English}]}, state: {name: New York}, location: {latitude: 40.7121, longitude: -74.0134}, continent: {code: NA, name: North America, names: {de: Nordamerika, en: North America, es: Norteamrica, fa:  , fr: Amrique du Nord, ja: , ko: , pt-BR: Amrica do Norte, ru:  , zh-CN: }, geoname_id: 6255149}, subdivisions: [{names: {en: New York, de: New York, es: Nueva York, fa: , fr: New York, ja: , ko: , pt-BR: Nova Iorque, ru: -, zh-CN: }}, {names: {en: New York, fr: Comt de New York, zh-CN: }}], postal: {code: 10123}, ip: 159.102.105.250}
    Test case:tests unit/geo/geoapify_client_test.dart GeoApifyClient: getLocation returns data
    Outcome:Passed
    Duration:0.026 sec
    Stdout
     (package:services/geo/geoapify_client.dart:84:13) [GeoApifyClient.getLocationFromIp] -> 
     
     [ DEBUG] | 21:36:27 697ms | Requesting GeoApify IP geocode with URL: https://api.geoapify.com/v1/ipinfo?
    
    
     (package:services/geo/geoapify_client.dart:328:9) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 697ms | MockGeoApifyClient returning mock result for URI: https://api.geoapify.com/v1/ipinfo?apiKey=e8488c88fb54474296de5e98965410cb
    
    
     (package:services/geo/geoapify_client.dart:330:11) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 698ms | Returning mock IP lookup result
    
    
     (package:services/geo/geoapify_client.dart:95:13) [GeoApifyClient.getLocationFromIp] -> 
     
     [ DEBUG] | 21:36:27 698ms | GeoApify IP geocode result: GeoApiFyRawResult
     {"city":{"name":"New York","names":{"en":"New York","de":"New York City","es":"Nueva York","fa":"","fr":"New York","ja":"","ko":"","pt-BR":"Nova Iorque","ru":"-","zh-CN":""}},"country":{"name":"United States","iso_code":"US","names":{"en":"United States","de":"Vereinigte Staaten von Amerika","es":"Estados Unidos de Amrica (los)","fa":"  ","fr":"tats-Unis","ja":"","ko":"","pt-BR":"Estados Unidos","ru":"","zh-CN":""},"geoname_id":6252001,"name_native":"United States","phone_code":"1","capital":"Washington D.C.","currency":"USD,USN,USS","flag":"","languages":[{"iso_code":"en","name":"English","name_native":"English"}]},"state":{"name":"New York"},"location":{"latitude":40.7121,"longitude":-74.0134},"continent":{"code":"NA","name":"North America","names":{"de":"Nordamerika","en":"North America","es":"Norteamrica","fa":" ","fr":"Amrique du Nord","ja":"","ko":"","pt-BR":"Amrica do Norte","ru":" ","zh-CN":""},"geoname_id":6255149},"subdivisions":[{"names":{"en":"New York","de":"New York","es":"Nueva York","fa":"","fr":"New York","ja":"","ko":"","pt-BR":"Nova Iorque","ru":"-","zh-CN":""}},{"names":{"en":"New York","fr":"Comt de New York","zh-CN":""}}],"postal":{"code":"10123"},"ip":"159.102.105.250"}
    
    
     (package:services/geo/geoapify_client.dart:106:13) [GeoApifyClient.getLocationFromIp] -> 
     
     [ DEBUG] | 21:36:27 698ms | Decoded GeoApify IP geocode JSON: {city: {name: New York, names: {en: New York, de: New York City, es: Nueva York, fa: , fr: New York, ja: , ko: , pt-BR: Nova Iorque, ru: -, zh-CN: }}, country: {name: United States, iso_code: US, names: {en: United States, de: Vereinigte Staaten von Amerika, es: Estados Unidos de Amrica (los), fa:   , fr: tats-Unis, ja: , ko: , pt-BR: Estados Unidos, ru: , zh-CN: }, geoname_id: 6252001, name_native: United States, phone_code: 1, capital: Washington D.C., currency: USD,USN,USS, flag: , languages: [{iso_code: en, name: English, name_native: English}]}, state: {name: New York}, location: {latitude: 40.7121, longitude: -74.0134}, continent: {code: NA, name: North America, names: {de: Nordamerika, en: North America, es: Norteamrica, fa:  , fr: Amrique du Nord, ja: , ko: , pt-BR: Amrica do Norte, ru:  , zh-CN: }, geoname_id: 6255149}, subdivisions: [{names: {en: New York, de: New York, es: Nueva York, fa: , fr: New York, ja: , ko: , pt-BR: Nova Iorque, ru: -, zh-CN: }}, {names: {en: New York, fr: Comt de New York, zh-CN: }}], postal: {code: 10123}, ip: 159.102.105.250}
    
    
     (package:services/geo/geoapify_client.dart:228:13) [GeoApifyClient.reverseGeoCode] -> 
     
     [ DEBUG] | 21:36:27 699ms | Requesting GeoApify reverse geocode with URL: https://api.geoapify.com/v1/geocode/reverse?lat=40.7121&lon=-74.0134&format=json&limit=1
    
    
     (package:services/geo/geoapify_client.dart:328:9) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 700ms | MockGeoApifyClient returning mock result for URI: https://api.geoapify.com/v1/geocode/reverse?apiKey=e8488c88fb54474296de5e98965410cb&lat=40.7121&lon=-74.0134&format=json&limit=1
    
    
     (package:services/geo/geoapify_client.dart:338:11) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 700ms | Returning mock location result
    
    
     (package:services/geo/geoapify_client.dart:239:13) [GeoApifyClient.reverseGeoCode] -> 
     
     [ DEBUG] | 21:36:27 700ms | GeoApify reverse geocode result: GeoApiFyRawResult
     {"results":[{"datasource":{"sourcename":"openstreetmap","attribution":" OpenStreetMap contributors","license":"Open Database License","url":"https://www.openstreetmap.org/copyright"},"country":"United States","country_code":"us","state":"New York","county":"New York County","city":"New York","postcode":"10024","district":"Manhattan Community Board 7","suburb":"Manhattan","quarter":"Upper West Side","street":"West 81st Street","housenumber":"129","iso3166_2":"US-NY","lon":-73.9753662,"lat":40.7838273,"state_code":"NY","result_type":"building","formatted":"129 West 81st Street, New York, NY 10024, United States of America","address_line1":"129 West 81st Street","address_line2":"New York, NY 10024, United States of America","category":"building","timezone":{"name":"America/New_York","offset_STD":"-05:00","offset_STD_seconds":-18000,"offset_DST":"-04:00","offset_DST_seconds":-14400,"abbreviation_STD":"EST","abbreviation_DST":"EDT"},"plus_code":"87G8Q2MF+GV","plus_code_short":"Q2MF+GV New York, New York County, United States","rank":{"importance":0.00009175936522464359,"popularity":7.840925798000228,"confidence":1,"confidence_city_level":1,"confidence_street_level":1,"confidence_building_level":1,"match_type":"full_match"},"place_id":"51eca75a666c7e52c059229bf57354644440f00102f90132550d1000000000c00203","bbox":{"lon1":-73.9754437,"lat1":40.7837463,"lon2":-73.9752733,"lat2":40.7839195}}]}
    
    
     (package:services/geo/geoapify_client.dart:244:13) [GeoApifyClient.reverseGeoCode] -> 
     
     [ DEBUG] | 21:36:27 700ms | Decoded GeoApify reverse geocode JSON: {results: [{datasource: {sourcename: openstreetmap, attribution:  OpenStreetMap contributors, license: Open Database License, url: https://www.openstreetmap.org/copyright}, country: United States, country_code: us, state: New York, county: New York County, city: New York, postcode: 10024, district: Manhattan Community Board 7, suburb: Manhattan, quarter: Upper West Side, street: West 81st Street, housenumber: 129, iso3166_2: US-NY, lon: -73.9753662, lat: 40.7838273, state_code: NY, result_type: building, formatted: 129 West 81st Street, New York, NY 10024, United States of America, address_line1: 129 West 81st Street, address_line2: New York, NY 10024, United States of America, category: building, timezone: {name: America/New_York, offset_STD: -05:00, offset_STD_seconds: -18000, offset_DST: -04:00, offset_DST_seconds: -14400, abbreviation_STD: EST, abbreviation_DST: EDT}, plus_code: 87G8Q2MF+GV, plus_code_short: Q2MF+GV New York, New York County, United States, rank: {importance: 0.00009175936522464359, popularity: 7.840925798000228, confidence: 1, confidence_city_level: 1, confidence_street_level: 1, confidence_building_level: 1, match_type: full_match}, place_id: 51eca75a666c7e52c059229bf57354644440f00102f90132550d1000000000c00203, bbox: {lon1: -73.9754437, lat1: 40.7837463, lon2: -73.9752733, lat2: 40.7839195}}]}
    
    
     (package:services/geo/geoapify_client.dart:254:17) [GeoApifyClient.reverseGeoCode] -> 
     
     [ DEBUG] | 21:36:27 701ms | Parsed GeoLocationModel: {datasource: {sourcename: openstreetmap, attribution:  OpenStreetMap contributors, license: Open Database License, url: https://www.openstreetmap.org/copyright}, country: United States, country_code: us, state: New York, county: New York County, city: New York, postcode: 10024, district: Manhattan Community Board 7, suburb: Manhattan, quarter: Upper West Side, street: West 81st Street, housenumber: 129, iso3166_2: US-NY, lon: -73.9753662, lat: 40.7838273, state_code: NY, result_type: building, formatted: 129 West 81st Street, New York, NY 10024, United States of America, address_line1: 129 West 81st Street, address_line2: New York, NY 10024, United States of America, category: building, timezone: {name: America/New_York, offset_STD: -05:00, offset_STD_seconds: -18000, offset_DST: -04:00, offset_DST_seconds: -14400, abbreviation_STD: EST, abbreviation_DST: EDT}, plus_code: 87G8Q2MF+GV, plus_code_short: Q2MF+GV New York, New York County, United States, rank: {importance: 0.00009175936522464359, popularity: 7.840925798000228, confidence: 1, confidence_city_level: 1, confidence_street_level: 1, confidence_building_level: 1, match_type: full_match}, place_id: 51eca75a666c7e52c059229bf57354644440f00102f90132550d1000000000c00203, bbox: {lon1: -73.9754437, lat1: 40.7837463, lon2: -73.9752733, lat2: 40.7839195}}
    Test case:tests unit/geo/geoapify_client_test.dart GeoApifyClient: geocode returns data
    Outcome:Passed
    Duration:0.021 sec
    Stdout
     (package:services/geo/geoapify_client.dart:170:13) [GeoApifyClient._search] -> 
     
     [ DEBUG] | 21:36:27 727ms | Requesting GeoApify geocode with URL: https://api.geoapify.com/v1/geocode/search?text=Sydney+Opera+House%2C+Australia&limit=1&format=json
    
    
     (package:services/geo/geoapify_client.dart:328:9) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 728ms | MockGeoApifyClient returning mock result for URI: https://api.geoapify.com/v1/geocode/search?apiKey=e8488c88fb54474296de5e98965410cb&text=Sydney+Opera+House%2C+Australia&limit=1&format=json
    
    
     (package:services/geo/geoapify_client.dart:338:11) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 728ms | Returning mock location result
    
    
     (package:services/geo/geoapify_client.dart:181:13) [GeoApifyClient._search] -> 
     
     [ DEBUG] | 21:36:27 728ms | GeoApify geocode result: GeoApiFyRawResult
     {"results":[{"datasource":{"sourcename":"openstreetmap","attribution":" OpenStreetMap contributors","license":"Open Database License","url":"https://www.openstreetmap.org/copyright"},"name":"Sydney General Post Office","other_names":{"alt_name":"GPO"},"country":"Australia","country_code":"au","state":"New South Wales","county":"Council of the City of Sydney","city":"Sydney","postcode":"2000","district":"Sydney CBD","suburb":"Sydney","street":"Martin Place","housenumber":"1","iso3166_2":"AU-NSW","lon":151.2076807,"lat":-33.8678042,"state_code":"NSW","distance":0,"result_type":"amenity","formatted":"Sydney General Post Office, 1 Martin Place, Sydney NSW 2000, Australia","address_line1":"Sydney General Post Office","address_line2":"1 Martin Place, Sydney NSW 2000, Australia","category":"building.office","timezone":{"name":"Australia/Sydney","offset_STD":"+10:00","offset_STD_seconds":36000,"offset_DST":"+11:00","offset_DST_seconds":39600,"abbreviation_STD":"AEST","abbreviation_DST":"AEDT"},"plus_code":"4RRH46J5+V3","plus_code_short":"+V3 Sydney, Council of the City of Sydney, Australia","rank":{"importance":0.00008246051728079679,"popularity":7.332617625087506},"place_id":"5155d0fe51a5e66240596d2a413514ef40c0f00102f9013d9ed21000000000c0020192031a5379646e65792047656e6572616c20506f7374204f6666696365","bbox":{"lon1":151.2071574,"lat1":-33.8680086,"lon2":151.2082035,"lat2":-33.8676015}}]}
    
    
     (package:services/geo/geoapify_client.dart:186:13) [GeoApifyClient._search] -> 
     
     [ DEBUG] | 21:36:27 729ms | Decoded GeoApify geocode JSON: {results: [{datasource: {sourcename: openstreetmap, attribution:  OpenStreetMap contributors, license: Open Database License, url: https://www.openstreetmap.org/copyright}, name: Sydney General Post Office, other_names: {alt_name: GPO}, country: Australia, country_code: au, state: New South Wales, county: Council of the City of Sydney, city: Sydney, postcode: 2000, district: Sydney CBD, suburb: Sydney, street: Martin Place, housenumber: 1, iso3166_2: AU-NSW, lon: 151.2076807, lat: -33.8678042, state_code: NSW, distance: 0, result_type: amenity, formatted: Sydney General Post Office, 1 Martin Place, Sydney NSW 2000, Australia, address_line1: Sydney General Post Office, address_line2: 1 Martin Place, Sydney NSW 2000, Australia, category: building.office, timezone: {name: Australia/Sydney, offset_STD: +10:00, offset_STD_seconds: 36000, offset_DST: +11:00, offset_DST_seconds: 39600, abbreviation_STD: AEST, abbreviation_DST: AEDT}, plus_code: 4RRH46J5+V3, plus_code_short: +V3 Sydney, Council of the City of Sydney, Australia, rank: {importance: 0.00008246051728079679, popularity: 7.332617625087506}, place_id: 5155d0fe51a5e66240596d2a413514ef40c0f00102f9013d9ed21000000000c0020192031a5379646e65792047656e6572616c20506f7374204f6666696365, bbox: {lon1: 151.2071574, lat1: -33.8680086, lon2: 151.2082035, lat2: -33.8676015}}]}
    
    
     (package:services/geo/geoapify_client.dart:203:17) [GeoApifyClient._search.<anonymous] -> 
     
     [ DEBUG] | 21:36:27 730ms | Parsed GeoLocationModel: GeoLocationModel(country: Australia, countryCode: au, city: Sydney, postalCode: 2000, district: Sydney CBD, suburb: Sydney, street: Martin Place, houseNumber: 1, longitude: 151.2076807, latitude: -33.8678042, formattedAddress: Sydney General Post Office, 1 Martin Place, Sydney NSW 2000, Australia, timezone: GeoLocationTimezoneModel(name: Australia/Sydney, offsetSTDSeconds: 36000, offsetDSTSeconds: 39600))
    Test case:tests unit/geo/geoapify_client_test.dart GeoApifyClient: reverse geocode coordinates returns data
    Outcome:Passed
    Duration:0.014 sec
    Stdout
     (package:services/geo/geoapify_client.dart:228:13) [GeoApifyClient.reverseGeoCode] -> 
     
     [ DEBUG] | 21:36:27 745ms | Requesting GeoApify reverse geocode with URL: https://api.geoapify.com/v1/geocode/reverse?lat=-33.8567844&lon=151.2152967&format=json&limit=1
    
    
     (package:services/geo/geoapify_client.dart:328:9) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 745ms | MockGeoApifyClient returning mock result for URI: https://api.geoapify.com/v1/geocode/reverse?apiKey=e8488c88fb54474296de5e98965410cb&lat=-33.8567844&lon=151.2152967&format=json&limit=1
    
    
     (package:services/geo/geoapify_client.dart:338:11) [MockGeoApifyClient._execute] -> 
     
     [ DEBUG] | 21:36:27 746ms | Returning mock location result
    
    
     (package:services/geo/geoapify_client.dart:239:13) [GeoApifyClient.reverseGeoCode] -> 
     
     [ DEBUG] | 21:36:27 746ms | GeoApify reverse geocode result: GeoApiFyRawResult
     {"results":[{"datasource":{"sourcename":"openstreetmap","attribution":" OpenStreetMap contributors","license":"Open Database License","url":"https://www.openstreetmap.org/copyright"},"name":"Sydney General Post Office","other_names":{"alt_name":"GPO"},"country":"Australia","country_code":"au","state":"New South Wales","county":"Council of the City of Sydney","city":"Sydney","postcode":"2000","district":"Sydney CBD","suburb":"Sydney","street":"Martin Place","housenumber":"1","iso3166_2":"AU-NSW","lon":151.2076807,"lat":-33.8678042,"state_code":"NSW","distance":0,"result_type":"amenity","formatted":"Sydney General Post Office, 1 Martin Place, Sydney NSW 2000, Australia","address_line1":"Sydney General Post Office","address_line2":"1 Martin Place, Sydney NSW 2000, Australia","category":"building.office","timezone":{"name":"Australia/Sydney","offset_STD":"+10:00","offset_STD_seconds":36000,"offset_DST":"+11:00","offset_DST_seconds":39600,"abbreviation_STD":"AEST","abbreviation_DST":"AEDT"},"plus_code":"4RRH46J5+V3","plus_code_short":"+V3 Sydney, Council of the City of Sydney, Australia","rank":{"importance":0.00008246051728079679,"popularity":7.332617625087506},"place_id":"5155d0fe51a5e66240596d2a413514ef40c0f00102f9013d9ed21000000000c0020192031a5379646e65792047656e6572616c20506f7374204f6666696365","bbox":{"lon1":151.2071574,"lat1":-33.8680086,"lon2":151.2082035,"lat2":-33.8676015}}]}
    
    
     (package:services/geo/geoapify_client.dart:244:13) [GeoApifyClient.reverseGeoCode] -> 
     
     [ DEBUG] | 21:36:27 746ms | Decoded GeoApify reverse geocode JSON: {results: [{datasource: {sourcename: openstreetmap, attribution:  OpenStreetMap contributors, license: Open Database License, url: https://www.openstreetmap.org/copyright}, name: Sydney General Post Office, other_names: {alt_name: GPO}, country: Australia, country_code: au, state: New South Wales, county: Council of the City of Sydney, city: Sydney, postcode: 2000, district: Sydney CBD, suburb: Sydney, street: Martin Place, housenumber: 1, iso3166_2: AU-NSW, lon: 151.2076807, lat: -33.8678042, state_code: NSW, distance: 0, result_type: amenity, formatted: Sydney General Post Office, 1 Martin Place, Sydney NSW 2000, Australia, address_line1: Sydney General Post Office, address_line2: 1 Martin Place, Sydney NSW 2000, Australia, category: building.office, timezone: {name: Australia/Sydney, offset_STD: +10:00, offset_STD_seconds: 36000, offset_DST: +11:00, offset_DST_seconds: 39600, abbreviation_STD: AEST, abbreviation_DST: AEDT}, plus_code: 4RRH46J5+V3, plus_code_short: +V3 Sydney, Council of the City of Sydney, Australia, rank: {importance: 0.00008246051728079679, popularity: 7.332617625087506}, place_id: 5155d0fe51a5e66240596d2a413514ef40c0f00102f9013d9ed21000000000c0020192031a5379646e65792047656e6572616c20506f7374204f6666696365, bbox: {lon1: 151.2071574, lat1: -33.8680086, lon2: 151.2082035, lat2: -33.8676015}}]}
    
    
     (package:services/geo/geoapify_client.dart:254:17) [GeoApifyClient.reverseGeoCode] -> 
     
     [ DEBUG] | 21:36:27 747ms | Parsed GeoLocationModel: {datasource: {sourcename: openstreetmap, attribution:  OpenStreetMap contributors, license: Open Database License, url: https://www.openstreetmap.org/copyright}, name: Sydney General Post Office, other_names: {alt_name: GPO}, country: Australia, country_code: au, state: New South Wales, county: Council of the City of Sydney, city: Sydney, postcode: 2000, district: Sydney CBD, suburb: Sydney, street: Martin Place, housenumber: 1, iso3166_2: AU-NSW, lon: 151.2076807, lat: -33.8678042, state_code: NSW, distance: 0, result_type: amenity, formatted: Sydney General Post Office, 1 Martin Place, Sydney NSW 2000, Australia, address_line1: Sydney General Post Office, address_line2: 1 Martin Place, Sydney NSW 2000, Australia, category: building.office, timezone: {name: Australia/Sydney, offset_STD: +10:00, offset_STD_seconds: 36000, offset_DST: +11:00, offset_DST_seconds: 39600, abbreviation_STD: AEST, abbreviation_DST: AEDT}, plus_code: 4RRH46J5+V3, plus_code_short: +V3 Sydney, Council of the City of Sydney, Australia, rank: {importance: 0.00008246051728079679, popularity: 7.332617625087506}, place_id: 5155d0fe51a5e66240596d2a413514ef40c0f00102f9013d9ed21000000000c0020192031a5379646e65792047656e6572616c20506f7374204f6666696365, bbox: {lon1: 151.2071574, lat1: -33.8680086, lon2: 151.2082035, lat2: -33.8676015}}
    Test case:tests unit/link/deep_link_factory_test.dart DeepLinkFactory: Profile Link
    Outcome:Passed
    Duration:0.008 sec
    Stdout
     (package:services/link/deep_link_factory.dart:67:11) [DeepLinkFactory._create] -> 
     
     [ DEBUG] | 21:36:27 765ms | link=AppDeepLink.profile
     params={docId: 12345}
     paramPath=12345
     deepLinkPath=https://flipdare.com/l/profile/12345
     appUrl=https://chottu.link?deep_link=https://flipdare.com/l/profile/12345
    Test case:tests unit/link/deep_link_factory_test.dart DeepLinkFactory: Dare Link
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/link/deep_link_factory.dart:67:11) [DeepLinkFactory._create] -> 
     
     [ DEBUG] | 21:36:27 772ms | link=AppDeepLink.dare
     params={docId: 12345}
     paramPath=12345
     deepLinkPath=https://flipdare.com/l/dare/12345
     appUrl=https://chottu.link?deep_link=https://flipdare.com/l/dare/12345
    Test case:tests unit/permission/permission_checker_test.dart PermissionChecker: hasStoragePermission: Storage ok
    Outcome:Passed
    Duration:0.009 sec
    Stdout
     (package:services/permission/permission_checker.dart:88:13) [PermissionChecker.hasStoragePermission] -> 
     
     [ DEBUG] | 21:36:27 781ms | Storage permission already granted, skipping request
    Test case:tests unit/permission/permission_checker_test.dart PermissionChecker: hasStoragePermission: Storage NOT ok
    Outcome:Passed
    Duration:0.011 sec
    Stdout
     (package:services/permission/permission_checker.dart:101:11) [PermissionChecker.hasStoragePermission] -> 
     
     [ DEBUG] | 21:36:27 791ms | Storage permission obtained status: PermissionStatus.limited
    
    
     (package:services/permission/permission_checker.dart:108:11) [PermissionChecker.hasStoragePermission] -> 
     
     [ WARNING] | 21:36:27 792ms | Storage permission denied
    Test case:tests unit/permission/permission_checker_test.dart PermissionChecker: hasCameraPermission: Camera ok
    Outcome:Passed
    Duration:0.007 sec
    Stdout
     (package:services/permission/permission_checker.dart:117:13) [PermissionChecker.hasCameraPermission] -> 
     
     [ DEBUG] | 21:36:27 802ms | Camera permission already granted, skipping request
    Test case:tests unit/permission/permission_checker_test.dart PermissionChecker: hasCameraPermission: Camera NOT ok
    Outcome:Passed
    Duration:0.007 sec
    Stdout
     (package:services/permission/permission_checker.dart:126:11) [PermissionChecker.hasCameraPermission] -> 
     
     [ DEBUG] | 21:36:27 810ms | Camera permission obtained status: PermissionStatus.denied, Microphone permission obtained status: PermissionStatus.restricted
    
    
     (package:services/permission/permission_checker.dart:136:11) [PermissionChecker.hasCameraPermission] -> 
     
     [ WARNING] | 21:36:27 811ms | Camera/microphone permission denied
    Test case:tests unit/provider/auth/auth_service_state_test.dart AuthServiceState should initialize with default values
    Outcome:Passed
    Duration:0.009 sec
    Test case:tests unit/provider/auth/auth_service_state_test.dart AuthServiceState should initialize with user model
    Outcome:Passed
    Duration:0.006 sec
    Test case:tests unit/provider/auth/auth_service_state_test.dart AuthServiceState should copy with new values
    Outcome:Passed
    Duration:0.004 sec
    Test case:tests unit/provider/auth/auth_service_state_test.dart AuthServiceState should handle error state
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/provider/auth/auth_service_state_test.dart AuthServiceState should return isUserVerified correctly
    Outcome:Passed
    Duration:0.012 sec
    Stdout
     (package:services/provider/auth/auth_service_state.dart:68:9) [AuthServiceState.isUserVerified] -> 
     
     [ DEBUG] | 21:36:27 848ms | VERIFIED: User grant-vicenta@gmail.com is verified
    
    
     (package:services/provider/auth/auth_service_state.dart:68:9) [AuthServiceState.isUserVerified] -> 
     
     [ DEBUG] | 21:36:27 848ms | VERIFIED: User grant-vicenta@gmail.com is verified
    Test case:tests unit/provider/auth/auth_service_state_test.dart AuthServiceState should return isUserNotVerified false when no user (anonymous)
    Outcome:Passed
    Duration:0.008 sec
    Stdout
     (package:services/provider/auth/auth_service_state.dart:53:11) [AuthServiceState.isUserVerified] -> 
     
     [ WARNING] | 21:36:27 859ms | NOT VERIFIED: No user, cannot be verified
    Test case:tests unit/provider/auth/auth_service_state_test.dart AuthServiceState should return isUserNotVerified true when pinCode exists
    Outcome:Passed
    Duration:0.008 sec
    Stdout
     (package:services/provider/auth/auth_service_state.dart:61:11) [AuthServiceState.isUserVerified] -> 
     
     [ DEBUG] | 21:36:27 869ms | NOT VERIFIED: Pin code exists for farrell.raymundo@yahoo.com, requires validation
    Test case:tests unit/provider/auth/auth_service_state_test.dart AuthServiceState resetPinCode on a verified user should return isUserVerified true
    Outcome:Passed
    Duration:0.011 sec
    Stdout
     (package:services/provider/auth/auth_service_state.dart:61:11) [AuthServiceState.isUserVerified] -> 
     
     [ DEBUG] | 21:36:27 877ms | NOT VERIFIED: Pin code exists for eichmann_alek@hotmail.com, requires validation
    
    
     (package:services/provider/auth/auth_service_state.dart:61:11) [AuthServiceState.isUserVerified] -> 
     
     [ DEBUG] | 21:36:27 878ms | NOT VERIFIED: Pin code exists for eichmann_alek@hotmail.com, requires validation
    
    
     (package:services/provider/auth/auth_service_state.dart:68:9) [AuthServiceState.isUserVerified] -> 
     
     [ DEBUG] | 21:36:27 878ms | VERIFIED: User eichmann_alek@hotmail.com is verified
    
    
     (package:services/provider/auth/auth_service_state.dart:68:9) [AuthServiceState.isUserVerified] -> 
     
     [ DEBUG] | 21:36:27 878ms | VERIFIED: User eichmann_alek@hotmail.com is verified
    Test case:tests unit/provider/auth/auth_service_state_test.dart AuthServiceState should reset pinCode when resetPinCode is true
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Initialization Tests should initialize with anonymous state
    Outcome:Passed
    Duration:0.059 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:27 958ms | AuthService initialized
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Initialization Tests should support ProviderScope
    Outcome:Passed
    Duration:0.007 sec
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Initialization Tests should support UncontrolledProviderScope
    Outcome:Passed
    Duration:0.007 sec
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Authentication Tests should set anonymous state successfully
    Outcome:Passed
    Duration:0.019 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 3ms | AuthService initialized
    
    
     (package:services/provider/auth/auth_service.dart:563:9) [AuthService._setAnonymous] -> 
     
     [ INFO] | 21:36:28 8ms | User set to anonymous
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Authentication Tests should handle authentication state properly
    Outcome:Passed
    Duration:0.013 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 22ms | AuthService initialized
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Authentication Tests should handle sign out properly
    Outcome:Passed
    Duration:0.034 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 37ms | AuthService initialized
    
    
     (package:services/user/app_user_store.dart:81:11) [AppUserStore.deleteAuth] -> 
     
     [ DEBUG] | 21:36:28 42ms | Deleted auth data from user store, new state: AppUserStoreState(email: null, password: null, authType: null, lastRestart: null, lastActive: null)
    
    
     (package:services/user/app_user_store.dart:203:9) [AppUserStore._trySave] -> 
     
     [ INFO] | 21:36:28 43ms | Saving user info to storage: AppUserStoreState(email: null, password: null, authType: null, lastRestart: null, lastActive: null)
     {"email":null,"password":null,"authType":null,"lastRestart":null,"lastActive":null}
    
    
     (package:core/store/app_store.dart:122:11) [AppStore.write] -> 
     
     [ DEBUG] | 21:36:28 44ms | Writing key user with value {"email":null,"password":null,"authType":null,"lastRestart":null,"lastActive":null} to store
    
    
     (package:core/store/base_storage.dart:79:11) [SecureStorage.read] -> 
     
     [ WARNING] | 21:36:28 48ms | Error checking existence of key user: MissingPluginException(No implementation found for method containsKey on channel plugins.it_nomads.com/flutter_secure_storage)
    
    
     (package:core/store/base_storage.dart:106:11) [SecureStorage.add] -> 
     
     [ WARNING] | 21:36:28 49ms | Error writing value for key user: MissingPluginException(No implementation found for method write on channel plugins.it_nomads.com/flutter_secure_storage)
    
    
     (package:core/store/app_store.dart:127:11) [AppStore.write] -> 
     
     [ WARNING] | 21:36:28 50ms | Failed to add preference user with value {"email":null,"password":null,"authType":null,"lastRestart":null,"lastActive":null}
    
    
     (package:services/provider/auth/auth_service.dart:563:9) [AuthService._setAnonymous] -> 
     
     [ INFO] | 21:36:28 53ms | User set to anonymous
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests User Management Tests should update user successfully when authenticated
    Outcome:Passed
    Duration:0.041 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 70ms | AuthService initialized
    
    
     (package:store/db/app_database.dart:239:11) [AppDatabase.write] -> 
     
     [ DEBUG] | 21:36:28 81ms | Executing write operation: StoredOpType.update for StoredOpType.update in FirestoreCollections.user
    
    
     (package:store/db/app_database.dart:601:11) [AppDatabase._update] -> 
     
     [ DEBUG] | 21:36:28 83ms | Updating document in collection: FirestoreCollections.user/test-user-id with data: {display_name: Updated Name, rating_stats: {bookmarks: 0, views: 0, flags: 0, likes: 0, dislikes: 0}, dare_stats: {requested: 0, accepted: 0, completed: 0, processed: 0, total_earnings: 0, missed_earnings: 0, potential_earnings: 0, backers: 0, flags: 0, disputes: 0}}
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests User Management Tests should not update user when not authenticated
    Outcome:Passed
    Duration:0.013 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 112ms | AuthService initialized
    
    
     (package:services/provider/auth/auth_service.dart:389:11) [AuthService.updateUser] -> 
     
     [ WARNING] | 21:36:28 114ms | Cannot update user - no user currently authenticated
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests User Management Tests should refresh user data successfully
    Outcome:Passed
    Duration:0.017 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 127ms | AuthService initialized
    
    
     (package:services/provider/auth/auth_service.dart:422:11) [AuthService.refreshUser] -> 
     
     [ INFO] | 21:36:28 130ms | Refreshing user data for: test@example.com
    
    
     (package:services/provider/auth/auth_service.dart:424:11) [AuthService.refreshUser] -> 
     
     [ INFO] | 21:36:28 132ms | User refreshed successfully: test@example.com
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests User Management Tests should not refresh user without ID
    Outcome:Passed
    Duration:0.014 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 145ms | AuthService initialized
    
    
     (package:services/provider/auth/auth_service.dart:422:11) [AuthService.refreshUser] -> 
     
     [ INFO] | 21:36:28 146ms | Refreshing user data for: test@example.com
    
    
     (package:services/provider/auth/auth_service.dart:424:11) [AuthService.refreshUser] -> 
     
     [ INFO] | 21:36:28 147ms | User refreshed successfully: test@example.com
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests State Management Tests should clear errors when requested
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 160ms | AuthService initialized
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests State Management Tests should handle loading states correctly during user updates
    Outcome:Passed
    Duration:0.014 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 170ms | AuthService initialized
    
    
     (package:store/db/app_database.dart:239:11) [AppDatabase.write] -> 
     
     [ DEBUG] | 21:36:28 171ms | Executing write operation: StoredOpType.update for StoredOpType.update in FirestoreCollections.user
    
    
     (package:store/db/app_database.dart:601:11) [AppDatabase._update] -> 
     
     [ DEBUG] | 21:36:28 172ms | Updating document in collection: FirestoreCollections.user/test-user-id with data: {display_name: Updated, rating_stats: {bookmarks: 0, views: 0, flags: 0, likes: 0, dislikes: 0}, dare_stats: {requested: 0, accepted: 0, completed: 0, processed: 0, total_earnings: 0, missed_earnings: 0, potential_earnings: 0, backers: 0, flags: 0, disputes: 0}}
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests State Management Tests should maintain user data through state transitions
    Outcome:Passed
    Duration:0.008 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 184ms | AuthService initialized
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Convenience Providers Tests auth convenience providers should return correct state
    Outcome:Passed
    Duration:0.029 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 195ms | AuthService initialized
    
    
     (package:services/provider/auth/auth_service_state.dart:68:9) [AuthServiceState.isUserVerified] -> 
     
     [ DEBUG] | 21:36:28 214ms | VERIFIED: User test@example.com is verified
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Convenience Providers Tests current user convenience providers should work correctly
    Outcome:Passed
    Duration:0.018 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 224ms | AuthService initialized
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Integration Tests should work with other auth-related providers
    Outcome:Passed
    Duration:0.009 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 244ms | AuthService initialized
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Integration Tests should maintain consistency across all providers
    Outcome:Passed
    Duration:0.009 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 252ms | AuthService initialized
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests SignUp Flows should sign up.
    Outcome:Passed
    Duration:0.033 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 263ms | AuthService initialized
    
    
     (package:services/auth/auth_client_factory.dart:42:11) [AuthClientFactory.create] -> 
     
     [ DEBUG] | 21:36:28 265ms | Creating AuthClient for PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signUp, email: test@example.com, password: password)
    
    
     (package:services/auth/auth_client.dart:33:11) [AuthClient.isSignedIn] -> 
     
     [ INFO] | 21:36:28 266ms | No user is currently signed in.
    
    
     (package:services/auth/password_auth_client.dart:83:11) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:28 267ms | Sign-up attempt with email: test@example.com
    
    
     (package:services/auth/password_auth_client.dart:93:13) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:28 267ms | Created user with email test@example.com: Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:148:9) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:28 267ms | checkCred: checking credentials for attempt: PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signUp, email: test@example.com, password: password): Instance of 'MockUserCredential'
    
    
     (package:services/auth/auth_client.dart:198:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:28 267ms | Checking if providerId password is supported
    
    
     (package:services/auth/auth_client.dart:210:11) [AuthClient.checkCred] -> 
     
     [ DEBUG] | 21:36:28 267ms | Successfully checked credentials for user test@example.com:
     	providerId     = password
     	uid            = d89812d1-1809-4e16-b41b-0d0014165019
     	emailVerified  = true
     	Attempt        = PasswordAuthAttempt(authType: AuthType.password, operation: AuthOperation.signUp, email: test@example.com, password: password)
    
    
     (package:services/auth/password_auth_client.dart:108:11) [PasswordAuthClient.signUp] -> 
     
     [ DEBUG] | 21:36:28 268ms | Successfully signed up for email test@example.com: AuthResult(authType: AuthType.password, operation: AuthOperation.signUp, email: test@example.com, uid: d89812d1-1809-4e16-b41b-0d0014165019, isEmailVerified: true, displayName: Mock User)
    
    
     (package:services/provider/auth/auth_service.dart:605:13) [AuthService._convertAuthResultToUserAndUpdateDb] -> 
     
     [ INFO] | 21:36:28 268ms | New user signed up: test@example.com
    
    
     (package:store/db/app_database.dart:239:11) [AppDatabase.write] -> 
     
     [ DEBUG] | 21:36:28 269ms | Executing write operation: StoredOpType.create for StoredOpType.create in FirestoreCollections.user
    
    
     (package:store/db/app_database.dart:542:11) [AppDatabase._create] -> 
     
     [ DEBUG] | 21:36:28 271ms | Creating document in collection: FirestoreCollections.user with data: {id: d89812d1-1809-4e16-b41b-0d0014165019, created_at: FieldValue(Instance of 'MockFieldValuePlatform'), updated_at: FieldValue(Instance of 'MockFieldValuePlatform'), auth_type: password, email: test@example.com, display_name: Mock User, name: null, slug_code: user-1789040188269, reputation: 50, fee_type: standard, level: rookie, visibility: public, restriction_id: null, compliance_id: null, invite_id: null, password: null, pin_code: null, delete_code: null, reset_code: null, description: null, avatar: null, banner: null, website_uri: null, email_verified: true, must_reset_password: false, force_relogin: false, email_notifs_enabled: true, enable_haptic: true, unread_activity_count: 0, notification_count: 0, auto_play_on_scroll: true, continue_type: stop, auto_mute: true, swipe_left_to_archive: true, prompt_for_confirmation: true, prompt_visit_external_link: true, show_system_notifications: true, cache_size: ten_mb, archive_time: one_week, user_time_format: ddmmyyyy, rating_stats: {bookmarks: 0, views: 0, flags: 0, likes: 0, dislikes: 0}, dare_stats: {requested: 0, accepted: 0, completed: 0, processed: 0, total_earnings: 0, missed_earnings: 0, potential_earnings: 0, backers: 0, flags: 0, disputes: 0}, stripe_settings: null, location: null, tz_str: null, flagged: null}
    
    
     (package:services/provider/auth/auth_service.dart:532:9) [AuthService._setAuthenticated] -> 
     
     [ INFO] | 21:36:28 272ms | Setting state user to: test@example.com
    
    
     (package:services/provider/auth/auth_service.dart:545:11) [AuthService._setAuthenticated] -> 
     
     [ INFO] | 21:36:28 272ms | User email verified, no pin required for test@example.com
    
    
     (package:core/admin/service_manager.dart:135:11) [ServiceManager.unregister] -> 
     
     [ DEBUG] | 21:36:28 274ms | Unregistered GetIt of Type AuthClientFactory
    Test case:tests unit/provider/auth/auth_service_test.dart AuthService AuthService Tests Edge Cases and Error Handling should handle anonymous user
    Outcome:Passed
    Duration:0.009 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 297ms | AuthService initialized
    Test case:tests unit/provider/network/network_service_state_test.dart NetworkServiceState should create with default unknown status
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/provider/network/network_service_state_test.dart NetworkServiceState should create with specific status
    Outcome:Passed
    Duration:0.004 sec
    Test case:tests unit/provider/network/network_service_state_test.dart NetworkServiceState should correctly identify online status
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/provider/network/network_service_test.dart NetworkService Initialization Tests should initialize with default state
    Outcome:Passed
    Duration:0.025 sec
    Stdout
     (package:services/network/network_monitor.dart:100:9) [InternetNetworkMonitor._startMonitoring] -> 
     
     [ INFO] | 21:36:28 348ms | NetworkMonitor: Started monitoring with 0:01:00.000000 interval
    
    
     (package:services/network/network_monitor.dart:122:13) [InternetNetworkMonitor._checkNetworkStatus] -> 
     
     [ INFO] | 21:36:28 352ms | NetworkMonitor: Status changed from NetworkStatus.online to NetworkStatus.offline
    Test case:tests unit/provider/network/network_service_test.dart NetworkService Initialization Tests should support ProviderScope
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/provider/network/network_service_test.dart NetworkService Initialization Tests should support UncontrolledProviderScope
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/provider/network/network_service_test.dart NetworkService Core Functionality Tests should handle offline gracefully
    Outcome:Passed
    Duration:0.014 sec
    Test case:tests unit/provider/network/network_service_test.dart NetworkService Core Functionality Tests should notify on online change
    Outcome:Passed
    Duration:0.009 sec
    Test case:tests unit/provider/pledge/pledge_service_state_test.dart PledgeServiceState should create with default values
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/provider/pledge/pledge_service_state_test.dart PledgeServiceState should create with specific values
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/provider/pledge/pledge_service_state_test.dart PledgeServiceState should copy with new values
    Outcome:Passed
    Duration:0.004 sec
    Test case:tests unit/provider/pledge/pledge_service_test.dart PledgeService Initialization Tests should initialize with default state
    Outcome:Passed
    Duration:0.013 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 418ms | AuthService initialized
    Test case:tests unit/provider/pledge/pledge_service_test.dart PledgeService Initialization Tests should support ProviderScope
    Outcome:Passed
    Duration:0.004 sec
    Test case:tests unit/provider/pledge/pledge_service_test.dart PledgeService Initialization Tests should support UncontrolledProviderScope
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/provider/pledge/pledge_service_test.dart PledgeService Core Functionality Tests should get pledges
    Outcome:Passed
    Duration:0.007 sec
    Test case:tests unit/provider/pledge/pledge_service_test.dart PledgeService Core Functionality Tests should handle errors gracefully
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/provider/auth/auth_service.dart:30:9) [AuthService.build] -> 
     
     [ WARNING] | 21:36:28 448ms | AuthService initialized
    Test case:tests unit/provider/pledge/pledge_service_test.dart PledgeService Core Functionality Tests should notify on pledge update
    Outcome:Passed
    Duration:0.005 sec
    Test case:tests unit/restart/crash_restarter_test.dart CrashRestarter: initial, not within restart
    Outcome:Passed
    Duration:0.005 sec
    Stdout
     (package:services/user/crash_restarter.dart:65:11) [CrashRestarter.shouldRestart] -> 
     
     [ DEBUG] | 21:36:28 462ms | App is NOT eligible for restart (last restart at 2026-09-10 21:36:28.461142, cutoff at 2026-09-11 21:36:28.461142, now 2026-09-10 21:36:28.461142)
    Test case:tests unit/restart/crash_restarter_test.dart CrashRestarter: initial, no context
    Outcome:Passed
    Duration:0.004 sec
    Stdout
     (package:services/user/crash_restarter.dart:73:11) [CrashRestarter.tryRestart] -> 
     
     [ WARNING] | 21:36:28 466ms | Unable to restart app, context is null
    Test case:tests unit/restart/crash_restarter_test.dart CrashRestarter: within restart
    Outcome:Passed
    Duration:0.004 sec
    Stdout
     (package:services/user/crash_restarter.dart:65:11) [CrashRestarter.shouldRestart] -> 
     
     [ DEBUG] | 21:36:28 472ms | App is NOT eligible for restart (last restart at 2026-09-10 09:36:28.472140, cutoff at 2026-09-11 09:36:28.472140, now 2026-09-10 21:36:28.472140)
    Test case:tests unit/restart/crash_restarter_test.dart CrashRestarter: not within restart
    Outcome:Passed
    Duration:0.004 sec
    Stdout
     (package:services/user/crash_restarter.dart:65:11) [CrashRestarter.shouldRestart] -> 
     
     [ DEBUG] | 21:36:28 477ms | App is eligible for restart (last restart at 2026-09-08 21:36:28.477141, cutoff at 2026-09-09 21:36:28.477141, now 2026-09-10 21:36:28.477141)
    Test case:tests unit/restart/crash_restarter_test.dart CrashRestarter: within restart, context
    Outcome:Passed
    Duration:0.007 sec
    Stdout
     (package:services/user/crash_restarter.dart:65:11) [CrashRestarter.shouldRestart] -> 
     
     [ DEBUG] | 21:36:28 483ms | App is eligible for restart (last restart at 2026-09-09 20:36:28.482141, cutoff at 2026-09-10 20:36:28.482141, now 2026-09-10 21:36:28.483148)
    
    
     (package:services/user/crash_restarter.dart:92:9) [CrashRestarter.tryRestart] -> 
     
     [ WARNING] | 21:36:28 483ms | Restarting app with last restart time 2026-09-10 21:36:28.483148
    Test case:tests unit/retry/retry_future_test.dart RetryFuture Tests should complete successfully on first attempt when online
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/retry/retry_future.dart:108:9) [new] -> 
     
     [ INFO] | 21:36:28 490ms | RetryFuture initialized with options: Instance of 'RetryOptions'
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:28 490ms | Attempt 1/3 for operation.
    Test case:tests unit/retry/retry_future_test.dart RetryFuture Tests should fail after max attempts exceeded
    Outcome:Passed
    Duration:1.214 sec
    Stdout
     (package:services/retry/retry_future.dart:108:9) [new] -> 
     
     [ INFO] | 21:36:28 495ms | RetryFuture initialized with options: Instance of 'RetryOptions'
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:28 496ms | Attempt 1/3 for operation.
    
    
     (package:services/retry/retry_future.dart:285:9) [RetryFuture._delayNextCheck] -> 
     
     [ DEBUG] | 21:36:28 497ms | Waiting for 0:00:00.430479 before next attempt (current attempt: 1).
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:28 929ms | Attempt 2/3 for operation.
    
    
     (package:services/retry/retry_future.dart:285:9) [RetryFuture._delayNextCheck] -> 
     
     [ DEBUG] | 21:36:28 930ms | Waiting for 0:00:00.772278 before next attempt (current attempt: 2).
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:29 703ms | Attempt 3/3 for operation.
    
    
     (package:services/retry/retry_future.dart:295:9) [RetryFuture._throw] -> 
     
     [ ERROR] | 21:36:29 703ms | Throwing exception for Failed after 3 attempts or retryIf condition returned false. Rethrowing.
     SocketException: Always fails
    Test case:tests unit/retry/retry_future_test.dart RetryFuture Tests should wait for network when offline initially
    Outcome:Passed
    Duration:0.109 sec
    Stdout
     (package:services/retry/retry_future.dart:108:9) [new] -> 
     
     [ INFO] | 21:36:29 709ms | RetryFuture initialized with options: Instance of 'RetryOptions'
    
    
     (package:services/retry/retry_future.dart:157:9) [RetryFuture._networkListener] -> 
     
     [ INFO] | 21:36:29 811ms | Network status changed to: NetworkStatus.online (was online: false)
    
    
     (package:services/retry/retry_future.dart:164:11) [RetryFuture._networkListener] -> 
     
     [ INFO] | 21:36:29 812ms | Network back online.
    
    
     (package:services/retry/retry_future.dart:168:13) [RetryFuture._networkListener] -> 
     
     [ DEBUG] | 21:36:29 812ms | Network back online, completing pending network ready completer.
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:29 812ms | Attempt 1/3 for operation.
    Test case:tests unit/retry/retry_future_test.dart RetryFuture Tests should respect retryIf condition
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/retry/retry_future.dart:108:9) [new] -> 
     
     [ INFO] | 21:36:29 818ms | RetryFuture initialized with options: Instance of 'RetryOptions'
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:29 818ms | Attempt 1/3 for operation.
    
    
     (package:services/retry/retry_future.dart:295:9) [RetryFuture._throw] -> 
     
     [ ERROR] | 21:36:29 819ms | Throwing exception for Failed after 1 attempts or retryIf condition returned false. Rethrowing.
     Invalid argument(s): Should not retry
    Test case:tests unit/retry/retry_future_test.dart RetryFuture Tests should call onNotify callback on retry
    Outcome:Passed
    Duration:1.125 sec
    Stdout
     (package:services/retry/retry_future.dart:108:9) [new] -> 
     
     [ INFO] | 21:36:29 824ms | RetryFuture initialized with options: Instance of 'RetryOptions'
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:29 824ms | Attempt 1/5 for operation.
    
    
     (package:services/retry/retry_future.dart:285:9) [RetryFuture._delayNextCheck] -> 
     
     [ DEBUG] | 21:36:29 825ms | Waiting for 0:00:00.302951 before next attempt (current attempt: 1).
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:30 130ms | Attempt 2/5 for operation.
    
    
     (package:services/retry/retry_future.dart:285:9) [RetryFuture._delayNextCheck] -> 
     
     [ DEBUG] | 21:36:30 131ms | Waiting for 0:00:00.812911 before next attempt (current attempt: 2).
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:30 945ms | Attempt 3/5 for operation.
    Test case:tests unit/retry/retry_future_test.dart RetryFuture Tests should throw RetryException when trying to retry after disposal
    Outcome:Passed
    Duration:0.004 sec
    Stdout
     (package:services/retry/retry_future.dart:108:9) [new] -> 
     
     [ INFO] | 21:36:30 950ms | RetryFuture initialized with options: Instance of 'RetryOptions'
    
    
     (package:services/retry/retry_future.dart:295:9) [RetryFuture._throw] -> 
     
     [ ERROR] | 21:36:30 950ms | Throwing exception for RetryFuture is disposed, cannot perform operations.
    Test case:tests unit/retry/retry_future_test.dart RetryFuture Tests should handle network listener errors gracefully
    Outcome:Passed
    Duration:0.005 sec
    Stdout
     (package:services/retry/retry_future.dart:108:9) [new] -> 
     
     [ INFO] | 21:36:30 954ms | RetryFuture initialized with options: Instance of 'RetryOptions'
    
    
     (package:services/retry/retry_future.dart:235:11) [RetryFuture.tryRetry] -> 
     
     [ DEBUG] | 21:36:30 954ms | Attempt 1/3 for operation.
    Test case:tests unit/shared/chat_stream_test.dart ChatStream Tests Should invoke the stream builder multiple times on network failure
    Outcome:Passed
    Duration:0.015 sec
    Stdout
     (package:services/shared/chat_stream.dart:45:17) [ChatStream.getChatStream.<anonymous] -> 
     
     [ WARNING] | 21:36:30 965ms | Chat stream disconnected ([firestore/unavailable] null). Retrying (attempt=1) in  0s...
    
    
     (package:services/shared/chat_stream.dart:45:17) [ChatStream.getChatStream.<anonymous] -> 
     
     [ WARNING] | 21:36:30 968ms | Chat stream disconnected ([firestore/unavailable] null). Retrying (attempt=2) in  0s...
    Test case:tests unit/shared/chat_stream_test.dart ChatStream Tests Should fallback to last successful snapshot when max retries are reached
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/shared/chat_stream.dart:45:17) [ChatStream.getChatStream.<anonymous] -> 
     
     [ WARNING] | 21:36:30 975ms | Chat stream disconnected ([firestore/unavailable] null). Retrying (attempt=1) in  0s...
    Test case:tests unit/shared/chat_stream_test.dart ChatStream Tests Should immediately fail permanently on permission-denied
    Outcome:Passed
    Duration:0.005 sec
    Stdout
     (package:services/shared/chat_stream.dart:58:15) [ChatStream.getChatStream.<anonymous] -> 
     
     [ ERROR] | 21:36:30 981ms | Chat stream failed permanently: [firestore/permission-denied] null
    Test case:tests unit/upload/upload_state_test.dart UploadState tests addTask adds a task to the waiting queue
    Outcome:Passed
    Duration:0.005 sec
    Stdout
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:30 986ms | Added task task1 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:30 986ms | waiting task task1
    Test case:tests unit/upload/upload_state_test.dart UploadState tests addTask does not add duplicate tasks
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:30 991ms | Added task task1 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:30 991ms | waiting task task1
    
    
     (package:services/upload/upload_state.dart:106:11) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:30 992ms | Re-adding task task1 which is in state: waiting
    
    
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:30 992ms | Added task task1 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:30 992ms | waiting task task1
    Test case:tests unit/upload/upload_state_test.dart UploadState tests addTask respects queue size limit
    Outcome:Passed
    Duration:0.006 sec
    Stdout
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:30 999ms | Added task task1 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:30 999ms | waiting task task1
    
    
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:30 999ms | Added task task2 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:30 999ms | waiting task task2
    
    
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:30 999ms | Added task task3 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:30 999ms | waiting task task3
    Test case:tests unit/upload/upload_state_test.dart UploadState tests nextReady retrieves and moves task to in-progress
    Outcome:Passed
    Duration:0.008 sec
    Stdout
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:31 5ms | Added task task1 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:31 6ms | waiting task task1
    
    
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:31 6ms | Added task task2 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:31 6ms | waiting task task2
    
    
     (package:services/upload/upload_state.dart:139:11) [UploadState.nextReady] -> 
     
     [ DEBUG] | 21:36:31 6ms | Task task1 is in state: waiting
    
    
     (package:services/upload/upload_state.dart:168:11) [UploadState.nextReady] -> 
     
     [ DEBUG] | 21:36:31 7ms | Starting task task1 which is in state: waiting
    
    
     (package:services/upload/upload_state.dart:235:9) [UploadState._setStarted] -> 
     
     [ DEBUG] | 21:36:31 7ms | starting task task1
    Test case:tests unit/upload/upload_state_test.dart UploadState tests nextReady returns null if no tasks are waiting
    Outcome:Passed
    Duration:0.004 sec
    Stdout
     (package:services/upload/upload_state.dart:129:11) [UploadState.nextReady] -> 
     
     [ DEBUG] | 21:36:31 14ms | No tasks in the queue..
    
    
     (package:services/upload/upload_state.dart:62:11) [UploadState.hasErrors] -> 
     
     [ DEBUG] | 21:36:31 14ms | No errors, nothing in queue..
    
    
     (package:services/upload/upload_state.dart:71:11) [UploadState.errorCount] -> 
     
     [ DEBUG] | 21:36:31 14ms | No errors, nothing in queue..
    Test case:tests unit/upload/upload_state_test.dart UploadState tests setCompleted marks task as completed
    Outcome:Passed
    Duration:0.007 sec
    Stdout
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:31 18ms | Added task task1 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:31 18ms | waiting task task1
    
    
     (package:services/upload/upload_state.dart:139:11) [UploadState.nextReady] -> 
     
     [ DEBUG] | 21:36:31 18ms | Task task1 is in state: waiting
    
    
     (package:services/upload/upload_state.dart:168:11) [UploadState.nextReady] -> 
     
     [ DEBUG] | 21:36:31 18ms | Starting task task1 which is in state: waiting
    
    
     (package:services/upload/upload_state.dart:235:9) [UploadState._setStarted] -> 
     
     [ DEBUG] | 21:36:31 19ms | starting task task1
    
    
     (package:services/upload/upload_state.dart:201:9) [UploadState.setCompleted] -> 
     
     [ DEBUG] | 21:36:31 19ms | completed task task1
    
    
     (package:services/upload/upload_state.dart:248:9) [UploadState._cleanupTask] -> 
     
     [ DEBUG] | 21:36:31 19ms | cleaning up task task1 in state inProgress
    
    
     (package:services/upload/upload_state.dart:258:11) [UploadState._cleanupTask] -> 
     
     [ DEBUG] | 21:36:31 19ms | marking task task1 as completed
    Test case:tests unit/upload/upload_state_test.dart UploadState tests setCompleted returns null if task ID does not exist
    Outcome:Passed
    Duration:0.004 sec
    Stdout
     (package:services/upload/upload_state.dart:179:11) [UploadState.setCompleted] -> 
     
     [ WARNING] | 21:36:31 27ms | corrupted state, cannot complete task nonexistent
    
    
     (package:services/upload/upload_state.dart:62:11) [UploadState.hasErrors] -> 
     
     [ DEBUG] | 21:36:31 27ms | No errors, nothing in queue..
    
    
     (package:services/upload/upload_state.dart:71:11) [UploadState.errorCount] -> 
     
     [ DEBUG] | 21:36:31 27ms | No errors, nothing in queue..
    Test case:tests unit/upload/upload_state_test.dart UploadState tests setErrored marks task as failed
    Outcome:Passed
    Duration:0.008 sec
    Stdout
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:31 31ms | Added task task1 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:31 31ms | waiting task task1
    
    
     (package:services/upload/upload_state.dart:139:11) [UploadState.nextReady] -> 
     
     [ DEBUG] | 21:36:31 31ms | Task task1 is in state: waiting
    
    
     (package:services/upload/upload_state.dart:168:11) [UploadState.nextReady] -> 
     
     [ DEBUG] | 21:36:31 32ms | Starting task task1 which is in state: waiting
    
    
     (package:services/upload/upload_state.dart:235:9) [UploadState._setStarted] -> 
     
     [ DEBUG] | 21:36:31 32ms | starting task task1
    
    
     (package:services/upload/upload_state.dart:213:9) [UploadState.setErrored] -> 
     
     [ DEBUG] | 21:36:31 32ms | Setting errored state for task task1 in state inProgress
    
    
     (package:services/upload/upload_state.dart:248:9) [UploadState._cleanupTask] -> 
     
     [ DEBUG] | 21:36:31 32ms | cleaning up task task1 in state inProgress
    
    
     (package:services/upload/upload_state.dart:262:11) [UploadState._cleanupTask] -> 
     
     [ DEBUG] | 21:36:31 32ms | marking task task1 as failed
    Test case:tests unit/upload/upload_state_test.dart UploadState tests setErrored does nothing if task ID does not exist
    Outcome:Passed
    Duration:0.004 sec
    Stdout
     (package:services/upload/upload_state.dart:209:11) [UploadState.setErrored] -> 
     
     [ WARNING] | 21:36:31 40ms | corrupted state, cannot error task nonexistent
    
    
     (package:services/upload/upload_state.dart:62:11) [UploadState.hasErrors] -> 
     
     [ DEBUG] | 21:36:31 40ms | No errors, nothing in queue..
    
    
     (package:services/upload/upload_state.dart:71:11) [UploadState.errorCount] -> 
     
     [ DEBUG] | 21:36:31 40ms | No errors, nothing in queue..
    Test case:tests unit/upload/upload_state_test.dart UploadState tests clearErrors clears all failed tasks
    Outcome:Passed
    Duration:0.01 sec
    Stdout
     (package:services/upload/upload_state.dart:119:9) [UploadState.add] -> 
     
     [ DEBUG] | 21:36:31 45ms | Added task task1 as waiting ...
    
    
     (package:services/upload/upload_state.dart:227:9) [UploadState._setWaiting] -> 
     
     [ DEBUG] | 21:36:31 45ms | waiting task task1
    
    
     (package:services/upload/upload_state.dart:139:11) [UploadState.nextReady] -> 
     
     [ DEBUG] | 21:36:31 45ms | Task task1 is in state: waiting
    
    
     (package:services/upload/upload_state.dart:168:11) [UploadState.nextReady] -> 
     
     [ DEBUG] | 21:36:31 45ms | Starting task task1 which is in state: waiting
    
    
     (package:services/upload/upload_state.dart:235:9) [UploadState._setStarted] -> 
     
     [ DEBUG] | 21:36:31 45ms | starting task task1
    
    
     (package:services/upload/upload_state.dart:213:9) [UploadState.setErrored] -> 
     
     [ DEBUG] | 21:36:31 45ms | Setting errored state for task task1 in state inProgress
    
    
     (package:services/upload/upload_state.dart:248:9) [UploadState._cleanupTask] -> 
     
     [ DEBUG] | 21:36:31 45ms | cleaning up task task1 in state inProgress
    
    
     (package:services/upload/upload_state.dart:262:11) [UploadState._cleanupTask] -> 
     
     [ DEBUG] | 21:36:31 45ms | marking task task1 as failed
    
    
     (package:services/upload/upload_state.dart:294:15) [UploadState.clearErrors.<anonymous] -> 
     
     [ DEBUG] | 21:36:31 46ms | Clearing error state for task task1
    
    
     (package:services/upload/upload_state.dart:299:9) [UploadState.clearErrors] -> 
     
     [ DEBUG] | 21:36:31 46ms | Cleared all failed entries
    
    
     (package:services/upload/upload_state.dart:62:11) [UploadState.hasErrors] -> 
     
     [ DEBUG] | 21:36:31 46ms | No errors, nothing in queue..
    
    
     (package:services/upload/upload_state.dart:71:11) [UploadState.errorCount] -> 
     
     [ DEBUG] | 21:36:31 46ms | No errors, nothing in queue..
    Test case:tests unit/upload/upload_state_test.dart UploadState tests clearErrors does nothing if there are no errors
    Outcome:Passed
    Duration:0.005 sec
    Stdout
     (package:services/upload/upload_state.dart:62:11) [UploadState.hasErrors] -> 
     
     [ DEBUG] | 21:36:31 55ms | No errors, nothing in queue..
    
    
     (package:services/upload/upload_state.dart:280:11) [UploadState.clearErrors] -> 
     
     [ DEBUG] | 21:36:31 56ms | All good, no need to clear errors..
    
    
     (package:services/upload/upload_state.dart:62:11) [UploadState.hasErrors] -> 
     
     [ DEBUG] | 21:36:31 56ms | No errors, nothing in queue..
    
    
     (package:services/upload/upload_state.dart:71:11) [UploadState.errorCount] -> 
     
     [ DEBUG] | 21:36:31 56ms | No errors, nothing in queue..
    Test case:tests unit/upload/upload_stats_test.dart UploadStats initialization
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/upload/upload_stats_test.dart UploadStats equality
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/upload/upload_stats_test.dart UploadStats equality with values
    Outcome:Passed
    Duration:0.001 sec
    Test case:tests unit/upload/upload_stats_test.dart UploadStats inequality
    Outcome:Passed
    Duration:0.001 sec
    Test case:tests unit/upload/upload_stats_test.dart UploadStats hasErrors
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/user/auth_attempt_test.dart AuthAttempt PasswordAuthAttempt signInWithCredentials
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/user/auth_attempt_test.dart AuthAttempt GoogleAuthAttempt interactive Sign In
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/user/auth_attempt_test.dart AuthAttempt AppleAuthAttempt interactive
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/user/auth_result_test.dart AuthResult EmailResult signInWithCredentials
    Outcome:Passed
    Duration:0.001 sec
    Test case:tests unit/user/auth_result_test.dart AuthResult GoogleResult googleSignIn
    Outcome:Passed
    Duration:0.001 sec
    Test case:tests unit/user/crash_restarter_test.dart CrashRestarter: - Widget Tests Phoenix.rebirth restarts the app
    Outcome:Passed
    Duration:0.06 sec
    Stdout
     (package:services/user/crash_restarter.dart:65:11) [CrashRestarter.shouldRestart] -> 
     
     [ DEBUG] | 21:36:31 130ms | App is eligible for restart (last restart at 2026-09-08 21:36:31.130132, cutoff at 2026-09-09 21:36:31.130132, now 2026-09-10 21:36:31.130132)
    
    
      [runCrashRestarterWidgetTests.<anonymous] -> 
     
     [ DEBUG] | 21:36:31 130ms | App restarted
    
    
     (package:services/user/crash_restarter.dart:92:9) [CrashRestarter.tryRestart] -> 
     
     [ WARNING] | 21:36:31 130ms | Restarting app with last restart time 2026-09-10 21:36:31.130132
    Test case:tests unit/user/invitation_info_test.dart InvitationInfo name with first and last name
    Outcome:Passed
    Duration:0.002 sec
    Test case:tests unit/user/invitation_info_test.dart InvitationInfo returns scrubbed email when no names provided
    Outcome:Passed
    Duration:0.001 sec
    Test case:tests unit/user/invitation_info_test.dart InvitationInfo returns display name when no first/last name provided
    Outcome:Passed
    Duration:0.002 sec

    Suite stdout:

     (package:core/admin/service_manager.dart:135:11) [ServiceManager.unregister] -> 
     
     [ DEBUG] | 21:36:28 306ms | Unregistered GetIt of Type AppServiceSetup
    
    
     (package:core/admin/service_manager.dart:135:11) [ServiceManager.unregister] -> 
     
     [ DEBUG] | 21:36:28 307ms | Unregistered GetIt of Type AppFirebaseSetup

    Suite stderr:

    None