11using System ;
22using System . Collections . Generic ;
33using System . Runtime . Serialization ;
4+ using System . Threading . Tasks ;
45using Newtonsoft . Json . Linq ;
56using NUnit . Framework ;
67using WampSharp . Binding ;
@@ -25,7 +26,7 @@ public void AuthenticatorSendsDetailsToHello()
2526 new CustomAuthenticator
2627 {
2728 AuthenticationId = "peter" ,
28- AuthenticationMethods = new string [ ] { "ticket" }
29+ AuthenticationMethods = new string [ ] { "ticket" }
2930 } ;
3031
3132 HelloMock mock = new HelloMock ( ) ;
@@ -41,6 +42,7 @@ public void AuthenticatorSendsDetailsToHello()
4142
4243 channel . Open ( ) ;
4344
45+ mock . HelloCalled . Task . Wait ( ) ;
4446 IDictionary < string , ISerializedValue > deserializedDetails =
4547 mock . Details . OriginalValue . Deserialize < IDictionary < string , ISerializedValue > >
4648 ( ) ;
@@ -84,8 +86,9 @@ public void AuthenticatorGetsChallengeMessage()
8486
8587 channel . Open ( ) ;
8688
89+ authenticator . Authenticated . Task . Wait ( ) ;
8790 Assert . That ( authenticator . AuthMethod , Is . EqualTo ( "ticket" ) ) ;
88-
91+
8992 Assert . That ( authenticator . Extra . OriginalValue . Deserialize < MyChallengeDetails > ( ) ,
9093 Is . EqualTo ( myChallengeDetails ) ) ;
9194 }
@@ -101,13 +104,13 @@ public void AuthenticatorAuthenticateResultCallsAuthenticate()
101104 {
102105 return new AuthenticationResponse ( )
103106 {
104- Extra = new MyAuthenticateExtraData ( ) { Secret1 = 3 } ,
107+ Extra = new MyAuthenticateExtraData ( ) { Secret1 = 3 } ,
105108 Signature = "secretsignature"
106109 } ;
107110 } )
108111 {
109112 AuthenticationId = "peter" ,
110- AuthenticationMethods = new string [ ] { "ticket" }
113+ AuthenticationMethods = new string [ ] { "ticket" }
111114 } ;
112115
113116 AuthenticateMock mock = new AuthenticateMock ( "ticket" ) ;
@@ -123,10 +126,11 @@ public void AuthenticatorAuthenticateResultCallsAuthenticate()
123126
124127 channel . Open ( ) ;
125128
129+ mock . Authenticated . Task . Wait ( ) ;
126130 Assert . That ( mock . Signature ,
127131 Is . EqualTo ( "secretsignature" ) ) ;
128132
129- IDictionary < string , ISerializedValue > deserializedExtra =
133+ IDictionary < string , ISerializedValue > deserializedExtra =
130134 mock . Extra . OriginalValue . Deserialize < IDictionary < string , ISerializedValue > > ( ) ;
131135
132136 Assert . That ( deserializedExtra [ "secret1" ] . Deserialize < int > ( ) ,
@@ -166,7 +170,7 @@ public void AuthenticatorAuthenticateExceptionCallsAbort()
166170 jsonBinding ,
167171 authenticator ) ;
168172
169- channel . Open ( ) ;
173+ Assert . ThrowsAsync < WampAuthenticationException > ( channel . Open ) ;
170174
171175 Assert . That ( mock . Reason ,
172176 Is . EqualTo ( "some reason" ) ) ;
@@ -194,7 +198,7 @@ public override bool Equals(object obj)
194198 if ( ReferenceEquals ( null , obj ) ) return false ;
195199 if ( ReferenceEquals ( this , obj ) ) return true ;
196200 if ( obj . GetType ( ) != this . GetType ( ) ) return false ;
197- return Equals ( ( MyAbortDetails ) obj ) ;
201+ return Equals ( ( MyAbortDetails ) obj ) ;
198202 }
199203
200204 public override int GetHashCode ( )
@@ -221,6 +225,7 @@ public override void Abort(IWampSessionClient client, AbortDetails details, stri
221225
222226 private class AuthenticateMock : ChallengeMock
223227 {
228+ public TaskCompletionSource < int > Authenticated { get ; } = new TaskCompletionSource < int > ( ) ;
224229 public string Signature { get ; private set ; }
225230 public AuthenticateExtraData Extra { get ; private set ; }
226231
@@ -232,6 +237,7 @@ public override void Authenticate(IWampSessionClient client, string signature, A
232237 {
233238 Extra = extra ;
234239 Signature = signature ;
240+ Authenticated . SetResult ( 1 ) ;
235241 }
236242 }
237243
@@ -262,12 +268,14 @@ private class HelloMock : HelloMock<JToken>
262268
263269 private class HelloMock < TMessage > : MockServer < TMessage >
264270 {
271+ public TaskCompletionSource < int > HelloCalled { get ; } = new TaskCompletionSource < int > ( ) ;
265272
266273 public HelloDetails Details { get ; private set ; }
267274
268275 public override void Hello ( IWampSessionClient client , string realm , HelloDetails details )
269276 {
270277 Details = details ;
278+ HelloCalled . SetResult ( 0 ) ;
271279 }
272280 }
273281
@@ -392,8 +400,9 @@ public void Unsubscribe(IWampSubscriber subscriber, long requestId, long subscri
392400 private class CustomAuthenticator : IWampClientAuthenticator
393401 {
394402 private readonly Func < string , ChallengeDetails , AuthenticationResponse > mAuthenticate ;
403+ public TaskCompletionSource < int > Authenticated { get ; } = new TaskCompletionSource < int > ( ) ;
395404
396- public CustomAuthenticator ( ) :
405+ public CustomAuthenticator ( ) :
397406 this ( ( authMethod , extra ) => new AuthenticationResponse ( ) )
398407 {
399408 }
@@ -407,6 +416,7 @@ public AuthenticationResponse Authenticate(string authmethod, ChallengeDetails e
407416 {
408417 Extra = extra ;
409418 AuthMethod = authmethod ;
419+ Authenticated . SetResult ( 0 ) ;
410420 return mAuthenticate ( authmethod , extra ) ;
411421 }
412422
@@ -435,7 +445,7 @@ public override bool Equals(object obj)
435445 if ( ReferenceEquals ( null , obj ) ) return false ;
436446 if ( ReferenceEquals ( this , obj ) ) return true ;
437447 if ( obj . GetType ( ) != this . GetType ( ) ) return false ;
438- return Equals ( ( MyChallengeDetails ) obj ) ;
448+ return Equals ( ( MyChallengeDetails ) obj ) ;
439449 }
440450
441451 public override int GetHashCode ( )
0 commit comments