refactoring renaming dashboard folder operations

This commit is contained in:
Torkel Ödegaard 2017-06-19 17:15:25 -04:00
parent 34cf305d2c
commit e0b9ba7554
11 changed files with 50 additions and 51 deletions

View File

@ -250,7 +250,7 @@ func (hs *HttpServer) registerRoutes() {
r.Group("/:id/acl", func() { r.Group("/:id/acl", func() {
r.Get("/", wrap(GetDashboardAcl)) r.Get("/", wrap(GetDashboardAcl))
r.Post("/", quota("acl"), bind(m.AddOrUpdateDashboardPermissionCommand{}), wrap(PostDashboardAcl)) r.Post("/", quota("acl"), bind(m.SetDashboardAclCommand{}), wrap(PostDashboardAcl))
r.Delete("/user/:userId", wrap(DeleteDashboardAclByUser)) r.Delete("/user/:userId", wrap(DeleteDashboardAclByUser))
r.Delete("/user-group/:userGroupId", wrap(DeleteDashboardAclByUserGroup)) r.Delete("/user-group/:userGroupId", wrap(DeleteDashboardAclByUserGroup))
}, reqSignedIn) }, reqSignedIn)

View File

@ -26,7 +26,7 @@ func GetDashboardAcl(c *middleware.Context) Response {
return Json(200, &query.Result) return Json(200, &query.Result)
} }
func PostDashboardAcl(c *middleware.Context, cmd m.AddOrUpdateDashboardPermissionCommand) Response { func PostDashboardAcl(c *middleware.Context, cmd m.SetDashboardAclCommand) Response {
dashId := c.ParamsInt64(":id") dashId := c.ParamsInt64(":id")
guardian := guardian.NewDashboardGuardian(dashId, c.OrgId, c.SignedInUser) guardian := guardian.NewDashboardGuardian(dashId, c.OrgId, c.SignedInUser)
@ -61,7 +61,7 @@ func DeleteDashboardAclByUser(c *middleware.Context) Response {
return dashboardGuardianResponse(err) return dashboardGuardianResponse(err)
} }
cmd := m.RemoveDashboardPermissionCommand{DashboardId: dashId, UserId: userId, OrgId: c.OrgId} cmd := m.RemoveDashboardAclCommand{DashboardId: dashId, UserId: userId, OrgId: c.OrgId}
if err := bus.Dispatch(&cmd); err != nil { if err := bus.Dispatch(&cmd); err != nil {
return ApiError(500, "Failed to delete permission for user", err) return ApiError(500, "Failed to delete permission for user", err)
@ -79,7 +79,7 @@ func DeleteDashboardAclByUserGroup(c *middleware.Context) Response {
return dashboardGuardianResponse(err) return dashboardGuardianResponse(err)
} }
cmd := m.RemoveDashboardPermissionCommand{DashboardId: dashId, UserGroupId: userGroupId, OrgId: c.OrgId} cmd := m.RemoveDashboardAclCommand{DashboardId: dashId, UserGroupId: userGroupId, OrgId: c.OrgId}
if err := bus.Dispatch(&cmd); err != nil { if err := bus.Dispatch(&cmd); err != nil {
return ApiError(500, "Failed to delete permission for user", err) return ApiError(500, "Failed to delete permission for user", err)

View File

@ -72,7 +72,7 @@ func TestDashboardAclApiEndpoint(t *testing.T) {
loggedInUserScenarioWithRole("When calling DELETE on", "DELETE", "/api/dashboards/1/acl/user/1", "/api/dashboards/:id/acl/user/:userId", models.ROLE_EDITOR, func(sc *scenarioContext) { loggedInUserScenarioWithRole("When calling DELETE on", "DELETE", "/api/dashboards/1/acl/user/1", "/api/dashboards/:id/acl/user/:userId", models.ROLE_EDITOR, func(sc *scenarioContext) {
mockResult = append(mockResult, &models.DashboardAcl{Id: 1, OrgId: 1, DashboardId: 1, UserId: 1, Permissions: models.PERMISSION_EDIT}) mockResult = append(mockResult, &models.DashboardAcl{Id: 1, OrgId: 1, DashboardId: 1, UserId: 1, Permissions: models.PERMISSION_EDIT})
bus.AddHandler("test3", func(cmd *models.RemoveDashboardPermissionCommand) error { bus.AddHandler("test3", func(cmd *models.RemoveDashboardAclCommand) error {
return nil return nil
}) })
@ -88,7 +88,7 @@ func TestDashboardAclApiEndpoint(t *testing.T) {
loggedInUserScenarioWithRole("When calling DELETE on", "DELETE", "/api/dashboards/1/acl/user/1", "/api/dashboards/:id/acl/user/:userId", models.ROLE_EDITOR, func(sc *scenarioContext) { loggedInUserScenarioWithRole("When calling DELETE on", "DELETE", "/api/dashboards/1/acl/user/1", "/api/dashboards/:id/acl/user/:userId", models.ROLE_EDITOR, func(sc *scenarioContext) {
userGroupResp = append(userGroupResp, &models.UserGroup{Id: 1, OrgId: 1, Name: "UG1"}) userGroupResp = append(userGroupResp, &models.UserGroup{Id: 1, OrgId: 1, Name: "UG1"})
bus.AddHandler("test3", func(cmd *models.RemoveDashboardPermissionCommand) error { bus.AddHandler("test3", func(cmd *models.RemoveDashboardAclCommand) error {
return nil return nil
}) })
@ -115,7 +115,7 @@ func TestDashboardAclApiEndpoint(t *testing.T) {
loggedInUserScenarioWithRole("When calling DELETE on", "DELETE", "/api/dashboards/1/acl/user/1", "/api/dashboards/:id/acl/user/:userId", models.ROLE_EDITOR, func(sc *scenarioContext) { loggedInUserScenarioWithRole("When calling DELETE on", "DELETE", "/api/dashboards/1/acl/user/1", "/api/dashboards/:id/acl/user/:userId", models.ROLE_EDITOR, func(sc *scenarioContext) {
mockResult = append(mockResult, &models.DashboardAcl{Id: 1, OrgId: 1, DashboardId: 1, UserId: 1, Permissions: models.PERMISSION_VIEW}) mockResult = append(mockResult, &models.DashboardAcl{Id: 1, OrgId: 1, DashboardId: 1, UserId: 1, Permissions: models.PERMISSION_VIEW})
bus.AddHandler("test3", func(cmd *models.RemoveDashboardPermissionCommand) error { bus.AddHandler("test3", func(cmd *models.RemoveDashboardAclCommand) error {
return nil return nil
}) })

View File

@ -62,17 +62,17 @@ type DashboardAclInfoDTO struct {
// COMMANDS // COMMANDS
// //
type AddOrUpdateDashboardPermissionCommand struct { type SetDashboardAclCommand struct {
DashboardId int64 `json:"-"` DashboardId int64 `json:"-"`
OrgId int64 `json:"-"` OrgId int64 `json:"-"`
UserId int64 `json:"userId"` UserId int64 `json:"userId"`
UserGroupId int64 `json:"userGroupId"` UserGroupId int64 `json:"userGroupId"`
Permissions PermissionType `json:"permissionType" binding:"Required"` Permissions PermissionType `json:"permissions" binding:"Required"`
Result DashboardAcl `json:"-"` Result DashboardAcl `json:"-"`
} }
type RemoveDashboardPermissionCommand struct { type RemoveDashboardAclCommand struct {
DashboardId int64 `json:"dashboardId" binding:"Required"` DashboardId int64 `json:"dashboardId" binding:"Required"`
UserId int64 `json:"userId"` UserId int64 `json:"userId"`
UserGroupId int64 `json:"userGroupId"` UserGroupId int64 `json:"userGroupId"`

View File

@ -8,13 +8,13 @@ import (
) )
func init() { func init() {
bus.AddHandler("sql", AddOrUpdateDashboardPermission) bus.AddHandler("sql", SetDashboardAcl)
bus.AddHandler("sql", RemoveDashboardPermission) bus.AddHandler("sql", RemoveDashboardAcl)
bus.AddHandler("sql", GetDashboardPermissions) bus.AddHandler("sql", GetDashboardPermissions)
bus.AddHandler("sql", GetInheritedDashboardAcl) bus.AddHandler("sql", GetInheritedDashboardAcl)
} }
func AddOrUpdateDashboardPermission(cmd *m.AddOrUpdateDashboardPermissionCommand) error { func SetDashboardAcl(cmd *m.SetDashboardAclCommand) error {
return inTransaction(func(sess *DBSession) error { return inTransaction(func(sess *DBSession) error {
if cmd.UserId == 0 && cmd.UserGroupId == 0 { if cmd.UserId == 0 && cmd.UserGroupId == 0 {
return m.ErrDashboardPermissionUserOrUserGroupEmpty return m.ErrDashboardPermissionUserOrUserGroupEmpty
@ -74,7 +74,7 @@ func AddOrUpdateDashboardPermission(cmd *m.AddOrUpdateDashboardPermissionCommand
}) })
} }
func RemoveDashboardPermission(cmd *m.RemoveDashboardPermissionCommand) error { func RemoveDashboardAcl(cmd *m.RemoveDashboardAclCommand) error {
return inTransaction(func(sess *DBSession) error { return inTransaction(func(sess *DBSession) error {
var rawSQL = "DELETE FROM " + dialect.Quote("dashboard_acl") + " WHERE dashboard_id =? and (user_group_id=? or user_id=?)" var rawSQL = "DELETE FROM " + dialect.Quote("dashboard_acl") + " WHERE dashboard_id =? and (user_group_id=? or user_id=?)"
_, err := sess.Exec(rawSQL, cmd.DashboardId, cmd.UserGroupId, cmd.UserId) _, err := sess.Exec(rawSQL, cmd.DashboardId, cmd.UserGroupId, cmd.UserId)

View File

@ -17,7 +17,7 @@ func TestDashboardAclDataAccess(t *testing.T) {
childDash := insertTestDashboard("2 test dash", 1, savedFolder.Id, false, "prod", "webapp") childDash := insertTestDashboard("2 test dash", 1, savedFolder.Id, false, "prod", "webapp")
Convey("When adding dashboard permission with userId and userGroupId set to 0", func() { Convey("When adding dashboard permission with userId and userGroupId set to 0", func() {
err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{ err := SetDashboardAcl(&m.SetDashboardAclCommand{
OrgId: 1, OrgId: 1,
DashboardId: savedFolder.Id, DashboardId: savedFolder.Id,
Permissions: m.PERMISSION_EDIT, Permissions: m.PERMISSION_EDIT,
@ -26,7 +26,7 @@ func TestDashboardAclDataAccess(t *testing.T) {
}) })
Convey("Given dashboard folder permission", func() { Convey("Given dashboard folder permission", func() {
err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{ err := SetDashboardAcl(&m.SetDashboardAclCommand{
OrgId: 1, OrgId: 1,
UserId: currentUser.Id, UserId: currentUser.Id,
DashboardId: savedFolder.Id, DashboardId: savedFolder.Id,
@ -45,7 +45,7 @@ func TestDashboardAclDataAccess(t *testing.T) {
}) })
Convey("Given child dashboard permission", func() { Convey("Given child dashboard permission", func() {
err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{ err := SetDashboardAcl(&m.SetDashboardAclCommand{
OrgId: 1, OrgId: 1,
UserId: currentUser.Id, UserId: currentUser.Id,
DashboardId: childDash.Id, DashboardId: childDash.Id,
@ -67,7 +67,7 @@ func TestDashboardAclDataAccess(t *testing.T) {
}) })
Convey("Should be able to add dashboard permission", func() { Convey("Should be able to add dashboard permission", func() {
err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{ err := SetDashboardAcl(&m.SetDashboardAclCommand{
OrgId: 1, OrgId: 1,
UserId: currentUser.Id, UserId: currentUser.Id,
DashboardId: savedFolder.Id, DashboardId: savedFolder.Id,
@ -94,7 +94,7 @@ func TestDashboardAclDataAccess(t *testing.T) {
}) })
Convey("Should be able to update an existing permission", func() { Convey("Should be able to update an existing permission", func() {
err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{ err := SetDashboardAcl(&m.SetDashboardAclCommand{
OrgId: 1, OrgId: 1,
UserId: 1, UserId: 1,
DashboardId: savedFolder.Id, DashboardId: savedFolder.Id,
@ -113,7 +113,7 @@ func TestDashboardAclDataAccess(t *testing.T) {
}) })
Convey("Should be able to delete an existing permission", func() { Convey("Should be able to delete an existing permission", func() {
err := RemoveDashboardPermission(&m.RemoveDashboardPermissionCommand{ err := RemoveDashboardAcl(&m.RemoveDashboardAclCommand{
OrgId: 1, OrgId: 1,
UserId: 1, UserId: 1,
DashboardId: savedFolder.Id, DashboardId: savedFolder.Id,
@ -133,7 +133,7 @@ func TestDashboardAclDataAccess(t *testing.T) {
So(err, ShouldBeNil) So(err, ShouldBeNil)
Convey("Should be able to add a user permission for a user group", func() { Convey("Should be able to add a user permission for a user group", func() {
err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{ err := SetDashboardAcl(&m.SetDashboardAclCommand{
OrgId: 1, OrgId: 1,
UserGroupId: group1.Result.Id, UserGroupId: group1.Result.Id,
DashboardId: savedFolder.Id, DashboardId: savedFolder.Id,
@ -150,7 +150,7 @@ func TestDashboardAclDataAccess(t *testing.T) {
}) })
Convey("Should be able to update an existing permission for a user group", func() { Convey("Should be able to update an existing permission for a user group", func() {
err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{ err := SetDashboardAcl(&m.SetDashboardAclCommand{
OrgId: 1, OrgId: 1,
UserGroupId: group1.Result.Id, UserGroupId: group1.Result.Id,
DashboardId: savedFolder.Id, DashboardId: savedFolder.Id,
@ -169,7 +169,7 @@ func TestDashboardAclDataAccess(t *testing.T) {
}) })
Convey("Should be able to delete an existing permission for a user group", func() { Convey("Should be able to delete an existing permission for a user group", func() {
err := RemoveDashboardPermission(&m.RemoveDashboardPermissionCommand{ err := RemoveDashboardAcl(&m.RemoveDashboardAclCommand{
OrgId: 1, OrgId: 1,
UserGroupId: group1.Result.Id, UserGroupId: group1.Result.Id,
DashboardId: savedFolder.Id, DashboardId: savedFolder.Id,

View File

@ -380,7 +380,7 @@ func createUser(name string, role string, isAdmin bool) m.User {
} }
func updateTestDashboardWithAcl(dashId int64, userId int64, permissions m.PermissionType) { func updateTestDashboardWithAcl(dashId int64, userId int64, permissions m.PermissionType) {
err := AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{ err := SetDashboardAcl(&m.SetDashboardAclCommand{
OrgId: 1, OrgId: 1,
UserId: userId, UserId: userId,
DashboardId: dashId, DashboardId: dashId,

View File

@ -174,10 +174,10 @@ func TestAccountDataAccess(t *testing.T) {
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(len(query.Result), ShouldEqual, 3) So(len(query.Result), ShouldEqual, 3)
err = AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{DashboardId: 1, OrgId: ac1.OrgId, UserId: ac3.Id, Permissions: m.PERMISSION_EDIT}) err = SetDashboardAcl(&m.SetDashboardAclCommand{DashboardId: 1, OrgId: ac1.OrgId, UserId: ac3.Id, Permissions: m.PERMISSION_EDIT})
So(err, ShouldBeNil) So(err, ShouldBeNil)
err = AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{DashboardId: 2, OrgId: ac3.OrgId, UserId: ac3.Id, Permissions: m.PERMISSION_EDIT}) err = SetDashboardAcl(&m.SetDashboardAclCommand{DashboardId: 2, OrgId: ac3.OrgId, UserId: ac3.Id, Permissions: m.PERMISSION_EDIT})
So(err, ShouldBeNil) So(err, ShouldBeNil)
Convey("When org user is deleted", func() { Convey("When org user is deleted", func() {

View File

@ -94,7 +94,7 @@ func TestUserGroupCommandsAndQueries(t *testing.T) {
So(err, ShouldBeNil) So(err, ShouldBeNil)
err = AddUserGroupMember(&m.AddUserGroupMemberCommand{OrgId: 1, UserGroupId: groupId, UserId: userIds[2]}) err = AddUserGroupMember(&m.AddUserGroupMemberCommand{OrgId: 1, UserGroupId: groupId, UserId: userIds[2]})
So(err, ShouldBeNil) So(err, ShouldBeNil)
err = AddOrUpdateDashboardPermission(&m.AddOrUpdateDashboardPermissionCommand{DashboardId: 1, OrgId: 1, Permissions: m.PERMISSION_EDIT, UserGroupId: groupId}) err = SetDashboardAcl(&m.SetDashboardAclCommand{DashboardId: 1, OrgId: 1, Permissions: m.PERMISSION_EDIT, UserGroupId: groupId})
err = DeleteUserGroup(&m.DeleteUserGroupCommand{Id: groupId}) err = DeleteUserGroup(&m.DeleteUserGroupCommand{Id: groupId})
So(err, ShouldBeNil) So(err, ShouldBeNil)

View File

@ -6,7 +6,7 @@ import (
. "github.com/smartystreets/goconvey/convey" . "github.com/smartystreets/goconvey/convey"
"github.com/grafana/grafana/pkg/models" m "github.com/grafana/grafana/pkg/models"
) )
func TestUserDataAccess(t *testing.T) { func TestUserDataAccess(t *testing.T) {
@ -16,10 +16,10 @@ func TestUserDataAccess(t *testing.T) {
Convey("Given 5 users", func() { Convey("Given 5 users", func() {
var err error var err error
var cmd *models.CreateUserCommand var cmd *m.CreateUserCommand
users := []models.User{} users := []m.User{}
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
cmd = &models.CreateUserCommand{ cmd = &m.CreateUserCommand{
Email: fmt.Sprint("user", i, "@test.com"), Email: fmt.Sprint("user", i, "@test.com"),
Name: fmt.Sprint("user", i), Name: fmt.Sprint("user", i),
Login: fmt.Sprint("loginuser", i), Login: fmt.Sprint("loginuser", i),
@ -30,7 +30,7 @@ func TestUserDataAccess(t *testing.T) {
} }
Convey("Can return the first page of users and a total count", func() { Convey("Can return the first page of users and a total count", func() {
query := models.SearchUsersQuery{Query: "", Page: 1, Limit: 3} query := m.SearchUsersQuery{Query: "", Page: 1, Limit: 3}
err = SearchUsers(&query) err = SearchUsers(&query)
So(err, ShouldBeNil) So(err, ShouldBeNil)
@ -39,7 +39,7 @@ func TestUserDataAccess(t *testing.T) {
}) })
Convey("Can return the second page of users and a total count", func() { Convey("Can return the second page of users and a total count", func() {
query := models.SearchUsersQuery{Query: "", Page: 2, Limit: 3} query := m.SearchUsersQuery{Query: "", Page: 2, Limit: 3}
err = SearchUsers(&query) err = SearchUsers(&query)
So(err, ShouldBeNil) So(err, ShouldBeNil)
@ -48,28 +48,28 @@ func TestUserDataAccess(t *testing.T) {
}) })
Convey("Can return list of users matching query on user name", func() { Convey("Can return list of users matching query on user name", func() {
query := models.SearchUsersQuery{Query: "use", Page: 1, Limit: 3} query := m.SearchUsersQuery{Query: "use", Page: 1, Limit: 3}
err = SearchUsers(&query) err = SearchUsers(&query)
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(len(query.Result.Users), ShouldEqual, 3) So(len(query.Result.Users), ShouldEqual, 3)
So(query.Result.TotalCount, ShouldEqual, 5) So(query.Result.TotalCount, ShouldEqual, 5)
query = models.SearchUsersQuery{Query: "ser1", Page: 1, Limit: 3} query = m.SearchUsersQuery{Query: "ser1", Page: 1, Limit: 3}
err = SearchUsers(&query) err = SearchUsers(&query)
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(len(query.Result.Users), ShouldEqual, 1) So(len(query.Result.Users), ShouldEqual, 1)
So(query.Result.TotalCount, ShouldEqual, 1) So(query.Result.TotalCount, ShouldEqual, 1)
query = models.SearchUsersQuery{Query: "USER1", Page: 1, Limit: 3} query = m.SearchUsersQuery{Query: "USER1", Page: 1, Limit: 3}
err = SearchUsers(&query) err = SearchUsers(&query)
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(len(query.Result.Users), ShouldEqual, 1) So(len(query.Result.Users), ShouldEqual, 1)
So(query.Result.TotalCount, ShouldEqual, 1) So(query.Result.TotalCount, ShouldEqual, 1)
query = models.SearchUsersQuery{Query: "idontexist", Page: 1, Limit: 3} query = m.SearchUsersQuery{Query: "idontexist", Page: 1, Limit: 3}
err = SearchUsers(&query) err = SearchUsers(&query)
So(err, ShouldBeNil) So(err, ShouldBeNil)
@ -78,7 +78,7 @@ func TestUserDataAccess(t *testing.T) {
}) })
Convey("Can return list of users matching query on email", func() { Convey("Can return list of users matching query on email", func() {
query := models.SearchUsersQuery{Query: "ser1@test.com", Page: 1, Limit: 3} query := m.SearchUsersQuery{Query: "ser1@test.com", Page: 1, Limit: 3}
err = SearchUsers(&query) err = SearchUsers(&query)
So(err, ShouldBeNil) So(err, ShouldBeNil)
@ -87,7 +87,7 @@ func TestUserDataAccess(t *testing.T) {
}) })
Convey("Can return list of users matching query on login name", func() { Convey("Can return list of users matching query on login name", func() {
query := models.SearchUsersQuery{Query: "loginuser1", Page: 1, Limit: 3} query := m.SearchUsersQuery{Query: "loginuser1", Page: 1, Limit: 3}
err = SearchUsers(&query) err = SearchUsers(&query)
So(err, ShouldBeNil) So(err, ShouldBeNil)
@ -96,33 +96,33 @@ func TestUserDataAccess(t *testing.T) {
}) })
Convey("when a user is an org member and has been assigned permissions", func() { Convey("when a user is an org member and has been assigned permissions", func() {
err = AddOrgUser(&models.AddOrgUserCommand{LoginOrEmail: users[0].Login, Role: models.ROLE_VIEWER, OrgId: users[0].OrgId}) err = AddOrgUser(&m.AddOrgUserCommand{LoginOrEmail: users[0].Login, Role: m.ROLE_VIEWER, OrgId: users[0].OrgId})
So(err, ShouldBeNil) So(err, ShouldBeNil)
err = AddOrUpdateDashboardPermission(&models.AddOrUpdateDashboardPermissionCommand{DashboardId: 1, OrgId: users[0].OrgId, UserId: users[0].Id, Permissions: models.PERMISSION_EDIT}) err = SetDashboardAcl(&m.SetDashboardAclCommand{DashboardId: 1, OrgId: users[0].OrgId, UserId: users[0].Id, Permissions: m.PERMISSION_EDIT})
So(err, ShouldBeNil) So(err, ShouldBeNil)
err = SavePreferences(&models.SavePreferencesCommand{UserId: users[0].Id, OrgId: users[0].OrgId, HomeDashboardId: 1, Theme: "dark"}) err = SavePreferences(&m.SavePreferencesCommand{UserId: users[0].Id, OrgId: users[0].OrgId, HomeDashboardId: 1, Theme: "dark"})
So(err, ShouldBeNil) So(err, ShouldBeNil)
Convey("when the user is deleted", func() { Convey("when the user is deleted", func() {
err = DeleteUser(&models.DeleteUserCommand{UserId: users[0].Id}) err = DeleteUser(&m.DeleteUserCommand{UserId: users[0].Id})
So(err, ShouldBeNil) So(err, ShouldBeNil)
Convey("Should delete connected org users and permissions", func() { Convey("Should delete connected org users and permissions", func() {
query := &models.GetOrgUsersQuery{OrgId: 1} query := &m.GetOrgUsersQuery{OrgId: 1}
err = GetOrgUsersForTest(query) err = GetOrgUsersForTest(query)
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(len(query.Result), ShouldEqual, 1) So(len(query.Result), ShouldEqual, 1)
permQuery := &models.GetDashboardPermissionsQuery{DashboardId: 1} permQuery := &m.GetDashboardPermissionsQuery{DashboardId: 1}
err = GetDashboardPermissions(permQuery) err = GetDashboardPermissions(permQuery)
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(len(permQuery.Result), ShouldEqual, 0) So(len(permQuery.Result), ShouldEqual, 0)
prefsQuery := &models.GetPreferencesQuery{OrgId: users[0].OrgId, UserId: users[0].Id} prefsQuery := &m.GetPreferencesQuery{OrgId: users[0].OrgId, UserId: users[0].Id}
err = GetPreferences(prefsQuery) err = GetPreferences(prefsQuery)
So(err, ShouldBeNil) So(err, ShouldBeNil)
@ -135,8 +135,8 @@ func TestUserDataAccess(t *testing.T) {
}) })
} }
func GetOrgUsersForTest(query *models.GetOrgUsersQuery) error { func GetOrgUsersForTest(query *m.GetOrgUsersQuery) error {
query.Result = make([]*models.OrgUserDTO, 0) query.Result = make([]*m.OrgUserDTO, 0)
sess := x.Table("org_user") sess := x.Table("org_user")
sess.Join("LEFT ", "user", fmt.Sprintf("org_user.user_id=%s.id", x.Dialect().Quote("user"))) sess.Join("LEFT ", "user", fmt.Sprintf("org_user.user_id=%s.id", x.Dialect().Quote("user")))
sess.Where("org_user.org_id=?", query.OrgId) sess.Where("org_user.org_id=?", query.OrgId)

View File

@ -57,9 +57,7 @@
<h6 ng-hide="ctrl.results.length">No dashboards matching your query were found.</h6> <h6 ng-hide="ctrl.results.length">No dashboards matching your query were found.</h6>
<div bindonce ng-repeat="row in ctrl.results"> <div bindonce ng-repeat="row in ctrl.results">
<a class="search-item pointer search-item-{{row.type}}" <a class="search-item pointer search-item-{{row.type}}" ng-class="{'selected': $index == ctrl.selectedIndex}" ng-href="{{row.url}}">
ng-class="{'selected': $index == ctrl.selectedIndex}" ng-href="{{row.url}}">
<span class="search-result-tags"> <span class="search-result-tags">
<span ng-click="ctrl.filterByTag(tag, $event)" ng-repeat="tag in row.tags" tag-color-from-name="tag" class="label label-tag"> <span ng-click="ctrl.filterByTag(tag, $event)" ng-repeat="tag in row.tags" tag-color-from-name="tag" class="label label-tag">
{{tag}} {{tag}}
@ -71,6 +69,7 @@
<i class="fa search-result-icon"></i> <i class="fa search-result-icon"></i>
<span bo-text="row.title"></span> <span bo-text="row.title"></span>
</span> </span>
<a class="search-item search-item-child pointer search-item-{{child.type}}" ng-repeat="child in row.dashboards" <a class="search-item search-item-child pointer search-item-{{child.type}}" ng-repeat="child in row.dashboards"
ng-class="{'selected': $index == ctrl.selectedIndex}" ng-href="{{'dashboard/' + child.uri}}"> ng-class="{'selected': $index == ctrl.selectedIndex}" ng-href="{{'dashboard/' + child.uri}}">
<span class="search-result-tags"> <span class="search-result-tags">