|
1 | 1 | using System; |
| 2 | +using System.Configuration; |
2 | 3 | using System.Diagnostics; |
3 | 4 | using System.IO; |
4 | 5 | using System.Linq; |
@@ -174,97 +175,98 @@ public async Task TestOAuth10_PlainText(Type factoryType) |
174 | 175 |
|
175 | 176 | private async Task TestOAuth10(IHttpClientFactory httpClientFactory, ISignatureProvider signatureProvider) |
176 | 177 | { |
177 | | - var client = new RestClient("http://oauthbin.com/v1/") |
| 178 | + using (var client = new RestClient("http://oauthbin.com/v1/") |
178 | 179 | { |
179 | 180 | HttpClientFactory = httpClientFactory, |
180 | | - }; |
181 | | - |
182 | | - var consumerKey = "key"; |
183 | | - var consumerSecret = "secret"; |
184 | | - |
185 | | - var authenticator = OAuth1Authenticator.ForRequestToken(consumerKey, consumerSecret, "http://localhost/test"); |
186 | | - authenticator.SignatureProvider = signatureProvider; |
187 | | - client.Authenticator = authenticator; |
188 | | - |
189 | | - string requestToken, requestTokenSecret; |
190 | | - |
191 | | - { |
192 | | - var request = new RestRequest("request-token"); |
193 | | - var response = await client.Execute(request); |
194 | | - var requestTokenResponse = Encoding.UTF8.GetString(response.RawBytes); |
195 | | - Assert.DoesNotContain('\n', requestTokenResponse); |
196 | | - |
197 | | - var tokenInfo = (from part in requestTokenResponse.Split('&') |
198 | | - let equalSignPos = part.IndexOf('=') |
199 | | - let partKey = part.Substring(0, equalSignPos) |
200 | | - let partValue = part.Substring(equalSignPos + 1) |
201 | | - select new |
202 | | - { |
203 | | - partKey, |
204 | | - partValue |
205 | | - }).ToDictionary(x => x.partKey, x => x.partValue); |
206 | | - |
207 | | - Assert.Contains("oauth_token", tokenInfo.Keys); |
208 | | - Assert.Contains("oauth_token_secret", tokenInfo.Keys); |
209 | | - |
210 | | - requestToken = tokenInfo["oauth_token"]; |
211 | | - requestTokenSecret = tokenInfo["oauth_token_secret"]; |
212 | | - } |
213 | | - |
214 | | - authenticator = OAuth1Authenticator.ForAccessToken(consumerKey, consumerSecret, requestToken, requestTokenSecret); |
215 | | - authenticator.SignatureProvider = signatureProvider; |
216 | | - client.Authenticator = authenticator; |
217 | | - |
218 | | - string accessKey, accessSecret; |
219 | | - |
220 | | - { |
221 | | - var request = new RestRequest("access-token"); |
222 | | - var response = await client.Execute(request); |
223 | | - var accessTokenResponse = Encoding.UTF8.GetString(response.RawBytes); |
224 | | - Assert.DoesNotContain('\n', accessTokenResponse); |
225 | | - |
226 | | - var tokenInfo = (from part in accessTokenResponse.Split('&') |
227 | | - let equalSignPos = part.IndexOf('=') |
228 | | - let partKey = part.Substring(0, equalSignPos) |
229 | | - let partValue = part.Substring(equalSignPos + 1) |
230 | | - select new |
231 | | - { |
232 | | - partKey, |
233 | | - partValue |
234 | | - }).ToDictionary(x => x.partKey, x => x.partValue); |
235 | | - |
236 | | - Assert.Contains("oauth_token", tokenInfo.Keys); |
237 | | - Assert.Contains("oauth_token_secret", tokenInfo.Keys); |
238 | | - |
239 | | - accessKey = tokenInfo["oauth_token"]; |
240 | | - accessSecret = tokenInfo["oauth_token_secret"]; |
241 | | - } |
242 | | - |
243 | | - authenticator = OAuth1Authenticator.ForProtectedResource(consumerKey, consumerSecret, accessKey, accessSecret); |
244 | | - authenticator.SignatureProvider = signatureProvider; |
245 | | - client.Authenticator = authenticator; |
246 | | - |
| 181 | + }) |
247 | 182 | { |
248 | | - var request = new RestRequest("echo", Method.POST); |
249 | | - request.AddParameter("one", "1"); |
250 | | - request.AddParameter("two", "2"); |
251 | | - var response = await client.Execute(request); |
252 | | - var text = Encoding.UTF8.GetString(response.RawBytes); |
253 | | - Assert.DoesNotContain('\n', text); |
254 | | - |
255 | | - var data = (from part in text.Split('&') |
256 | | - let equalSignPos = part.IndexOf('=') |
257 | | - let partKey = part.Substring(0, equalSignPos) |
258 | | - let partValue = part.Substring(equalSignPos + 1) |
259 | | - select new |
260 | | - { |
261 | | - partKey, |
262 | | - partValue |
263 | | - }).ToDictionary(x => x.partKey, x => x.partValue); |
264 | | - Assert.Contains("one", data.Keys); |
265 | | - Assert.Contains("two", data.Keys); |
266 | | - Assert.Equal("1", data["one"]); |
267 | | - Assert.Equal("2", data["two"]); |
| 183 | + var consumerKey = "key"; |
| 184 | + var consumerSecret = "secret"; |
| 185 | + |
| 186 | + var authenticator = OAuth1Authenticator.ForRequestToken(consumerKey, consumerSecret, "http://localhost/test"); |
| 187 | + authenticator.SignatureProvider = signatureProvider; |
| 188 | + client.Authenticator = authenticator; |
| 189 | + |
| 190 | + string requestToken, requestTokenSecret; |
| 191 | + |
| 192 | + { |
| 193 | + var request = new RestRequest("request-token"); |
| 194 | + var response = await client.Execute(request); |
| 195 | + var requestTokenResponse = Encoding.UTF8.GetString(response.RawBytes); |
| 196 | + Assert.DoesNotContain('\n', requestTokenResponse); |
| 197 | + |
| 198 | + var tokenInfo = (from part in requestTokenResponse.Split('&') |
| 199 | + let equalSignPos = part.IndexOf('=') |
| 200 | + let partKey = part.Substring(0, equalSignPos) |
| 201 | + let partValue = part.Substring(equalSignPos + 1) |
| 202 | + select new |
| 203 | + { |
| 204 | + partKey, |
| 205 | + partValue |
| 206 | + }).ToDictionary(x => x.partKey, x => x.partValue); |
| 207 | + |
| 208 | + Assert.Contains("oauth_token", tokenInfo.Keys); |
| 209 | + Assert.Contains("oauth_token_secret", tokenInfo.Keys); |
| 210 | + |
| 211 | + requestToken = tokenInfo["oauth_token"]; |
| 212 | + requestTokenSecret = tokenInfo["oauth_token_secret"]; |
| 213 | + } |
| 214 | + |
| 215 | + authenticator = OAuth1Authenticator.ForAccessToken(consumerKey, consumerSecret, requestToken, requestTokenSecret); |
| 216 | + authenticator.SignatureProvider = signatureProvider; |
| 217 | + client.Authenticator = authenticator; |
| 218 | + |
| 219 | + string accessKey, accessSecret; |
| 220 | + |
| 221 | + { |
| 222 | + var request = new RestRequest("access-token"); |
| 223 | + var response = await client.Execute(request); |
| 224 | + var accessTokenResponse = Encoding.UTF8.GetString(response.RawBytes); |
| 225 | + Assert.DoesNotContain('\n', accessTokenResponse); |
| 226 | + |
| 227 | + var tokenInfo = (from part in accessTokenResponse.Split('&') |
| 228 | + let equalSignPos = part.IndexOf('=') |
| 229 | + let partKey = part.Substring(0, equalSignPos) |
| 230 | + let partValue = part.Substring(equalSignPos + 1) |
| 231 | + select new |
| 232 | + { |
| 233 | + partKey, |
| 234 | + partValue |
| 235 | + }).ToDictionary(x => x.partKey, x => x.partValue); |
| 236 | + |
| 237 | + Assert.Contains("oauth_token", tokenInfo.Keys); |
| 238 | + Assert.Contains("oauth_token_secret", tokenInfo.Keys); |
| 239 | + |
| 240 | + accessKey = tokenInfo["oauth_token"]; |
| 241 | + accessSecret = tokenInfo["oauth_token_secret"]; |
| 242 | + } |
| 243 | + |
| 244 | + authenticator = OAuth1Authenticator.ForProtectedResource(consumerKey, consumerSecret, accessKey, accessSecret); |
| 245 | + authenticator.SignatureProvider = signatureProvider; |
| 246 | + client.Authenticator = authenticator; |
| 247 | + |
| 248 | + { |
| 249 | + var request = new RestRequest("echo", Method.POST); |
| 250 | + request.AddParameter("one", "1"); |
| 251 | + request.AddParameter("two", "2"); |
| 252 | + var response = await client.Execute(request); |
| 253 | + var text = Encoding.UTF8.GetString(response.RawBytes); |
| 254 | + Assert.DoesNotContain('\n', text); |
| 255 | + |
| 256 | + var data = (from part in text.Split('&') |
| 257 | + let equalSignPos = part.IndexOf('=') |
| 258 | + let partKey = part.Substring(0, equalSignPos) |
| 259 | + let partValue = part.Substring(equalSignPos + 1) |
| 260 | + select new |
| 261 | + { |
| 262 | + partKey, |
| 263 | + partValue |
| 264 | + }).ToDictionary(x => x.partKey, x => x.partValue); |
| 265 | + Assert.Contains("one", data.Keys); |
| 266 | + Assert.Contains("two", data.Keys); |
| 267 | + Assert.Equal("1", data["one"]); |
| 268 | + Assert.Equal("2", data["two"]); |
| 269 | + } |
268 | 270 | } |
269 | 271 | } |
270 | 272 | } |
|
0 commit comments