mirror of
https://github.com/grafana/grafana.git
synced 2024-11-23 01:16:31 -06:00
Short URL: Fix so that orgId is included in generated short URL (#34696)
Fixes #33813 Signed-off-by: Jan Jansen <jan.jansen@gdata.de> Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com>
This commit is contained in:
parent
ff03b456f1
commit
0d1b35f99e
@ -40,7 +40,7 @@ Content-Type: application/json
|
||||
|
||||
{
|
||||
"uid": AT76wBvGk,
|
||||
"url": http://localhost:3000/goto/AT76wBvGk
|
||||
"url": http://localhost:3000/goto/AT76wBvGk?orgId=1
|
||||
}
|
||||
|
||||
```
|
||||
|
@ -29,7 +29,7 @@ func (hs *HTTPServer) createShortURL(c *models.ReqContext, cmd dtos.CreateShortU
|
||||
return response.Error(500, "Failed to create short URL", err)
|
||||
}
|
||||
|
||||
url := fmt.Sprintf("%s/goto/%s", strings.TrimSuffix(setting.AppUrl, "/"), shortURL.Uid)
|
||||
url := fmt.Sprintf("%s/goto/%s?orgId=%d", strings.TrimSuffix(setting.AppUrl, "/"), shortURL.Uid, c.OrgId)
|
||||
c.Logger.Debug("Created short URL", "url", url)
|
||||
|
||||
dto := dtos.ShortURL{
|
||||
|
68
pkg/api/short_url_test.go
Normal file
68
pkg/api/short_url_test.go
Normal file
@ -0,0 +1,68 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/grafana/grafana/pkg/api/dtos"
|
||||
"github.com/grafana/grafana/pkg/api/response"
|
||||
"github.com/grafana/grafana/pkg/api/routing"
|
||||
"github.com/grafana/grafana/pkg/bus"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/models"
|
||||
"github.com/grafana/grafana/pkg/services/shorturls"
|
||||
"github.com/grafana/grafana/pkg/services/sqlstore"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestShortURLAPIEndpoint(t *testing.T) {
|
||||
t.Run("Given a correct request for creating a shortUrl", func(t *testing.T) {
|
||||
cmd := dtos.CreateShortURLCmd{
|
||||
Path: "d/TxKARsmGz/new-dashboard?orgId=1&from=1599389322894&to=1599410922894",
|
||||
}
|
||||
|
||||
createShortURLScenario(t, "When calling POST on", "/api/short-urls", "/api/short-urls", cmd,
|
||||
func(sc *scenarioContext) {
|
||||
callCreateShortURL(sc)
|
||||
|
||||
shortUrl := dtos.ShortURL{}
|
||||
err := json.NewDecoder(sc.resp.Body).Decode(&shortUrl)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, 200, sc.resp.Code)
|
||||
require.Regexp(t, "/goto/(.+)\\?orgId=(.+)", shortUrl.URL)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
func callCreateShortURL(sc *scenarioContext) {
|
||||
sc.fakeReqWithParams("POST", sc.url, map[string]string{}).exec()
|
||||
}
|
||||
|
||||
func createShortURLScenario(t *testing.T, desc string, url string, routePattern string, cmd dtos.CreateShortURLCmd, fn scenarioFunc) {
|
||||
t.Run(fmt.Sprintf("%s %s", desc, url), func(t *testing.T) {
|
||||
defer bus.ClearBusHandlers()
|
||||
|
||||
sqlStore := sqlstore.InitTestDB(t)
|
||||
hs := HTTPServer{
|
||||
Cfg: setting.NewCfg(),
|
||||
ShortURLService: &shorturls.ShortURLService{
|
||||
SQLStore: sqlStore,
|
||||
},
|
||||
log: log.New("test"),
|
||||
}
|
||||
|
||||
sc := setupScenarioContext(t, url)
|
||||
sc.defaultHandler = routing.Wrap(func(c *models.ReqContext) response.Response {
|
||||
sc.context = c
|
||||
sc.context.SignedInUser = &models.SignedInUser{OrgId: testOrgID, UserId: testUserID}
|
||||
|
||||
return hs.createShortURL(c, cmd)
|
||||
})
|
||||
|
||||
sc.m.Post(routePattern, sc.defaultHandler)
|
||||
|
||||
fn(sc)
|
||||
})
|
||||
}
|
Loading…
Reference in New Issue
Block a user