Skip to content
This repository was archived by the owner on Nov 24, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 39 additions & 1 deletion traffic_ops/testing/api/v4/deliveryservice_requests_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
24 changes: 8 additions & 16 deletions traffic_ops/traffic_ops_golang/deliveryservice/request/requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
Expand Down