def test_show(self, session_mock): resp = FakeResponse(data=fake_gopher_single) session_mock.return_value = mock.MagicMock( request=mock.MagicMock(return_value=resp), ) api = restapi.RESTApi() # Test no key gopher = api.show(fake_url) session_mock.return_value.request.assert_called_with( 'GET', fake_url, headers=mock.ANY, allow_redirects=True, ) self.assertEqual(gopher, fake_gopher_single) # Test with key gopher = api.show(fake_url, response_key=fake_key) session_mock.return_value.request.assert_called_with( 'GET', fake_url, headers=mock.ANY, allow_redirects=True, ) self.assertEqual(gopher, fake_gopher_mac)
def test_request_get_auth(self, session_mock): resp = FakeResponse(data=fake_gopher_single) session_mock.return_value = mock.MagicMock( request=mock.MagicMock(return_value=resp), headers=mock.MagicMock(return_value={}), ) api = restapi.RESTApi( auth_header=fake_auth, user_agent=fake_user_agent, ) gopher = api.request('GET', fake_url) #session_mock.return_value.headers.setdefault.assert_called_with( # 'X-Auth-Token', # fake_auth, #) session_mock.return_value.request.assert_called_with( 'GET', fake_url, headers={ 'X-Auth-Token': fake_auth, }, allow_redirects=True, ) self.assertEqual(gopher.json(), fake_gopher_single)
def test_create(self, session_mock): resp = FakeResponse(data=fake_gopher_single) session_mock.return_value = mock.MagicMock( request=mock.MagicMock(return_value=resp), ) api = restapi.RESTApi() data = fake_gopher_mac # Test no key gopher = api.create(fake_url, data=data) session_mock.return_value.request.assert_called_with( 'POST', fake_url, headers=mock.ANY, allow_redirects=True, data=json.dumps(data), ) self.assertEqual(gopher, fake_gopher_single) # Test with key gopher = api.create(fake_url, data=data, response_key=fake_key) session_mock.return_value.request.assert_called_with( 'POST', fake_url, headers=mock.ANY, allow_redirects=True, data=json.dumps(data), ) self.assertEqual(gopher, fake_gopher_mac)
def test_list(self, session_mock): resp = FakeResponse(data=fake_gopher_list) session_mock.return_value = mock.MagicMock( request=mock.MagicMock(return_value=resp), ) # test base api = restapi.RESTApi() gopher = api.list(fake_url, response_key=fake_keys) session_mock.return_value.request.assert_called_with( 'GET', fake_url, headers=mock.ANY, allow_redirects=True, ) self.assertEqual(gopher, [fake_gopher_mac, fake_gopher_tosh]) # test body api = restapi.RESTApi() data = {'qwerty': 1} gopher = api.list(fake_url, response_key=fake_keys, data=data) session_mock.return_value.request.assert_called_with( 'POST', fake_url, headers=mock.ANY, allow_redirects=True, data=json.dumps(data), ) self.assertEqual(gopher, [fake_gopher_mac, fake_gopher_tosh]) # test query params api = restapi.RESTApi() params = {'qaz': '123'} gophers = api.list(fake_url, response_key=fake_keys, params=params) session_mock.return_value.request.assert_called_with( 'GET', fake_url, headers=mock.ANY, allow_redirects=True, params=params, ) self.assertEqual(gophers, [fake_gopher_mac, fake_gopher_tosh])
def test_request_get_fail_404(self, session_mock): resp = FakeResponse(status_code=404, data=fake_gopher_single) session_mock.return_value = mock.MagicMock( request=mock.MagicMock(return_value=resp), ) api = restapi.RESTApi(user_agent=fake_user_agent, ) self.assertRaises(requests.HTTPError, api.request, 'GET', fake_url) session_mock.return_value.request.assert_called_with( 'GET', fake_url, headers={}, allow_redirects=True, )
def test_delete(self, session_mock): resp = FakeResponse(status_code=200, data=None) session_mock.return_value = mock.MagicMock( request=mock.MagicMock(return_value=resp), ) api = restapi.RESTApi() gopher = api.delete(fake_url) session_mock.return_value.request.assert_called_with( 'DELETE', fake_url, headers=mock.ANY, allow_redirects=True, ) self.assertEqual(gopher.status_code, 200)
def test_request_get_return_300(self, session_mock): resp = FakeResponse(status_code=300, data=fake_gopher_single) session_mock.return_value = mock.MagicMock( request=mock.MagicMock(return_value=resp), ) api = restapi.RESTApi(user_agent=fake_user_agent, ) gopher = api.request('GET', fake_url) session_mock.return_value.request.assert_called_with( 'GET', fake_url, headers={}, allow_redirects=True, ) self.assertEqual(gopher.status_code, 300) self.assertEqual(gopher.json(), fake_gopher_single)
def test_set(self, session_mock): new_gopher = fake_gopher_single new_gopher[fake_key]['name'] = 'Chip' resp = FakeResponse(data=fake_gopher_single) session_mock.return_value = mock.MagicMock( request=mock.MagicMock(return_value=resp), ) api = restapi.RESTApi() data = fake_gopher_mac data['name'] = 'Chip' # Test no data, no key gopher = api.set(fake_url) session_mock.return_value.request.assert_called_with( 'PUT', fake_url, headers=mock.ANY, allow_redirects=True, json=None, ) self.assertEqual(gopher, None) # Test data, no key gopher = api.set(fake_url, data=data) session_mock.return_value.request.assert_called_with( 'PUT', fake_url, headers=mock.ANY, allow_redirects=True, data=json.dumps(data), ) self.assertEqual(gopher, fake_gopher_single) # NOTE:(dtroyer): Key and no data is not tested as without data # the response_key is moot # Test data and key gopher = api.set(fake_url, data=data, response_key=fake_key) session_mock.return_value.request.assert_called_with( 'PUT', fake_url, headers=mock.ANY, allow_redirects=True, data=json.dumps(data), ) self.assertEqual(gopher, fake_gopher_mac)
def test_request_post(self, session_mock): resp = FakeResponse(data=fake_gopher_single) session_mock.return_value = mock.MagicMock( request=mock.MagicMock(return_value=resp), ) api = restapi.RESTApi(user_agent=fake_user_agent, ) data = fake_gopher_tosh gopher = api.request('POST', fake_url, json=data) session_mock.return_value.request.assert_called_with( 'POST', fake_url, headers={ 'Content-Type': 'application/json', }, allow_redirects=True, data=json.dumps(data), ) self.assertEqual(gopher.json(), fake_gopher_single)
def initialize_app(self, argv): """Global app init bits: * set up API versions * validate authentication info * authenticate against Identity if requested """ super(OpenStackShell, self).initialize_app(argv) # Set requests logging to a useful level requests_log = logging.getLogger("requests") if self.options.debug: requests_log.setLevel(logging.DEBUG) self.dump_stack_trace = True else: requests_log.setLevel(logging.WARNING) self.dump_stack_trace = False # Save default domain self.default_domain = self.options.os_default_domain # Stash selected API versions for later self.api_version = { 'identity': self.options.os_identity_api_version, } # Loop through extensions to get API versions for mod in self.ext_modules: ver = getattr(self.options, mod.API_VERSION_OPTION, None) if ver: self.api_version[mod.API_NAME] = ver self.log.debug('%s API version %s' % (mod.API_NAME, ver)) # Add the API version-specific commands for api in self.api_version.keys(): version = '.v' + self.api_version[api].replace('.', '_') cmd_group = 'openstack.' + api.replace('-', '_') + version self.log.debug('command group %s' % cmd_group) self.command_manager.add_command_group(cmd_group) # Commands that span multiple APIs self.command_manager.add_command_group('openstack.common') # This is the naive extension implementation referred to in # blueprint 'client-extensions' # Extension modules can register their commands in an # 'openstack.extension' entry point group: # entry_points={ # 'openstack.extension': [ # 'list_repo=qaz.github.repo:ListRepo', # 'show_repo=qaz.github.repo:ShowRepo', # ], # } self.command_manager.add_command_group('openstack.extension') # call InitializeXxx() here # set up additional clients to stuff in to client_manager?? # Handle deferred help and exit if self.options.deferred_help: self.DeferredHelpAction(self.parser, self.parser, None, None) # Set up common client session if self.options.os_cacert: self.verify = self.options.os_cacert else: self.verify = not self.options.insecure self.restapi = restapi.RESTApi( verify=self.verify, debug=self.options.debug, )