5827: check readable only attrvalue is a string
[arvados.git] / sdk / python / tests / arvados_testutil.py
index 2926b20bfa9608d649cac04cfa0ae35268a5ca10..a10802ae81b7b2bf439f8452052a0ba1e9643617 100644 (file)
@@ -53,6 +53,10 @@ def fake_requests_response(code, body, **headers):
     r.raw = io.BytesIO(body)
     return r
 
+# The following methods patch requests.Session(), where return_value is a mock
+# Session object.  The put/get attributes are set on mock Session, and the
+# desired put/get behavior is set on the put/get mocks.
+
 def mock_put_responses(body, *codes, **headers):
     m = mock.MagicMock()
     if isinstance(body, tuple):
@@ -90,9 +94,6 @@ class MockStreamReader(object):
         return self._name
 
     def readfrom(self, start, size, num_retries=None):
-        self._readfrom(start, size, num_retries=num_retries)
-
-    def _readfrom(self, start, size, num_retries=None):
         return self._data[start:start + size]
 
 class ApiClientMock(object):
@@ -103,7 +104,8 @@ class ApiClientMock(object):
                            service_type='disk',
                            service_host=None,
                            service_port=None,
-                           service_ssl_flag=False):
+                           service_ssl_flag=False,
+                           additional_services=[]):
         if api_mock is None:
             api_mock = self.api_client_mock()
         body = {
@@ -115,7 +117,7 @@ class ApiClientMock(object):
                 'service_port': service_port or 65535-i,
                 'service_ssl_flag': service_ssl_flag,
                 'service_type': service_type,
-            } for i in range(0, count)]
+            } for i in range(0, count)] + additional_services
         }
         self._mock_api_call(api_mock.keep_services().accessible, status, body)
         return api_mock