validate method

List<String> validate()

Validates the configuration and returns a list of issues

Implementation

List<String> validate() {
  final issues = <String>[];

  // Validate base URL
  if (baseUrl.isEmpty) {
    issues.add('Base URL cannot be empty');
  } else {
    final uri = Uri.tryParse(baseUrl);
    if (uri == null || !uri.hasScheme || !uri.hasAuthority) {
      issues.add('Base URL must be a valid URL with scheme and host');
    } else if (!['http', 'https'].contains(uri.scheme)) {
      issues.add('Base URL must use http or https scheme');
    }
  }

  // Validate client ID
  if (clientId.isEmpty) {
    issues.add('Client ID cannot be empty');
  }

  // Validate redirect scheme
  if (redirectScheme.isEmpty) {
    issues.add('Redirect scheme cannot be empty');
  } else if (redirectScheme.contains('://')) {
    issues.add('Redirect scheme should not contain ://');
  } else if (!RegExp(r'^[a-zA-Z][a-zA-Z0-9+.-]*$').hasMatch(redirectScheme)) {
    issues.add('Redirect scheme must be a valid URL scheme');
  }

  // Validate scopes
  if (scopes.isEmpty) {
    issues.add('At least one scope must be specified');
  }

  // Validate thresholds
  if (tokenRefreshThreshold.isNegative) {
    issues.add('Token refresh threshold cannot be negative');
  }

  if (networkTimeout.isNegative || networkTimeout.inSeconds < 1) {
    issues.add('Network timeout must be at least 1 second');
  }

  return issues;
}