Skip to content

Commit

Permalink
Merge pull request #47 from linkernetworks/hwchiu/VX-109
Browse files Browse the repository at this point in the history
Implement a function to delete the document of volume
  • Loading branch information
Hung-Wei Chiu authored Jun 27, 2018
2 parents 3352151 + 0b7211b commit 070da2b
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/server/handler_volume.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,27 @@ func createVolume(ctx *web.Context) {
Message: "Create success",
})
}

func deleteVolume(ctx *web.Context) {
sp, req, resp := ctx.ServiceProvider, ctx.Request, ctx.Response

id := req.PathParameter("id")

session := sp.Mongo.NewSession()
defer session.Close()

fmt.Println(id)
if err := session.Remove(entity.VolumeCollectionName, "_id", bson.ObjectIdHex(id)); err != nil {
if mgo.ErrNotFound == err {
response.BadRequest(req.Request, resp.ResponseWriter, err)
} else {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
}
return
}

resp.WriteEntity(ActionResponse{
Error: false,
Message: "Delete success",
})
}
41 changes: 41 additions & 0 deletions src/server/handler_volume_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,5 +131,46 @@ func (suite *VolumeTestSuite) TestCreateVolumeWithInvalidParameter() {
suite.wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(suite.T(), http.StatusBadRequest, httpWriter)
defer suite.session.Remove(entity.VolumeCollectionName, "name", volume.Name)
}

func (suite *VolumeTestSuite) TestDeleteVolume() {
tName := namesgenerator.GetRandomName(0)
tAccessMode := corev1.PersistentVolumeAccessMode("ReadOnlyMany")
tCapacity := "250"
volume := entity.Volume{
ID: bson.NewObjectId(),
Name: tName,
StorageProviderName: namesgenerator.GetRandomName(0),
Capacity: tCapacity,
AccessMode: tAccessMode,
}

err := suite.session.Insert(entity.VolumeCollectionName, &volume)
suite.NoError(err)

bodyBytes, err := json.MarshalIndent(volume, "", " ")
suite.NoError(err)

bodyReader := strings.NewReader(string(bodyBytes))
httpRequest, err := http.NewRequest("DELETE", "http://localhost:7890/v1/volume/"+volume.ID.Hex(), bodyReader)
suite.NoError(err)

httpRequest.Header.Add("Content-Type", "application/json")
httpWriter := httptest.NewRecorder()
suite.wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(suite.T(), http.StatusOK, httpWriter)

n, err := suite.session.Count(entity.VolumeCollectionName, bson.M{"_id": volume.ID})
suite.NoError(err)
suite.Equal(0, n)
}

func (suite *VolumeTestSuite) TestDeleteVolumeWithInvalidID() {
httpRequest, err := http.NewRequest("DELETE", "http://localhost:7890/v1/volume/"+bson.NewObjectId().Hex(), nil)
suite.NoError(err)

httpRequest.Header.Add("Content-Type", "application/json")
httpWriter := httptest.NewRecorder()
suite.wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(suite.T(), http.StatusBadRequest, httpWriter)
}
1 change: 1 addition & 0 deletions src/server/route.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,5 +53,6 @@ func newVolumeService(sp *serviceprovider.Container) *restful.WebService {
webService := new(restful.WebService)
webService.Path("/v1/volume").Consumes(restful.MIME_JSON, restful.MIME_JSON).Produces(restful.MIME_JSON, restful.MIME_JSON)
webService.Route(webService.POST("/").To(handler.RESTfulServiceHandler(sp, createVolume)))
webService.Route(webService.DELETE("/{id}").To(handler.RESTfulServiceHandler(sp, deleteVolume)))
return webService
}

0 comments on commit 070da2b

Please sign in to comment.