@@ -43,60 +43,30 @@ public class MockCredentialsProvider : ICredentialsProvider
43
43
{
44
44
private readonly ITestOutputHelper _testOutputHelper ;
45
45
private readonly TimeSpan _validUntil ;
46
- // private Exception _ex = null;
47
- // private bool _refreshCalled = false;
46
+ private readonly Exception ? _maybeGetCredentialsException ;
48
47
49
- public MockCredentialsProvider ( ITestOutputHelper testOutputHelper , TimeSpan validUntil )
48
+ public MockCredentialsProvider ( ITestOutputHelper testOutputHelper , TimeSpan validUntil ,
49
+ Exception ? maybeGetCredentialsException = null )
50
50
{
51
51
_testOutputHelper = testOutputHelper ;
52
52
_validUntil = validUntil ;
53
+ _maybeGetCredentialsException = maybeGetCredentialsException ;
53
54
}
54
55
55
56
public string Name => GetType ( ) . Name ;
56
- /*
57
- public bool RefreshCalled
57
+
58
+ public Task < Credentials > GetCredentialsAsync ( CancellationToken cancellationToken = default )
58
59
{
59
- get
60
+ if ( _maybeGetCredentialsException is null )
60
61
{
61
- return _refreshCalled;
62
+ var creds = new Credentials ( this . GetType ( ) . Name , "guest" , "guest" , _validUntil ) ;
63
+ return Task . FromResult ( creds ) ;
62
64
}
63
- }
64
-
65
- public string UserName => "guest";
66
-
67
- public string Password
68
- {
69
- get
65
+ else
70
66
{
71
- if (_ex == null)
72
- {
73
- return "guest";
74
- }
75
- else
76
- {
77
- throw _ex;
78
- }
67
+ throw _maybeGetCredentialsException ;
79
68
}
80
69
}
81
-
82
- public TimeSpan? ValidUntil => _validUntil;
83
-
84
- public void Refresh()
85
- {
86
- _refreshCalled = true;
87
- }
88
-
89
- public void PasswordThrows(Exception ex)
90
- {
91
- _ex = ex;
92
- }
93
- */
94
-
95
- public Task < Credentials > GetCredentialsAsync ( CancellationToken cancellationToken = default )
96
- {
97
- var creds = new Credentials ( this . GetType ( ) . Name , "guest" , "guest" , _validUntil ) ;
98
- return Task . FromResult ( creds ) ;
99
- }
100
70
}
101
71
102
72
public class TestCredentialsRefresher
@@ -113,7 +83,7 @@ public async Task TestRefreshToken()
113
83
{
114
84
var expectedValidUntil = TimeSpan . FromSeconds ( 1 ) ;
115
85
var tcs = new TaskCompletionSource < Credentials > ( TaskCreationOptions . RunContinuationsAsynchronously ) ;
116
- var credentialsProvider = new MockCredentialsProvider ( _testOutputHelper , TimeSpan . FromSeconds ( 1 ) ) ;
86
+ var credentialsProvider = new MockCredentialsProvider ( _testOutputHelper , expectedValidUntil ) ;
117
87
118
88
Task cb ( Credentials ? argCreds , Exception ? ex , CancellationToken argToken )
119
89
{
@@ -144,34 +114,49 @@ Task cb(Credentials? argCreds, Exception? ex, CancellationToken argToken)
144
114
Assert . Equal ( "guest" , credentials . Password ) ;
145
115
Assert . Equal ( expectedValidUntil , credentials . ValidUntil ) ;
146
116
}
147
- }
148
117
149
- /*
150
- [Fact]
151
- public async Task TestRefreshTokenFailed()
152
- {
153
- var tcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
154
- using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5)))
118
+ [ Fact ]
119
+ public async Task TestRefreshTokenFailed ( )
155
120
{
156
- using (CancellationTokenRegistration ctr = cts.Token.Register(() => tcs.TrySetCanceled()))
121
+ string exceptionMessage = nameof ( TestCredentialsRefresher ) ;
122
+ var expectedException = new Exception ( exceptionMessage ) ;
123
+
124
+ var expectedValidUntil = TimeSpan . FromSeconds ( 1 ) ;
125
+ var tcs = new TaskCompletionSource < Credentials ? > ( TaskCreationOptions . RunContinuationsAsynchronously ) ;
126
+ var credentialsProvider = new MockCredentialsProvider ( _testOutputHelper , expectedValidUntil , expectedException ) ;
127
+
128
+ ushort callbackCount = 0 ;
129
+ Task cb ( Credentials ? argCreds , Exception ? ex , CancellationToken argToken )
157
130
{
158
- var credentialsProvider = new MockCredentialsProvider(_testOutputHelper, TimeSpan.FromSeconds(1)) ;
131
+ callbackCount ++ ;
159
132
160
- Task cb(bool arg )
133
+ if ( ex != null )
161
134
{
162
- tcs.SetResult(arg);
163
- return Task.CompletedTask;
135
+ tcs . SetException ( ex ) ;
164
136
}
165
137
166
- var ex = new Exception() ;
167
- credentialsProvider.PasswordThrows(ex);
138
+ return Task . CompletedTask ;
139
+ }
168
140
169
- _credentialRefresher.Register(credentialsProvider, cb);
170
- Assert.False(await tcs.Task);
171
- Assert.True(credentialsProvider.RefreshCalled);
172
- Assert.True(_credentialRefresher.Unregister(credentialsProvider));
141
+ Credentials ? credentials = null ;
142
+ using ( var cts = new CancellationTokenSource ( TimeSpan . FromSeconds ( 5 ) ) )
143
+ {
144
+ using ( CancellationTokenRegistration ctr = cts . Token . Register ( ( ) => tcs . TrySetCanceled ( ) ) )
145
+ {
146
+ var credentialRefresher = new CredentialsRefresher ( credentialsProvider , cb , cts . Token ) ;
147
+ try
148
+ {
149
+ credentials = await tcs . Task ;
150
+ }
151
+ catch ( Exception ex )
152
+ {
153
+ Assert . Same ( expectedException , ex ) ;
154
+ }
155
+ }
173
156
}
157
+
158
+ Assert . Null ( credentials ) ;
159
+ Assert . Equal ( 1 , callbackCount ) ;
174
160
}
175
161
}
176
- */
177
162
}
0 commit comments