Add list by name tests
diff --git a/gstack/controllers/firewalls.py b/gstack/controllers/firewalls.py
index 0c01119..34fb736 100755
--- a/gstack/controllers/firewalls.py
+++ b/gstack/controllers/firewalls.py
@@ -58,7 +58,7 @@
         })
 
 
-@app.route('/compute/v1/projects/<projectid>/global/firewalls',  methods=['GET'])
+@app.route('/compute/v1/projects/<projectid>/global/firewalls', methods=['GET'])
 @authentication.required
 def listsecuritygroups(projectid, authorization):
     command = 'listSecurityGroups'
diff --git a/gstack/controllers/instances.py b/gstack/controllers/instances.py
index 5de28ea..c17ea42 100755
--- a/gstack/controllers/instances.py
+++ b/gstack/controllers/instances.py
@@ -152,12 +152,10 @@
             'keyword': instance
         }
     )
-    print virtual_machine_list
 
     if virtual_machine_list['listvirtualmachinesresponse']:
         response = helper.filter_by_name(
-            data=virtual_machine_list[
-                'listvirtualmachinesresponse']['virtualmachine'],
+            data=virtual_machine_list['listvirtualmachinesresponse']['virtualmachine'],
             name=instance
         )
         return response
@@ -338,7 +336,7 @@
 
     populated_response = operations.create_response(
         projectid=projectid,
-        operationid=deletion_result['destroyvirtualmachineresponse']['jobid'],
+        operationid=deletion_result['queryasyncjobresultresponse']['jobid'],
         authorization=authorization
     )
 
diff --git a/gstack/controllers/operations.py b/gstack/controllers/operations.py
index e8c1d1e..faa7ad6 100644
--- a/gstack/controllers/operations.py
+++ b/gstack/controllers/operations.py
@@ -51,12 +51,10 @@
     }
 
     if async_result['jobstatus'] is 0:
-        # handle pending case
         populated_response['targetLink'] = ''
         populated_response['status'] = 'PENDING'
         populated_response['progress'] = 0
     elif async_result['jobstatus'] is 1:
-        # handle successful case
         populated_response['status'] = 'DONE'
         populated_response['zone'] = urllib.unquote_plus(
             helper.get_root_url() +
@@ -71,9 +69,7 @@
                 'getinstance',
                 projectid=projectid,
                 zone=async_result['jobresult']['virtualmachine']['zonename'],
-                instance=async_result['jobresult']['virtualmachine']['displayname']))
-
-    # need to add a case here for error handling, its job status 2
+                instance=async_result['jobresult']['virtualmachine']['name']))
 
     return populated_response
 
diff --git a/gstack/controllers/project.py b/gstack/controllers/project.py
index b18eeba..d6e0776 100755
--- a/gstack/controllers/project.py
+++ b/gstack/controllers/project.py
@@ -156,7 +156,7 @@
     return response
 
 
-@app.route('//compute/v1/projects/<projectid>', methods=['GET'])
+@app.route('/compute/v1/projects/<projectid>', methods=['GET'])
 @authentication.required
 def getproject(authorization, projectid):
     project = _get_account_by_name(authorization, projectid)
@@ -178,7 +178,7 @@
     return res
 
 
-@app.route('//compute/v1/projects/<projectid>/setCommonInstanceMetadata', methods=['POST'])
+@app.route('/compute/v1/projects/<projectid>/setCommonInstanceMetadata', methods=['POST'])
 @authentication.required
 def setglobalmetadata(projectid, authorization):
     data = json.loads(request.data)
