validateConnectivity static method

Future<ValidationResult> validateConnectivity(
  1. OAuthConfig config
)

Validates network connectivity to Frappe endpoints

Implementation

static Future<ValidationResult> validateConnectivity(OAuthConfig config) async {
  final issues = <String>[];
  final suggestions = <String>[];

  try {
    // Validate authorization endpoint
    final authIssues = await UrlBuilder.validateEndpoint(config.authorizationEndpoint);
    issues.addAll(authIssues.map((issue) => 'Authorization endpoint: $issue'));

    // Validate token endpoint
    final tokenIssues = await UrlBuilder.validateEndpoint(config.tokenEndpoint);
    issues.addAll(tokenIssues.map((issue) => 'Token endpoint: $issue'));

    // Validate user info endpoint
    final userInfoIssues = await UrlBuilder.validateEndpoint(config.userInfoEndpoint);
    issues.addAll(userInfoIssues.map((issue) => 'User info endpoint: $issue'));

    if (issues.isNotEmpty) {
      suggestions.addAll([
        'Check your internet connection',
        'Verify the Frappe server is accessible',
        'Ensure the base URL is correct',
        'Check if the server requires VPN access',
      ]);
    }
  } catch (e) {
    issues.add('Network connectivity test failed: $e');
    suggestions.add('Check your network connection and try again');
  }

  if (issues.isEmpty) {
    return ValidationResult.success(
      context: {
        'connectivityTest': 'passed',
        'testedAt': DateTime.now().toIso8601String(),
      },
    );
  }

  return ValidationResult.failure(
    issues: issues,
    suggestions: suggestions,
    context: {
      'connectivityTest': 'failed',
      'testedAt': DateTime.now().toIso8601String(),
    },
  );
}