|
30 | 30 | //---------------------------------------------------------------------------
|
31 | 31 |
|
32 | 32 | using System;
|
| 33 | +using System.Threading; |
33 | 34 | using System.Threading.Tasks;
|
34 | 35 | using RabbitMQ.Client;
|
35 | 36 | using Xunit;
|
@@ -129,60 +130,51 @@ public void TestDoNotRegisterWhenHasNoExpiry()
|
129 | 130 | [Fact]
|
130 | 131 | public async Task TestRefreshToken()
|
131 | 132 | {
|
132 |
| - var cbtcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously); |
133 |
| - bool? callbackArg = null; |
134 |
| - var credentialsProvider = new MockCredentialsProvider(_testOutputHelper, TimeSpan.FromSeconds(1)); |
135 |
| - Task cb(bool arg) |
| 133 | + var tcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously); |
| 134 | + using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5))) |
136 | 135 | {
|
137 |
| - callbackArg = arg; |
138 |
| - cbtcs.SetResult(true); |
139 |
| - return Task.CompletedTask; |
140 |
| - } |
141 |
| - |
142 |
| - try |
143 |
| - { |
144 |
| - _refresher.Register(credentialsProvider, cb); |
145 |
| - |
146 |
| - await cbtcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); |
147 |
| - Assert.True(await cbtcs.Task); |
148 |
| - |
149 |
| - Assert.True(credentialsProvider.RefreshCalled); |
150 |
| - Assert.True(callbackArg); |
151 |
| - } |
152 |
| - finally |
153 |
| - { |
154 |
| - Assert.True(_refresher.Unregister(credentialsProvider)); |
| 136 | + using (CancellationTokenRegistration ctr = cts.Token.Register(() => tcs.TrySetCanceled())) |
| 137 | + { |
| 138 | + var credentialsProvider = new MockCredentialsProvider(_testOutputHelper, TimeSpan.FromSeconds(1)); |
| 139 | + |
| 140 | + Task cb(bool arg) |
| 141 | + { |
| 142 | + tcs.SetResult(arg); |
| 143 | + return Task.CompletedTask; |
| 144 | + } |
| 145 | + |
| 146 | + _refresher.Register(credentialsProvider, cb); |
| 147 | + Assert.True(await tcs.Task); |
| 148 | + Assert.True(credentialsProvider.RefreshCalled); |
| 149 | + Assert.True(_refresher.Unregister(credentialsProvider)); |
| 150 | + } |
155 | 151 | }
|
156 | 152 | }
|
157 | 153 |
|
158 | 154 | [Fact]
|
159 | 155 | public async Task TestRefreshTokenFailed()
|
160 | 156 | {
|
161 |
| - var cbtcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously); |
162 |
| - bool? callbackArg = null; |
163 |
| - var credentialsProvider = new MockCredentialsProvider(_testOutputHelper, TimeSpan.FromSeconds(1)); |
164 |
| - Task cb(bool arg) |
| 157 | + var tcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously); |
| 158 | + using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5))) |
165 | 159 | {
|
166 |
| - callbackArg = arg; |
167 |
| - cbtcs.SetResult(true); |
168 |
| - return Task.CompletedTask; |
169 |
| - } |
| 160 | + using (CancellationTokenRegistration ctr = cts.Token.Register(() => tcs.TrySetCanceled())) |
| 161 | + { |
| 162 | + var credentialsProvider = new MockCredentialsProvider(_testOutputHelper, TimeSpan.FromSeconds(1)); |
170 | 163 |
|
171 |
| - var ex = new Exception(); |
172 |
| - credentialsProvider.PasswordThrows(ex); |
| 164 | + Task cb(bool arg) |
| 165 | + { |
| 166 | + tcs.SetResult(arg); |
| 167 | + return Task.CompletedTask; |
| 168 | + } |
173 | 169 |
|
174 |
| - try |
175 |
| - { |
176 |
| - _refresher.Register(credentialsProvider, cb); |
177 |
| - await cbtcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); |
178 |
| - Assert.True(await cbtcs.Task); |
| 170 | + var ex = new Exception(); |
| 171 | + credentialsProvider.PasswordThrows(ex); |
179 | 172 |
|
180 |
| - Assert.True(credentialsProvider.RefreshCalled); |
181 |
| - Assert.False(callbackArg); |
182 |
| - } |
183 |
| - finally |
184 |
| - { |
185 |
| - Assert.True(_refresher.Unregister(credentialsProvider)); |
| 173 | + _refresher.Register(credentialsProvider, cb); |
| 174 | + Assert.False(await tcs.Task); |
| 175 | + Assert.True(credentialsProvider.RefreshCalled); |
| 176 | + Assert.True(_refresher.Unregister(credentialsProvider)); |
| 177 | + } |
186 | 178 | }
|
187 | 179 | }
|
188 | 180 | }
|
|
0 commit comments