15
15
16
16
using System ;
17
17
using System . Text . Json ;
18
+ using System . Threading . Tasks ;
18
19
using Dapr . Client ;
19
20
using Microsoft . Extensions . DependencyInjection ;
20
21
using Xunit ;
21
22
22
- namespace Dapr . AspNetCore . Test
23
+ namespace Dapr . AspNetCore . Test ;
24
+
25
+ public class DaprServiceCollectionExtensionsTest
23
26
{
24
- public class DaprServiceCollectionExtensionsTest
27
+ [ Fact ]
28
+ public void AddDaprClient_RegistersDaprClientOnlyOnce ( )
25
29
{
26
- [ Fact ]
27
- public void AddDaprClient_RegistersDaprClientOnlyOnce ( )
28
- {
29
- var services = new ServiceCollection ( ) ;
30
+ var services = new ServiceCollection ( ) ;
30
31
31
- var clientBuilder = new Action < DaprClientBuilder > (
32
- builder => builder . UseJsonSerializationOptions (
33
- new JsonSerializerOptions ( )
34
- {
35
- PropertyNameCaseInsensitive = false
36
- }
37
- )
38
- ) ;
32
+ var clientBuilder = new Action < DaprClientBuilder > (
33
+ builder => builder . UseJsonSerializationOptions (
34
+ new JsonSerializerOptions ( )
35
+ {
36
+ PropertyNameCaseInsensitive = false
37
+ }
38
+ )
39
+ ) ;
39
40
40
- // register with JsonSerializerOptions.PropertyNameCaseInsensitive = true (default)
41
- services . AddDaprClient ( ) ;
41
+ // register with JsonSerializerOptions.PropertyNameCaseInsensitive = true (default)
42
+ services . AddDaprClient ( ) ;
42
43
43
- // register with PropertyNameCaseInsensitive = false
44
- services . AddDaprClient ( clientBuilder ) ;
44
+ // register with PropertyNameCaseInsensitive = false
45
+ services . AddDaprClient ( clientBuilder ) ;
45
46
46
- var serviceProvider = services . BuildServiceProvider ( ) ;
47
+ var serviceProvider = services . BuildServiceProvider ( ) ;
47
48
48
- DaprClientGrpc ? daprClient = serviceProvider . GetService < DaprClient > ( ) as DaprClientGrpc ;
49
+ DaprClientGrpc ? daprClient = serviceProvider . GetService < DaprClient > ( ) as DaprClientGrpc ;
49
50
50
- Assert . NotNull ( daprClient ) ;
51
- Assert . True ( daprClient ? . JsonSerializerOptions . PropertyNameCaseInsensitive ) ;
52
- }
51
+ Assert . NotNull ( daprClient ) ;
52
+ Assert . True ( daprClient ? . JsonSerializerOptions . PropertyNameCaseInsensitive ) ;
53
+ }
53
54
54
- [ Fact ]
55
- public void AddDaprClient_RegistersUsingDependencyFromIServiceProvider ( )
55
+ [ Fact ]
56
+ public void AddDaprClient_RegistersUsingDependencyFromIServiceProvider ( )
57
+ {
58
+
59
+ var services = new ServiceCollection ( ) ;
60
+ services . AddSingleton < TestConfigurationProvider > ( ) ;
61
+ services . AddDaprClient ( ( provider , builder ) =>
56
62
{
63
+ var configProvider = provider . GetRequiredService < TestConfigurationProvider > ( ) ;
64
+ var caseSensitivity = configProvider . GetCaseSensitivity ( ) ;
57
65
58
- var services = new ServiceCollection ( ) ;
59
- services . AddSingleton < TestConfigurationProvider > ( ) ;
60
- services . AddDaprClient ( ( provider , builder ) =>
66
+ builder . UseJsonSerializationOptions ( new JsonSerializerOptions
61
67
{
62
- var configProvider = provider . GetRequiredService < TestConfigurationProvider > ( ) ;
63
- var caseSensitivity = configProvider . GetCaseSensitivity ( ) ;
64
-
65
- builder . UseJsonSerializationOptions ( new JsonSerializerOptions
66
- {
67
- PropertyNameCaseInsensitive = caseSensitivity
68
- } ) ;
68
+ PropertyNameCaseInsensitive = caseSensitivity
69
69
} ) ;
70
+ } ) ;
70
71
71
- var serviceProvider = services . BuildServiceProvider ( ) ;
72
+ var serviceProvider = services . BuildServiceProvider ( ) ;
72
73
73
- DaprClientGrpc ? client = serviceProvider . GetRequiredService < DaprClient > ( ) as DaprClientGrpc ;
74
+ DaprClientGrpc ? client = serviceProvider . GetRequiredService < DaprClient > ( ) as DaprClientGrpc ;
74
75
75
- //Registers with case-insensitive as true by default, but we set as false above
76
- Assert . NotNull ( client ) ;
77
- Assert . False ( client ? . JsonSerializerOptions . PropertyNameCaseInsensitive ) ;
78
- }
76
+ //Registers with case-insensitive as true by default, but we set as false above
77
+ Assert . NotNull ( client ) ;
78
+ Assert . False ( client ? . JsonSerializerOptions . PropertyNameCaseInsensitive ) ;
79
+ }
80
+
81
+ [ Fact ]
82
+ public void RegisterClient_ShouldRegisterSingleton_WhenLifetimeIsSingleton ( )
83
+ {
84
+ var services = new ServiceCollection ( ) ;
85
+
86
+ services . AddDaprClient ( options => { } , ServiceLifetime . Singleton ) ;
87
+ var serviceProvider = services . BuildServiceProvider ( ) ;
88
+
89
+ var daprClient1 = serviceProvider . GetService < DaprClient > ( ) ;
90
+ var daprClient2 = serviceProvider . GetService < DaprClient > ( ) ;
91
+
92
+ Assert . NotNull ( daprClient1 ) ;
93
+ Assert . NotNull ( daprClient2 ) ;
94
+
95
+ Assert . Same ( daprClient1 , daprClient2 ) ;
96
+ }
97
+
98
+ [ Fact ]
99
+ public async Task RegisterDaprClient_ShouldRegisterScoped_WhenLifetimeIsScoped ( )
100
+ {
101
+ var services = new ServiceCollection ( ) ;
102
+
103
+ services . AddDaprClient ( options => { } , ServiceLifetime . Scoped ) ;
104
+ var serviceProvider = services . BuildServiceProvider ( ) ;
105
+
106
+ await using var scope1 = serviceProvider . CreateAsyncScope ( ) ;
107
+ var daprClient1 = scope1 . ServiceProvider . GetService < DaprClient > ( ) ;
108
+
109
+ await using var scope2 = serviceProvider . CreateAsyncScope ( ) ;
110
+ var daprClient2 = scope2 . ServiceProvider . GetService < DaprClient > ( ) ;
111
+
112
+ Assert . NotNull ( daprClient1 ) ;
113
+ Assert . NotNull ( daprClient2 ) ;
114
+ Assert . NotSame ( daprClient1 , daprClient2 ) ;
115
+ }
116
+
117
+ [ Fact ]
118
+ public void RegisterDaprClient_ShouldRegisterTransient_WhenLifetimeIsTransient ( )
119
+ {
120
+ var services = new ServiceCollection ( ) ;
121
+
122
+ services . AddDaprClient ( options => { } , ServiceLifetime . Transient ) ;
123
+ var serviceProvider = services . BuildServiceProvider ( ) ;
124
+
125
+ var daprClient1 = serviceProvider . GetService < DaprClient > ( ) ;
126
+ var daprClient2 = serviceProvider . GetService < DaprClient > ( ) ;
127
+
128
+ Assert . NotNull ( daprClient1 ) ;
129
+ Assert . NotNull ( daprClient2 ) ;
130
+ Assert . NotSame ( daprClient1 , daprClient2 ) ;
131
+ }
79
132
80
133
81
134
#if NET8_0_OR_GREATER
@@ -96,9 +149,8 @@ public void AddDaprClient_WithKeyedServices()
96
149
}
97
150
#endif
98
151
99
- private class TestConfigurationProvider
100
- {
101
- public bool GetCaseSensitivity ( ) => false ;
102
- }
152
+ private class TestConfigurationProvider
153
+ {
154
+ public bool GetCaseSensitivity ( ) => false ;
103
155
}
104
156
}
0 commit comments