def test_show(self, session_mock): resp = FakeResponse(status_code=200, 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, timeout=10 ) 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, timeout=10 ) self.assertEqual(gopher, fake_gopher_mac)
def test_list(self, session_mock): resp = FakeResponse(status_code=200, 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, timeout=10 ) 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), timeout=10 ) 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, timeout=10 ) self.assertEqual(gophers, [fake_gopher_mac, fake_gopher_tosh])
def test_set(self, session_mock): new_gopher = fake_gopher_single new_gopher[fake_key]['name'] = 'Chip' resp = FakeResponse(status_code=200, 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, timeout=10 ) 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), timeout=10 ) 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), timeout=10 ) self.assertEqual(gopher, fake_gopher_mac)
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, timeout=10 ) 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, timeout=10 ) self.assertEqual(gopher.status_code, 300) self.assertEqual(gopher.json(), fake_gopher_single)
def __init__(self, endpoint, username=None, password=None): if '/api/' not in endpoint: raise IOError("Wrong API string. It should be like: " "http://<hc2_ip>/api/") # TODO(klstanie): Add the HC2 reachability checking self.client = restapi.RESTApi(base_url=endpoint, username=username, password=password, debug=True) self.modified = {} self.modified_lock = threading.Lock() # initialize the managers self.info = info.Controller(self.client, self._get_info_model()) self.login = login.Controller(self.client, self._get_login_model()) self.sections = sections.Controller(self.client, self._get_section_model()) self.rooms = rooms.Controller(self.client, self._get_room_model()) self.users = users.Controller(self.client, self._get_user_model()) self.variables = variables.Controller(self.client, self._get_variable_model()) self.scenes = scenes.Controller(self.client, self._get_scene_model()) self.devices = devices.Controller(self.client, self._get_device_model()) self.weather = weather.Controller(self.client, self._get_weather_model()) self.events = events.Controller(self.client, self._get_event_model()) self.state_handler = None
def test_request_post(self, session_mock): resp = FakeResponse(status_code=200, 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), timeout=10 ) self.assertEqual(gopher.json(), fake_gopher_single)
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( exceptions.HTTPNotFound, api.request, 'GET', fake_url) session_mock.return_value.request.assert_called_with( 'GET', fake_url, headers={}, allow_redirects=True, timeout=10 )