@ -27,6 +27,12 @@ func TestAnnotationsApiEndpoint(t *testing.T) {
IsRegion : false ,
}
patchCmd := dtos . PatchAnnotationsCmd {
Time : 1000 ,
Text : "annotation text" ,
Tags : [ ] string { "tag1" , "tag2" } ,
}
Convey ( "When user is an Org Viewer" , func ( ) {
role := m . ROLE_VIEWER
Convey ( "Should not be allowed to save an annotation" , func ( ) {
@ -40,6 +46,11 @@ func TestAnnotationsApiEndpoint(t *testing.T) {
So ( sc . resp . Code , ShouldEqual , 403 )
} )
patchAnnotationScenario ( "When calling PATCH on" , "/api/annotations/1" , "/api/annotations/:annotationId" , role , patchCmd , func ( sc * scenarioContext ) {
sc . fakeReqWithParams ( "PATCH" , sc . url , map [ string ] string { } ) . exec ( )
So ( sc . resp . Code , ShouldEqual , 403 )
} )
loggedInUserScenarioWithRole ( "When calling DELETE on" , "DELETE" , "/api/annotations/1" , "/api/annotations/:annotationId" , role , func ( sc * scenarioContext ) {
sc . handlerFunc = DeleteAnnotationByID
sc . fakeReqWithParams ( "DELETE" , sc . url , map [ string ] string { } ) . exec ( )
@ -67,6 +78,11 @@ func TestAnnotationsApiEndpoint(t *testing.T) {
So ( sc . resp . Code , ShouldEqual , 200 )
} )
patchAnnotationScenario ( "When calling PATCH on" , "/api/annotations/1" , "/api/annotations/:annotationId" , role , patchCmd , func ( sc * scenarioContext ) {
sc . fakeReqWithParams ( "PATCH" , sc . url , map [ string ] string { } ) . exec ( )
So ( sc . resp . Code , ShouldEqual , 200 )
} )
loggedInUserScenarioWithRole ( "When calling DELETE on" , "DELETE" , "/api/annotations/1" , "/api/annotations/:annotationId" , role , func ( sc * scenarioContext ) {
sc . handlerFunc = DeleteAnnotationByID
sc . fakeReqWithParams ( "DELETE" , sc . url , map [ string ] string { } ) . exec ( )
@ -100,6 +116,13 @@ func TestAnnotationsApiEndpoint(t *testing.T) {
Id : 1 ,
}
patchCmd := dtos . PatchAnnotationsCmd {
Time : 8000 ,
Text : "annotation text 50" ,
Tags : [ ] string { "foo" , "bar" } ,
Id : 1 ,
}
deleteCmd := dtos . DeleteAnnotationsCmd {
DashboardId : 1 ,
PanelId : 1 ,
@ -136,6 +159,11 @@ func TestAnnotationsApiEndpoint(t *testing.T) {
So ( sc . resp . Code , ShouldEqual , 403 )
} )
patchAnnotationScenario ( "When calling PATCH on" , "/api/annotations/1" , "/api/annotations/:annotationId" , role , patchCmd , func ( sc * scenarioContext ) {
sc . fakeReqWithParams ( "PATCH" , sc . url , map [ string ] string { } ) . exec ( )
So ( sc . resp . Code , ShouldEqual , 403 )
} )
loggedInUserScenarioWithRole ( "When calling DELETE on" , "DELETE" , "/api/annotations/1" , "/api/annotations/:annotationId" , role , func ( sc * scenarioContext ) {
sc . handlerFunc = DeleteAnnotationByID
sc . fakeReqWithParams ( "DELETE" , sc . url , map [ string ] string { } ) . exec ( )
@ -163,6 +191,11 @@ func TestAnnotationsApiEndpoint(t *testing.T) {
So ( sc . resp . Code , ShouldEqual , 200 )
} )
patchAnnotationScenario ( "When calling PATCH on" , "/api/annotations/1" , "/api/annotations/:annotationId" , role , patchCmd , func ( sc * scenarioContext ) {
sc . fakeReqWithParams ( "PATCH" , sc . url , map [ string ] string { } ) . exec ( )
So ( sc . resp . Code , ShouldEqual , 200 )
} )
loggedInUserScenarioWithRole ( "When calling DELETE on" , "DELETE" , "/api/annotations/1" , "/api/annotations/:annotationId" , role , func ( sc * scenarioContext ) {
sc . handlerFunc = DeleteAnnotationByID
sc . fakeReqWithParams ( "DELETE" , sc . url , map [ string ] string { } ) . exec ( )
@ -189,6 +222,12 @@ func TestAnnotationsApiEndpoint(t *testing.T) {
sc . fakeReqWithParams ( "PUT" , sc . url , map [ string ] string { } ) . exec ( )
So ( sc . resp . Code , ShouldEqual , 200 )
} )
patchAnnotationScenario ( "When calling PATCH on" , "/api/annotations/1" , "/api/annotations/:annotationId" , role , patchCmd , func ( sc * scenarioContext ) {
sc . fakeReqWithParams ( "PATCH" , sc . url , map [ string ] string { } ) . exec ( )
So ( sc . resp . Code , ShouldEqual , 200 )
} )
deleteAnnotationsScenario ( "When calling POST on" , "/api/annotations/mass-delete" , "/api/annotations/mass-delete" , role , deleteCmd , func ( sc * scenarioContext ) {
sc . fakeReqWithParams ( "POST" , sc . url , map [ string ] string { } ) . exec ( )
So ( sc . resp . Code , ShouldEqual , 200 )
@ -264,6 +303,29 @@ func putAnnotationScenario(desc string, url string, routePattern string, role m.
} )
}
func patchAnnotationScenario ( desc string , url string , routePattern string , role m . RoleType , cmd dtos . PatchAnnotationsCmd , fn scenarioFunc ) {
Convey ( desc + " " + url , func ( ) {
defer bus . ClearBusHandlers ( )
sc := setupScenarioContext ( url )
sc . defaultHandler = Wrap ( func ( c * m . ReqContext ) Response {
sc . context = c
sc . context . UserId = TestUserID
sc . context . OrgId = TestOrgID
sc . context . OrgRole = role
return PatchAnnotation ( c , cmd )
} )
fakeAnnoRepo = & fakeAnnotationsRepo { }
annotations . SetRepository ( fakeAnnoRepo )
sc . m . Patch ( routePattern , sc . defaultHandler )
fn ( sc )
} )
}
func deleteAnnotationsScenario ( desc string , url string , routePattern string , role m . RoleType , cmd dtos . DeleteAnnotationsCmd , fn scenarioFunc ) {
Convey ( desc + " " + url , func ( ) {
defer bus . ClearBusHandlers ( )