arguments_test.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package executor
  2. import (
  3. config "github.com/OliveTin/OliveTin/internal/config"
  4. "github.com/stretchr/testify/assert"
  5. "testing"
  6. )
  7. func TestSanitizeUnsafe(t *testing.T) {
  8. assert.Nil(t, TypeSafetyCheck("", "_zomg_ c:/ haxxor ' bobby tables && rm -rf ", "very_dangerous_raw_string"))
  9. }
  10. func TestSanitizeUnimplemented(t *testing.T) {
  11. err := TypeSafetyCheck("", "I am a happy little argument", "greeting_type")
  12. assert.NotNil(t, err, "Test an argument type that does not exist")
  13. }
  14. func TestArgumentNameNumbers(t *testing.T) {
  15. a1 := config.Action{
  16. Title: "Do some tickles",
  17. Shell: "echo 'Tickling {{ person1name }}'",
  18. Arguments: []config.ActionArgument{
  19. {
  20. Name: "person1name",
  21. Type: "ascii",
  22. },
  23. },
  24. }
  25. values := map[string]string{
  26. "person1name": "Fred",
  27. }
  28. out, err := parseActionArguments(a1.Shell, values, &a1, a1.Title, "")
  29. assert.Equal(t, "echo 'Tickling Fred'", out)
  30. assert.Nil(t, err)
  31. }
  32. func TestArgumentNotProvided(t *testing.T) {
  33. a1 := config.Action{
  34. Title: "Do some tickles",
  35. Shell: "echo 'Tickling {{ personName }}'",
  36. Arguments: []config.ActionArgument{
  37. {
  38. Name: "person",
  39. Type: "ascii",
  40. },
  41. },
  42. }
  43. values := map[string]string{}
  44. out, err := parseActionArguments(a1.Shell, values, &a1, a1.Title, "")
  45. assert.Equal(t, "", out)
  46. assert.Equal(t, err.Error(), "Required arg not provided: personName")
  47. }
  48. func TestTypeSafetyCheckUrl(t *testing.T) {
  49. assert.Nil(t, TypeSafetyCheck("test1", "http://google.com", "url"), "Test URL: google.com")
  50. assert.Nil(t, TypeSafetyCheck("test2", "http://technowax.net:80?foo=bar", "url"), "Test URL: technowax.net with query arguments")
  51. assert.Nil(t, TypeSafetyCheck("test3", "http://localhost:80?foo=bar", "url"), "Test URL: localhost with query arguments")
  52. assert.NotNil(t, TypeSafetyCheck("test4", "http://lo host:80", "url"), "Test a badly formed URL")
  53. assert.NotNil(t, TypeSafetyCheck("test5", "12345", "url"), "Test a badly formed URL")
  54. assert.NotNil(t, TypeSafetyCheck("test6", "_!23;", "url"), "Test a badly formed URL")
  55. }