From c2dd949b393801c490481ea2004f736bfefb5f8e Mon Sep 17 00:00:00 2001 From: Mike Ball Date: Fri, 4 Nov 2016 09:59:46 -0400 Subject: [PATCH] create `DeleteDeliveryService` method --- traffic_ops/client/delivery_service.go | 15 ++++++ .../client/delivery_service_resources.go | 5 ++ .../client/fixtures/delivery_service.go | 23 ++++++--- .../client/tests/delivery_service_test.go | 48 +++++++++++++++++++ 4 files changed, 85 insertions(+), 6 deletions(-) diff --git a/traffic_ops/client/delivery_service.go b/traffic_ops/client/delivery_service.go index bc902f5b83..82a677f708 100644 --- a/traffic_ops/client/delivery_service.go +++ b/traffic_ops/client/delivery_service.go @@ -70,6 +70,17 @@ func (to *Session) UpdateDeliveryService(id string, ds *DeliveryService) (*Deliv return &data, nil } +// DeleteDeliveryService deletes the DeliveryService matching the ID it's passed +func (to *Session) DeleteDeliveryService(id string) (*DeleteDeliveryServiceResponse, error) { + var data DeleteDeliveryServiceResponse + err := del(to, deliveryServiceEp(id), &data) + if err != nil { + return nil, err + } + + return &data, nil +} + // DeliveryServiceState gets the DeliveryServiceState for the ID it's passed func (to *Session) DeliveryServiceState(id string) (*DeliveryServiceState, error) { var data DeliveryServiceStateResponse @@ -159,6 +170,10 @@ func put(to *Session, endpoint string, body []byte, respStruct interface{}) erro return makeReq(to, "PUT", endpoint, body, respStruct) } +func del(to *Session, endpoint string, respStruct interface{}) error { + return makeReq(to, "DELETE", endpoint, nil, respStruct) +} + func makeReq(to *Session, method, endpoint string, body []byte, respStruct interface{}) error { resp, err := to.request(method, endpoint, body) if err != nil { diff --git a/traffic_ops/client/delivery_service_resources.go b/traffic_ops/client/delivery_service_resources.go index 91e8a017f9..a65734c28e 100644 --- a/traffic_ops/client/delivery_service_resources.go +++ b/traffic_ops/client/delivery_service_resources.go @@ -28,6 +28,11 @@ type DeliveryServiceResponse struct { Alerts []DeliveryServiceAlert `json:"alerts"` } +// DeleteDeliveryServiceResponse ... +type DeleteDeliveryServiceResponse struct { + Alerts []DeliveryServiceAlert `json:"alerts"` +} + // DeliveryService ... type DeliveryService struct { ID string `json:"id"` diff --git a/traffic_ops/client/fixtures/delivery_service.go b/traffic_ops/client/fixtures/delivery_service.go index 45d2ef5b65..6c7bf74fc1 100644 --- a/traffic_ops/client/fixtures/delivery_service.go +++ b/traffic_ops/client/fixtures/delivery_service.go @@ -51,16 +51,27 @@ func DeliveryServices() *client.GetDeliveryServiceResponse { } } +func alerts() []client.DeliveryServiceAlert { + return []client.DeliveryServiceAlert{ + client.DeliveryServiceAlert{ + Level: "level", + Text: "text", + }, + } +} + // DeliveryService returns a default DeliveryServiceResponse to be used for testing. func DeliveryService() *client.DeliveryServiceResponse { return &client.DeliveryServiceResponse{ Response: DeliveryServices().Response[0], - Alerts: []client.DeliveryServiceAlert{ - client.DeliveryServiceAlert{ - Level: "level", - Text: "text", - }, - }, + Alerts: alerts(), + } +} + +// DeleteDeliveryService returns a default DeleteDeliveryServiceResponse to be used for testing. +func DeleteDeliveryService() *client.DeleteDeliveryServiceResponse { + return &client.DeleteDeliveryServiceResponse{ + Alerts: alerts(), } } diff --git a/traffic_ops/client/tests/delivery_service_test.go b/traffic_ops/client/tests/delivery_service_test.go index 5fe2343521..d8691b51db 100644 --- a/traffic_ops/client/tests/delivery_service_test.go +++ b/traffic_ops/client/tests/delivery_service_test.go @@ -234,6 +234,54 @@ func TestUpdateDeliveryServiceUnauthorized(t *testing.T) { } } +func TestDeleteDeliveryService(t *testing.T) { + resp := fixtures.DeleteDeliveryService() + server := testHelper.ValidHTTPServer(resp) + defer server.Close() + + var httpClient http.Client + to := client.Session{ + URL: server.URL, + UserAgent: &httpClient, + } + + testHelper.Context(t, "Given the need to test a successful Traffic Ops request to delete a DeliveryService") + + ds, err := to.DeleteDeliveryService("123") + if err != nil { + testHelper.Error(t, "Should be able to make a request to Traffic Ops") + } else { + testHelper.Success(t, "Should be able to make a request to Traffic Ops") + } + + actual := ds.Alerts[0].Text + if actual != "text" { + testHelper.Error(t, "Should get back \"text\" for \"Alerts[0].Text\", got: %s", actual) + } else { + testHelper.Success(t, "Should get back \"text\" for \"Alerts[0].Text\"") + } +} + +func TestDeleteDeliveryServiceUnauthorized(t *testing.T) { + server := testHelper.InvalidHTTPServer(http.StatusUnauthorized) + defer server.Close() + + var httpClient http.Client + to := client.Session{ + URL: server.URL, + UserAgent: &httpClient, + } + + testHelper.Context(t, "Given the need to test a failed Traffic Ops request to delete a DeliveryService") + + _, err := to.DeleteDeliveryService("123") + if err == nil { + testHelper.Error(t, "Should not be able to make a request to Traffic Ops") + } else { + testHelper.Success(t, "Should not be able to make a request to Traffic Ops") + } +} + func TestDeliveryServiceState(t *testing.T) { resp := fixtures.DeliveryServiceState() server := testHelper.ValidHTTPServer(resp)