2
0

provider_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package shared
  2. import (
  3. "testing"
  4. )
  5. func TestParseProvider(t *testing.T) {
  6. tests := []struct {
  7. input string
  8. expected Provider
  9. }{
  10. // Canonical values
  11. {"AWS", ProviderAWS},
  12. {"GCP", ProviderGCP},
  13. {"Azure", ProviderAzure},
  14. {"Alibaba", ProviderAlibaba},
  15. {"DigitalOcean", ProviderDigitalOcean},
  16. {"Oracle", ProviderOracle},
  17. // Case-insensitive
  18. {"aws", ProviderAWS},
  19. {"gcp", ProviderGCP},
  20. {"azure", ProviderAzure},
  21. {"alibaba", ProviderAlibaba},
  22. {"digitalocean", ProviderDigitalOcean},
  23. {"oracle", ProviderOracle},
  24. {"AWS", ProviderAWS},
  25. {"AZURE", ProviderAzure},
  26. // Aliases
  27. {"amazon", ProviderAWS},
  28. {"Amazon", ProviderAWS},
  29. {"gce", ProviderGCP},
  30. {"GCE", ProviderGCP},
  31. {"google", ProviderGCP},
  32. {"Google", ProviderGCP},
  33. {"microsoft", ProviderAzure},
  34. {"Microsoft", ProviderAzure},
  35. {"do", ProviderDigitalOcean},
  36. {"DO", ProviderDigitalOcean},
  37. {"oci", ProviderOracle},
  38. {"OCI", ProviderOracle},
  39. // Unknown input returns empty
  40. {"", ProviderEmpty},
  41. {"unknown", ProviderEmpty},
  42. {"scaleway", ProviderEmpty},
  43. }
  44. for _, tt := range tests {
  45. t.Run(tt.input, func(t *testing.T) {
  46. got := ParseProvider(tt.input)
  47. if got != tt.expected {
  48. t.Errorf("ParseProvider(%q) = %q, want %q", tt.input, got, tt.expected)
  49. }
  50. })
  51. }
  52. }