Skip to content

Commit dbd5d48

Browse files
transport coverage
1 parent af2c706 commit dbd5d48

File tree

2 files changed

+122
-6
lines changed

2 files changed

+122
-6
lines changed

SoftLayer/transports.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -309,11 +309,10 @@ def __call__(self, request):
309309
request.mask = _format_object_mask(request.mask)
310310
params['objectMask'] = request.mask
311311

312-
if request.limit:
313-
params['limit'] = request.limit
314-
315-
if request.offset:
316-
params['offset'] = request.offset
312+
if request.limit or request.offset:
313+
limit = request.limit or 0
314+
offset = request.offset or 0
315+
params['resultLimit'] = "%d,%d" % (offset,limit)
317316

318317
if request.filter:
319318
params['objectFilter'] = json.dumps(request.filter)

tests/transport_tests.py

Lines changed: 118 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,15 @@ def test_request_exception(self, request):
257257
self.assertRaises(SoftLayer.TransportError, self.transport, req)
258258

259259

260+
def test_print_reproduceable(self):
261+
req = transports.Request()
262+
req.url = "https://test.com"
263+
req.payload = "testing"
264+
req.transport_headers = {"test-headers" : 'aaaa'}
265+
output_text = self.transport.print_reproduceable(req)
266+
self.assertIn("https://test.com", output_text)
267+
268+
260269
@mock.patch('SoftLayer.transports.requests.Session.request')
261270
@pytest.mark.parametrize(
262271
"transport_verify,request_verify,expected",
@@ -529,7 +538,7 @@ def test_with_limit_offset(self, request):
529538
headers=mock.ANY,
530539
auth=None,
531540
data=None,
532-
params={'limit': 10, 'offset': 5},
541+
params={'resultLimit': '5,10'},
533542
verify=True,
534543
cert=None,
535544
proxies=None,
@@ -578,6 +587,13 @@ def test_with_special_auth(self, auth, request):
578587
proxies=None,
579588
timeout=None)
580589

590+
def test_print_reproduceable(self):
591+
req = transports.Request()
592+
req.url = "https://test.com"
593+
req.payload = "testing"
594+
req.transport_headers = {"test-headers" : 'aaaa'}
595+
output_text = self.transport.print_reproduceable(req)
596+
self.assertIn("https://test.com", output_text)
581597

582598
class TestFixtureTransport(testing.TestCase):
583599

@@ -602,3 +618,104 @@ def test_no_method(self):
602618
req.service = 'SoftLayer_Account'
603619
req.method = 'getObjectzzzz'
604620
self.assertRaises(NotImplementedError, self.transport, req)
621+
622+
class TestTimingTransport(testing.TestCase):
623+
624+
625+
def set_up(self):
626+
fixture_transport = transports.FixtureTransport()
627+
self.transport = transports.TimingTransport(fixture_transport)
628+
629+
def test_call(self):
630+
req = transports.Request()
631+
req.service = 'SoftLayer_Account'
632+
req.method = 'getObject'
633+
resp = self.transport(req)
634+
self.assertEqual(resp['accountId'], 1234)
635+
636+
def test_get_last_calls(self):
637+
req = transports.Request()
638+
req.service = 'SoftLayer_Account'
639+
req.method = 'getObject'
640+
resp = self.transport(req)
641+
self.assertEqual(resp['accountId'], 1234)
642+
calls = self.transport.get_last_calls()
643+
self.assertEqual(calls[0][0].service, 'SoftLayer_Account')
644+
645+
def test_print_reproduceable(self):
646+
req = transports.Request()
647+
req.service = 'SoftLayer_Account'
648+
req.method = 'getObject'
649+
output_text = self.transport.print_reproduceable(req)
650+
self.assertEqual('SoftLayer_Account', output_text)
651+
652+
class TestDebugTransport(testing.TestCase):
653+
654+
655+
def set_up(self):
656+
fixture_transport = transports.FixtureTransport()
657+
self.transport = transports.DebugTransport(fixture_transport)
658+
req = transports.Request()
659+
req.service = 'SoftLayer_Account'
660+
req.method = 'getObject'
661+
self.req = req
662+
663+
def test_call(self):
664+
665+
resp = self.transport(self.req)
666+
self.assertEqual(resp['accountId'], 1234)
667+
668+
def test_get_last_calls(self):
669+
670+
resp = self.transport(self.req)
671+
self.assertEqual(resp['accountId'], 1234)
672+
calls = self.transport.get_last_calls()
673+
self.assertEqual(calls[0].service, 'SoftLayer_Account')
674+
675+
def test_print_reproduceable(self):
676+
req = transports.Request()
677+
req.service = 'SoftLayer_Account'
678+
req.method = 'getObject'
679+
output_text = self.transport.print_reproduceable(self.req)
680+
self.assertEqual('SoftLayer_Account', output_text)
681+
682+
def test_print_reproduceable_post(self):
683+
req = transports.Request()
684+
req.url = "https://test.com"
685+
req.payload = "testing"
686+
req.transport_headers = {"test-headers" : 'aaaa'}
687+
req.args = 'createObject'
688+
689+
rest_transport = transports.RestTransport()
690+
transport = transports.DebugTransport(rest_transport)
691+
692+
output_text = transport.print_reproduceable(req)
693+
694+
self.assertIn("https://test.com", output_text)
695+
self.assertIn("-X POST", output_text)
696+
697+
698+
@mock.patch('SoftLayer.transports.requests.Session.request')
699+
def test_error(self, request):
700+
# Test JSON Error
701+
e = requests.HTTPError('error')
702+
e.response = mock.MagicMock()
703+
e.response.status_code = 404
704+
e.response.text = '''{
705+
"error": "description",
706+
"code": "Error Code"
707+
}'''
708+
request().raise_for_status.side_effect = e
709+
710+
req = transports.Request()
711+
req.service = 'SoftLayer_Service'
712+
req.method = 'Resource'
713+
rest_transport = transports.RestTransport()
714+
transport = transports.DebugTransport(rest_transport)
715+
self.assertRaises(SoftLayer.SoftLayerAPIError, transport, req)
716+
calls = transport.get_last_calls()
717+
self.assertEqual(404, calls[0].exception.faultCode)
718+
719+
720+
721+

0 commit comments

Comments
 (0)