Skip to content

Commit

Permalink
Merge pull request #35 from linkernetworks/hwchiu/VX-129
Browse files Browse the repository at this point in the history
Add the restful to delete the document of storageProvider.

Former-commit-id: e73166d845a5012d61002f2190a355f07aeb2fd3 [formerly e73166d845a5012d61002f2190a355f07aeb2fd3 [formerly 3f8d17f]]
Former-commit-id: 6b3fc88b6ed2843f2797da3f2f94beea4f94ed9b
Former-commit-id: aacff42
  • Loading branch information
Hung-Wei Chiu authored Jun 26, 2018
2 parents 647fcbb + 31b1130 commit e07ceeb
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/server/handler_storage_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,26 @@ func listStorageProvider(ctx *web.Context) {
resp.AddHeader("X-Total-Pages", strconv.Itoa(totalPages))
resp.WriteEntity(storageProviders)
}

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

id := req.PathParameter("id")

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

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

resp.WriteEntity(ActionResponse{
Error: false,
Message: "Delete success",
})
}
54 changes: 54 additions & 0 deletions src/server/handler_storage_provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ func TestCreateStorageProvider(t *testing.T) {
service := newStorageProviderService(sp)
wc.Add(service)
wc.Dispatch(httpWriter, httpRequest)
defer session.Remove(entity.StorageProviderCollectionName, "displayName", tName)
assertResponseCode(t, http.StatusOK, httpWriter)
//Empty data
//We use the new write but empty input
Expand All @@ -62,7 +63,60 @@ func TestCreateStorageProvider(t *testing.T) {
httpWriter = httptest.NewRecorder()
wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(t, http.StatusConflict, httpWriter)
}

func TestDeleteStorageProvider(t *testing.T) {
cf := config.MustRead("../../config/testing.json")
sp := serviceprovider.New(cf)

//Testing parameter
tName := namesgenerator.GetRandomName(0)
tType := "nfs"
tIP := "1.2.3.4"
tPath := "/exports"
storageProvider := entity.StorageProvider{
ID: bson.NewObjectId(),
Type: tType,
DisplayName: tName,
NFSStorageProvider: entity.NFSStorageProvider{
IP: tIP,
PATH: tPath,
},
}

session := sp.Mongo.NewSession()
defer session.Close()
session.C(entity.StorageProviderCollectionName).Insert(storageProvider)
defer session.Remove(entity.StorageProviderCollectionName, "displayName", tName)

bodyBytes, err := json.MarshalIndent(storageProvider, "", " ")
assert.NoError(t, err)

//Create again and it should fail since the name exist
bodyReader := strings.NewReader(string(bodyBytes))
httpRequest, err := http.NewRequest("DELETE", "http://localhost:7890/v1/storageprovider/"+storageProvider.ID.Hex(), bodyReader)
assert.NoError(t, err)
httpRequest.Header.Add("Content-Type", "application/json")
httpWriter := httptest.NewRecorder()
wc := restful.NewContainer()
service := newStorageProviderService(sp)
wc.Add(service)
wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(t, http.StatusOK, httpWriter)
}

func TestInValidDeleteStorageProvider(t *testing.T) {
cf := config.MustRead("../../config/testing.json")
sp := serviceprovider.New(cf)

httpRequest, err := http.NewRequest("DELETE", "http://localhost:7890/v1/storageprovider/"+bson.NewObjectId().Hex(), nil)
assert.NoError(t, err)
httpWriter := httptest.NewRecorder()
wc := restful.NewContainer()
service := newStorageProviderService(sp)
wc.Add(service)
wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(t, http.StatusNotFound, httpWriter)
}

func TestListStorageProvider(t *testing.T) {
Expand Down
1 change: 1 addition & 0 deletions src/server/route.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ func newStorageProviderService(sp *serviceprovider.Container) *restful.WebServic
webService.Path("/v1/storageprovider").Consumes(restful.MIME_JSON, restful.MIME_JSON).Produces(restful.MIME_JSON, restful.MIME_JSON)
webService.Route(webService.POST("/").To(handler.RESTfulServiceHandler(sp, createStorageProvider)))
webService.Route(webService.GET("/").To(handler.RESTfulServiceHandler(sp, listStorageProvider)))
webService.Route(webService.DELETE("/{id}").To(handler.RESTfulServiceHandler(sp, deleteStorageProvider)))
return webService
}

Expand Down

0 comments on commit e07ceeb

Please sign in to comment.