preprocessor_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package reader
  2. import (
  3. "os"
  4. "strings"
  5. "testing"
  6. )
  7. func TestReplaceEnvVars(t *testing.T) {
  8. os.Setenv("myBar", "cat")
  9. os.Setenv("MYBAR", "cat")
  10. os.Setenv("my_Bar", "cat")
  11. os.Setenv("myBar_", "cat")
  12. testData := []struct {
  13. expected string
  14. data []byte
  15. }{
  16. // Right use cases
  17. {
  18. `{"foo": "bar", "baz": {"bar": "cat"}}`,
  19. []byte(`{"foo": "bar", "baz": {"bar": "${myBar}"}}`),
  20. },
  21. {
  22. `{"foo": "bar", "baz": {"bar": "cat"}}`,
  23. []byte(`{"foo": "bar", "baz": {"bar": "${MYBAR}"}}`),
  24. },
  25. {
  26. `{"foo": "bar", "baz": {"bar": "cat"}}`,
  27. []byte(`{"foo": "bar", "baz": {"bar": "${my_Bar}"}}`),
  28. },
  29. {
  30. `{"foo": "bar", "baz": {"bar": "cat"}}`,
  31. []byte(`{"foo": "bar", "baz": {"bar": "${myBar_}"}}`),
  32. },
  33. // Wrong use cases
  34. {
  35. `{"foo": "bar", "baz": {"bar": "${myBar-}"}}`,
  36. []byte(`{"foo": "bar", "baz": {"bar": "${myBar-}"}}`),
  37. },
  38. {
  39. `{"foo": "bar", "baz": {"bar": "${}"}}`,
  40. []byte(`{"foo": "bar", "baz": {"bar": "${}"}}`),
  41. },
  42. {
  43. `{"foo": "bar", "baz": {"bar": "$sss}"}}`,
  44. []byte(`{"foo": "bar", "baz": {"bar": "$sss}"}}`),
  45. },
  46. {
  47. `{"foo": "bar", "baz": {"bar": "${sss"}}`,
  48. []byte(`{"foo": "bar", "baz": {"bar": "${sss"}}`),
  49. },
  50. {
  51. `{"foo": "bar", "baz": {"bar": "{something}"}}`,
  52. []byte(`{"foo": "bar", "baz": {"bar": "{something}"}}`),
  53. },
  54. // Use cases without replace env vars
  55. {
  56. `{"foo": "bar", "baz": {"bar": "cat"}}`,
  57. []byte(`{"foo": "bar", "baz": {"bar": "cat"}}`),
  58. },
  59. }
  60. for _, test := range testData {
  61. res, err := ReplaceEnvVars(test.data)
  62. if err != nil {
  63. t.Fatal(err)
  64. }
  65. if strings.Compare(test.expected, string(res)) != 0 {
  66. t.Fatalf("Expected %s got %s", test.expected, res)
  67. }
  68. }
  69. }