diff --git a/openstack/cdn/v1/flavors/fixtures.go b/openstack/cdn/v1/flavors/fixtures.go
index b86c760..f413b6b 100644
--- a/openstack/cdn/v1/flavors/fixtures.go
+++ b/openstack/cdn/v1/flavors/fixtures.go
@@ -28,7 +28,7 @@
                         "provider": "Fastly",
                         "links": [
                             {
-                                "href": "http: //www.fastly.com",
+                                "href": "http://www.fastly.com",
                                 "rel": "provider_url"
                             }
                         ]
diff --git a/openstack/cdn/v1/flavors/requests_test.go b/openstack/cdn/v1/flavors/requests_test.go
index 2fafb36..7ddf1b1 100644
--- a/openstack/cdn/v1/flavors/requests_test.go
+++ b/openstack/cdn/v1/flavors/requests_test.go
@@ -33,7 +33,7 @@
             Provider: "Fastly",
             Links: []gophercloud.Link{
               gophercloud.Link{
-                Href: "http: //www.fastly.com",
+                Href: "http://www.fastly.com",
                 Rel: "provider_url",
               },
             },
@@ -53,10 +53,7 @@
     return true, nil
   })
   th.AssertNoErr(t, err)
-
-  if count != 1 {
-    t.Errorf("Expected 1 page, got %d", count)
-  }
+  th.CheckEquals(t, 1, count)
 }
 
 func TestGet(t *testing.T) {
diff --git a/openstack/cdn/v1/services/requests.go b/openstack/cdn/v1/services/requests.go
index f88df19..646f63e 100644
--- a/openstack/cdn/v1/services/requests.go
+++ b/openstack/cdn/v1/services/requests.go
@@ -1,6 +1,7 @@
 package services
 
 import (
+	"fmt"
 	"strings"
 
 	"github.com/racker/perigee"
@@ -249,6 +250,9 @@
 	s := make([]map[string]interface{}, len(opts))
 
 	for i, opt := range opts {
+		if opt.Op != Add && opt.Op != Remove && opt.Op != Replace {
+			return nil, fmt.Errorf("Invalid Op: %v", opt.Op)
+		}
 		if opt.Op == "" {
 			return nil, no("Op")
 		}
diff --git a/openstack/cdn/v1/services/requests_test.go b/openstack/cdn/v1/services/requests_test.go
index d06afcb..ca7c269 100644
--- a/openstack/cdn/v1/services/requests_test.go
+++ b/openstack/cdn/v1/services/requests_test.go
@@ -292,7 +292,7 @@
   th.AssertDeepEquals(t, expected, actual)
 }
 
-func TestUpdate(t *testing.T) {
+func TestSuccessfulUpdate(t *testing.T) {
   th.SetupHTTP()
   defer th.TeardownHTTP()
 
@@ -322,6 +322,36 @@
   th.AssertEquals(t, expected, actual)
 }
 
+func TestUnsuccessfulUpdate(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+
+	HandleUpdateCDNServiceSuccessfully(t)
+
+	updateOpts := UpdateOpts{
+		UpdateOpt{
+			Op: "Foo",
+			Path: "/origins/0",
+			Value: map[string]interface{}{
+				"origin": "44.33.22.11",
+				"port": 80,
+				"ssl": false,
+			},
+		},
+		UpdateOpt{
+			Op: Add,
+			Path: "/domains/0",
+			Value: map[string]interface{}{
+				"domain": "added.mocksite4.com",
+			},
+		},
+	}
+	_, err := Update(fake.ServiceClient(), "96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", updateOpts).Extract()
+	if err == nil {
+		t.Errorf("Expected error during TestUnsuccessfulUpdate but didn't get one.")
+	}
+}
+
 func TestDelete(t *testing.T) {
   th.SetupHTTP()
   defer th.TeardownHTTP()
diff --git a/rackspace/cdn/v1/flavors/delegate_test.go b/rackspace/cdn/v1/flavors/delegate_test.go
index 9060e54..d6d299d 100644
--- a/rackspace/cdn/v1/flavors/delegate_test.go
+++ b/rackspace/cdn/v1/flavors/delegate_test.go
@@ -34,7 +34,7 @@
 						Provider: "Fastly",
 						Links: []gophercloud.Link{
 							gophercloud.Link{
-								Href: "http: //www.fastly.com",
+								Href: "http://www.fastly.com",
 								Rel:  "provider_url",
 							},
 						},
@@ -54,10 +54,7 @@
 		return true, nil
 	})
 	th.AssertNoErr(t, err)
-
-	if count != 1 {
-		t.Errorf("Expected 1 page, got %d", count)
-	}
+	th.CheckEquals(t, 1, count)
 }
 
 func TestGet(t *testing.T) {
diff --git a/rackspace/cdn/v1/services/delegate_test.go b/rackspace/cdn/v1/services/delegate_test.go
index baaa439..f833cab 100644
--- a/rackspace/cdn/v1/services/delegate_test.go
+++ b/rackspace/cdn/v1/services/delegate_test.go
@@ -292,7 +292,7 @@
 	th.AssertDeepEquals(t, expected, actual)
 }
 
-func TestUpdate(t *testing.T) {
+func TestSuccessfulUpdate(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
 
@@ -322,6 +322,36 @@
 	th.AssertEquals(t, expected, actual)
 }
 
+func TestUnsuccessfulUpdate(t *testing.T) {
+	th.SetupHTTP()
+	defer th.TeardownHTTP()
+
+	os.HandleUpdateCDNServiceSuccessfully(t)
+
+	updateOpts := os.UpdateOpts{
+		os.UpdateOpt{
+			Op: "Foo",
+			Path: "/origins/0",
+			Value: map[string]interface{}{
+				"origin": "44.33.22.11",
+				"port": 80,
+				"ssl": false,
+				},
+			},
+		os.UpdateOpt{
+			Op: os.Add,
+			Path: "/domains/0",
+			Value: map[string]interface{}{
+				"domain": "added.mocksite4.com",
+			},
+		},
+	}
+	_, err := Update(fake.ServiceClient(), "96737ae3-cfc1-4c72-be88-5d0e7cc9a3f0", updateOpts).Extract()
+	if err == nil {
+		t.Errorf("Expected error during TestUnsuccessfulUpdate but didn't get one.")
+	}
+}
+
 func TestDelete(t *testing.T) {
 	th.SetupHTTP()
 	defer th.TeardownHTTP()
