utils_test.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //go:build linux || freebsd || netbsd || openbsd || solaris || !windows
  2. package csplugin
  3. import (
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/crowdsecurity/go-cs-lib/cstest"
  7. )
  8. func TestGetPluginNameAndTypeFromPath(t *testing.T) {
  9. tests := []struct {
  10. name string
  11. path string
  12. want string
  13. want1 string
  14. expectedErr string
  15. }{
  16. {
  17. name: "valid plugin name, single dash",
  18. path: "/path/to/notification-gitter",
  19. want: "notification",
  20. want1: "gitter",
  21. },
  22. {
  23. name: "invalid plugin name",
  24. path: "/path/to/gitter",
  25. expectedErr: "plugin name /path/to/gitter is invalid. Name should be like {type-name}",
  26. },
  27. {
  28. name: "valid plugin name, multiple dash",
  29. path: "/path/to/notification-instant-slack",
  30. want: "notification-instant",
  31. want1: "slack",
  32. },
  33. }
  34. for _, tc := range tests {
  35. tc := tc
  36. t.Run(tc.name, func(t *testing.T) {
  37. got, got1, err := getPluginTypeAndSubtypeFromPath(tc.path)
  38. cstest.RequireErrorContains(t, err, tc.expectedErr)
  39. assert.Equal(t, tc.want, got)
  40. assert.Equal(t, tc.want1, got1)
  41. })
  42. }
  43. }