Add annotation to trigger on create if endpoints are enabled (#1177)

* Add annotations for creation of triggers and fns along with the test for them fixes #1178

* Log errors and still return created resource for annotation failures
This commit is contained in:
James Jeffrey
2018-08-21 02:26:36 -07:00
committed by Tom Coupland
parent 24f41c29b2
commit d336035678
4 changed files with 101 additions and 21 deletions

View File

@@ -315,24 +315,47 @@ 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})
trig := &models.Trigger{Name: "thetrigger", FnID: fn.ID, AppID: a.ID, Type: "http", Source: "/myt"}
commonDS := datastore.NewMockInit([]*models.App{a}, []*models.Fn{fn})
triggerBody, err := json.Marshal(trig)
if err != nil {
t.Fatalf("Failed to marshal triggerbody: %s", err)
}
srv := testServer(commonDS, &mqs.Mock{}, logs.NewMock(), nil, ServerTypeAPI)
_, rec := routerRequest(t, srv.Router, "GET", "/v2/triggers/triggerid", bytes.NewBuffer([]byte("")))
_, createTrigger := routerRequest(t, srv.Router, "POST", BaseRoute, bytes.NewReader(triggerBody))
if createTrigger.Code != http.StatusOK {
t.Fatalf("expected code %d != 200 %s", createTrigger.Code, createTrigger.Body.String())
}
var triggerCreate models.Trigger
err = json.NewDecoder(createTrigger.Body).Decode(&triggerCreate)
if err != nil {
t.Fatalf("Invalid json from server on trigger create: %s", err)
}
const triggerEndpoint = "fnproject.io/trigger/httpEndpoint"
v, err := triggerCreate.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/"+triggerCreate.ID, 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)
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)
v, err = triggerGet.Annotations.GetString(triggerEndpoint)
if err != nil {
t.Fatalf("failed to get trigger %s", err)
}