63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
import json
|
|
|
|
import httpx
|
|
import pytest
|
|
|
|
from arcade_jira.client import JiraClient
|
|
from arcade_jira.exceptions import JiraToolExecutionError
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_cloud_data_from_available_resources_single_cloud(
|
|
mock_httpx_client, fake_auth_token
|
|
):
|
|
cloud = {"id": "123", "name": "Test Cloud", "url": "https://test.atlassian.net"}
|
|
|
|
client = JiraClient(auth_token=fake_auth_token)
|
|
|
|
mock_httpx_client.get.return_value = httpx.Response(
|
|
status_code=200,
|
|
json=[cloud],
|
|
)
|
|
|
|
response = await client._get_cloud_data_from_available_resources()
|
|
assert response == cloud
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_cloud_data_from_available_resources_multiple_clouds(
|
|
mock_httpx_client, fake_auth_token
|
|
):
|
|
cloud1 = {"id": "123", "name": "Test Cloud", "url": "https://test.atlassian.net"}
|
|
cloud2 = {"id": "456", "name": "Test Cloud 2", "url": "https://test2.atlassian.net"}
|
|
|
|
client = JiraClient(auth_token=fake_auth_token)
|
|
|
|
mock_httpx_client.get.return_value = httpx.Response(
|
|
status_code=200,
|
|
json=[cloud1, cloud2],
|
|
)
|
|
|
|
with pytest.raises(JiraToolExecutionError) as error:
|
|
await client._get_cloud_data_from_available_resources()
|
|
|
|
assert "Multiple cloud IDs returned by Atlassian" in error.value.message
|
|
assert json.dumps(cloud1) in error.value.message
|
|
assert json.dumps(cloud2) in error.value.message
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_get_cloud_data_from_available_resources_duplicate_cloud(
|
|
mock_httpx_client, fake_auth_token
|
|
):
|
|
cloud = {"id": "123", "name": "Test Cloud", "url": "https://test.atlassian.net"}
|
|
|
|
client = JiraClient(auth_token=fake_auth_token)
|
|
|
|
mock_httpx_client.get.return_value = httpx.Response(
|
|
status_code=200,
|
|
json=[cloud, cloud],
|
|
)
|
|
|
|
response = await client._get_cloud_data_from_available_resources()
|
|
assert response == cloud
|