| 
									
										
										
										
											2014-12-19 16:43:16 +08:00
										 |  |  | package sqlstore | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	. "github.com/smartystreets/goconvey/convey" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-05 17:37:13 +08:00
										 |  |  | 	m "github.com/grafana/grafana/pkg/models" | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/setting" | 
					
						
							| 
									
										
										
										
											2014-12-19 16:43:16 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func TestAccountDataAccess(t *testing.T) { | 
					
						
							|  |  |  | 	Convey("Testing Account DB Access", t, func() { | 
					
						
							|  |  |  | 		InitTestDB(t) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 		Convey("Given single org mode", func() { | 
					
						
							| 
									
										
										
										
											2015-03-11 23:19:29 +08:00
										 |  |  | 			setting.AutoAssignOrg = true | 
					
						
							|  |  |  | 			setting.AutoAssignOrgRole = "Viewer" | 
					
						
							| 
									
										
										
										
											2015-01-27 22:14:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:07:49 +08:00
										 |  |  | 			Convey("Users should be added to default organization", func() { | 
					
						
							| 
									
										
										
										
											2015-01-27 22:14:53 +08:00
										 |  |  | 				ac1cmd := m.CreateUserCommand{Login: "ac1", Email: "ac1@test.com", Name: "ac1 name"} | 
					
						
							|  |  |  | 				ac2cmd := m.CreateUserCommand{Login: "ac2", Email: "ac2@test.com", Name: "ac2 name"} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				err := CreateUser(&ac1cmd) | 
					
						
							|  |  |  | 				So(err, ShouldBeNil) | 
					
						
							|  |  |  | 				err = CreateUser(&ac2cmd) | 
					
						
							|  |  |  | 				So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 				q1 := m.GetUserOrgListQuery{UserId: ac1cmd.Result.Id} | 
					
						
							|  |  |  | 				q2 := m.GetUserOrgListQuery{UserId: ac2cmd.Result.Id} | 
					
						
							|  |  |  | 				GetUserOrgList(&q1) | 
					
						
							|  |  |  | 				GetUserOrgList(&q2) | 
					
						
							| 
									
										
										
										
											2015-01-27 22:14:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:07:49 +08:00
										 |  |  | 				So(q1.Result[0].OrgId, ShouldEqual, q2.Result[0].OrgId) | 
					
						
							| 
									
										
										
										
											2015-01-27 22:14:53 +08:00
										 |  |  | 				So(q1.Result[0].Role, ShouldEqual, "Viewer") | 
					
						
							|  |  |  | 			}) | 
					
						
							|  |  |  | 		}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 		Convey("Given two saved users", func() { | 
					
						
							| 
									
										
										
										
											2015-03-11 23:19:29 +08:00
										 |  |  | 			setting.AutoAssignOrg = false | 
					
						
							| 
									
										
										
										
											2015-01-27 22:14:53 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 			ac1cmd := m.CreateUserCommand{Login: "ac1", Email: "ac1@test.com", Name: "ac1 name"} | 
					
						
							|  |  |  | 			ac2cmd := m.CreateUserCommand{Login: "ac2", Email: "ac2@test.com", Name: "ac2 name", IsAdmin: true} | 
					
						
							| 
									
										
										
										
											2014-12-19 18:53:27 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 			err := CreateUser(&ac1cmd) | 
					
						
							|  |  |  | 			err = CreateUser(&ac2cmd) | 
					
						
							| 
									
										
										
										
											2014-12-19 17:45:22 +08:00
										 |  |  | 			So(err, ShouldBeNil) | 
					
						
							| 
									
										
										
										
											2014-12-19 16:43:16 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-19 18:53:27 +08:00
										 |  |  | 			ac1 := ac1cmd.Result | 
					
						
							|  |  |  | 			ac2 := ac2cmd.Result | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 			Convey("Should be able to read user info projection", func() { | 
					
						
							| 
									
										
										
										
											2015-02-28 21:30:08 +08:00
										 |  |  | 				query := m.GetUserProfileQuery{UserId: ac1.Id} | 
					
						
							|  |  |  | 				err = GetUserProfile(&query) | 
					
						
							| 
									
										
										
										
											2014-12-19 16:43:16 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-19 17:45:22 +08:00
										 |  |  | 				So(err, ShouldBeNil) | 
					
						
							| 
									
										
										
										
											2014-12-19 18:53:27 +08:00
										 |  |  | 				So(query.Result.Email, ShouldEqual, "ac1@test.com") | 
					
						
							| 
									
										
										
										
											2015-01-16 14:45:37 +08:00
										 |  |  | 				So(query.Result.Login, ShouldEqual, "ac1") | 
					
						
							|  |  |  | 			}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 			Convey("Can search users", func() { | 
					
						
							|  |  |  | 				query := m.SearchUsersQuery{Query: ""} | 
					
						
							|  |  |  | 				err := SearchUsers(&query) | 
					
						
							| 
									
										
										
										
											2015-01-16 14:45:37 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				So(err, ShouldBeNil) | 
					
						
							| 
									
										
										
										
											2017-02-08 21:20:07 +08:00
										 |  |  | 				So(query.Result.Users[0].Email, ShouldEqual, "ac1@test.com") | 
					
						
							|  |  |  | 				So(query.Result.Users[1].Email, ShouldEqual, "ac2@test.com") | 
					
						
							| 
									
										
										
										
											2014-12-19 17:45:22 +08:00
										 |  |  | 			}) | 
					
						
							| 
									
										
										
										
											2014-12-19 16:43:16 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 			Convey("Given an added org user", func() { | 
					
						
							|  |  |  | 				cmd := m.AddOrgUserCommand{ | 
					
						
							|  |  |  | 					OrgId:  ac1.OrgId, | 
					
						
							|  |  |  | 					UserId: ac2.Id, | 
					
						
							|  |  |  | 					Role:   m.ROLE_VIEWER, | 
					
						
							| 
									
										
										
										
											2014-12-19 17:45:22 +08:00
										 |  |  | 				} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 				err := AddOrgUser(&cmd) | 
					
						
							| 
									
										
										
										
											2015-01-16 21:32:18 +08:00
										 |  |  | 				Convey("Should have been saved without error", func() { | 
					
						
							| 
									
										
										
										
											2014-12-19 17:45:22 +08:00
										 |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-01 15:48:07 +08:00
										 |  |  | 				Convey("Can update org user role", func() { | 
					
						
							|  |  |  | 					updateCmd := m.UpdateOrgUserCommand{OrgId: ac1.OrgId, UserId: ac2.Id, Role: m.ROLE_ADMIN} | 
					
						
							|  |  |  | 					err = UpdateOrgUser(&updateCmd) | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					orgUsersQuery := m.GetOrgUsersQuery{OrgId: ac1.OrgId} | 
					
						
							|  |  |  | 					err = GetOrgUsers(&orgUsersQuery) | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					So(orgUsersQuery.Result[1].Role, ShouldEqual, m.ROLE_ADMIN) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-16 21:32:18 +08:00
										 |  |  | 				Convey("Can get logged in user projection", func() { | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 					query := m.GetSignedInUserQuery{UserId: ac2.Id} | 
					
						
							| 
									
										
										
										
											2015-01-16 21:32:18 +08:00
										 |  |  | 					err := GetSignedInUser(&query) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 					So(query.Result.Email, ShouldEqual, "ac2@test.com") | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 					So(query.Result.OrgId, ShouldEqual, ac2.OrgId) | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 					So(query.Result.Name, ShouldEqual, "ac2 name") | 
					
						
							|  |  |  | 					So(query.Result.Login, ShouldEqual, "ac2") | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 					So(query.Result.OrgRole, ShouldEqual, "Admin") | 
					
						
							|  |  |  | 					So(query.Result.OrgName, ShouldEqual, "ac2@test.com") | 
					
						
							| 
									
										
										
										
											2015-01-16 21:32:18 +08:00
										 |  |  | 					So(query.Result.IsGrafanaAdmin, ShouldBeTrue) | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 				Convey("Can get user organizations", func() { | 
					
						
							|  |  |  | 					query := m.GetUserOrgListQuery{UserId: ac2.Id} | 
					
						
							|  |  |  | 					err := GetUserOrgList(&query) | 
					
						
							| 
									
										
										
										
											2014-12-19 18:08:49 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 					So(len(query.Result), ShouldEqual, 2) | 
					
						
							| 
									
										
										
										
											2014-12-19 18:08:49 +08:00
										 |  |  | 				}) | 
					
						
							| 
									
										
										
										
											2014-12-19 20:12:47 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 				Convey("Can get organization users", func() { | 
					
						
							|  |  |  | 					query := m.GetOrgUsersQuery{OrgId: ac1.OrgId} | 
					
						
							|  |  |  | 					err := GetOrgUsers(&query) | 
					
						
							| 
									
										
										
										
											2015-01-20 22:23:14 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 					So(len(query.Result), ShouldEqual, 2) | 
					
						
							|  |  |  | 					So(query.Result[0].Role, ShouldEqual, "Admin") | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-09 17:42:37 +08:00
										 |  |  | 				Convey("Can get organization users with query", func() { | 
					
						
							|  |  |  | 					query := m.GetOrgUsersQuery{ | 
					
						
							|  |  |  | 						OrgId: ac1.OrgId, | 
					
						
							|  |  |  | 						Query: "ac1", | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					err := GetOrgUsers(&query) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 					So(len(query.Result), ShouldEqual, 1) | 
					
						
							|  |  |  | 					So(query.Result[0].Email, ShouldEqual, ac1.Email) | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 				Convey("Can get organization users with query and limit", func() { | 
					
						
							|  |  |  | 					query := m.GetOrgUsersQuery{ | 
					
						
							|  |  |  | 						OrgId: ac1.OrgId, | 
					
						
							|  |  |  | 						Query: "ac", | 
					
						
							|  |  |  | 						Limit: 1, | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 					err := GetOrgUsers(&query) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 					So(len(query.Result), ShouldEqual, 1) | 
					
						
							|  |  |  | 					So(query.Result[0].Email, ShouldEqual, ac1.Email) | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 				Convey("Can set using org", func() { | 
					
						
							|  |  |  | 					cmd := m.SetUsingOrgCommand{UserId: ac2.Id, OrgId: ac1.Id} | 
					
						
							|  |  |  | 					err := SetUsingOrg(&cmd) | 
					
						
							| 
									
										
										
										
											2014-12-19 20:12:47 +08:00
										 |  |  | 					So(err, ShouldBeNil) | 
					
						
							| 
									
										
										
										
											2015-01-16 21:32:18 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 					Convey("SignedInUserQuery with a different org", func() { | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 						query := m.GetSignedInUserQuery{UserId: ac2.Id} | 
					
						
							| 
									
										
										
										
											2015-01-16 21:32:18 +08:00
										 |  |  | 						err := GetSignedInUser(&query) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 						So(err, ShouldBeNil) | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 						So(query.Result.OrgId, ShouldEqual, ac1.Id) | 
					
						
							| 
									
										
										
										
											2015-01-20 01:01:04 +08:00
										 |  |  | 						So(query.Result.Email, ShouldEqual, "ac2@test.com") | 
					
						
							|  |  |  | 						So(query.Result.Name, ShouldEqual, "ac2 name") | 
					
						
							|  |  |  | 						So(query.Result.Login, ShouldEqual, "ac2") | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 						So(query.Result.OrgName, ShouldEqual, "ac1@test.com") | 
					
						
							|  |  |  | 						So(query.Result.OrgRole, ShouldEqual, "Viewer") | 
					
						
							| 
									
										
										
										
											2015-01-16 21:32:18 +08:00
										 |  |  | 					}) | 
					
						
							| 
									
										
										
										
											2014-12-19 20:12:47 +08:00
										 |  |  | 				}) | 
					
						
							| 
									
										
										
										
											2015-01-20 22:48:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-19 17:47:14 +08:00
										 |  |  | 				Convey("Cannot delete last admin org user", func() { | 
					
						
							| 
									
										
										
										
											2015-02-24 03:48:43 +08:00
										 |  |  | 					cmd := m.RemoveOrgUserCommand{OrgId: ac1.OrgId, UserId: ac1.Id} | 
					
						
							|  |  |  | 					err := RemoveOrgUser(&cmd) | 
					
						
							|  |  |  | 					So(err, ShouldEqual, m.ErrLastOrgAdmin) | 
					
						
							| 
									
										
										
										
											2015-01-20 22:48:19 +08:00
										 |  |  | 				}) | 
					
						
							| 
									
										
										
										
											2015-05-19 17:47:14 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				Convey("Cannot update role so no one is admin user", func() { | 
					
						
							|  |  |  | 					cmd := m.UpdateOrgUserCommand{OrgId: ac1.OrgId, UserId: ac1.Id, Role: m.ROLE_VIEWER} | 
					
						
							|  |  |  | 					err := UpdateOrgUser(&cmd) | 
					
						
							|  |  |  | 					So(err, ShouldEqual, m.ErrLastOrgAdmin) | 
					
						
							|  |  |  | 				}) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-16 02:19:54 +08:00
										 |  |  | 				Convey("Given an org user with dashboard permissions", func() { | 
					
						
							|  |  |  | 					ac3cmd := m.CreateUserCommand{Login: "ac3", Email: "ac3@test.com", Name: "ac3 name", IsAdmin: false} | 
					
						
							|  |  |  | 					err := CreateUser(&ac3cmd) | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 					ac3 := ac3cmd.Result | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					orgUserCmd := m.AddOrgUserCommand{ | 
					
						
							|  |  |  | 						OrgId:  ac1.OrgId, | 
					
						
							|  |  |  | 						UserId: ac3.Id, | 
					
						
							|  |  |  | 						Role:   m.ROLE_VIEWER, | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					err = AddOrgUser(&orgUserCmd) | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-23 05:10:43 +08:00
										 |  |  | 					query := m.GetOrgUsersQuery{OrgId: ac1.OrgId} | 
					
						
							| 
									
										
										
										
											2017-06-16 02:19:54 +08:00
										 |  |  | 					err = GetOrgUsers(&query) | 
					
						
							|  |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 					So(len(query.Result), ShouldEqual, 3) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-14 22:04:26 +08:00
										 |  |  | 					dash1 := insertTestDashboard("1 test dash", ac1.OrgId, 0, false, "prod", "webapp") | 
					
						
							|  |  |  | 					dash2 := insertTestDashboard("2 test dash", ac3.OrgId, 0, false, "prod", "webapp") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					err = testHelperUpdateDashboardAcl(dash1.Id, m.DashboardAcl{DashboardId: dash1.Id, OrgId: ac1.OrgId, UserId: ac3.Id, Permission: m.PERMISSION_EDIT}) | 
					
						
							| 
									
										
										
										
											2017-06-16 02:19:54 +08:00
										 |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-14 22:04:26 +08:00
										 |  |  | 					err = testHelperUpdateDashboardAcl(dash2.Id, m.DashboardAcl{DashboardId: dash2.Id, OrgId: ac3.OrgId, UserId: ac3.Id, Permission: m.PERMISSION_EDIT}) | 
					
						
							| 
									
										
										
										
											2017-06-16 02:19:54 +08:00
										 |  |  | 					So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					Convey("When org user is deleted", func() { | 
					
						
							| 
									
										
										
										
											2017-06-23 05:10:43 +08:00
										 |  |  | 						cmdRemove := m.RemoveOrgUserCommand{OrgId: ac1.OrgId, UserId: ac3.Id} | 
					
						
							| 
									
										
										
										
											2017-06-16 02:19:54 +08:00
										 |  |  | 						err := RemoveOrgUser(&cmdRemove) | 
					
						
							|  |  |  | 						So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 						Convey("Should remove dependent permissions for deleted org user", func() { | 
					
						
							| 
									
										
										
										
											2017-06-23 05:10:43 +08:00
										 |  |  | 							permQuery := &m.GetDashboardAclInfoListQuery{DashboardId: 1, OrgId: ac1.OrgId} | 
					
						
							| 
									
										
										
										
											2017-06-20 05:30:54 +08:00
										 |  |  | 							err = GetDashboardAclInfoList(permQuery) | 
					
						
							| 
									
										
										
										
											2017-06-16 02:19:54 +08:00
										 |  |  | 							So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 							So(len(permQuery.Result), ShouldEqual, 0) | 
					
						
							|  |  |  | 						}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 						Convey("Should not remove dashboard permissions for same user in another org", func() { | 
					
						
							| 
									
										
										
										
											2017-06-23 05:10:43 +08:00
										 |  |  | 							permQuery := &m.GetDashboardAclInfoListQuery{DashboardId: 2, OrgId: ac3.OrgId} | 
					
						
							| 
									
										
										
										
											2017-06-20 05:30:54 +08:00
										 |  |  | 							err = GetDashboardAclInfoList(permQuery) | 
					
						
							| 
									
										
										
										
											2017-06-16 02:19:54 +08:00
										 |  |  | 							So(err, ShouldBeNil) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-23 05:10:43 +08:00
										 |  |  | 							So(len(permQuery.Result), ShouldEqual, 1) | 
					
						
							| 
									
										
										
										
											2017-06-16 02:19:54 +08:00
										 |  |  | 							So(permQuery.Result[0].OrgId, ShouldEqual, ac3.OrgId) | 
					
						
							|  |  |  | 							So(permQuery.Result[0].UserId, ShouldEqual, ac3.Id) | 
					
						
							|  |  |  | 						}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 					}) | 
					
						
							|  |  |  | 				}) | 
					
						
							| 
									
										
										
										
											2014-12-19 17:45:22 +08:00
										 |  |  | 			}) | 
					
						
							| 
									
										
										
										
											2014-12-19 16:43:16 +08:00
										 |  |  | 		}) | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2018-02-14 22:04:26 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | func testHelperUpdateDashboardAcl(dashboardId int64, items ...m.DashboardAcl) error { | 
					
						
							|  |  |  | 	cmd := m.UpdateDashboardAclCommand{DashboardId: dashboardId} | 
					
						
							|  |  |  | 	for _, item := range items { | 
					
						
							|  |  |  | 		cmd.Items = append(cmd.Items, &item) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return UpdateDashboardAcl(&cmd) | 
					
						
							|  |  |  | } |