Skip to content

Commit

Permalink
Add endpoints for adding and deleting delegations
Browse files Browse the repository at this point in the history
  • Loading branch information
marcofranssen committed Feb 5, 2020
1 parent 9edac07 commit 54d1b45
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 3 deletions.
4 changes: 3 additions & 1 deletion lib/api_test.go
Expand Up @@ -38,7 +38,9 @@ func TestRoutes(t *testing.T) {
{http.MethodGet, "/targets/"},
{http.MethodPost, "/targets/"},
{http.MethodGet, "/targets/{target}"},
{http.MethodGet, "/targets/{target}/delegates"},
{http.MethodGet, "/targets/{target}/delegations/"},
{http.MethodPost, "/targets/{target}/delegations/"},
{http.MethodDelete, "/targets/{target}/delegations/{delegation}"},
}

router := bootstrapAPI()
Expand Down
14 changes: 13 additions & 1 deletion lib/targets/targets.go
Expand Up @@ -30,7 +30,11 @@ func (tr *Resource) RegisterRoutes(r chi.Router) {
rr.Get("/", tr.listTargets)
rr.Post("/", tr.createTarget)
rr.Get("/{target}", tr.getTarget)
rr.Get("/{target}/delegates", tr.listDelegates)
rr.Route("/{target}/delegations", func(rrr chi.Router) {
rrr.Get("/", tr.listDelegates)
rrr.Post("/", tr.addDelegation)
rrr.Delete("/{delegation}", tr.removeDelegation)
})
})
}

Expand Down Expand Up @@ -122,6 +126,14 @@ func (tr *Resource) listDelegates(w http.ResponseWriter, r *http.Request) {
respondList(w, r, NewKeyListResponse(response))
}

func (tr *Resource) addDelegation(w http.ResponseWriter, r *http.Request) {
respond(w, r, e.ErrNotImplemented)
}

func (tr *Resource) removeDelegation(w http.ResponseWriter, r *http.Request) {
respond(w, r, e.ErrNotImplemented)
}

func respond(w http.ResponseWriter, r *http.Request, renderer render.Renderer) {
if err := render.Render(w, r, renderer); err != nil {
render.Render(w, r, e.ErrRender(err))
Expand Down
28 changes: 27 additions & 1 deletion lib/targets/targets_test.go
Expand Up @@ -164,7 +164,7 @@ func TestCreateTarget(t *testing.T) {
func TestListTargetDelegates(t *testing.T) {
assert := assert.New(t)

req, err := http.NewRequest(http.MethodGet, "/targets/c3b49d8/delegates", nil)
req, err := http.NewRequest(http.MethodGet, "/targets/c3b49d8/delegations", nil)
assert.NoError(err, "Failed to create request")

rr := httptest.NewRecorder()
Expand All @@ -173,3 +173,29 @@ func TestListTargetDelegates(t *testing.T) {
assert.Equal(http.StatusOK, rr.Code, "Invalid status code")
assert.Equal(EmptyResponse, rr.Body.String(), "Invalid response text")
}

func TestAddDelegation(t *testing.T) {
assert := assert.New(t)

req, err := http.NewRequest(http.MethodPost, "/targets/c3b49d8/delegations", nil)
assert.NoError(err, "Failed to create request")

rr := httptest.NewRecorder()
router.ServeHTTP(rr, req)

assert.Equal(http.StatusNotImplemented, rr.Code, "Invalid status code")
assert.Equal(NotImplementedResponse, rr.Body.String(), "Expected empty response")
}

func TestRemoveDelegation(t *testing.T) {
assert := assert.New(t)

req, err := http.NewRequest(http.MethodDelete, "/targets/c3b49d8/delegations/1234567", nil)
assert.NoError(err, "Failed to create request")

rr := httptest.NewRecorder()
router.ServeHTTP(rr, req)

assert.Equal(http.StatusNotImplemented, rr.Code, "Invalid status code")
assert.Equal(NotImplementedResponse, rr.Body.String(), "Expected empty response")
}

0 comments on commit 54d1b45

Please sign in to comment.