url_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package sprig
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. var urlTests = map[string]map[string]any{
  7. "proto://auth@host:80/path?query#fragment": {
  8. "fragment": "fragment",
  9. "host": "host:80",
  10. "hostname": "host",
  11. "opaque": "",
  12. "path": "/path",
  13. "query": "query",
  14. "scheme": "proto",
  15. "userinfo": "auth",
  16. },
  17. "proto://host:80/path": {
  18. "fragment": "",
  19. "host": "host:80",
  20. "hostname": "host",
  21. "opaque": "",
  22. "path": "/path",
  23. "query": "",
  24. "scheme": "proto",
  25. "userinfo": "",
  26. },
  27. "something": {
  28. "fragment": "",
  29. "host": "",
  30. "hostname": "",
  31. "opaque": "",
  32. "path": "something",
  33. "query": "",
  34. "scheme": "",
  35. "userinfo": "",
  36. },
  37. "proto://user:passwor%20d@host:80/path": {
  38. "fragment": "",
  39. "host": "host:80",
  40. "hostname": "host",
  41. "opaque": "",
  42. "path": "/path",
  43. "query": "",
  44. "scheme": "proto",
  45. "userinfo": "user:passwor%20d",
  46. },
  47. "proto://host:80/pa%20th?key=val%20ue": {
  48. "fragment": "",
  49. "host": "host:80",
  50. "hostname": "host",
  51. "opaque": "",
  52. "path": "/pa th",
  53. "query": "key=val%20ue",
  54. "scheme": "proto",
  55. "userinfo": "",
  56. },
  57. }
  58. func TestUrlParse(t *testing.T) {
  59. // testing that function is exported and working properly
  60. assert.NoError(t, runt(
  61. `{{ index ( urlParse "proto://auth@host:80/path?query#fragment" ) "host" }}`,
  62. "host:80"))
  63. // testing scenarios
  64. for url, expected := range urlTests {
  65. assert.EqualValues(t, expected, urlParse(url))
  66. }
  67. }
  68. func TestUrlJoin(t *testing.T) {
  69. tests := map[string]string{
  70. `{{ urlJoin (dict "fragment" "fragment" "host" "host:80" "path" "/path" "query" "query" "scheme" "proto") }}`: "proto://host:80/path?query#fragment",
  71. `{{ urlJoin (dict "fragment" "fragment" "host" "host:80" "path" "/path" "scheme" "proto" "userinfo" "ASDJKJSD") }}`: "proto://ASDJKJSD@host:80/path#fragment",
  72. }
  73. for tpl, expected := range tests {
  74. assert.NoError(t, runt(tpl, expected))
  75. }
  76. for expected, urlMap := range urlTests {
  77. assert.EqualValues(t, expected, urlJoin(urlMap))
  78. }
  79. }