Fix/test trigger annotations (#1126)

* Fix/test trigger annotations
This commit is contained in:
Owen Cliffe
2018-07-17 13:54:26 +01:00
committed by GitHub
parent 95dda3d3e6
commit 1d5892b0c6
2 changed files with 59 additions and 3 deletions

View File

@@ -22,7 +22,11 @@ func (s *Server) handleTriggerGet(c *gin.Context) {
handleErrorResponse(c, fmt.Errorf("unexpected error - trigger app not available: %s", err)) handleErrorResponse(c, fmt.Errorf("unexpected error - trigger app not available: %s", err))
} }
s.triggerAnnotator.AnnotateTrigger(c, app, trigger) trigger, err = s.triggerAnnotator.AnnotateTrigger(c, app, trigger)
if err != nil {
handleErrorResponse(c, err)
return
}
c.JSON(http.StatusOK, trigger) c.JSON(http.StatusOK, trigger)
} }

View File

@@ -123,7 +123,7 @@ func TestTriggerCreate(t *testing.T) {
t.Errorf("Test %d: error decoding body for GET 'ok' json, it was a lie: %v", i, err) t.Errorf("Test %d: error decoding body for GET 'ok' json, it was a lie: %v", i, err)
} }
if !triggerGet.Equals(&trigger) { if !trigger.EqualsWithAnnotationSubset(&triggerGet) {
t.Errorf("Test %d: GET trigger should match result of PUT trigger: %v, %v", i, triggerGet, trigger) t.Errorf("Test %d: GET trigger should match result of PUT trigger: %v, %v", i, triggerGet, trigger)
} }
@@ -310,6 +310,58 @@ func TestTriggerGet(t *testing.T) {
} }
} }
func TestHTTPTriggerEndpointAnnotations(t *testing.T) {
a := &models.App{ID: "appid", Name: "myapp"}
fn := &models.Fn{ID: "fnid", AppID: a.ID}
fn.SetDefaults()
trig := &models.Trigger{ID: "triggerid", FnID: fn.ID, AppID: a.ID, Type: "http", Source: "/myt"}
commonDS := datastore.NewMockInit([]*models.App{a}, []*models.Fn{fn}, []*models.Trigger{trig})
srv := testServer(commonDS, &mqs.Mock{}, logs.NewMock(), nil, ServerTypeAPI)
_, rec := routerRequest(t, srv.Router, "GET", "/v2/triggers/triggerid", bytes.NewBuffer([]byte("")))
if rec.Code != http.StatusOK {
t.Fatalf("expected code %d != 200", rec.Code)
}
var triggerGet models.Trigger
err := json.NewDecoder(rec.Body).Decode(&triggerGet)
if err != nil {
t.Fatalf("Invalid json from server %s", err)
}
const triggerEndpoint = "fnproject.io/trigger/httpEndpoint"
v, err := triggerGet.Annotations.GetString(triggerEndpoint)
if err != nil {
t.Fatalf("failed to get trigger %s", err)
}
if v != "http://127.0.0.1:8080/t/myapp/myt" {
t.Errorf("unexpected trigger val %s", v)
}
_, rec = routerRequest(t, srv.Router, "GET", "/v2/triggers?app_id=appid", bytes.NewBuffer([]byte("")))
if rec.Code != http.StatusOK {
t.Fatalf("expected code %d != 200", rec.Code)
}
var triggerList models.TriggerList
err = json.NewDecoder(rec.Body).Decode(&triggerList)
if err != nil {
t.Fatalf("Invalid json from server %s : %s", err, string(rec.Body.Bytes()))
}
if len(triggerList.Items) != 1 {
t.Fatalf("Unexpected trigger list result")
}
v, err = triggerList.Items[0].Annotations.GetString(triggerEndpoint)
if v != "http://127.0.0.1:8080/t/myapp/myt" {
t.Errorf("unexpected trigger val %s", v)
}
}
func TestTriggerUpdate(t *testing.T) { func TestTriggerUpdate(t *testing.T) {
buf := setLogBuffer() buf := setLogBuffer()
defer func() { defer func() {
@@ -377,7 +429,7 @@ func TestTriggerUpdate(t *testing.T) {
} }
trig.Name = test.name trig.Name = test.name
if !triggerGet.Equals(trig) { if !trig.EqualsWithAnnotationSubset(&triggerGet) {
t.Errorf("Test%d: trigger should be updated: %v : %v", i, trig, triggerGet) t.Errorf("Test%d: trigger should be updated: %v : %v", i, trig, triggerGet)
} }
} }