added tests for all deliveryservice methods

Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/66c37662
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/66c37662
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/66c37662

Branch: refs/heads/psql-rebase
Commit: 66c37662dc3dd8499591739005acd2cfdde8e4c3
Parents: 38954ab
Author: David Neuman <david.neuma...@gmail.com>
Authored: Thu Dec 1 15:22:17 2016 -0700
Committer: Dave Neuman <neu...@apache.org>
Committed: Fri Dec 2 15:22:55 2016 -0700

----------------------------------------------------------------------
 .../client/delivery_service_resources.go        |   1 +
 traffic_ops/client/fixtures/delivery_service.go |   4 +-
 .../tests/integration/deliveryservice_test.go   | 563 ++++++++++++++++---
 .../tests/integration/integration_helper.go     |  25 +
 4 files changed, 520 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/66c37662/traffic_ops/client/delivery_service_resources.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/delivery_service_resources.go 
b/traffic_ops/client/delivery_service_resources.go
index e7bde2a..32f2ff3 100644
--- a/traffic_ops/client/delivery_service_resources.go
+++ b/traffic_ops/client/delivery_service_resources.go
@@ -94,6 +94,7 @@ type DeliveryService struct {
        MatchList            []DeliveryServiceMatch `json:"matchList,omitempty"`
        RegionalGeoBlocking  bool                   `json:"regionalGeoBlocking"`
        LogsEnabled          bool                   `json:"logsEnabled"`
+       ExampleURLs          []string               `json:"exampleURLs"`
 }
 
 // DeliveryServiceMatch ...

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/66c37662/traffic_ops/client/fixtures/delivery_service.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/fixtures/delivery_service.go 
b/traffic_ops/client/fixtures/delivery_service.go
index 97675ab..2408cb6 100644
--- a/traffic_ops/client/fixtures/delivery_service.go
+++ b/traffic_ops/client/fixtures/delivery_service.go
@@ -177,9 +177,9 @@ func DeliveryServiceServer() 
*client.DeliveryServiceServerResponse {
 
        return &client.DeliveryServiceServerResponse{
                Response: []client.DeliveryServiceServer{dss},
-               Page:     1,
+               Size:     "1",
                OrderBy:  "foo",
-               Limit:    1,
+               Limit:    "1",
        }
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/66c37662/traffic_ops/client/tests/integration/deliveryservice_test.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/tests/integration/deliveryservice_test.go 
b/traffic_ops/client/tests/integration/deliveryservice_test.go
index c224cdf..bffa769 100644
--- a/traffic_ops/client/tests/integration/deliveryservice_test.go
+++ b/traffic_ops/client/tests/integration/deliveryservice_test.go
@@ -2,14 +2,114 @@ package integration
 
 import (
        "encoding/json"
+       "fmt"
+       "net/url"
+       "os"
        "strconv"
+       "strings"
        "testing"
        "time"
 
        traffic_ops 
"github.com/apache/incubator-trafficcontrol/traffic_ops/client"
 )
 
-// TestDeliveryServices compares the results of the Deliveryservices api and 
Deliveryservices client
+var (
+       testDs           traffic_ops.DeliveryService
+       testDsID         string
+       existingTestDS   traffic_ops.DeliveryService
+       existingTestDSID string
+       sslDs            traffic_ops.DeliveryService
+)
+
+func init() {
+       cdn, err := GetCdn()
+       if err != nil {
+               fmt.Printf("Deliverservice_test init -- Could not get CDNs from 
TO...%v\n", err)
+               os.Exit(1)
+       }
+
+       profile, err := GetProfile()
+       if err != nil {
+               fmt.Printf("Deliverservice_test init -- Could not get Profiles 
from TO...%v\n", err)
+               os.Exit(1)
+       }
+
+       dsType, err := GetType("deliveryservice")
+       if err != nil {
+               fmt.Printf("Deliverservice_test init -- Could not get Types 
from TO...%v\n", err)
+               os.Exit(1)
+       }
+
+       // existingTestDS, err := GetDeliveryService()
+       // if err != nil {
+       //      fmt.Printf("Deliverservice_test init -- Could not get 
Deliveryservices from TO...%v\n", err)
+       //      os.Exit(1)
+       // }
+       // existingTestDSID = strconv.Itoa(existingTestDS.ID)
+
+       //create DeliveryService object for testing
+       testDs.Active = false
+       testDs.CCRDNSTTL = 30
+       testDs.CDNName = cdn.Name
+       testDs.CDNID = cdn.ID
+       testDs.CacheURL = "cacheURL"
+       testDs.CheckPath = "CheckPath"
+       testDs.DNSBypassCname = "DNSBypassCNAME"
+       testDs.DNSBypassIP = "10.10.10.10"
+       testDs.DNSBypassIP6 = "FF01:0:0:0:0:0:0:FB"
+       testDs.DNSBypassTTL = 30
+       testDs.DSCP = 0
+       testDs.DisplayName = "DisplayName"
+       testDs.EdgeHeaderRewrite = "EdgeHeaderRewrite"
+       testDs.GeoLimit = 5
+       testDs.GeoProvider = 1
+       testDs.GlobalMaxMBPS = 15000
+       testDs.GlobalMaxTPS = 15000
+       testDs.HTTPBypassFQDN = "HTTPBypassFQDN"
+       testDs.IPV6RoutingEnabled = true
+       testDs.InfoURL = "InfoUrl"
+       testDs.InitialDispersion = 5
+       testDs.LongDesc = "LongDesc"
+       testDs.LongDesc1 = "LongDesc1"
+       testDs.LongDesc2 = "LongDesc2"
+       testDs.MaxDNSAnswers = 5
+       testDs.MidHeaderRewrite = "MidHeaderRewrite"
+       testDs.MissLat = 5.555
+       testDs.MissLong = -50.5050
+       testDs.MultiSiteOrigin = true
+       testDs.OrgServerFQDN = "http://OrgServerFQDN";
+       testDs.ProfileDesc = profile.Description
+       testDs.ProfileName = profile.Name
+       testDs.ProfileID = profile.ID
+       testDs.Protocol = 1
+       testDs.QStringIgnore = 1
+       testDs.RangeRequestHandling = 0
+       testDs.RegexRemap = "regexRemap"
+       testDs.RemapText = "remapText"
+       testDs.Signed = false
+       testDs.TRResponseHeaders = "TRResponseHeaders"
+       testDs.Type = dsType.Name
+       testDs.TypeID = dsType.ID
+       testDs.XMLID = "Test-DS-" + strconv.FormatInt(time.Now().Unix(), 10)
+       testDs.RegionalGeoBlocking = false
+       testDs.LogsEnabled = false
+
+       //Create method currently does not support MatchList...
+       // testDsMatch1 := new(traffic_ops.DeliveryServiceMatch)
+       // testDsMatch1.Pattern = "Pattern1"
+       // testDsMatch1.SetNumber = "0"
+       // testDsMatch1.Type = "HOST"
+
+       // testDsMatch2 := new(traffic_ops.DeliveryServiceMatch)
+       // testDsMatch2.Pattern = "Pattern2"
+       // testDsMatch2.SetNumber = "1"
+       // testDsMatch2.Type = "HOST"
+
+       // testDs.MatchList = append(testDs.MatchList, *testDsMatch1)
+       // testDs.MatchList = append(testDs.MatchList, *testDsMatch2)
+
+}
+
 func TestDeliveryServices(t *testing.T) {
        resp, err := Request(*to, "GET", "/api/1.2/deliveryservices.json", nil)
        if err != nil {
@@ -34,6 +134,15 @@ func TestDeliveryServices(t *testing.T) {
 
        matchFound := false
        for _, apiDs := range apiDss {
+               //set these to use later...this saves time over doing it in the 
init() method
+               if apiDs.Protocol == 0 && existingTestDS.ID == 0 {
+                       existingTestDS = apiDs
+                       existingTestDSID = strconv.Itoa(existingTestDS.ID)
+               }
+               if apiDs.Protocol > 0 && strings.Contains(apiDs.Type, "DNS") && 
sslDs.ID == 0 {
+                       sslDs = apiDs
+               }
+
                for _, clientDs := range clientDss {
                        if clientDs.XMLID != apiDs.XMLID {
                                continue
@@ -47,83 +156,352 @@ func TestDeliveryServices(t *testing.T) {
        }
 }
 
-var testDsID string
-
 func TestCreateDs(t *testing.T) {
        //create a DS and validate response
-       cdn, err := GetCdn()
+       res, err := to.CreateDeliveryService(&testDs)
        if err != nil {
-               t.Errorf("TestCreateDs -- Could not get CDNs from TO...%v\n", 
err)
+               t.Error("Failed to create deliveryservice!  Error is: ", err)
+       } else {
+               testDs.ID = res.Response[0].ID
+               testDsID = strconv.Itoa(testDs.ID)
+               compareDs(testDs, res.Response[0], t)
        }
+}
 
-       profile, err := GetProfile()
+func TestUpdateDs(t *testing.T) {
+       testDs.DisplayName = "New Display Name"
+       testDs.LongDesc += "-- Update"
+       testDs.LongDesc1 += "-- Update"
+       testDs.LongDesc2 += "-- Update"
+       testDs.EdgeHeaderRewrite += "-- Update"
+       res, err := to.UpdateDeliveryService(testDsID, &testDs)
        if err != nil {
-               t.Errorf("TestCreateDs -- Could not get Profiles from 
TO...%v\n", err)
-       }
-
-       newDs := new(traffic_ops.DeliveryService)
-       newDs.Active = false
-       newDs.CCRDNSTTL = 30
-       newDs.CDNName = cdn.Name
-       newDs.CacheURL = "cacheURL"
-       newDs.CheckPath = "CheckPath"
-       newDs.DNSBypassCname = "DNSBypassCNAME"
-       newDs.DNSBypassIP = "10.10.10.10"
-       newDs.DNSBypassIP6 = "FF01:0:0:0:0:0:0:FB"
-       newDs.DNSBypassTTL = 30
-       newDs.DSCP = 0
-       newDs.DisplayName = "DisplayName"
-       newDs.EdgeHeaderRewrite = "EdgeHeaderRewrite"
-       newDs.GeoLimit = 5
-       newDs.GeoProvider = 1
-       newDs.GlobalMaxMBPS = 15000
-       newDs.GlobalMaxTPS = 15000
-       newDs.HTTPBypassFQDN = "HTTPBypassFQDN"
-       newDs.IPV6RoutingEnabled = true
-       newDs.InfoURL = "InfoUrl"
-       newDs.InitialDispersion = 5
-       newDs.LongDesc = "LongDesc"
-       newDs.LongDesc1 = "LongDesc1"
-       newDs.LongDesc2 = "LongDesc2"
-       newDs.MaxDNSAnswers = 5
-       newDs.MidHeaderRewrite = "MidHeaderRewrite"
-       newDs.MissLat = 5.555
-       newDs.MissLong = -50.5050
-       newDs.MultiSiteOrigin = true
-       newDs.OrgServerFQDN = "http://OrgServerFQDN";
-       newDs.ProfileDesc = profile.Description
-       newDs.ProfileName = profile.Name
-       newDs.Protocol = 1
-       newDs.QStringIgnore = 1
-       newDs.RangeRequestHandling = 0
-       newDs.RegexRemap = "regexRemap"
-       newDs.RemapText = "remapText"
-       newDs.Signed = false
-       newDs.TRResponseHeaders = "TRResponseHeaders"
-       newDs.Type = "HTTP"
-       newDs.XMLID = "Test-DS-" + strconv.FormatInt(time.Now().Unix(), 10)
-       newDs.RegionalGeoBlocking = false
-       newDs.LogsEnabled = false
-
-       //Create currently does not write regexes...
-       // newDsMatch1 := new(traffic_ops.DeliveryServiceMatch)
-       // newDsMatch1.Pattern = "Pattern1"
-       // newDsMatch1.SetNumber = "0"
-       // newDsMatch1.Type = "HOST"
-
-       // newDsMatch2 := new(traffic_ops.DeliveryServiceMatch)
-       // newDsMatch2.Pattern = "Pattern2"
-       // newDsMatch2.SetNumber = "1"
-       // newDsMatch2.Type = "HOST"
-
-       // newDs.MatchList = append(newDs.MatchList, *newDsMatch1)
-       // newDs.MatchList = append(newDs.MatchList, *newDsMatch2)
-
-       res, err := to.CreateDeliveryService(newDs)
+               t.Error("Failed to update deliveryservice!  Error is: ", err)
+       } else {
+               compareDs(testDs, res.Response[0], t)
+       }
+}
+
+func TestDeliveryService(t *testing.T) {
+       uri := fmt.Sprintf("/api/1.2/deliveryservices/%s.json", testDsID)
+       resp, err := Request(*to, "GET", uri, nil)
        if err != nil {
-               t.Error("Failed to create deliveryservice!  Error is: ", err)
+               t.Errorf("Could not get %s reponse was: %v\n", uri, err)
+       }
+
+       defer resp.Body.Close()
+       var apiDsRes traffic_ops.GetDeliveryServiceResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiDsRes); err != nil {
+               t.Errorf("Could not decode Deliveryservice json.  Error is: 
%v\n", err)
+       }
+
+       clientDss, err := to.DeliveryService(testDsID)
+       if err != nil {
+               t.Errorf("Could not get Deliveryservice from client.  Error is: 
%v\n", err)
+       }
+
+       compareDs(apiDsRes.Response[0], *clientDss, t)
+}
+
+//Put this Test after anything using the testDS or testDsID variables
+func TestDeleteDeliveryService(t *testing.T) {
+       res, err := to.DeleteDeliveryService(testDsID)
+       if err != nil {
+               t.Errorf("Could not delete Deliveryserivce %s reponse was: 
%v\n", testDsID, err)
+       }
+       if res.Alerts[0].Level != "success" {
+               t.Errorf("Alert.Level -- Expected \"success\" got %s", 
res.Alerts[0].Level)
+       }
+       if res.Alerts[0].Text != "Delivery service was deleted." {
+               t.Errorf("Alert.Level -- Expected \"Delivery service was 
deleted.\" got %s", res.Alerts[0].Text)
+       }
+}
+
+func TestDeliveryServiceState(t *testing.T) {
+       uri := fmt.Sprintf("/api/1.2/deliveryservices/%s/state.json", 
existingTestDSID)
+       resp, err := Request(*to, "GET", uri, nil)
+       if err != nil {
+               t.Errorf("Could not get %s reponse was: %v\n", uri, err)
+       }
+
+       defer resp.Body.Close()
+       var apiDsStateRes traffic_ops.DeliveryServiceStateResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiDsStateRes); err != nil 
{
+               t.Errorf("Could not decode DeliveryserviceState reponse.  Error 
is: %v\n", err)
+       }
+
+       apiDsState := apiDsStateRes.Response
+
+       clientDsState, err := to.DeliveryServiceState(existingTestDSID)
+       if err != nil {
+               t.Errorf("Could not get DS State from client for %s reponse 
was: %v\n", existingTestDSID, err)
+       }
+
+       if apiDsState.Enabled != clientDsState.Enabled {
+               t.Errorf("Enabled -- Expected %v got %v for ID %s", 
apiDsState.Enabled, clientDsState.Enabled, existingTestDSID)
+       }
+       if apiDsState.Failover.Configured != clientDsState.Failover.Configured {
+               t.Errorf("Failover.Configured -- Expected %v got %v", 
apiDsState.Failover.Configured, clientDsState.Failover.Configured)
+       }
+       if apiDsState.Failover.Destination.Location != 
clientDsState.Failover.Destination.Location {
+               t.Errorf("Failover.Destination.Location -- Expected %v got %v", 
apiDsState.Failover.Destination.Location, 
clientDsState.Failover.Destination.Location)
+       }
+       if apiDsState.Failover.Destination.Type != 
clientDsState.Failover.Destination.Type {
+               t.Errorf("Failover.Destination.Type -- Expected %v got %v", 
apiDsState.Failover.Destination.Type, clientDsState.Failover.Destination.Type)
+       }
+       if apiDsState.Failover.Enabled != clientDsState.Failover.Enabled {
+               t.Errorf("res.Failover.Enabled -- Expected %v got %v", 
apiDsState.Failover.Enabled, clientDsState.Failover.Enabled)
+       }
+       if len(apiDsState.Failover.Locations) != 
len(clientDsState.Failover.Locations) {
+               t.Errorf("res.Failover.Locations len -- Expected %v got %v", 
len(apiDsState.Failover.Locations), len(clientDsState.Failover.Locations))
+       }
+}
+
+func TestDeliveryServiceHealth(t *testing.T) {
+       uri := fmt.Sprintf("/api/1.2/deliveryservices/%s/health.json", 
existingTestDSID)
+       resp, err := Request(*to, "GET", uri, nil)
+       if err != nil {
+               t.Errorf("Could not get %s reponse was: %v\n", uri, err)
+       }
+
+       defer resp.Body.Close()
+       var apiDsHealthRes traffic_ops.DeliveryServiceHealthResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiDsHealthRes); err != 
nil {
+               t.Errorf("Could not decode DeliveryserviceHealth reponse.  
Error is: %v\n", err)
+       }
+
+       apiDsHealth := apiDsHealthRes.Response
+
+       clientDsHealth, err := to.DeliveryServiceHealth(existingTestDSID)
+       if err != nil {
+               t.Errorf("Could not ge Deliveryserivce Health for %s reponse 
was: %v\n", existingTestDSID, err)
+       }
+
+       if apiDsHealth.TotalOnline != clientDsHealth.TotalOnline {
+               t.Errorf("TotalOnline -- Expected %v got %v", 
apiDsHealth.TotalOnline, apiDsHealth.TotalOnline)
+       }
+
+       if apiDsHealth.TotalOffline != clientDsHealth.TotalOffline {
+               t.Errorf("TotalOffline -- Expected %v got %v", 
apiDsHealth.TotalOffline, clientDsHealth.TotalOffline)
+       }
+
+       if len(apiDsHealth.CacheGroups) != len(clientDsHealth.CacheGroups) {
+               t.Errorf("len Cachegroups -- Expected %v got %v", 
len(apiDsHealth.CacheGroups), len(clientDsHealth.CacheGroups))
+       }
+
+       for _, apiCg := range apiDsHealth.CacheGroups {
+               match := false
+               for _, clientCg := range clientDsHealth.CacheGroups {
+                       if apiCg.Name != clientCg.Name {
+                               continue
+                       }
+                       match = true
+                       if apiCg.Offline != clientCg.Offline {
+                               t.Errorf("Cachegroup.Offline -- Expected %v got 
%v", apiCg.Offline, clientCg.Offline)
+                       }
+                       if apiCg.Online != clientCg.Online {
+                               t.Errorf("Cachegroup.Online -- Expected %v got 
%v", apiCg.Online, clientCg.Online)
+                       }
+               }
+               if !match {
+                       t.Errorf("Cachegroup -- No match from client for api 
cachgroup %v", apiCg.Name)
+               }
+       }
+}
+
+func TestDeliveryServiceCapacity(t *testing.T) {
+       uri := fmt.Sprintf("/api/1.2/deliveryservices/%s/capacity.json", 
existingTestDSID)
+       resp, err := Request(*to, "GET", uri, nil)
+       if err != nil {
+               t.Errorf("Could not get %s reponse was: %v\n", uri, err)
+       }
+
+       defer resp.Body.Close()
+       var apiDsCapacityRes traffic_ops.DeliveryServiceCapacityResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiDsCapacityRes); err != 
nil {
+               t.Errorf("Could not decode DeliveryserviceCapacity reponse.  
Error is: %v\n", err)
+       }
+
+       apiDsCapacity := apiDsCapacityRes.Response
+
+       clientDsCapacity, err := to.DeliveryServiceCapacity(existingTestDSID)
+       if err != nil {
+               t.Errorf("Could not ge Deliveryserivce Capacity for %s reponse 
was: %v\n", existingTestDSID, err)
+       }
+
+       if apiDsCapacity.AvailablePercent != clientDsCapacity.AvailablePercent {
+               t.Errorf("AvailablePercent -- Expected %v got %v", 
apiDsCapacity.AvailablePercent, clientDsCapacity.AvailablePercent)
+       }
+
+       if fmt.Sprintf("%6.5f", apiDsCapacity.MaintenancePercent) != 
fmt.Sprintf("%6.5f", clientDsCapacity.MaintenancePercent) {
+               t.Errorf("MaintenenancePercent -- Expected %v got %v", 
apiDsCapacity.MaintenancePercent, clientDsCapacity.MaintenancePercent)
+       }
+
+       if apiDsCapacity.UnavailablePercent != 
clientDsCapacity.UnavailablePercent {
+               t.Errorf("UnavailablePercent -- Expected %v got %v", 
apiDsCapacity.UnavailablePercent, clientDsCapacity.UnavailablePercent)
+       }
+
+       if fmt.Sprintf("%6.5f", apiDsCapacity.UtilizedPercent) != 
fmt.Sprintf("%6.5f", clientDsCapacity.UtilizedPercent) {
+               t.Errorf("UtilizedPercent -- Expected %v got %v", 
apiDsCapacity.UtilizedPercent, clientDsCapacity.UtilizedPercent)
+       }
+
+}
+
+func TestDeliveryServiceRouting(t *testing.T) {
+       uri := fmt.Sprintf("/api/1.2/deliveryservices/%s/routing.json", 
existingTestDSID)
+       resp, err := Request(*to, "GET", uri, nil)
+       if err != nil {
+               t.Errorf("Could not get %s reponse was: %v\n", uri, err)
+       }
+
+       defer resp.Body.Close()
+       var apiDsRoutingRes traffic_ops.DeliveryServiceRoutingResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiDsRoutingRes); err != 
nil {
+               t.Errorf("Could not decode DeliveryserviceRouting reponse.  
Error is: %v\n", err)
+       }
+
+       apiDsRouting := apiDsRoutingRes.Response
+
+       clientDsRouting, err := to.DeliveryServiceRouting(existingTestDSID)
+       if err != nil {
+               t.Errorf("Could not ge Deliveryserivce Routing for %s reponse 
was: %v\n", existingTestDSID, err)
+       }
+
+       if apiDsRouting.CZ != clientDsRouting.CZ {
+               t.Errorf("CZ -- Expected %v got %v", apiDsRouting.CZ, 
clientDsRouting.CZ)
+       }
+
+       if apiDsRouting.DSR != clientDsRouting.DSR {
+               t.Errorf("DSR -- Expected %v got %v", apiDsRouting.DSR, 
clientDsRouting.DSR)
+       }
+
+       if apiDsRouting.Err != clientDsRouting.Err {
+               t.Errorf("Err-- Expected %v got %v", apiDsRouting.Err, 
clientDsRouting.Err)
+       }
+
+       if apiDsRouting.Fed != clientDsRouting.Fed {
+               t.Errorf("Fed -- Expected %v got %v", apiDsRouting.Fed, 
clientDsRouting.Fed)
+       }
+
+       if apiDsRouting.Geo != clientDsRouting.Geo {
+               t.Errorf("Geo -- Expected %v got %v", apiDsRouting.Geo, 
clientDsRouting.Geo)
+       }
+
+       if apiDsRouting.Miss != clientDsRouting.Miss {
+               t.Errorf("Miss -- Expected %v got %v", apiDsRouting.Miss, 
clientDsRouting.Miss)
+       }
+
+       if apiDsRouting.RegionalAlternate != clientDsRouting.RegionalAlternate {
+               t.Errorf("RegionalAlternate -- Expected %v got %v", 
apiDsRouting.RegionalAlternate, clientDsRouting.RegionalAlternate)
+       }
+
+       if apiDsRouting.RegionalDenied != clientDsRouting.RegionalDenied {
+               t.Errorf("RegionalDenied -- Expected %v got %v", 
apiDsRouting.RegionalDenied, clientDsRouting.RegionalDenied)
+       }
+}
+
+func TestDeliveryServiceServer(t *testing.T) {
+       resp, err := Request(*to, "GET", 
"/api/1.2/deliveryserviceserver.json?page=1&limit=1", nil)
+       if err != nil {
+               t.Errorf("Could not get deliveryserviceserver.json reponse was: 
%v\n", err)
+       }
+
+       defer resp.Body.Close()
+       var apiDsServerRes traffic_ops.DeliveryServiceServerResponse
+       if err := json.NewDecoder(resp.Body).Decode(&apiDsServerRes); err != 
nil {
+               t.Errorf("Could not decode DeliveryserviceServer reponse.  
Error is: %v\n", err)
+       }
+
+       clientDsServerRes, err := to.DeliveryServiceServer("1", "1")
+
+       if err != nil {
+               t.Errorf("Could not get DeliveryserviceServer, reponse was: 
%v\n", err)
+       }
+
+       for _, apiDss := range apiDsServerRes.Response {
+               match := false
+               for _, clientDss := range clientDsServerRes {
+                       if clientDss.DeliveryService != apiDss.DeliveryService {
+                               continue
+                       }
+                       match = true
+                       if apiDss.LastUpdated != clientDss.LastUpdated {
+                               t.Errorf("LastUpdated -- Expected %v got %v", 
apiDss.LastUpdated, clientDss.LastUpdated)
+                       }
+                       if apiDss.Server != clientDss.Server {
+                               t.Errorf("Server -- Expected %v got %v", 
apiDss.Server, clientDss.Server)
+                       }
+               }
+               if match != true {
+                       t.Errorf("No match found for the Deliveryservice %v in 
DeliveryserviceServer response: %v\n", apiDss.DeliveryService, err)
+               }
+       }
+
+}
+
+func TestDeliveryServiceSSLKeysByID(t *testing.T) {
+       if sslDs.ID > 0 {
+               uri := 
fmt.Sprintf("/api/1.2/deliveryservices/xmlId/%s/sslkeys.json", sslDs.XMLID)
+               resp, err := Request(*to, "GET", uri, nil)
+               if err != nil {
+                       t.Errorf("Could not get %s reponse was: %v\n", uri, err)
+               }
+
+               defer resp.Body.Close()
+               var apiSslRes traffic_ops.DeliveryServiceSSLKeysResponse
+               if err := json.NewDecoder(resp.Body).Decode(&apiSslRes); err != 
nil {
+                       t.Errorf("Could not decode 
DeliveryServiceSSLKeysResponse reponse.  Error is: %v\n", err)
+               }
+
+               clientSslRes, err := to.DeliveryServiceSSLKeysByID(sslDs.XMLID)
+
+               if err != nil {
+                       t.Errorf("Could not get DeliveryserviceSSLKeys, reponse 
was: %v\n", err)
+               }
+               compareSSLResponse(apiSslRes.Response, *clientSslRes, t)
        } else {
-               compareDs(*newDs, res.Response[0], t)
+               t.Skip("Skipping TestDeliveryServiceSSLKeysByID because no 
Deliveryservice was found with SSL enabled")
+       }
+}
+
+func TestDeliveryServiceSSLKeysByHostname(t *testing.T) {
+       if sslDs.ID > 0 {
+               var hostname string
+               for _, exampleURL := range sslDs.ExampleURLs {
+                       if strings.Contains(exampleURL, "edge.") {
+                               u, err := url.Parse(exampleURL)
+                               if err != nil {
+                                       t.Errorf("could not parse exampleURL 
%s\n", exampleURL)
+                                       t.FailNow()
+                               }
+                               hostname = u.Host
+                       }
+               }
+               if hostname == "" {
+                       t.Skipf("could not find an example URL from 
Deliveryservice %s to use for testing\n", sslDs.XMLID)
+                       t.SkipNow()
+               }
+
+               uri := 
fmt.Sprintf("/api/1.2/deliveryservices/hostname/%s/sslkeys.json", hostname)
+               resp, err := Request(*to, "GET", uri, nil)
+               if err != nil {
+                       t.Errorf("Could not get %s reponse was: %v\n", uri, err)
+               }
+
+               defer resp.Body.Close()
+               var apiSslRes traffic_ops.DeliveryServiceSSLKeysResponse
+               if err := json.NewDecoder(resp.Body).Decode(&apiSslRes); err != 
nil {
+                       t.Errorf("Could not decode 
DeliveryServiceSSLKeysResponse reponse.  Error is: %v\n", err)
+               }
+
+               clientSslRes, err := 
to.DeliveryServiceSSLKeysByHostname(hostname)
+
+               if err != nil {
+                       t.Errorf("Could not get DeliveryserviceSSLKeys, reponse 
was: %v\n", err)
+               }
+               compareSSLResponse(apiSslRes.Response, *clientSslRes, t)
+       } else {
+               t.Skip("Skipping TestDeliveryServiceSSLKeysByID because no 
Deliveryservice was found with SSL enabled")
        }
 }
 
@@ -137,6 +515,9 @@ func compareDs(ds1 traffic_ops.DeliveryService, ds2 
traffic_ops.DeliveryService,
        if ds1.CDNName != ds2.CDNName {
                t.Errorf("CDNName -- Expected %v, Got %v\n", ds1.CDNName, 
ds2.CDNName)
        }
+       if ds1.CDNID != ds2.CDNID {
+               t.Errorf("CDNID -- Expected %v, Got %v\n", ds1.CDNID, ds2.CDNID)
+       }
        if ds1.CacheURL != ds2.CacheURL {
                t.Errorf("CacheURL -- Expected %v, Got %v\n", ds1.CacheURL, 
ds2.CacheURL)
        }
@@ -191,7 +572,7 @@ func compareDs(ds1 traffic_ops.DeliveryService, ds2 
traffic_ops.DeliveryService,
        if ds1.InitialDispersion != ds2.InitialDispersion {
                t.Errorf("InitialDispersion -- Expected %v, Got %v\n", 
ds1.InitialDispersion, ds2.InitialDispersion)
        }
-       if ds1.LastUpdated != ds2.LastUpdated {
+       if ds1.LastUpdated != "" && ds1.LastUpdated != ds2.LastUpdated {
                t.Errorf("LastUpdated -- Expected %v, Got %v\n", 
ds1.LastUpdated, ds2.LastUpdated)
        }
        if ds1.LongDesc != ds2.LongDesc {
@@ -264,4 +645,44 @@ func compareDs(ds1 traffic_ops.DeliveryService, ds2 
traffic_ops.DeliveryService,
                        }
                }
        }
+       if len(ds1.ExampleURLs) > 0 {
+               for i, url := range ds1.ExampleURLs {
+                       if url != ds2.ExampleURLs[i] {
+                               t.Errorf("ExampleURL -- Expected %v, Got %v\n", 
url, ds2.ExampleURLs[i])
+                       }
+               }
+       }
+}
+
+func compareSSLResponse(apiSslRes traffic_ops.DeliveryServiceSSLKeys, 
clientSslRes traffic_ops.DeliveryServiceSSLKeys, t *testing.T) {
+       if apiSslRes.BusinessUnit != clientSslRes.BusinessUnit {
+               t.Errorf("BusinessUnit -- Expected %v got %v", 
apiSslRes.BusinessUnit, clientSslRes.BusinessUnit)
+       }
+       if apiSslRes.CDN != clientSslRes.CDN {
+               t.Errorf("CDN -- Expected %v got %v", apiSslRes.CDN, 
clientSslRes.CDN)
+       }
+       if apiSslRes.Certificate.CSR != clientSslRes.Certificate.CSR {
+               t.Errorf("CSR -- Expected %v got %v", 
apiSslRes.Certificate.CSR, clientSslRes.Certificate.CSR)
+       }
+       if apiSslRes.Certificate.Crt != clientSslRes.Certificate.Crt {
+               t.Errorf("CRT -- Expected %v got %v", 
apiSslRes.Certificate.Crt, clientSslRes.Certificate.Crt)
+       }
+       if apiSslRes.Certificate.Key != clientSslRes.Certificate.Key {
+               t.Errorf("Key -- Expected %v got %v", 
apiSslRes.Certificate.Key, clientSslRes.Certificate.Key)
+       }
+       if apiSslRes.City != clientSslRes.City {
+               t.Errorf("City -- Expected %v got %v", apiSslRes.City, 
clientSslRes.City)
+       }
+       if apiSslRes.Country != clientSslRes.Country {
+               t.Errorf("Country -- Expected %v got %v", apiSslRes.Country, 
clientSslRes.Country)
+       }
+       if apiSslRes.DeliveryService != clientSslRes.DeliveryService {
+               t.Errorf("DeliveryService -- Expected %v got %v", 
apiSslRes.DeliveryService, clientSslRes.DeliveryService)
+       }
+       if apiSslRes.Hostname != clientSslRes.Hostname {
+               t.Errorf("Hostname -- Expected %v got %v", apiSslRes.Hostname, 
clientSslRes.Hostname)
+       }
+       if apiSslRes.Organization != clientSslRes.Organization {
+               t.Errorf("Organization -- Expected %v got %v", 
apiSslRes.Organization, clientSslRes.Organization)
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/66c37662/traffic_ops/client/tests/integration/integration_helper.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/tests/integration/integration_helper.go 
b/traffic_ops/client/tests/integration/integration_helper.go
index 73f6370..675934d 100644
--- a/traffic_ops/client/tests/integration/integration_helper.go
+++ b/traffic_ops/client/tests/integration/integration_helper.go
@@ -2,6 +2,7 @@ package integration
 
 import (
        "bytes"
+       "errors"
        "flag"
        "fmt"
        "net/http"
@@ -49,6 +50,30 @@ func GetProfile() (traffic_ops.Profile, error) {
        return profiles[0], nil
 }
 
+//GetType returns a Type Struct
+func GetType(useInTable string) (traffic_ops.Type, error) {
+       types, err := to.Types()
+       if err != nil {
+               return *new(traffic_ops.Type), err
+       }
+       for _, myType := range types {
+               if myType.UseInTable == useInTable {
+                       return myType, nil
+               }
+       }
+       nfErr := fmt.Sprintf("No Types found for useInTable %s\n", useInTable)
+       return *new(traffic_ops.Type), errors.New(nfErr)
+}
+
+//GetDeliveryService returns a DeliveryService Struct
+func GetDeliveryService() (traffic_ops.DeliveryService, error) {
+       dss, err := to.DeliveryServices()
+       if err != nil {
+               return *new(traffic_ops.DeliveryService), err
+       }
+       return dss[0], nil
+}
+
 //Request sends a request to TO and returns a response.
 //This is basically a copy of the private "request" method in the 
traffic_ops.go \
 //but I didn't want to make that one public.

Reply via email to