Просмотр исходного кода

move dashboard error to API (not sql)

ryan 8 лет назад
Родитель
Сommit
db92a96067
2 измененных файлов с 30 добавлено и 4 удалено
  1. 5 0
      pkg/api/annotations.go
  2. 25 4
      pkg/api/annotations_test.go

+ 5 - 0
pkg/api/annotations.go

@@ -63,6 +63,11 @@ func PostAnnotation(c *m.ReqContext, cmd dtos.PostAnnotationsCmd) Response {
 		return ApiError(500, "Failed to save annotation", err)
 	}
 
+	if cmd.DashboardId == 0 {
+		err := &CreateAnnotationError{"Missing DashboardID"}
+		return ApiError(500, "Failed to save annotation", err)
+	}
+
 	item := annotations.Item{
 		OrgId:       c.OrgId,
 		UserId:      c.UserId,

+ 25 - 4
pkg/api/annotations_test.go

@@ -14,10 +14,11 @@ import (
 func TestAnnotationsApiEndpoint(t *testing.T) {
 	Convey("Given an annotation without a dashboard id", t, func() {
 		cmd := dtos.PostAnnotationsCmd{
-			Time:     1000,
-			Text:     "annotation text",
-			Tags:     []string{"tag1", "tag2"},
-			IsRegion: false,
+			DashboardId: 1,
+			Time:        1000,
+			Text:        "annotation text",
+			Tags:        []string{"tag1", "tag2"},
+			IsRegion:    false,
 		}
 
 		updateCmd := dtos.UpdateAnnotationsCmd{
@@ -79,6 +80,26 @@ func TestAnnotationsApiEndpoint(t *testing.T) {
 					So(sc.resp.Code, ShouldEqual, 200)
 				})
 			})
+
+			Convey("Should note be able to save an annotation", func() {
+				cmd := dtos.PostAnnotationsCmd{
+					Time: 1000,
+					Text: "annotation text",
+				}
+				postAnnotationScenario("When calling POST without dashboardId", "/api/annotations", "/api/annotations", role, cmd, func(sc *scenarioContext) {
+					sc.fakeReqWithParams("POST", sc.url, map[string]string{}).exec()
+					So(sc.resp.Code, ShouldEqual, 500)
+				})
+
+				cmd := dtos.PostAnnotationsCmd{
+					Time:        1000,
+					DashboardId: 3,
+				}
+				postAnnotationScenario("When calling POST without text", "/api/annotations", "/api/annotations", role, cmd, func(sc *scenarioContext) {
+					sc.fakeReqWithParams("POST", sc.url, map[string]string{}).exec()
+					So(sc.resp.Code, ShouldEqual, 500)
+				})
+			})
 		})
 	})