Skip to content

Commit aa25e7c

Browse files
test(connections-service): add unit tests
1 parent 8f5a972 commit aa25e7c

1 file changed

Lines changed: 196 additions & 0 deletions

File tree

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
import pytest
2+
from pytest_httpx import HTTPXMock
3+
4+
from uipath._config import Config
5+
from uipath._execution_context import ExecutionContext
6+
from uipath._services.connections_service import ConnectionsService
7+
from uipath._utils.constants import HEADER_USER_AGENT
8+
from uipath.models import Connection, ConnectionToken
9+
10+
11+
@pytest.fixture
12+
def service(
13+
config: Config, execution_context: ExecutionContext, monkeypatch: pytest.MonkeyPatch
14+
) -> ConnectionsService:
15+
monkeypatch.setenv("UIPATH_FOLDER_PATH", "test-folder-path")
16+
return ConnectionsService(config=config, execution_context=execution_context)
17+
18+
19+
class TestConnectionsService:
20+
def test_retrieve(
21+
self,
22+
httpx_mock: HTTPXMock,
23+
service: ConnectionsService,
24+
base_url: str,
25+
org: str,
26+
tenant: str,
27+
version: str,
28+
) -> None:
29+
connection_key = "test-connection"
30+
httpx_mock.add_response(
31+
url=f"{base_url}{org}{tenant}/connections_/api/v1/Connections/{connection_key}",
32+
status_code=200,
33+
json={
34+
"id": "test-id",
35+
"name": "Test Connection",
36+
"state": "active",
37+
"elementInstanceId": 123,
38+
},
39+
)
40+
41+
connection = service.retrieve(key=connection_key)
42+
43+
assert isinstance(connection, Connection)
44+
assert connection.id == "test-id"
45+
assert connection.name == "Test Connection"
46+
assert connection.state == "active"
47+
assert connection.element_instance_id == 123
48+
49+
sent_request = httpx_mock.get_request()
50+
if sent_request is None:
51+
raise Exception("No request was sent")
52+
53+
assert sent_request.method == "GET"
54+
assert (
55+
sent_request.url
56+
== f"{base_url}{org}{tenant}/connections_/api/v1/Connections/{connection_key}"
57+
)
58+
59+
assert HEADER_USER_AGENT in sent_request.headers
60+
assert (
61+
sent_request.headers[HEADER_USER_AGENT]
62+
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.ConnectionsService.retrieve/{version}"
63+
)
64+
65+
@pytest.mark.anyio
66+
async def test_retrieve_async(
67+
self,
68+
httpx_mock: HTTPXMock,
69+
service: ConnectionsService,
70+
base_url: str,
71+
org: str,
72+
tenant: str,
73+
version: str,
74+
) -> None:
75+
connection_key = "test-connection"
76+
httpx_mock.add_response(
77+
url=f"{base_url}{org}{tenant}/connections_/api/v1/Connections/{connection_key}",
78+
status_code=200,
79+
json={
80+
"id": "test-id",
81+
"name": "Test Connection",
82+
"state": "active",
83+
"elementInstanceId": 123,
84+
},
85+
)
86+
87+
connection = await service.retrieve_async(key=connection_key)
88+
89+
assert isinstance(connection, Connection)
90+
assert connection.id == "test-id"
91+
assert connection.name == "Test Connection"
92+
assert connection.state == "active"
93+
assert connection.element_instance_id == 123
94+
95+
sent_request = httpx_mock.get_request()
96+
if sent_request is None:
97+
raise Exception("No request was sent")
98+
99+
assert sent_request.method == "GET"
100+
assert (
101+
sent_request.url
102+
== f"{base_url}{org}{tenant}/connections_/api/v1/Connections/{connection_key}"
103+
)
104+
105+
assert HEADER_USER_AGENT in sent_request.headers
106+
assert (
107+
sent_request.headers[HEADER_USER_AGENT]
108+
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.ConnectionsService.retrieve_async/{version}"
109+
)
110+
111+
def test_retrieve_token(
112+
self,
113+
httpx_mock: HTTPXMock,
114+
service: ConnectionsService,
115+
base_url: str,
116+
org: str,
117+
tenant: str,
118+
version: str,
119+
) -> None:
120+
connection_key = "test-connection"
121+
httpx_mock.add_response(
122+
url=f"{base_url}{org}{tenant}/connections_/api/v1/Connections/{connection_key}/token?type=direct",
123+
status_code=200,
124+
json={
125+
"accessToken": "test-token",
126+
"tokenType": "Bearer",
127+
"expiresIn": 3600,
128+
},
129+
)
130+
131+
token = service.retrieve_token(key=connection_key)
132+
133+
assert isinstance(token, ConnectionToken)
134+
assert token.access_token == "test-token"
135+
assert token.token_type == "Bearer"
136+
assert token.expires_in == 3600
137+
138+
sent_request = httpx_mock.get_request()
139+
if sent_request is None:
140+
raise Exception("No request was sent")
141+
142+
assert sent_request.method == "GET"
143+
assert (
144+
sent_request.url
145+
== f"{base_url}{org}{tenant}/connections_/api/v1/Connections/{connection_key}/token?type=direct"
146+
)
147+
148+
assert HEADER_USER_AGENT in sent_request.headers
149+
assert (
150+
sent_request.headers[HEADER_USER_AGENT]
151+
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.ConnectionsService.retrieve_token/{version}"
152+
)
153+
154+
@pytest.mark.anyio
155+
async def test_retrieve_token_async(
156+
self,
157+
httpx_mock: HTTPXMock,
158+
service: ConnectionsService,
159+
base_url: str,
160+
org: str,
161+
tenant: str,
162+
version: str,
163+
) -> None:
164+
connection_key = "test-connection"
165+
httpx_mock.add_response(
166+
url=f"{base_url}{org}{tenant}/connections_/api/v1/Connections/{connection_key}/token?type=direct",
167+
status_code=200,
168+
json={
169+
"accessToken": "test-token",
170+
"tokenType": "Bearer",
171+
"expiresIn": 3600,
172+
},
173+
)
174+
175+
token = await service.retrieve_token_async(key=connection_key)
176+
177+
assert isinstance(token, ConnectionToken)
178+
assert token.access_token == "test-token"
179+
assert token.token_type == "Bearer"
180+
assert token.expires_in == 3600
181+
182+
sent_request = httpx_mock.get_request()
183+
if sent_request is None:
184+
raise Exception("No request was sent")
185+
186+
assert sent_request.method == "GET"
187+
assert (
188+
sent_request.url
189+
== f"{base_url}{org}{tenant}/connections_/api/v1/Connections/{connection_key}/token?type=direct"
190+
)
191+
192+
assert HEADER_USER_AGENT in sent_request.headers
193+
assert (
194+
sent_request.headers[HEADER_USER_AGENT]
195+
== f"UiPath.Python.Sdk/UiPath.Python.Sdk.Activities.ConnectionsService.retrieve_token_async/{version}"
196+
)

0 commit comments

Comments
 (0)