diff --git a/tests/data/create_volume_response.json b/tests/data/create_volume_response.json
new file mode 100644
index 0000000..79826ba
--- /dev/null
+++ b/tests/data/create_volume_response.json
@@ -0,0 +1,38 @@
+{
+    "queryasyncjobresultresponse": {
+        "jobprocstatus": 0,
+        "created": "2014-02-25T19:46:35+0000",
+        "cmd": "org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd",
+        "userid": "2edb33ec-95e4-11e3-b2e4-d19c9d3e5e1d",
+        "jobstatus": 1,
+        "jobid": "1f32404b-d067-43e8-8835-4cc1c55d737a",
+        "jobresultcode": 0,
+        "jobresulttype": "object",
+        "jobresult": {
+            "volume": {
+                "size": 10737418240,
+                "diskofferingname": "Custom",
+                "account": "admin",
+                "domainid": "2edae3e4-95e4-11e3-b2e4-d19c9d3e5e1d",
+                "name": "f0e2a699-1196-49bd-90cd-af809f4c32ea",
+                "created": "2014-02-25T19:46:34+0000",
+                "storagetype": "shared",
+                "type": "DATADISK",
+                "tags": [],
+                "domain": "ROOT",
+                "jobstatus": 0,
+                "jobid": "1f32404b-d067-43e8-8835-4cc1c55d737a",
+                "destroyed": false,
+                "state": "Allocated",
+                "diskofferingdisplaytext": "Custom Disk",
+                "isextractable": true,
+                "displayvolume": true,
+                "zoneid": "1e47a2fc-61c7-401c-b90e-416b472ada64",
+                "diskofferingid": "46f0a62e-ba3c-4a49-b619-877a8b2a07ed",
+                "id": "8552cdce-879a-42f3-bdb5-2e7f55a38996",
+                "zonename": "Sandbox-simulator"
+            }
+        },
+        "accountid": "2edb0c28-95e4-11e3-b2e4-d19c9d3e5e1d"
+    }
+}
diff --git a/tests/data/delete_volume_response.json b/tests/data/valid_delete_volume.json
similarity index 100%
rename from tests/data/delete_volume_response.json
rename to tests/data/valid_delete_volume.json
diff --git a/tests/disks_tests.py b/tests/disks_tests.py
index bce6a51..f9635a3 100644
--- a/tests/disks_tests.py
+++ b/tests/disks_tests.py
@@ -21,6 +21,21 @@
 
         self.assert_ok(response)
 
+    def test_list_disks_with_name_filter(self):
+
+        get = mock.Mock()
+        get.return_value.text = read_file('tests/data/valid_describe_volumes.json')
+        get.return_value.status_code = 200
+
+        with mock.patch('requests.get', get):
+
+            headers = {'authorization': 'Bearer ' + str(GStackAppTestCase.access_token)}
+            response = self.get(
+                '/compute/v1/projects/projectid/zones/zonename/disks?filter=name+eq+volumename',
+                headers=headers)
+
+        self.assert_ok(response)
+
     def test_aggregated_list_disks(self):
 
         get = mock.Mock()
@@ -88,4 +103,3 @@
         assert 'The resource \'/compute/v1/projects/exampleproject/zones/examplezone/disks/volumename\' was not found' \
                 in response.data
 
-
diff --git a/tests/instances_tests.py b/tests/instances_tests.py
index 5a225d3..22a6342 100644
--- a/tests/instances_tests.py
+++ b/tests/instances_tests.py
@@ -40,6 +40,20 @@
 
         self.assert_ok(response)
 
+    def test_list_instances_with_name_filter(self):
+
+        get = mock.Mock()
+        get.return_value.text = read_file('tests/data/valid_describe_instance.json')
+        get.return_value.status_code = 200
+
+        with mock.patch('requests.get', get):
+            headers = {'authorization': 'Bearer ' + str(GStackAppTestCase.access_token)}
+            response = self.get(
+                '/compute/v1/projects/projectid/zones/zonename/instances?filter=name+eq+instancename',
+                headers=headers)
+
+        self.assert_ok(response)
+
     def test_aggregated_list_instances_with_name_filter(self):
 
         get = mock.Mock()
@@ -87,4 +101,19 @@
         assert 'The resource \'/compute/v1/projects/exampleproject/zones/examplezone/instances/instancename\' was not found' \
                 in response.data
 
+    def test_delete_instance(self):
+
+        get = mock.Mock()
+        get.return_value.text = read_file('tests/data/valid_terminate_instance.json')
+        get.return_value.status_code = 200
+
+        get_instance_id = mock.Mock()
+        get_instance_id.return_value = {'id':'virtualmachineid'}
+
+        with mock.patch('requests.get', get):
+            with mock.patch('gstack.controllers.instances._get_virtual_machine_by_name',get_instance_id):
+                headers = {'authorization': 'Bearer ' + str(GStackAppTestCase.access_token)}
+                response = self.delete('/compute/v1/projects/exampleproject/zones/examplezone/instances/instancename', headers=headers)
+
+        self.assert_ok(response)
 
diff --git a/tests/utils.py b/tests/utils.py
index 3948a71..8101ea7 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -29,6 +29,9 @@
     def get(self, *args, **kwargs):
         return self._request(self.client.get, *args, **kwargs)
 
+    def delete(self, *args, **kwargs):
+        return self._request(self.client.delete, *args, **kwargs)
+
     def assert_status_code(self, response, status_code):
         self.assertEquals(status_code, response.status_code)
         return response