diff --git a/src/test/java/net/onrc/onos/api/rest/TestRestIntent.java b/src/test/java/net/onrc/onos/api/rest/TestRestIntent.java
index b229121..8d6dafd 100644
--- a/src/test/java/net/onrc/onos/api/rest/TestRestIntent.java
+++ b/src/test/java/net/onrc/onos/api/rest/TestRestIntent.java
@@ -2,7 +2,9 @@
 
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
+import net.onrc.onos.core.intent.Intent;
 import net.onrc.onos.core.intent.runtime.IPathCalcRuntimeService;
+import net.onrc.onos.core.intent.runtime.IntentStateList;
 import net.onrc.onos.core.intent.runtime.IntentTestMocks;
 import net.onrc.onos.core.intent.runtime.PathCalcRuntimeModule;
 import net.onrc.onos.core.intent.runtime.web.IntentWebRoutable;
@@ -163,4 +165,19 @@
     Map<String, String> getIntent(final ClientResource client) {
         return client.get(Map.class);
     }
+
+    /**
+     * Modify the state of an intent by directly calling the Intent state
+     * machine.  Needed in unit tests because of mocking of back end
+     * components.
+     *
+     * @param intentId id of the intent to modify
+     * @param newState assign this state to the intent
+     */
+    public void modifyIntentState(final String intentId,
+                                  final Intent.IntentState newState) {
+        final IntentStateList intentStateList = new IntentStateList();
+        intentStateList.put(intentId, newState);
+        getRuntime().entryUpdated(intentStateList);
+    }
 }
diff --git a/src/test/java/net/onrc/onos/api/rest/TestRestIntentHighDelete.java b/src/test/java/net/onrc/onos/api/rest/TestRestIntentHighDelete.java
index fbfe471..89ab771 100644
--- a/src/test/java/net/onrc/onos/api/rest/TestRestIntentHighDelete.java
+++ b/src/test/java/net/onrc/onos/api/rest/TestRestIntentHighDelete.java
@@ -1,5 +1,6 @@
 package net.onrc.onos.api.rest;
 
+import net.onrc.onos.core.intent.Intent;
 import net.onrc.onos.core.intent.IntentOperation;
 import net.onrc.onos.core.intent.IntentOperationList;
 import net.onrc.onos.core.intent.ShortestPathIntent;
@@ -86,7 +87,7 @@
      * Once the Intents are removed, an empty list should be
      * returned by the fetch of all high level Intents.
      */
-    // @Test The delete API does not currently work properly.
+    @Test
     public void testDeleteOfAllIntents() {
 
         makeDefaultIntents();
@@ -97,6 +98,10 @@
         // HTTP status should be NO CONTENT
         assertThat(deleteClient, hasStatusOf(Status.SUCCESS_NO_CONTENT));
 
+        // trigger the back end deletion of the Intents
+        modifyIntentState("1:2___0", Intent.IntentState.DEL_ACK);
+        modifyIntentState("1:3___0", Intent.IntentState.DEL_ACK);
+
         //  Now query the intents to make sure they all got deleted
         final ClientResource client = new ClientResource(getHighRestIntentUrl());
         final Collection<Map<String, String>> intents = getIntentsCollection(client);
@@ -115,7 +120,7 @@
      * Once the Intent is removed, an empty list should be
      * returned by the fetch of the Intent.
      */
-    // @Test Intent delete currently does not work
+    @Test
     public void testDeleteOfSingleExistingIntent() {
 
         makeDefaultIntents();
@@ -127,6 +132,9 @@
         // HTTP status should be NO CONTENT
         assertThat(deleteClient, hasStatusOf(Status.SUCCESS_NO_CONTENT));
 
+        // trigger the back end deletion of the Intent.
+        modifyIntentState("1:2___0", Intent.IntentState.DEL_ACK);
+
         ClientResource client = new ClientResource(intentUrl);
         try {
             //  Now query the intent to make sure it got deleted
