Finish networks tests
diff --git a/gstack/controllers/networks.py b/gstack/controllers/networks.py
index 7fba7ab..03a1799 100644
--- a/gstack/controllers/networks.py
+++ b/gstack/controllers/networks.py
@@ -57,7 +57,7 @@
         return None
 
 
-def _get_network(authorization, args=None):
+def _add_network(authorization, args=None):
     command = 'createSecurityGroup'
     if not args:
         args = {}
@@ -73,16 +73,12 @@
 
 
 def _delete_network(authorization, projectid, network):
-    securitygroup_id = get_network_by_name(authorization, network)['id']
+    network_response = get_network_by_name(authorization, network)
 
-    if securitygroup_id is None:
-        func_route = url_for(
-            'getnetwork',
-            projectid=projectid,
-            network=network
-        )
+    if not network_response:
+        return None
 
-        return errors.resource_not_found(func_route)
+    securitygroup_id = network_response['id']
 
     args = {
         'id': securitygroup_id
@@ -114,6 +110,7 @@
 def _create_populated_network_response(projectid, networks=None):
     if not networks:
         networks = []
+
     populated_response = {
         'kind': 'compute#networkList',
         'selfLink': request.base_url,
@@ -172,7 +169,7 @@
     args['name'] = data['name']
     args['description'] = data['description']
 
-    network_result = _get_network(authorization, args)
+    network_result = _add_network(authorization, args)
 
     if 'errortext' in network_result['createsecuritygroupresponse']:
         populated_response = {
@@ -209,7 +206,15 @@
 @app.route('/compute/v1/projects/<projectid>/global/networks/<network>', methods=['DELETE'])
 @authentication.required
 def deletenetwork(projectid, authorization, network):
-    _delete_network(authorization, projectid, network)
+    response = _delete_network(authorization, projectid, network)
+
+    if not response:
+        func_route = url_for(
+            'getnetwork',
+            projectid=projectid,
+            network=network
+        )
+        return errors.resource_not_found(func_route)
 
     populated_response = {
         'kind': 'compute#operation',
diff --git a/tests/data/duplicate_create_security_group.json b/tests/data/duplicate_create_security_group.json
new file mode 100644
index 0000000..3a038b8
--- /dev/null
+++ b/tests/data/duplicate_create_security_group.json
@@ -0,0 +1,7 @@
+{
+    "createsecuritygroupresponse": {
+        "errorcode": 431,
+        "uuidlist": [],
+        "errortext": "Unable to create security group, a group with name securitygroupname already exisits."
+    }
+}
diff --git a/tests/networks_tests.py b/tests/networks_tests.py
index 2f2f533..edb8d33 100644
--- a/tests/networks_tests.py
+++ b/tests/networks_tests.py
@@ -2,6 +2,7 @@
 # encoding: utf-8
 
 import mock
+import json
 
 from gstack.helpers import read_file
 from . import GStackAppTestCase
@@ -45,3 +46,89 @@
         self.assert_not_found(response)
         assert 'The resource \'/compute/v1/projects/exampleproject/global/networks/networkname\'' \
                 in response.data
+
+    def test_add_network(self):
+        data = {
+            'IPv4Range': '10.0.0.0/8',
+            'kind': 'compute#network',
+            'name': 'networkname',
+            'description': ''
+        }
+
+        data = json.dumps(data)
+
+        get = mock.Mock()
+        get.return_value.text = read_file('tests/data/valid_create_security_group.json')
+        get.return_value.status_code = 200
+
+        with mock.patch('requests.get', get):
+             headers = {
+                 'authorization': 'Bearer ' + str(GStackAppTestCase.access_token),
+             }
+
+             response = self.post_json('/compute/v1/projects/admin/global/networks', data=data, headers=headers)
+
+        self.assert_ok(response)
+
+    def test_add_network_network_duplicate(self):
+        data = {
+            'IPv4Range': '10.0.0.0/8',
+            'kind': 'compute#network',
+            'name': 'networkname',
+            'description': ''
+        }
+
+        data = json.dumps(data)
+
+        get = mock.Mock()
+        get.return_value.text = read_file('tests/data/duplicate_create_security_group.json')
+        get.return_value.status_code = 200
+
+        with mock.patch('requests.get', get):
+             headers = {
+                 'authorization': 'Bearer ' + str(GStackAppTestCase.access_token),
+             }
+
+             response = self.post_json('/compute/v1/projects/admin/global/networks', data=data, headers=headers)
+
+        assert 'RESOURCE_ALREADY_EXISTS' in response.data
+
+    def test_delete_network(self):
+
+        get = mock.Mock()
+        get.return_value.text = read_file('tests/data/valid_delete_security_group.json')
+        get.return_value.status_code = 200
+
+        get_networks = mock.Mock()
+        get_networks.return_value = json.loads(read_file('tests/data/valid_describe_security_group.json'))
+
+        with mock.patch('requests.get', get):
+            with mock.patch('gstack.controllers.networks._get_networks', get_networks):
+             headers = {
+                 'authorization': 'Bearer ' + str(GStackAppTestCase.access_token),
+             }
+
+             response = self.delete('/compute/v1/projects/exampleproject/global/networks/networkname', headers=headers)
+
+        self.assert_ok(response)
+
+    def test_delete_network_network_not_found(self):
+
+        get = mock.Mock()
+        get.return_value.text = read_file('tests/data/valid_delete_security_group.json')
+        get.return_value.status_code = 200
+
+        get_networks = mock.Mock()
+        get_networks.return_value = json.loads(read_file('tests/data/valid_describe_security_group.json'))
+
+        with mock.patch('requests.get', get):
+            with mock.patch('gstack.controllers.networks._get_networks', get_networks):
+             headers = {
+                 'authorization': 'Bearer ' + str(GStackAppTestCase.access_token),
+             }
+
+             response = self.delete('/compute/v1/projects/exampleproject/global/networks/invalidnetworkname', headers=headers)
+
+        self.assert_not_found(response)
+        assert 'The resource \'/compute/v1/projects/exampleproject/global/networks/invalidnetworkname\'' \
+                in response.data