Skip to content

Commit 9c1b19e

Browse files
committed
Update tests
1 parent 13147d3 commit 9c1b19e

File tree

3 files changed

+70
-69
lines changed

3 files changed

+70
-69
lines changed

tests/unit/test_graph_client.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,6 @@ def test_initialize_graph_client_both_token_provider_and_custom_middleware(mock_
4545
graph_client = GraphClient(token_provider=mock_token_provider, middleware=middleware)
4646

4747

48-
def test_initialize_graph_client_without_token_provider_or_custom_middleware():
49-
"""
50-
Test creating a graph client with default middleware works as expected
51-
"""
52-
53-
with pytest.raises(Exception):
54-
graph_client = GraphClient()
55-
56-
5748
def test_graph_client_with_custom_configuration(mock_token_provider):
5849
"""
5950
Test creating a graph client with custom middleware works as expected
@@ -75,3 +66,15 @@ def test_graph_client_uses_same_session(mock_token_provider):
7566

7667
graph_client2 = GraphClient(token_provider=mock_token_provider)
7768
assert graph_client1 is graph_client2
69+
70+
71+
def test_get_base_url():
72+
"""
73+
Test base url is formed by combining the national cloud endpoint with
74+
Api version
75+
"""
76+
url = GraphClient()._get_base_url(
77+
base_url=NationalClouds.Germany,
78+
api_version=APIVersion.beta,
79+
)
80+
assert url == f'{NationalClouds.Germany}/{APIVersion.beta}'

tests/unit/test_graph_client_factory.py

Lines changed: 32 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -10,84 +10,56 @@
1010
from msgraph.core._constants import DEFAULT_CONNECTION_TIMEOUT, DEFAULT_REQUEST_TIMEOUT
1111
from msgraph.core.middleware import GraphAuthorizationHandler
1212
from msgraph.core.middleware.middleware import GraphMiddlewarePipeline
13+
from msgraph.core.middleware.redirect import GraphRedirectHandler
14+
from msgraph.core.middleware.retry import GraphRetryHandler
15+
from msgraph.core.middleware.telemetry import GraphTelemetryHandler
1316

1417

15-
def test_initialize_with_custom_config():
16-
"""Test creation of HTTP Client will use custom configuration if they are passed"""
17-
client = GraphClientFactory(
18-
api_version=APIVersion.beta, base_url=NationalClouds.Global, timeout=(5, 5), client=None
19-
)
18+
def test_create_with_default_middleware_no_auth_provider():
19+
"""Test creation of GraphClient without a token provider does not
20+
add the Authorization middleware"""
21+
client = GraphClientFactory.create_with_default_middleware(client=httpx.AsyncClient())
2022

21-
assert client.api_version == APIVersion.beta
22-
assert client.base_url == NationalClouds.Global
23-
assert client.timeout == (5, 5)
24-
assert not isinstance(client.client, httpx.AsyncClient)
23+
assert isinstance(client, httpx.AsyncClient)
24+
assert isinstance(client._transport, AsyncKiotaTransport)
25+
pipeline = client._transport.middleware
26+
assert isinstance(pipeline, GraphMiddlewarePipeline)
27+
assert not isinstance(pipeline._first_middleware, GraphAuthorizationHandler)
2528

2629

2730
def test_create_with_default_middleware(mock_token_provider):
28-
"""Test creation of GraphClient using default middleware"""
29-
client = GraphClientFactory(
30-
api_version=APIVersion.beta,
31-
timeout=httpx.Timeout(
32-
5,
33-
connect=5,
34-
),
35-
base_url=NationalClouds.Global,
36-
client=None
37-
).create_with_default_middleware(token_provider=mock_token_provider)
31+
"""Test creation of GraphClient using default middleware and passing a token
32+
provider adds Authorization middleware"""
33+
client = GraphClientFactory.create_with_default_middleware(
34+
client=httpx.AsyncClient(), token_provider=mock_token_provider
35+
)
3836

3937
assert isinstance(client, httpx.AsyncClient)
4038
assert isinstance(client._transport, AsyncKiotaTransport)
41-
assert str(client.base_url) == f'{NationalClouds.Global}/{APIVersion.beta}/'
39+
pipeline = client._transport.middleware
40+
assert isinstance(pipeline, GraphMiddlewarePipeline)
41+
assert isinstance(pipeline._first_middleware, GraphAuthorizationHandler)
4242

4343

4444
def test_create_with_custom_middleware(mock_token_provider):
4545
"""Test creation of HTTP Clients with custom middleware"""
4646
middleware = [
47-
GraphAuthorizationHandler(mock_token_provider),
47+
GraphTelemetryHandler(),
4848
]
49-
client = GraphClientFactory(
50-
api_version=APIVersion.v1,
51-
timeout=httpx.Timeout(
52-
5,
53-
connect=5,
54-
),
55-
base_url=NationalClouds.Global,
56-
client=None
57-
).create_with_custom_middleware(middleware=middleware)
49+
client = GraphClientFactory.create_with_custom_middleware(
50+
client=httpx.AsyncClient(), middleware=middleware
51+
)
5852

5953
assert isinstance(client, httpx.AsyncClient)
6054
assert isinstance(client._transport, AsyncKiotaTransport)
61-
assert str(client.base_url) == f'{NationalClouds.Global}/{APIVersion.v1}/'
55+
pipeline = client._transport.middleware
56+
assert isinstance(pipeline._first_middleware, GraphTelemetryHandler)
6257

6358

64-
def test_get_base_url():
65-
"""
66-
Test base url is formed by combining the national cloud endpoint with
67-
Api version
68-
"""
69-
client = GraphClientFactory(
70-
api_version=APIVersion.beta,
71-
base_url=NationalClouds.Germany,
72-
timeout=httpx.Timeout(
73-
5,
74-
connect=5,
75-
),
76-
client=None
77-
)
78-
assert client._get_base_url() == f'{NationalClouds.Germany}/{APIVersion.beta}'
79-
80-
81-
def test_get_default_middleware(mock_token_provider):
82-
client = GraphClientFactory(
83-
api_version=APIVersion.beta,
84-
base_url=NationalClouds.Germany,
85-
timeout=httpx.Timeout(
86-
5,
87-
connect=5,
88-
),
89-
client=None
90-
)
91-
middleware = client._get_default_middleware(mock_token_provider, httpx.AsyncClient()._transport)
59+
def test_get_common_middleware():
60+
middleware = GraphClientFactory._get_common_middleware()
9261

93-
assert isinstance(middleware, GraphMiddlewarePipeline)
62+
assert len(middleware) == 3
63+
assert isinstance(middleware[0], GraphRedirectHandler)
64+
assert isinstance(middleware[1], GraphRetryHandler)
65+
assert isinstance(middleware[2], GraphTelemetryHandler)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import httpx
2+
import pytest
3+
from asyncmock import AsyncMock
4+
from kiota_abstractions.serialization import (
5+
ParseNodeFactoryRegistry,
6+
SerializationWriterFactoryRegistry,
7+
)
8+
9+
from msgraph.core.graph_request_adapter import GraphRequestAdapter
10+
from tests.conftest import mock_token_provider
11+
12+
13+
def test_create_graph_request_adapter(mock_token_provider):
14+
request_adapter = GraphRequestAdapter(mock_token_provider)
15+
assert request_adapter._authentication_provider is mock_token_provider
16+
assert isinstance(request_adapter._parse_node_factory, ParseNodeFactoryRegistry)
17+
assert isinstance(
18+
request_adapter._serialization_writer_factory, SerializationWriterFactoryRegistry
19+
)
20+
assert isinstance(request_adapter._http_client, httpx.AsyncClient)
21+
assert request_adapter.base_url == ''
22+
23+
24+
def test_create_request_adapter_no_auth_provider():
25+
with pytest.raises(TypeError):
26+
GraphRequestAdapter(None)

0 commit comments

Comments
 (0)