util_test.go 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package server
  2. import (
  3. "github.com/stretchr/testify/require"
  4. "net/http"
  5. "testing"
  6. )
  7. func TestReadBoolParam(t *testing.T) {
  8. r, _ := http.NewRequest("GET", "https://ntfy.sh/mytopic?up=1&firebase=no", nil)
  9. up := readBoolParam(r, false, "x-up", "up")
  10. firebase := readBoolParam(r, true, "x-firebase", "firebase")
  11. require.Equal(t, true, up)
  12. require.Equal(t, false, firebase)
  13. r, _ = http.NewRequest("GET", "https://ntfy.sh/mytopic", nil)
  14. r.Header.Set("X-Up", "yes")
  15. r.Header.Set("X-Firebase", "0")
  16. up = readBoolParam(r, false, "x-up", "up")
  17. firebase = readBoolParam(r, true, "x-firebase", "firebase")
  18. require.Equal(t, true, up)
  19. require.Equal(t, false, firebase)
  20. r, _ = http.NewRequest("GET", "https://ntfy.sh/mytopic", nil)
  21. up = readBoolParam(r, false, "x-up", "up")
  22. firebase = readBoolParam(r, true, "x-up", "up")
  23. require.Equal(t, false, up)
  24. require.Equal(t, true, firebase)
  25. }
  26. func TestParseActions(t *testing.T) {
  27. actions, err := parseActions("[]")
  28. require.Nil(t, err)
  29. require.Empty(t, actions)
  30. actions, err = parseActions("action=http, label=Open door, url=https://door.lan/open; view, Show portal, https://door.lan")
  31. require.Nil(t, err)
  32. require.Equal(t, 2, len(actions))
  33. require.Equal(t, "http", actions[0].Action)
  34. require.Equal(t, "Open door", actions[0].Label)
  35. require.Equal(t, "https://door.lan/open", actions[0].URL)
  36. require.Equal(t, "view", actions[1].Action)
  37. require.Equal(t, "Show portal", actions[1].Label)
  38. require.Equal(t, "https://door.lan", actions[1].URL)
  39. actions, err = parseActions(`[{"action":"http","label":"Open door","url":"https://door.lan/open"}, {"action":"view","label":"Show portal","url":"https://door.lan"}]`)
  40. require.Nil(t, err)
  41. require.Equal(t, 2, len(actions))
  42. require.Equal(t, "http", actions[0].Action)
  43. require.Equal(t, "Open door", actions[0].Label)
  44. require.Equal(t, "https://door.lan/open", actions[0].URL)
  45. require.Equal(t, "view", actions[1].Action)
  46. require.Equal(t, "Show portal", actions[1].Label)
  47. require.Equal(t, "https://door.lan", actions[1].URL)
  48. actions, err = parseActions("action=http, label=Open door, url=https://door.lan/open, body=this is a body, method=PUT")
  49. require.Nil(t, err)
  50. require.Equal(t, 1, len(actions))
  51. require.Equal(t, "http", actions[0].Action)
  52. require.Equal(t, "Open door", actions[0].Label)
  53. require.Equal(t, "https://door.lan/open", actions[0].URL)
  54. require.Equal(t, "PUT", actions[0].Method)
  55. require.Equal(t, "this is a body", actions[0].Body)
  56. actions, err = parseActions("action=broadcast, label=Do a thing, extras.command=some command, extras.some_param=a parameter")
  57. require.Nil(t, err)
  58. require.Equal(t, 1, len(actions))
  59. require.Equal(t, "broadcast", actions[0].Action)
  60. require.Equal(t, "Do a thing", actions[0].Label)
  61. require.Equal(t, 2, len(actions[0].Extras))
  62. require.Equal(t, "some command", actions[0].Extras["command"])
  63. require.Equal(t, "a parameter", actions[0].Extras["some_param"])
  64. actions, err = parseActions("action=http, label=Send request, url=http://example.com, method=GET, headers.Content-Type=application/json, headers.Authorization=Basic sdasffsf")
  65. require.Nil(t, err)
  66. require.Equal(t, 1, len(actions))
  67. require.Equal(t, "http", actions[0].Action)
  68. require.Equal(t, "Send request", actions[0].Label)
  69. require.Equal(t, 2, len(actions[0].Headers))
  70. require.Equal(t, "application/json", actions[0].Headers["Content-Type"])
  71. require.Equal(t, "Basic sdasffsf", actions[0].Headers["Authorization"])
  72. }