diff --git a/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java
index 155cbd9..574f7e0 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/RegionsResourceTest.java
@@ -21,6 +21,7 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
+import org.glassfish.jersey.client.ClientProperties;
 import org.hamcrest.Description;
 import org.hamcrest.TypeSafeMatcher;
 import org.junit.Before;
@@ -383,7 +384,7 @@
         WebTarget wt = target();
         Response response = wt.path("regions/" + region1.id().toString())
                 .request().delete();
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockRegionAdminService);
     }
@@ -452,16 +453,16 @@
         replay(mockRegionAdminService);
 
 
-        WebTarget wt = target();
+        WebTarget wt = target()
+                .property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true);
         InputStream jsonStream = RegionsResourceTest.class
                 .getResourceAsStream("region-deviceIds.json");
 
         // FIXME: need to consider whether to use jsonStream for entry deletion
         Response response = wt.path("regions/" +
                 region1.id().toString() + "/devices")
-                .request(MediaType.APPLICATION_JSON_TYPE)
-                .delete();
-        // assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
-        // verify(mockRegionAdminService);
+                .request().method("DELETE", Entity.json(jsonStream));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
+        verify(mockRegionAdminService);
     }
 }
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/TenantWebResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/TenantWebResourceTest.java
index 2f4d65b..eac37d7 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/TenantWebResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/TenantWebResourceTest.java
@@ -289,7 +289,7 @@
                 .request(MediaType.APPLICATION_JSON_TYPE)
                 .delete();
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockVnetAdminService);
     }
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java
index dcf2f0b..7c00e55 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java
@@ -486,7 +486,7 @@
                 .request(MediaType.APPLICATION_JSON_TYPE)
                 .delete();
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockVnetAdminService);
     }
@@ -662,7 +662,7 @@
                 .request(MediaType.APPLICATION_JSON_TYPE)
                 .delete();
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockVnetAdminService);
     }
@@ -828,7 +828,7 @@
                 .request(MediaType.APPLICATION_JSON_TYPE)
                 .delete();
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
 
         verify(mockVnetAdminService);
     }
@@ -1034,7 +1034,7 @@
         String reqLocation = "vnets/" + networkId.toString() + "/links";
         Response response = wt.path(reqLocation).request().method("DELETE", Entity.json(jsonStream));
 
-        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_OK));
+        assertThat(response.getStatus(), is(HttpURLConnection.HTTP_NO_CONTENT));
         verify(mockVnetAdminService);
     }
 }
