| 
									
										
										
										
											2016-02-15 21:09:34 +08:00
										 |  |  | package commands | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2019-02-18 20:51:43 +08:00
										 |  |  | 	"io/ioutil" | 
					
						
							|  |  |  | 	"os" | 
					
						
							| 
									
										
										
										
											2016-02-15 21:09:34 +08:00
										 |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	. "github.com/smartystreets/goconvey/convey" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestFoldernameReplacement(t *testing.T) { | 
					
						
							|  |  |  | 	Convey("path containing git commit path", t, func() { | 
					
						
							|  |  |  | 		pluginName := "datasource-plugin-kairosdb" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		paths := map[string]string{ | 
					
						
							|  |  |  | 			"datasource-plugin-kairosdb-cc4a3965ef5d3eb1ae0ee4f93e9e78ec7db69e64/":                     "datasource-plugin-kairosdb/", | 
					
						
							|  |  |  | 			"datasource-plugin-kairosdb-cc4a3965ef5d3eb1ae0ee4f93e9e78ec7db69e64/README.md":            "datasource-plugin-kairosdb/README.md", | 
					
						
							|  |  |  | 			"datasource-plugin-kairosdb-cc4a3965ef5d3eb1ae0ee4f93e9e78ec7db69e64/partials/":            "datasource-plugin-kairosdb/partials/", | 
					
						
							|  |  |  | 			"datasource-plugin-kairosdb-cc4a3965ef5d3eb1ae0ee4f93e9e78ec7db69e64/partials/config.html": "datasource-plugin-kairosdb/partials/config.html", | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		Convey("should be replaced with plugin name", func() { | 
					
						
							|  |  |  | 			for k, v := range paths { | 
					
						
							| 
									
										
										
										
											2016-03-08 21:30:25 +08:00
										 |  |  | 				So(RemoveGitBuildFromName(pluginName, k), ShouldEqual, v) | 
					
						
							| 
									
										
										
										
											2016-02-15 21:09:34 +08:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Convey("path containing git commit path", t, func() { | 
					
						
							|  |  |  | 		pluginName := "app-example" | 
					
						
							|  |  |  | 		paths := map[string]string{ | 
					
						
							|  |  |  | 			"app-plugin-example-3c28f65ac6fb7f1e234b0364b97081d836495439/": "app-example/", | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		Convey("should be replaced with plugin name", func() { | 
					
						
							|  |  |  | 			for k, v := range paths { | 
					
						
							| 
									
										
										
										
											2016-03-08 21:30:25 +08:00
										 |  |  | 				So(RemoveGitBuildFromName(pluginName, k), ShouldEqual, v) | 
					
						
							| 
									
										
										
										
											2016-02-15 21:09:34 +08:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2019-02-18 20:51:43 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | func TestExtractFiles(t *testing.T) { | 
					
						
							|  |  |  | 	Convey("Should preserve file permissions for plugin backend binaries for linux and darwin", t, func() { | 
					
						
							|  |  |  | 		err := os.RemoveAll("testdata/fake-plugins-dir") | 
					
						
							|  |  |  | 		So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		err = os.MkdirAll("testdata/fake-plugins-dir", 0774) | 
					
						
							|  |  |  | 		So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		body, err := ioutil.ReadFile("testdata/grafana-simple-json-datasource-ec18fa4da8096a952608a7e4c7782b4260b41bcf.zip") | 
					
						
							|  |  |  | 		So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		err = extractFiles(body, "grafana-simple-json-datasource", "testdata/fake-plugins-dir") | 
					
						
							|  |  |  | 		So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		//File in zip has permissions 777
 | 
					
						
							|  |  |  | 		fileInfo, err := os.Stat("testdata/fake-plugins-dir/grafana-simple-json-datasource/simple-plugin_darwin_amd64") | 
					
						
							|  |  |  | 		So(err, ShouldBeNil) | 
					
						
							|  |  |  | 		So(fileInfo.Mode().String(), ShouldEqual, "-rwxr-xr-x") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		//File in zip has permission 664
 | 
					
						
							|  |  |  | 		fileInfo, err = os.Stat("testdata/fake-plugins-dir/grafana-simple-json-datasource/simple-plugin_linux_amd64") | 
					
						
							|  |  |  | 		So(err, ShouldBeNil) | 
					
						
							|  |  |  | 		So(fileInfo.Mode().String(), ShouldEqual, "-rwxr-xr-x") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		//File in zip has permission 644
 | 
					
						
							|  |  |  | 		fileInfo, err = os.Stat("testdata/fake-plugins-dir/grafana-simple-json-datasource/simple-plugin_windows_amd64.exe") | 
					
						
							|  |  |  | 		So(err, ShouldBeNil) | 
					
						
							|  |  |  | 		So(fileInfo.Mode().String(), ShouldEqual, "-rw-r--r--") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		//File in zip has permission 755
 | 
					
						
							|  |  |  | 		fileInfo, err = os.Stat("testdata/fake-plugins-dir/grafana-simple-json-datasource/non-plugin-binary") | 
					
						
							|  |  |  | 		So(err, ShouldBeNil) | 
					
						
							|  |  |  | 		So(fileInfo.Mode().String(), ShouldEqual, "-rwxr-xr-x") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		err = os.RemoveAll("testdata/fake-plugins-dir") | 
					
						
							|  |  |  | 		So(err, ShouldBeNil) | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | } |