Przeglądaj źródła

dataproxy should forward a trailing slash to proxy

Marcus Efraimsson 7 lat temu
rodzic
commit
3fa8088192
2 zmienionych plików z 31 dodań i 8 usunięć
  1. 12 8
      pkg/api/dataproxy.go
  2. 19 0
      pkg/api/dataproxy_test.go

+ 12 - 8
pkg/api/dataproxy.go

@@ -51,17 +51,21 @@ func (hs *HTTPServer) ProxyDataSourceRequest(c *m.ReqContext) {
 		return
 	}
 
-	proxyPath := c.Params("*")
-
-	// Check for a trailing slash, and pass it to the proxy
 	// macaron does not include trailing slashes when resolving a wildcard path
+	proxyPath := ensureProxyPathTrailingSlash(c.Req.URL.Path, c.Params("*"))
+
+	proxy := pluginproxy.NewDataSourceProxy(ds, plugin, c, proxyPath)
+	proxy.HandleRequest()
+}
+
+// ensureProxyPathTrailingSlash Check for a trailing slash in original path and makes
+// sure that a trailing slash is added to proxy path, if not already exists.
+func ensureProxyPathTrailingSlash(originalPath, proxyPath string) string {
 	if len(proxyPath) > 1 {
-		path := c.Req.URL.Path
-		if path[len(path)-1] == '/' && proxyPath[len(proxyPath)-1] != '/' {
-			proxyPath += "/"
+		if originalPath[len(originalPath)-1] == '/' && proxyPath[len(proxyPath)-1] != '/' {
+			return proxyPath + "/"
 		}
 	}
 
-	proxy := pluginproxy.NewDataSourceProxy(ds, plugin, c, proxyPath)
-	proxy.HandleRequest()
+	return proxyPath
 }

+ 19 - 0
pkg/api/dataproxy_test.go

@@ -0,0 +1,19 @@
+package api
+
+import (
+	"testing"
+
+	. "github.com/smartystreets/goconvey/convey"
+)
+
+func TestDataProxy(t *testing.T) {
+	Convey("Data proxy test", t, func() {
+		Convey("Should append trailing slash to proxy path if original path has a trailing slash", func() {
+			So(ensureProxyPathTrailingSlash("/api/datasources/proxy/6/api/v1/query_range/", "api/v1/query_range/"), ShouldEqual, "api/v1/query_range/")
+		})
+
+		Convey("Should not append trailing slash to proxy path if original path doesn't have a trailing slash", func() {
+			So(ensureProxyPathTrailingSlash("/api/datasources/proxy/6/api/v1/query_range", "api/v1/query_range"), ShouldEqual, "api/v1/query_range")
+		})
+	})
+}