items_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package cwhub
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/require"
  5. "github.com/crowdsecurity/go-cs-lib/cstest"
  6. )
  7. func TestItemStatus(t *testing.T) {
  8. hub := envSetup(t)
  9. // get existing map
  10. x := hub.GetItemMap(COLLECTIONS)
  11. require.NotEmpty(t, x)
  12. // Get item : good and bad
  13. for k := range x {
  14. item := hub.GetItem(COLLECTIONS, k)
  15. require.NotNil(t, item)
  16. item.Installed = true
  17. item.UpToDate = false
  18. item.Local = false
  19. item.Tainted = false
  20. txt, _ := item.Status()
  21. require.Equal(t, "enabled,update-available", txt)
  22. item.Installed = false
  23. item.UpToDate = false
  24. item.Local = true
  25. item.Tainted = false
  26. txt, _ = item.Status()
  27. require.Equal(t, "disabled,local", txt)
  28. }
  29. stats := hub.ItemStats()
  30. require.Equal(t, []string{"Loaded: 2 parsers, 1 scenarios, 3 collections"}, stats)
  31. }
  32. func TestGetters(t *testing.T) {
  33. hub := envSetup(t)
  34. // get non existing map
  35. empty := hub.GetItemMap("ratata")
  36. require.Nil(t, empty)
  37. // get existing map
  38. x := hub.GetItemMap(COLLECTIONS)
  39. require.NotEmpty(t, x)
  40. // Get item : good and bad
  41. for k := range x {
  42. empty := hub.GetItem(COLLECTIONS, k+"nope")
  43. require.Nil(t, empty)
  44. item := hub.GetItem(COLLECTIONS, k)
  45. require.NotNil(t, item)
  46. // Add item and get it
  47. item.Name += "nope"
  48. err := hub.AddItem(*item)
  49. require.NoError(t, err)
  50. newitem := hub.GetItem(COLLECTIONS, item.Name)
  51. require.NotNil(t, newitem)
  52. item.Type = "ratata"
  53. err = hub.AddItem(*item)
  54. cstest.RequireErrorContains(t, err, "ItemType ratata is unknown")
  55. }
  56. }