def test_deepsea_iscsi_interfaces(self): with mock.patch("requests.Session") as mock_requests_session: login_resp = mock.MagicMock() login_resp.ok = True login_resp.status_code = 200 login_resp.json.return_value = { 'return': [{'token': 'validtoken'}] } rest_iscsi = mock.MagicMock() rest_iscsi.ok = True rest_iscsi.status_code = 200 rest_iscsi.json.return_value = { 'return': [{ 'minion1': ['192.168.10.101', '192.168.121.41'], 'minion2': ['192.168.10.102', '192.168.121.42'] }] } mock_requests_session().post.side_effect = [login_resp, rest_iscsi] api = DeepSea('localhost', 8000, 'auto', 'admin', 'admin') res = api.iscsi_interfaces() self.assertTrue(mock_requests_session().post.called) self.assertTrue(api._is_logged_in()) self.assertEqual(res, [ {'hostname': 'minion1', 'interfaces': ['192.168.10.101', '192.168.121.41']}, {'hostname': 'minion2', 'interfaces': ['192.168.10.102', '192.168.121.42']} ])
def test_deepsea_get_minions(self): with mock.patch("rest_client.TimeoutRequestsSession") as mock_requests_session: resp_pillar = mock.MagicMock() resp_pillar.ok = True resp_pillar.status_code = 200 resp_pillar.json.return_value = { 'return': [{ 'minion1': { 'roles': ['storage', 'mon', 'igw'], 'public_network': '10.1.0.0/24', 'cluster_network': '10.1.0.0/24', 'fsid': 'aaabbb', }, 'minion2': { 'roles': ['storage', 'rgw'], 'public_network': '10.1.0.0/24', 'cluster_network': '10.1.0.0/24', 'fsid': 'aaabbb', } }] } mock_requests_session().post.side_effect = [self._login_resp, resp_pillar] resp = mock.MagicMock() resp.ok = True resp.status_code = 200 resp.json.return_value = { 'return': { 'minions': ['minion1'], 'minions_pre': [], 'minions_denied': [], 'minions_rejected': ['minion2'] } } mock_requests_session().get.return_value = resp api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') res = api.get_minions() self.assertTrue(mock_requests_session().post.called) self.assertTrue(mock_requests_session().get.called) self.assertTrue(api._is_logged_in()) self.assertEqual(res, [ { 'roles': ['storage', 'mon', 'igw'], 'hostname': 'minion1', 'key_status': 'accepted', 'public_network': '10.1.0.0/24', 'cluster_network': '10.1.0.0/24', 'fsid': 'aaabbb', }, { 'roles': ['storage', 'rgw'], 'public_network': '10.1.0.0/24', 'hostname': 'minion2', 'key_status': 'rejected', 'cluster_network': '10.1.0.0/24', 'fsid': 'aaabbb', } ])
def test_deepsea_keys_response_format_error_2(self): with mock.patch("requests.Session") as mock_requests_session: mock_requests_session().post.return_value = self._login_resp resp = mock.MagicMock() resp.ok = True resp.status_code = 200 resp.json.return_value = { 'return': { 'minions': ['minion1', 'minion2'], 'minions_pre': 'minion3', 'minions_denied': [], 'minions_rejected': ['minion4'] } } mock_requests_session().get.return_value = resp api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') with self.assertRaises(BadResponseFormatException) as context: api.key_list() self.assertTrue(mock_requests_session().post.called) self.assertTrue(mock_requests_session().get.called) self.assertTrue(api._is_logged_in()) self.assertEqual(str(context.exception), "minion3 is not an array")
def test_deepsea_keys_success(self): with mock.patch("requests.Session") as mock_requests_session: mock_requests_session().post.return_value = self._login_resp resp = mock.MagicMock() resp.ok = True resp.status_code = 200 resp.json.return_value = { 'return': { 'minions': ['minion1', 'minion2'], 'minions_pre': ['minion3'], 'minions_denied': [], 'minions_rejected': ['minion4'] } } mock_requests_session().get.return_value = resp api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') res = api.key_list() self.assertTrue(mock_requests_session().post.called) self.assertTrue(mock_requests_session().get.called) self.assertTrue(api._is_logged_in()) self.assertEqual( res, { 'minions': ['minion1', 'minion2'], 'minions_pre': ['minion3'], 'minions_denied': [], 'minions_rejected': ['minion4'] })
def test_deepsea_login_connection_error(self): with mock.patch("rest_client.TimeoutRequestsSession") as mock_requests_session: mock_requests_session().post.side_effect = ConnectionError() api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') with self.assertRaises(RequestException) as context: api._login() self.assertEqual(context.exception.status_code, None) self.assertTrue(mock_requests_session().post.called) self.assertEqual(mock_requests_session().post.call_args[1]['data'], {'username': '******', 'password': '******', 'eauth': 'auto'}) self.assertFalse(api._is_logged_in()) self.assertEqual(api.token, None)
def test_deepsea_service_offline_connection_error(self): with mock.patch("requests.Session") as mock_requests_session: resp_post = mock.MagicMock() resp_post.ok = True resp_post.status_code = 200 resp_post.json.return_value = {'return': [{'token': 'validtoken'}]} mock_requests_session().post.return_value = resp_post mock_requests_session().get.side_effect = ConnectionError() api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') with self.assertRaises(RequestException): api.is_service_online() self.assertTrue(mock_requests_session().get.called) self.assertTrue(api._is_logged_in())
def test_deepsea_login_fail_401(self): with mock.patch("rest_client.TimeoutRequestsSession") as mock_requests_session: resp = mock.MagicMock() resp.ok = False resp.status_code = 401 mock_requests_session().post.return_value = resp api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') with self.assertRaises(RequestException) as context: api._login() self.assertEqual(context.exception.status_code, 401) self.assertTrue(mock_requests_session().post.called) self.assertEqual(mock_requests_session().post.call_args[1]['data'], {'username': '******', 'password': '******', 'eauth': 'auto'}) self.assertFalse(api._is_logged_in()) self.assertEqual(api.token, None)
def test_deepsea_login_success(self): with mock.patch("rest_client.TimeoutRequestsSession") as mock_requests_session: resp = mock.MagicMock() resp.ok = True resp.status_code = 200 resp.json.return_value = { 'return': [{'token': 'validtoken'}] } mock_requests_session().post.return_value = resp api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') api._login() self.assertTrue(mock_requests_session().post.called) self.assertEqual(mock_requests_session().post.call_args[1]['data'], {'username': '******', 'password': '******', 'eauth': 'auto'}) self.assertTrue(api._is_logged_in()) self.assertEqual(api.token, 'validtoken')
def test_deepsea_pillar_items_success(self): with mock.patch("requests.Session") as mock_requests_session: resp = mock.MagicMock() resp.ok = True resp.status_code = 200 resp.json.return_value = { 'return': [{ 'minion1': { 'roles': ['storage', 'mon', 'igw'], 'public_network': '10.1.0.0/24', 'cluster_network': '10.1.0.0/24', 'fsid': 'aaabbb', }, 'minion2': { 'roles': ['storage', 'rgw'], 'public_network': '10.1.0.0/24', 'cluster_network': '10.1.0.0/24', 'fsid': 'aaabbb', } }] } mock_requests_session().post.side_effect = [self._login_resp, resp] api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') res = api.pillar_items() self.assertTrue(mock_requests_session().post.called) self.assertTrue(api._is_logged_in()) self.assertEqual( res, { 'minion1': { 'roles': ['storage', 'mon', 'igw'], 'public_network': '10.1.0.0/24', 'cluster_network': '10.1.0.0/24', 'fsid': 'aaabbb', }, 'minion2': { 'roles': ['storage', 'rgw'], 'public_network': '10.1.0.0/24', 'cluster_network': '10.1.0.0/24', 'fsid': 'aaabbb', } })
def test_deepsea_service_online(self): with mock.patch("requests.Session") as mock_requests_session: resp_post = mock.MagicMock() resp_post.ok = True resp_post.status_code = 200 resp_post.json.return_value = {'return': [{'token': 'validtoken'}]} mock_requests_session().post.return_value = resp_post resp = mock.MagicMock() resp.ok = True resp.status_code = 200 resp.json.return_value = {'return': 'Welcome'} mock_requests_session().get.return_value = resp api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') self.assertTrue(api.is_service_online()) self.assertTrue(mock_requests_session().get.called) self.assertTrue(api._is_logged_in())
def test_deepsea_login_response_format_error(self): with mock.patch("rest_client.TimeoutRequestsSession") as mock_requests_session: resp = mock.MagicMock() resp.ok = True resp.status_code = 200 resp.json.return_value = { 'return': {'invalidtoken': 'validtoken'} } mock_requests_session().post.return_value = resp api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') with self.assertRaises(BadResponseFormatException): api._login() self.assertTrue(mock_requests_session().post.called) self.assertEqual(mock_requests_session().post.call_args[1]['data'], {'username': '******', 'password': '******', 'eauth': 'auto'}) self.assertFalse(api._is_logged_in()) self.assertEqual(api.token, None)
def test_deepsea_service_offline_response_format_error(self): with mock.patch("rest_client.TimeoutRequestsSession") as mock_requests_session: resp_post = mock.MagicMock() resp_post.ok = True resp_post.status_code = 200 resp_post.json.return_value = { 'return': [{'token': 'validtoken'}] } mock_requests_session().post.return_value = resp_post resp = mock.MagicMock() resp.ok = True resp.status_code = 200 resp.json.return_value = {'no_return': 'Welcome'} mock_requests_session().get.return_value = resp api = DeepSea('localhost', 8000, 'auto', 'hello', 'world') with self.assertRaises(BadResponseFormatException): api.is_service_online() self.assertTrue(mock_requests_session().get.called) self.assertTrue(api._is_logged_in())