@@ -74,6 +74,66 @@ public void TryAddServiceDontOverrideWhenAlreadySetup()
74
74
Assert . True ( s3 . GetType ( ) == mockS3 . GetType ( ) ) ;
75
75
}
76
76
77
+ [ Fact ]
78
+ public void CreateAWSOptionsByDIObjects ( )
79
+ {
80
+ RegionEndpoint expectRegion = RegionEndpoint . APSouth1 ;
81
+ string expectProfile = "MockProfile" ;
82
+
83
+ ServiceCollection services = new ServiceCollection ( ) ;
84
+ services . AddSingleton ( new AWSSetting ( ) {
85
+ Region = expectRegion ,
86
+ Profile = expectProfile
87
+ } ) ;
88
+
89
+ services . AddDefaultAWSOptions ( sp=> {
90
+ var setting = sp . GetRequiredService < AWSSetting > ( ) ;
91
+ return new AWSOptions ( )
92
+ {
93
+ Region = setting . Region ,
94
+ Profile = setting . Profile
95
+ } ;
96
+ } ) ;
97
+
98
+ var serviceProvider = services . BuildServiceProvider ( ) ;
99
+ var awsOptions = serviceProvider . GetRequiredService < AWSOptions > ( ) ;
100
+
101
+ Assert . NotNull ( awsOptions ) ;
102
+ Assert . Equal ( expectRegion , awsOptions . Region ) ;
103
+ Assert . Equal ( expectProfile , awsOptions . Profile ) ;
104
+ }
105
+
106
+ [ Fact ]
107
+ public void InjectS3ClientByDIConfigs ( )
108
+ {
109
+ RegionEndpoint expectRegion = RegionEndpoint . APSouth1 ;
110
+ string expectProfile = "MockProfile" ;
111
+
112
+ ServiceCollection services = new ServiceCollection ( ) ;
113
+ services . AddSingleton ( new AWSSetting ( )
114
+ {
115
+ Region = expectRegion ,
116
+ Profile = expectProfile
117
+ } ) ;
118
+
119
+ services . AddDefaultAWSOptions ( sp => {
120
+ var setting = sp . GetRequiredService < AWSSetting > ( ) ;
121
+ return new AWSOptions ( )
122
+ {
123
+ Region = setting . Region ,
124
+ Profile = setting . Profile
125
+ } ;
126
+ } ) ;
127
+
128
+ services . AddAWSService < IAmazonS3 > ( ) ;
129
+
130
+ var serviceProvider = services . BuildServiceProvider ( ) ;
131
+
132
+ var controller = ActivatorUtilities . CreateInstance < TestController > ( serviceProvider ) ;
133
+ Assert . NotNull ( controller . S3Client ) ;
134
+ Assert . Equal ( expectRegion , controller . S3Client . Config . RegionEndpoint ) ;
135
+ }
136
+
77
137
public class TestController
78
138
{
79
139
public IAmazonS3 S3Client { get ; private set ; }
@@ -82,5 +142,11 @@ public TestController(IAmazonS3 s3Client)
82
142
S3Client = s3Client ;
83
143
}
84
144
}
145
+
146
+ internal class AWSSetting {
147
+ public RegionEndpoint Region { get ; set ; }
148
+
149
+ public string Profile { get ; set ; }
150
+ }
85
151
}
86
152
}
0 commit comments