Repository: softlayer/softlayer-python (python)

Issue:
Cannot pass verify to client.call()
### Expected Behavior
This call should tell the transport not to do STL certificate verification:
```
client.call("Account", "getObject", verify=False)
```

### Actual Behavior
```
TypeError: Invalid keyword arguments: verify
```

### Environment Information
softlayer-python version (`slcli --version`): 5.1.0


Pull request:
Adds verify as a API call argument
Fixes #726

Patch:
diff --git a/SoftLayer/API.py b/SoftLayer/API.py
index dc887d41..9b9fd518 100644
--- a/SoftLayer/API.py
+++ b/SoftLayer/API.py
@@ -34,6 +34,7 @@
     'raw_headers',
     'limit',
     'offset',
+    'verify',
 ))
 
 
@@ -174,15 +175,22 @@ def __getitem__(self, name):
         return Service(self, name)
 
     def call(self, service, method, *args, **kwargs):
-        """Make a SoftLayer API call
+        """Make a SoftLayer API call.
 
-        :param service: the name of the SoftLayer API service
         :param method: the method to call on the service
-        :param \\*args: same optional arguments that ``Service.call`` takes
-        :param \\*\\*kwargs: same optional keyword arguments that
-                           ``Service.call`` takes
-
-        :param service: the name of the SoftLayer API service
+        :param \\*args: (optional) arguments for the remote call
+        :param id: (optional) id for the resource
+        :param mask: (optional) object mask
+        :param dict filter: (optional) filter dict
+        :param dict headers: (optional) optional XML-RPC headers
+        :param boolean compress: (optional) Enable/Disable HTTP compression
+        :param dict raw_headers: (optional) HTTP transport headers
+        :param int limit: (optional) return at most this many results
+        :param int offset: (optional) offset results by this many
+        :param boolean iter: (optional) if True, returns a generator with the
+                             results
+        :param bool verify: verify SSL cert
+        :param cert: client certificate path
 
         Usage:
             >>> import SoftLayer
@@ -222,6 +230,7 @@ def call(self, service, method, *args, **kwargs):
         request.filter = kwargs.get('filter')
         request.limit = kwargs.get('limit')
         request.offset = kwargs.get('offset')
+        request.verify = kwargs.get('verify')
 
         if self.auth:
             extra_headers = self.auth.get_headers()
@@ -314,22 +323,15 @@ def __init__(self, client, name):
         self.name = name
 
     def call(self, name, *args, **kwargs):
-        """Make a SoftLayer API call.
+        """Make a SoftLayer API call
 
+        :param service: the name of the SoftLayer API service
         :param method: the method to call on the service
-        :param \\*args: (optional) arguments for the remote call
-        :param id: (optional) id for the resource
-        :param mask: (optional) object mask
-        :param dict filter: (optional) filter dict
-        :param dict headers: (optional) optional XML-RPC headers
-        :param boolean compress: (optional) Enable/Disable HTTP compression
-        :param dict raw_headers: (optional) HTTP transport headers
-        :param int limit: (optional) return at most this many results
-        :param int offset: (optional) offset results by this many
-        :param boolean iter: (optional) if True, returns a generator with the
-                             results
-        :param bool verify: verify SSL cert
-        :param cert: client certificate path
+        :param \\*args: same optional arguments that ``BaseClient.call`` takes
+        :param \\*\\*kwargs: same optional keyword arguments that
+                           ``BaseClient.call`` takes
+
+        :param service: the name of the SoftLayer API service
 
         Usage:
             >>> import SoftLayer


Test patch:
diff --git a/tests/api_tests.py b/tests/api_tests.py
index 34df1517..8e89d27c 100644
--- a/tests/api_tests.py
+++ b/tests/api_tests.py
@@ -80,34 +80,15 @@ def test_simple_call(self):
                                 offset=None,
                                 )
 
-    def test_complex(self):
+    def test_verify(self):
+        client = SoftLayer.BaseClient(transport=self.mocks)
         mock = self.set_mock('SoftLayer_SERVICE', 'METHOD')
         mock.return_value = {"test": "result"}
-        _filter = {'TYPE': {'attribute': {'operation': '^= prefix'}}}
-
-        resp = self.client['SERVICE'].METHOD(
-            1234,
-            id=5678,
-            mask={'object': {'attribute': ''}},
-            headers={'header': 'value'},
-            raw_headers={'RAW': 'HEADER'},
-            filter=_filter,
-            limit=9,
-            offset=10)
+
+        resp = client.call('SERVICE', 'METHOD', verify=False)
 
         self.assertEqual(resp, {"test": "result"})
-        self.assert_called_with('SoftLayer_SERVICE', 'METHOD',
-                                mask={'object': {'attribute': ''}},
-                                filter=_filter,
-                                identifier=5678,
-                                args=(1234,),
-                                limit=9,
-                                offset=10,
-                                )
-        calls = self.calls('SoftLayer_SERVICE', 'METHOD')
-        self.assertEqual(len(calls), 1)
-        self.assertIn('header', calls[0].headers)
-        self.assertEqual(calls[0].headers['header'], 'value')
+        self.assert_called_with('SoftLayer_SERVICE', 'METHOD', verify=False)
 
     @mock.patch('SoftLayer.API.BaseClient.iter_call')
     def test_iterate(self, _iter_call):