def test_signature_v3(self, mock): cs = CloudStack(endpoint='https://localhost', key='foo', secret='bar', expiration=600) mock.return_value.status_code = 200 mock.return_value.json.return_value = { 'createnetworkresponse': {}, } cs.createNetwork(name="", display_text="") self.assertEqual(1, mock.call_count) [request], _ = mock.call_args url = urlparse(request.url) qs = parse_qs(url.query, True) self.assertEqual('createNetwork', qs['command'][0]) self.assertEqual('3', qs['signatureVersion'][0]) expires = qs['expires'][0] # we ignore the timezone for Python2's lack of %z expires = datetime.datetime.strptime(expires[:19], EXPIRES_FORMAT[:-2]) self.assertTrue(expires > datetime.datetime.utcnow(), expires)
def test_transform_empty(self, mock): cs = CloudStack(endpoint='https://localhost', key='foo', secret='bar', expiration=-1) mock.return_value.status_code = 200 mock.return_value.json.return_value = { 'createnetworkresponse': {}, } cs.createNetwork(name="", display_text="") self.assertEqual(1, mock.call_count) [request], kwargs = mock.call_args self.assertEqual(dict(cert=None, timeout=10, verify=True), kwargs) self.assertEqual('GET', request.method) self.assertFalse(request.headers) url = urlparse(request.url) qs = parse_qs(url.query, True) self.assertEqual('createNetwork', qs['command'][0]) self.assertEqual('CistTEiPt/4Rv1v4qSyILvPbhmg=', qs['signature'][0]) self.assertEqual('', qs['name'][0]) self.assertEqual('', qs['display_text'][0])
def test_transform_empty(self, get): cs = CloudStack(endpoint='localhost', key='foo', secret='bar') get.return_value.status_code = 200 get.return_value.json.return_value = { 'createnetworkresponse': {}, } cs.createNetwork(name="", display_text="") get.assert_called_once_with( 'localhost', timeout=10, cert=None, verify=True, params={ 'command': 'createNetwork', 'response': 'json', 'name': '', 'display_text': '', 'apiKey': 'foo', 'signature': 'CistTEiPt/4Rv1v4qSyILvPbhmg=', }, )