2017-05-08 21:35:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								package  api 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								import  ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"testing" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/api/dtos" 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:35:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/bus" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/components/simplejson" 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-23 05:43:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									m  "github.com/grafana/grafana/pkg/models" 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									"github.com/grafana/grafana/pkg/services/guardian" 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:35:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									.  "github.com/smartystreets/goconvey/convey" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:42:54 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								func  TestDashboardPermissionApiEndpoint ( t  * testing . T )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
									Convey ( "Dashboard permissions test" ,  t ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										Convey ( "Given dashboard not exists" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											bus . AddHandler ( "test" ,  func ( query  * m . GetDashboardQuery )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  m . ErrDashboardNotFound 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 16:26:09 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											loggedInUserScenarioWithRole ( "When calling GET on" ,  "GET" ,  "/api/dashboards/id/1/permissions" ,  "/api/dashboards/id/:id/permissions" ,  m . ROLE_EDITOR ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												callGetDashboardPermissions ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( sc . resp . Code ,  ShouldEqual ,  404 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-20 03:22:42 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											cmd  :=  dtos . UpdateDashboardAclCommand { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												Items :  [ ] dtos . DashboardAclUpdateItem { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ UserId :  1000 ,  Permission :  m . PERMISSION_ADMIN } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:35:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											updateDashboardPermissionScenario ( "When calling POST on" ,  "/api/dashboards/id/1/permissions" ,  "/api/dashboards/id/:id/permissions" ,  cmd ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												callUpdateDashboardPermissions ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( sc . resp . Code ,  ShouldEqual ,  404 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-12 21:48:55 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Convey ( "Given user has no admin permissions" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											origNewGuardian  :=  guardian . New 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											guardian . MockDashboardGuardian ( & guardian . FakeDashboardGuardian { CanAdminValue :  false } ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-30 20:28:00 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											getDashboardQueryResult  :=  m . NewDashboard ( "Dash" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											bus . AddHandler ( "test" ,  func ( query  * m . GetDashboardQuery )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												query . Result  =  getDashboardQueryResult 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:35:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											loggedInUserScenarioWithRole ( "When calling GET on" ,  "GET" ,  "/api/dashboards/id/1/permissions" ,  "/api/dashboards/id/:id/permissions" ,  m . ROLE_EDITOR ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												callGetDashboardPermissions ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( sc . resp . Code ,  ShouldEqual ,  403 ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:35:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 16:26:09 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											cmd  :=  dtos . UpdateDashboardAclCommand { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												Items :  [ ] dtos . DashboardAclUpdateItem { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ UserId :  1000 ,  Permission :  m . PERMISSION_ADMIN } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 16:26:09 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											updateDashboardPermissionScenario ( "When calling POST on" ,  "/api/dashboards/id/1/permissions" ,  "/api/dashboards/id/:id/permissions" ,  cmd ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												callUpdateDashboardPermissions ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( sc . resp . Code ,  ShouldEqual ,  403 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 16:26:09 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											Reset ( func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												guardian . New  =  origNewGuardian 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-12 16:26:09 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:35:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Convey ( "Given user has admin permissions and permissions to update" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											origNewGuardian  :=  guardian . New 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											guardian . MockDashboardGuardian ( & guardian . FakeDashboardGuardian { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												CanAdminValue :                     true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												CheckPermissionBeforeUpdateValue :  true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												GetAclValue :  [ ] * m . DashboardAclInfoDTO { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ OrgId :  1 ,  DashboardId :  1 ,  UserId :  2 ,  Permission :  m . PERMISSION_VIEW } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ OrgId :  1 ,  DashboardId :  1 ,  UserId :  3 ,  Permission :  m . PERMISSION_EDIT } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ OrgId :  1 ,  DashboardId :  1 ,  UserId :  4 ,  Permission :  m . PERMISSION_ADMIN } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ OrgId :  1 ,  DashboardId :  1 ,  TeamId :  1 ,  Permission :  m . PERMISSION_VIEW } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ OrgId :  1 ,  DashboardId :  1 ,  TeamId :  2 ,  Permission :  m . PERMISSION_ADMIN } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-22 16:36:47 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											getDashboardQueryResult  :=  m . NewDashboard ( "Dash" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											bus . AddHandler ( "test" ,  func ( query  * m . GetDashboardQuery )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												query . Result  =  getDashboardQueryResult 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  nil 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-22 16:36:47 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											loggedInUserScenarioWithRole ( "When calling GET on" ,  "GET" ,  "/api/dashboards/id/1/permissions" ,  "/api/dashboards/id/:id/permissions" ,  m . ROLE_ADMIN ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												callGetDashboardPermissions ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( sc . resp . Code ,  ShouldEqual ,  200 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												respJSON ,  err  :=  simplejson . NewJson ( sc . resp . Body . Bytes ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( err ,  ShouldBeNil ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( len ( respJSON . MustArray ( ) ) ,  ShouldEqual ,  5 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( respJSON . GetIndex ( 0 ) . Get ( "userId" ) . MustInt ( ) ,  ShouldEqual ,  2 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( respJSON . GetIndex ( 0 ) . Get ( "permission" ) . MustInt ( ) ,  ShouldEqual ,  m . PERMISSION_VIEW ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											cmd  :=  dtos . UpdateDashboardAclCommand { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												Items :  [ ] dtos . DashboardAclUpdateItem { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ UserId :  1000 ,  Permission :  m . PERMISSION_ADMIN } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											updateDashboardPermissionScenario ( "When calling POST on" ,  "/api/dashboards/id/1/permissions" ,  "/api/dashboards/id/:id/permissions" ,  cmd ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												callUpdateDashboardPermissions ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( sc . resp . Code ,  ShouldEqual ,  200 ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											Reset ( func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												guardian . New  =  origNewGuardian 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										Convey ( "When trying to update permissions with duplicate permissions" ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											origNewGuardian  :=  guardian . New 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											guardian . MockDashboardGuardian ( & guardian . FakeDashboardGuardian { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												CanAdminValue :                     true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												CheckPermissionBeforeUpdateValue :  false , 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 23:03:11 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												CheckPermissionBeforeUpdateError :  guardian . ErrGuardianPermissionExists , 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											getDashboardQueryResult  :=  m . NewDashboard ( "Dash" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											bus . AddHandler ( "test" ,  func ( query  * m . GetDashboardQuery )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												query . Result  =  getDashboardQueryResult 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-22 16:36:47 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											cmd  :=  dtos . UpdateDashboardAclCommand { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												Items :  [ ] dtos . DashboardAclUpdateItem { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ UserId :  1000 ,  Permission :  m . PERMISSION_ADMIN } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-23 05:01:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											updateDashboardPermissionScenario ( "When calling POST on" ,  "/api/dashboards/id/1/permissions" ,  "/api/dashboards/id/:id/permissions" ,  cmd ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												callUpdateDashboardPermissions ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( sc . resp . Code ,  ShouldEqual ,  400 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-23 05:01:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											Reset ( func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												guardian . New  =  origNewGuardian 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-23 05:01:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-03-29 17:32:24 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										Convey ( "When trying to override inherited permissions with lower precedence" ,  func ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											origNewGuardian  :=  guardian . New 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											guardian . MockDashboardGuardian ( & guardian . FakeDashboardGuardian { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												CanAdminValue :                     true , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												CheckPermissionBeforeUpdateValue :  false , 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 23:03:11 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
												CheckPermissionBeforeUpdateError :  guardian . ErrGuardianOverride } , 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											getDashboardQueryResult  :=  m . NewDashboard ( "Dash" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											bus . AddHandler ( "test" ,  func ( query  * m . GetDashboardQuery )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												query . Result  =  getDashboardQueryResult 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											cmd  :=  dtos . UpdateDashboardAclCommand { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												Items :  [ ] dtos . DashboardAclUpdateItem { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
													{ UserId :  1000 ,  Permission :  m . PERMISSION_ADMIN } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-22 16:36:47 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											updateDashboardPermissionScenario ( "When calling POST on" ,  "/api/dashboards/id/1/permissions" ,  "/api/dashboards/id/:id/permissions" ,  cmd ,  func ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												callUpdateDashboardPermissions ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												So ( sc . resp . Code ,  ShouldEqual ,  400 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:35:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											Reset ( func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
												guardian . New  =  origNewGuardian 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-08 21:35:34 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-23 05:01:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  callGetDashboardPermissions ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									sc . handlerFunc  =  GetDashboardPermissionList 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									sc . fakeReqWithParams ( "GET" ,  sc . url ,  map [ string ] string { } ) . exec ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-06-23 05:01:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  callUpdateDashboardPermissions ( sc  * scenarioContext )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									bus . AddHandler ( "test" ,  func ( cmd  * m . UpdateDashboardAclCommand )  error  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										return  nil 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									sc . fakeReqWithParams ( "POST" ,  sc . url ,  map [ string ] string { } ) . exec ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
								func  updateDashboardPermissionScenario ( desc  string ,  url  string ,  routePattern  string ,  cmd  dtos . UpdateDashboardAclCommand ,  fn  scenarioFunc )  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
									Convey ( desc + " " + url ,  func ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										defer  bus . ClearBusHandlers ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-01-30 20:17:48 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										sc  :=  setupScenarioContext ( url ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-07-02 23:13:59 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
										sc . defaultHandler  =  Wrap ( func ( c  * m . ReqContext )  Response  { 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											sc . context  =  c 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
											sc . context . OrgId  =  TestOrgID 
							 
						 
					
						
							
								
									
										
										
										
											2018-02-27 03:15:57 +08:00 
										
									 
								 
							 
							
								
									
										 
									 
								
							 
							
								 
							 
							
							
											sc . context . UserId  =  TestUserID 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-02-21 18:42:54 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
											return  UpdateDashboardPermissions ( c ,  cmd ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-01-18 21:30:04 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							 
							
							
										} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										sc . m . Post ( routePattern ,  sc . defaultHandler ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
										fn ( sc ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
									} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							 
							
							
								}