import 'dart:async'; import 'dart:io'; import 'package:flutter_test/flutter_test.dart'; import 'package:dart_smb2/dart_smb2.dart'; import 'package:spotiflac_android/services/network_storage_error.dart'; void main() { test('network diagnostics separate transport, login and share failures', () { final cases = { const SocketException('private host'): NetworkStorageError.unreachable, TimeoutException('private host'): NetworkStorageError.timeout, const Smb2Exception('STATUS_LOGON_FAILURE'): NetworkStorageError.authentication, const Smb2Exception('private share', 13, Smb2ErrorType.accessDenied): NetworkStorageError.permission, const Smb2Exception('STATUS_BAD_NETWORK_NAME'): NetworkStorageError.missingShare, const Smb2Exception('Server does not support SMB2'): NetworkStorageError.incompatible, const Smb2Exception('private host', 0, Smb2ErrorType.connection): NetworkStorageError.unreachable, const Smb2Exception('private host', 60, Smb2ErrorType.timeout): NetworkStorageError.timeout, const FormatException('private URL'): NetworkStorageError.invalidAddress, const HttpException('Server returned 401'): NetworkStorageError.authentication, const HttpException('Server returned 403'): NetworkStorageError.permission, StateError('unknown'): NetworkStorageError.unknown, const Smb2Exception( 'Worker failed to start: Connect failed: socket connect failed', ): NetworkStorageError.unreachable, const Smb2Exception('Worker failed to start: Timeout expired'): NetworkStorageError.timeout, const Smb2Exception('SMB2_STATUS_PASSWORD_EXPIRED'): NetworkStorageError.authentication, }; for (final entry in cases.entries) { expect(classifyNetworkStorageError(entry.key), entry.value); } }); }