diff --git a/traffic_ops/testing/api/v4/deliveryservice_requests_test.go b/traffic_ops/testing/api/v4/deliveryservice_requests_test.go index 9f60632ce4..947a338791 100644 --- a/traffic_ops/testing/api/v4/deliveryservice_requests_test.go +++ b/traffic_ops/testing/api/v4/deliveryservice_requests_test.go @@ -54,7 +54,9 @@ func resetDS(ds *tc.DeliveryServiceV4) { } func TestDeliveryServiceRequests(t *testing.T) { - WithObjs(t, []TCObj{CDNs, Types, Parameters, Tenants, DeliveryServiceRequests}, func() { + WithObjs(t, []TCObj{CDNs, Types, Parameters, Tenants, Users, Profiles, Statuses, Divisions, Regions, PhysLocations, CacheGroups, Servers, Topologies, ServerCapabilities, ServiceCategories, DeliveryServices, DeliveryServiceRequests}, func() { + + t.Run("update DSR crud", testUpdateDSR) currentTime := time.Now().UTC().Add(-15 * time.Second) currentTimeRFC := currentTime.Format(time.RFC1123) @@ -326,6 +328,42 @@ func TestDeliveryServiceRequests(t *testing.T) { }) } +func testUpdateDSR(t *testing.T) { + resp, _, err := TOSession.GetDeliveryServices(client.RequestOptions{}) + if err != nil { + t.Fatalf("failed to get Delivery Services: %#v - response: %+v", err, resp) + } + + if len(resp.Response) < 1 { + t.Fatal("need at least one Delivery Service to test updating a DS with a DSR") + } + + ds := resp.Response[0] + if ds.DisplayName == nil { + t.Fatalf("Traffic Ops returned a DS with a nil Display Name: %+v", ds) + } + *ds.DisplayName += " - Update DSR test" + + dsr := tc.DeliveryServiceRequestV4{ + ChangeType: tc.DSRChangeTypeUpdate, + Requested: &ds, + Status: tc.RequestStatusDraft, + } + creationResp, _, err := TOSession.CreateDeliveryServiceRequest(dsr, client.RequestOptions{}) + if err != nil { + t.Fatalf("failed to create an update DSR: %#v - response: %+v", err, creationResp) + } + + id := creationResp.Response.ID + if id == nil { + t.Fatalf("Traffic Ops returned a created DSR without an ID: %+v", creationResp) + } + deleteResp, _, err := TOSession.DeleteDeliveryServiceRequest(*id, client.RequestOptions{}) + if err != nil { + t.Errorf("failed to delete the created update DSR: %#v - response: %+v", err, deleteResp) + } +} + func GetDeliveryServiceRequestId(t *testing.T, xmlId string) func() int { return func() int { opts := client.NewRequestOptions() diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservices.go b/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservices.go index 1cc3525545..809c586477 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservices.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/deliveryservices.go @@ -1884,7 +1884,7 @@ func GetDeliveryServices(query string, queryValues map[string]interface{}, tx *s // ensure json generated from this slice won't come out as `null` if empty dsQueryParams := []string{} - geoLimitCountries := util.StrPtr("") + geoLimitCountries := new(string) for rows.Next() { var ds tc.DeliveryServiceV5 var longDesc1 *string diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/request/requests.go b/traffic_ops/traffic_ops_golang/deliveryservice/request/requests.go index 4b3ddac65c..a86d9f35f7 100644 --- a/traffic_ops/traffic_ops_golang/deliveryservice/request/requests.go +++ b/traffic_ops/traffic_ops_golang/deliveryservice/request/requests.go @@ -498,31 +498,23 @@ func createV4(w http.ResponseWriter, r *http.Request, inf *api.APIInfo) (result return } - dsr.SetXMLID() - if ok, err = dbhelpers.DSRExistsWithXMLID(dsr.XMLID, tx); err != nil { - err = fmt.Errorf("checking for existence of DSR with xmlid '%s'", dsr.XMLID) + upgraded.SetXMLID() + if ok, err = dbhelpers.DSRExistsWithXMLID(upgraded.XMLID, tx); err != nil { + err = fmt.Errorf("checking for existence of DSR with xmlid '%s'", upgraded.XMLID) api.HandleErr(w, r, tx, http.StatusInternalServerError, nil, err) return } else if ok { - userErr := fmt.Errorf("an open Delivery Service Request for XMLID '%s' already exists", dsr.XMLID) + userErr := fmt.Errorf("an open Delivery Service Request for XMLID '%s' already exists", upgraded.XMLID) api.HandleErr(w, r, tx, http.StatusBadRequest, userErr, nil) return } - if dsr.Original != nil { - if dsr.Original.LongDesc1 != nil || dsr.Original.LongDesc2 != nil { - api.HandleErr(w, r, tx, http.StatusBadRequest, errors.New("the longDesc1 and longDesc2 fields are no longer supported in API 4.0 onwards"), nil) - return - } - if len(dsr.Original.TLSVersions) < 1 { + if upgraded.Original != nil { + if len(upgraded.Original.TLSVersions) < 1 { upgraded.Original.TLSVersions = nil } } - if dsr.Requested != nil { - if dsr.Requested.LongDesc1 != nil || dsr.Requested.LongDesc2 != nil { - api.HandleErr(w, r, tx, http.StatusBadRequest, errors.New("the longDesc1 and longDesc2 fields are no longer supported in API 4.0 onwards"), nil) - return - } - if len(dsr.Requested.TLSVersions) < 1 { + if upgraded.Requested != nil { + if len(upgraded.Requested.TLSVersions) < 1 { upgraded.Requested.TLSVersions = nil } }