def test_camera_id_expired_token_failure(self, mock_get):
     clientId = '0' * 96
     clientSecret = '0' * 71
     client = Client(clientId, clientSecret)
     client.token = 'ExpiredToken'
     mock_response = mock.Mock()
     mock_response.status_code = 401
     mock_response.json.return_value = {"message": "Token expired"}
     mock_response2 = mock.Mock()
     mock_response2.status_code = 200
     mock_response2.json.return_value = {"token": "newToken"}
     mock_get.side_effect = [
         mock_response, mock_response2, mock_response, mock_response2,
         mock_response
     ]
     with self.assertRaises(AuthenticationError):
         client.camera_by_id('12345')
     headers = {'Authorization': 'Bearer ExpiredToken'}
     newheaders = {'Authorization': 'Bearer newToken'}
     call_list = [
         mock.call(self.base_URL + 'cameras/12345', headers=headers),
         mock.call(self.base_URL + 'auth/?clientID=' + clientId +
                   '&clientSecret=' + clientSecret),
         mock.call(self.base_URL + 'cameras/12345',
                   headers=newheaders,
                   params=None),
         mock.call(self.base_URL + 'auth/?clientID=' + clientId +
                   '&clientSecret=' + clientSecret),
         mock.call(self.base_URL + 'cameras/12345',
                   headers=newheaders,
                   params=None)
     ]
     self.assertEqual(mock_get.call_args_list, call_list)
 def test_camera_id_internal_error(self, mock_get):
     clientId = '0' * 96
     clientSecret = '0' * 71
     client = Client(clientId, clientSecret)
     client.token = 'CorrectToken'
     mock_response = mock.Mock()
     mock_response.status_code = 500
     mock_get.return_value = mock_response
     with self.assertRaises(InternalError):
         client.camera_by_id('12345')
     url = self.base_URL + 'cameras/12345'
     mock_get.assert_called_once_with(
         url, headers={'Authorization': 'Bearer CorrectToken'})
 def test_camera_id_all_correct(self, mock_get):
     clientId = '0' * 96
     clientSecret = '0' * 71
     client = Client(clientId, clientSecret)
     client.token = 'CorrectToken'
     mock_response = mock.Mock()
     expected_dict = {
         'camera_type': 'ip',
         'ip': '210.1.1.2',
         'latitude': '44.9087',
         'longitude': '-129.09',
         'port': '80'
     }
     mock_dict = {
         "longitude": "-129.09",
         "latitude": "44.9087",
         'type': 'ip',
         'retrieval': {
             'ip': '210.1.1.2',
             'port': '80'
         }
     }
     mock_response.json.return_value = mock_dict
     mock_response.status_code = 200
     mock_get.return_value = mock_response
     url = self.base_URL + 'cameras/12345'
     self.assertEqual(client.camera_by_id('12345').__dict__, expected_dict)
     mock_get.assert_called_once_with(
         url, headers={'Authorization': 'Bearer CorrectToken'})
 def test_camera_id_expired_token_success(self, mock_get):
     clientId = '0' * 96
     clientSecret = '0' * 71
     client = Client(clientId, clientSecret)
     client.token = 'ExpiredToken'
     mock_response = mock.Mock()
     mock_response.status_code = 401
     mock_response.json.return_value = {"message": "Token expired"}
     mock_response2 = mock.Mock()
     mock_response2.status_code = 200
     mock_response2.json.return_value = {"token": "newToken"}
     mock_response3 = mock.Mock()
     mock_response3.status_code = 200
     expected_dict = {
         'camera_type': 'ip',
         'ip': '210.1.1.2',
         'latitude': '44.9087',
         'longitude': '-129.09',
         'port': '80'
     }
     mock_dict = {
         "longitude": "-129.09",
         "latitude": "44.9087",
         'type': 'ip',
         'retrieval': {
             'ip': '210.1.1.2',
             'port': '80'
         }
     }
     mock_response3.json.return_value = mock_dict
     mock_get.side_effect = [mock_response, mock_response2, mock_response3]
     self.assertEqual(client.camera_by_id('12345').__dict__, expected_dict)
     self.assertEqual(3, mock_get.call_count)
     headers = {'Authorization': 'Bearer ExpiredToken'}
     newheaders = {'Authorization': 'Bearer newToken'}
     call_list = [
         mock.call(self.base_URL + 'cameras/12345', headers=headers),
         mock.call(self.base_URL + 'auth/?clientID=' + clientId +
                   '&clientSecret=' + clientSecret),
         mock.call(self.base_URL + 'cameras/12345',
                   headers=newheaders,
                   params=None)
     ]
     self.assertEqual(mock_get.call_args_list, call_list)