install_command_test.go 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package commands
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "testing"
  6. . "github.com/smartystreets/goconvey/convey"
  7. )
  8. func TestFoldernameReplacement(t *testing.T) {
  9. Convey("path containing git commit path", t, func() {
  10. pluginName := "datasource-plugin-kairosdb"
  11. paths := map[string]string{
  12. "datasource-plugin-kairosdb-cc4a3965ef5d3eb1ae0ee4f93e9e78ec7db69e64/": "datasource-plugin-kairosdb/",
  13. "datasource-plugin-kairosdb-cc4a3965ef5d3eb1ae0ee4f93e9e78ec7db69e64/README.md": "datasource-plugin-kairosdb/README.md",
  14. "datasource-plugin-kairosdb-cc4a3965ef5d3eb1ae0ee4f93e9e78ec7db69e64/partials/": "datasource-plugin-kairosdb/partials/",
  15. "datasource-plugin-kairosdb-cc4a3965ef5d3eb1ae0ee4f93e9e78ec7db69e64/partials/config.html": "datasource-plugin-kairosdb/partials/config.html",
  16. }
  17. Convey("should be replaced with plugin name", func() {
  18. for k, v := range paths {
  19. So(RemoveGitBuildFromName(pluginName, k), ShouldEqual, v)
  20. }
  21. })
  22. })
  23. Convey("path containing git commit path", t, func() {
  24. pluginName := "app-example"
  25. paths := map[string]string{
  26. "app-plugin-example-3c28f65ac6fb7f1e234b0364b97081d836495439/": "app-example/",
  27. }
  28. Convey("should be replaced with plugin name", func() {
  29. for k, v := range paths {
  30. So(RemoveGitBuildFromName(pluginName, k), ShouldEqual, v)
  31. }
  32. })
  33. })
  34. }
  35. func TestExtractFiles(t *testing.T) {
  36. Convey("Should preserve file permissions for plugin backend binaries for linux and darwin", t, func() {
  37. err := os.RemoveAll("testdata/fake-plugins-dir")
  38. So(err, ShouldBeNil)
  39. err = os.MkdirAll("testdata/fake-plugins-dir", 0774)
  40. So(err, ShouldBeNil)
  41. body, err := ioutil.ReadFile("testdata/grafana-simple-json-datasource-ec18fa4da8096a952608a7e4c7782b4260b41bcf.zip")
  42. So(err, ShouldBeNil)
  43. err = extractFiles(body, "grafana-simple-json-datasource", "testdata/fake-plugins-dir")
  44. So(err, ShouldBeNil)
  45. //File in zip has permissions 777
  46. fileInfo, err := os.Stat("testdata/fake-plugins-dir/grafana-simple-json-datasource/simple-plugin_darwin_amd64")
  47. So(err, ShouldBeNil)
  48. So(fileInfo.Mode().String(), ShouldEqual, "-rwxr-xr-x")
  49. //File in zip has permission 664
  50. fileInfo, err = os.Stat("testdata/fake-plugins-dir/grafana-simple-json-datasource/simple-plugin_linux_amd64")
  51. So(err, ShouldBeNil)
  52. So(fileInfo.Mode().String(), ShouldEqual, "-rwxr-xr-x")
  53. //File in zip has permission 644
  54. fileInfo, err = os.Stat("testdata/fake-plugins-dir/grafana-simple-json-datasource/simple-plugin_windows_amd64.exe")
  55. So(err, ShouldBeNil)
  56. So(fileInfo.Mode().String(), ShouldEqual, "-rw-r--r--")
  57. //File in zip has permission 755
  58. fileInfo, err = os.Stat("testdata/fake-plugins-dir/grafana-simple-json-datasource/non-plugin-binary")
  59. So(err, ShouldBeNil)
  60. So(fileInfo.Mode().String(), ShouldEqual, "-rwxr-xr-x")
  61. err = os.RemoveAll("testdata/fake-plugins-dir")
  62. So(err, ShouldBeNil)
  63. })
  64. }