You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by ne...@apache.org on 2016/11/04 14:30:46 UTC
[3/6] incubator-trafficcontrol git commit: add client methods for
fetching SSL keys
add client methods for fetching SSL keys
This adds two methods for fetching SSL keys via
the `traffic_ops` delivery service client:
- `DeliveryServiceSSLKeysByID`
- `DeliveryServiceSSLKeysByHostname`
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/commit/a731bbfd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/tree/a731bbfd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/diff/a731bbfd
Branch: refs/heads/master
Commit: a731bbfd29b290b2b597a231b3643ae15226d718
Parents: fe5b573
Author: Mike Ball <mi...@gmail.com>
Authored: Sun Oct 30 08:20:53 2016 -0400
Committer: Dave Neuman <ne...@apache.org>
Committed: Fri Nov 4 08:29:54 2016 -0600
----------------------------------------------------------------------
traffic_ops/client/delivery_service.go | 46 ++++++++
.../client/delivery_service_endpoints.go | 8 ++
.../client/delivery_service_endpoints_test.go | 24 +++++
traffic_ops/client/fixtures/delivery_service.go | 24 +++++
.../client/tests/delivery_service_test.go | 106 +++++++++++++++++++
5 files changed, 208 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/a731bbfd/traffic_ops/client/delivery_service.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/delivery_service.go b/traffic_ops/client/delivery_service.go
index 7e716c3..8afb0ff 100644
--- a/traffic_ops/client/delivery_service.go
+++ b/traffic_ops/client/delivery_service.go
@@ -160,6 +160,30 @@ type DeliveryServiceServer struct {
DeliveryService string `json:"deliveryService"`
}
+// DeliveryServiceSSLKeysResponse ...
+type DeliveryServiceSSLKeysResponse struct {
+ Response DeliveryServiceSSLKeys `json:"response"`
+}
+
+// DeliveryServiceSSLKeys ...
+type DeliveryServiceSSLKeys struct {
+ BusinessUnit string `json:"businessUnit"`
+ City string `json:"city"`
+ Organization string `json:"organization"`
+ Hostname string `json:"hostname"`
+ Country string `json:"country"`
+ State string `json:"state"`
+ Version string `json:"version"`
+ Certificate DeliveryServiceSSLKeysCertificate `json:"certificate"`
+}
+
+// DeliveryServiceSSLKeysCertificate ...
+type DeliveryServiceSSLKeysCertificate struct {
+ Crt string `json:"crt"`
+ Key string `json:"key"`
+ CSR string `json:"csr"`
+}
+
// DeliveryServices gets an array of DeliveryServices
func (to *Session) DeliveryServices() ([]DeliveryService, error) {
var data DeliveryServiceResponse
@@ -237,6 +261,28 @@ func (to *Session) DeliveryServiceServer(page, limit string) ([]DeliveryServiceS
return data.Response, nil
}
+// DeliveryServiceSSLKeysByID gets the DeliveryServiceSSLKeys by ID
+func (to *Session) DeliveryServiceSSLKeysByID(id string) (*DeliveryServiceSSLKeys, error) {
+ var data DeliveryServiceSSLKeysResponse
+ err := get(to, deliveryServiceSSLKeysByIDEp(id), &data)
+ if err != nil {
+ return nil, err
+ }
+
+ return &data.Response, nil
+}
+
+// DeliveryServiceSSLKeysByHostname gets the DeliveryServiceSSLKeys by Hostname
+func (to *Session) DeliveryServiceSSLKeysByHostname(hostname string) (*DeliveryServiceSSLKeys, error) {
+ var data DeliveryServiceSSLKeysResponse
+ err := get(to, deliveryServiceSSLKeysByHostnameEp(hostname), &data)
+ if err != nil {
+ return nil, err
+ }
+
+ return &data.Response, nil
+}
+
func get(to *Session, endpoint string, respStruct interface{}) error {
resp, err := to.request(endpoint, nil)
if err != nil {
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/a731bbfd/traffic_ops/client/delivery_service_endpoints.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/delivery_service_endpoints.go b/traffic_ops/client/delivery_service_endpoints.go
index 862a727..d07171f 100644
--- a/traffic_ops/client/delivery_service_endpoints.go
+++ b/traffic_ops/client/delivery_service_endpoints.go
@@ -49,3 +49,11 @@ func deliveryServiceRoutingEp(id string) string {
func deliveryServiceServerEp(page, limit string) string {
return apiBase + "/deliveryserviceserver.json?page=" + page + "&limit=" + limit
}
+
+func deliveryServiceSSLKeysByIDEp(id string) string {
+ return apiBase + dsPath + "/xmlId/" + id + "/sslkeys.json"
+}
+
+func deliveryServiceSSLKeysByHostnameEp(hostname string) string {
+ return apiBase + dsPath + "/hostname/" + hostname + "/sslkeys.json"
+}
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/a731bbfd/traffic_ops/client/delivery_service_endpoints_test.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/delivery_service_endpoints_test.go b/traffic_ops/client/delivery_service_endpoints_test.go
index 93163af..f698b72 100644
--- a/traffic_ops/client/delivery_service_endpoints_test.go
+++ b/traffic_ops/client/delivery_service_endpoints_test.go
@@ -104,3 +104,27 @@ func TestDeliveryServiceServerEp(t *testing.T) {
testHelper.Success(t, "Should be able to get the correct delivery service server endpoint")
}
}
+
+func TestDeliveryServiceSSLKeysByIDEp(t *testing.T) {
+ testHelper.Context(t, "Given the need to test that DeliveryServiceSSLKeysByID uses the correct URL")
+
+ ep := deliveryServiceSSLKeysByIDEp("123")
+ expected := "/api/1.2/deliveryservices/xmlId/123/sslkeys.json"
+ if ep != expected {
+ testHelper.Error(t, "Should get back %s for \"deliveryServiceSSLKeysByIDEp\", got: %s", expected, ep)
+ } else {
+ testHelper.Success(t, "Should be able to get the correct delivery service SSL Keys by ID endpoint")
+ }
+}
+
+func TestDeliveryServiceSSLKeysByHostnameEp(t *testing.T) {
+ testHelper.Context(t, "Given the need to test that DeliveryServiceSSLKeysByHostname uses the correct URL")
+
+ ep := deliveryServiceSSLKeysByHostnameEp("some-host")
+ expected := "/api/1.2/deliveryservices/hostname/some-host/sslkeys.json"
+ if ep != expected {
+ testHelper.Error(t, "Should get back %s for \"deliveryServiceSSLKeysByHostnameEp\", got: %s", expected, ep)
+ } else {
+ testHelper.Success(t, "Should be able to get the correct delivery service SSL Keys by hostname endpoint")
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/a731bbfd/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 98580d0..43f6f8c 100644
--- a/traffic_ops/client/fixtures/delivery_service.go
+++ b/traffic_ops/client/fixtures/delivery_service.go
@@ -142,3 +142,27 @@ func DeliveryServiceServer() *client.DeliveryServiceServerResponse {
Limit: 1,
}
}
+
+// DeliveryServiceSSLKeys returns a default DeliveryServiceSSLKeysResponse to be used for testing.
+func DeliveryServiceSSLKeys() *client.DeliveryServiceSSLKeysResponse {
+ crt := client.DeliveryServiceSSLKeysCertificate{
+ Crt: "crt",
+ Key: "key",
+ CSR: "someService",
+ }
+
+ sslKeys := client.DeliveryServiceSSLKeys{
+ Certificate: crt,
+ BusinessUnit: "businessUnit",
+ City: "city",
+ Organization: "Kabletown",
+ Hostname: "hostname",
+ Country: "country",
+ State: "state",
+ Version: "version",
+ }
+
+ return &client.DeliveryServiceSSLKeysResponse{
+ Response: sslKeys,
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-trafficcontrol/blob/a731bbfd/traffic_ops/client/tests/delivery_service_test.go
----------------------------------------------------------------------
diff --git a/traffic_ops/client/tests/delivery_service_test.go b/traffic_ops/client/tests/delivery_service_test.go
index 03273fe..e5eefef 100644
--- a/traffic_ops/client/tests/delivery_service_test.go
+++ b/traffic_ops/client/tests/delivery_service_test.go
@@ -414,3 +414,109 @@ func TestDeliveryServiceServerUnauthorized(t *testing.T) {
testHelper.Success(t, "Should not be able to make a request to Traffic Ops")
}
}
+
+func TestDeliveryServiceSSLKeysByID(t *testing.T) {
+ resp := fixtures.DeliveryServiceSSLKeys()
+ 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 for a DeliveryServiceSSLKeysByID")
+
+ ssl, err := to.DeliveryServiceSSLKeysByID("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")
+ }
+
+ if ssl.Certificate.Crt != "crt" {
+ testHelper.Error(t, "Should get back \"crt\" for \"Certificte.Crt\", got: %s", ssl.Certificate.Crt)
+ } else {
+ testHelper.Success(t, "Should get back \"crt\" for \"Certificate.Crt\"")
+ }
+
+ if ssl.Organization != "Kabletown" {
+ testHelper.Error(t, "Should get back \"Kabletown\" for \"Organization\", got: %s", ssl.Organization)
+ } else {
+ testHelper.Success(t, "Should get back \"Kabletown\" for \"Organization\"")
+ }
+}
+
+func TestDeliveryServiceSSLKeysByIDUnauthorized(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 for a DeliveryServiceSSLKeysByID")
+
+ _, err := to.DeliveryServiceSSLKeysByID("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 TestDeliveryServiceSSLKeysByHostname(t *testing.T) {
+ resp := fixtures.DeliveryServiceSSLKeys()
+ 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 for a DeliveryServiceSSLKeysByHostname")
+
+ ssl, err := to.DeliveryServiceSSLKeysByHostname("hostname")
+ 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")
+ }
+
+ if ssl.Certificate.Crt != "crt" {
+ testHelper.Error(t, "Should get back \"crt\" for \"Certificte.Crt\", got: %s", ssl.Certificate.Crt)
+ } else {
+ testHelper.Success(t, "Should get back \"crt\" for \"Certificate.Crt\"")
+ }
+
+ if ssl.Organization != "Kabletown" {
+ testHelper.Error(t, "Should get back \"Kabletown\" for \"Organization\", got: %s", ssl.Organization)
+ } else {
+ testHelper.Success(t, "Should get back \"Kabletown\" for \"Organization\"")
+ }
+}
+
+func TestDeliveryServiceSSLKeysByHostnameUnauthorized(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 for a DeliveryServiceSSLKeysByHostname")
+
+ _, err := to.DeliveryServiceSSLKeysByHostname("hostname")
+ 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")
+ }
+}