@@ -49,7 +49,7 @@ public void TestInitialize()
4949 }
5050
5151 [ TestMethod ]
52- public async Task Get_WithoutCachedToken_CallsUIFlow ( )
52+ public async Task Get_WithoutCachedToken_CallsWindowsIntegratedFlow ( )
5353 {
5454 var source = new Uri ( "https://example.com/index.json" ) ;
5555 var isRetry = false ;
@@ -58,13 +58,43 @@ public async Task Get_WithoutCachedToken_CallsUIFlow()
5858
5959 var adalToken = "TestADALToken" ;
6060 MockCachedToken ( null ) ;
61+ MockWindowsIntegratedToken ( adalToken ) ;
62+
63+ var bearerToken = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
64+ bearerToken . Token . Should ( ) . Be ( adalToken ) ;
65+
66+ mockAdalTokenProvider
67+ . Verify ( x => x . AcquireTokenSilentlyAsync ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
68+ mockAdalTokenProvider
69+ . Verify ( x => x . AcquireTokenWithWindowsIntegratedAuth ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
70+ mockAdalTokenProvider
71+ . Verify ( x => x . AcquireTokenWithUI ( It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
72+ mockAdalTokenProvider
73+ . Verify ( x => x . AcquireTokenWithDeviceFlowAsync ( It . IsAny < Func < DeviceCodeResult , Task > > ( ) , It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
74+
75+ VerifyAuthority ( source ) ;
76+ }
77+
78+ [ TestMethod ]
79+ public async Task Get_WithoutCachedTokenAndWindowsIntegratedFails_CallsUIFlow ( )
80+ {
81+ var source = new Uri ( "https://example.com/index.json" ) ;
82+ var isRetry = false ;
83+ var isNonInteractive = false ;
84+ var canShowDialog = true ;
85+
86+ var adalToken = "TestADALToken" ;
87+ MockCachedToken ( null ) ;
88+ MockWindowsIntegratedToken ( null ) ;
6189 MockUIToken ( adalToken ) ;
6290
6391 var bearerToken = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
64- bearerToken . Should ( ) . Be ( adalToken ) ;
92+ bearerToken . Token . Should ( ) . Be ( adalToken ) ;
6593
6694 mockAdalTokenProvider
6795 . Verify ( x => x . AcquireTokenSilentlyAsync ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
96+ mockAdalTokenProvider
97+ . Verify ( x => x . AcquireTokenWithWindowsIntegratedAuth ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
6898 mockAdalTokenProvider
6999 . Verify ( x => x . AcquireTokenWithUI ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
70100 mockAdalTokenProvider
@@ -74,7 +104,7 @@ public async Task Get_WithoutCachedToken_CallsUIFlow()
74104 }
75105
76106 [ TestMethod ]
77- public async Task Get_WithoutCachedTokenAndUIFlowCanceled_CallsDeviceCodeFlow ( )
107+ public async Task Get_WithoutCachedTokenAndWindowsIntegratedFailedAndUIFlowCanceled_CallsDeviceCodeFlow ( )
78108 {
79109 var source = new Uri ( "https://example.com/index.json" ) ;
80110 var isRetry = false ;
@@ -83,14 +113,17 @@ public async Task Get_WithoutCachedTokenAndUIFlowCanceled_CallsDeviceCodeFlow()
83113
84114 var adalToken = "TestADALToken" ;
85115 MockCachedToken ( null ) ;
116+ MockWindowsIntegratedToken ( null ) ;
86117 MockUIToken ( null ) ;
87118 MockDeviceFlowToken ( adalToken ) ;
88119
89- var bearerToken = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
90- bearerToken . Should ( ) . Be ( adalToken ) ;
120+ var bearerTokenResult = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
121+ bearerTokenResult . Token . Should ( ) . Be ( adalToken ) ;
91122
92123 mockAdalTokenProvider
93124 . Verify ( x => x . AcquireTokenSilentlyAsync ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
125+ mockAdalTokenProvider
126+ . Verify ( x => x . AcquireTokenWithWindowsIntegratedAuth ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
94127 mockAdalTokenProvider
95128 . Verify ( x => x . AcquireTokenWithUI ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
96129 mockAdalTokenProvider
@@ -100,7 +133,7 @@ public async Task Get_WithoutCachedTokenAndUIFlowCanceled_CallsDeviceCodeFlow()
100133 }
101134
102135 [ TestMethod ]
103- public async Task Get_WithCachedToken_DoesNotCallFlows ( )
136+ public async Task Get_WithCachedToken_DoesNotCallAnyFlows ( )
104137 {
105138 var source = new Uri ( "https://example.com/index.json" ) ;
106139 var isRetry = false ;
@@ -110,11 +143,13 @@ public async Task Get_WithCachedToken_DoesNotCallFlows()
110143 var adalToken = "TestADALToken" ;
111144 MockCachedToken ( adalToken ) ;
112145
113- var bearerToken = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
114- bearerToken . Should ( ) . Be ( adalToken ) ;
146+ var bearerTokenResult = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
147+ bearerTokenResult . Token . Should ( ) . Be ( adalToken ) ;
115148
116149 mockAdalTokenProvider
117150 . Verify ( x => x . AcquireTokenSilentlyAsync ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
151+ mockAdalTokenProvider
152+ . Verify ( x => x . AcquireTokenWithWindowsIntegratedAuth ( It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
118153 mockAdalTokenProvider
119154 . Verify ( x => x . AcquireTokenWithUI ( It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
120155 mockAdalTokenProvider
@@ -133,13 +168,16 @@ public async Task Get_IsRetry_DoesNotQueryCache()
133168
134169 var adalToken = "TestADALToken" ;
135170 MockCachedToken ( "OldCachedToken" ) ;
171+ MockWindowsIntegratedToken ( null ) ;
136172 MockUIToken ( adalToken ) ;
137173
138- var bearerToken = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
139- bearerToken . Should ( ) . Be ( adalToken ) ;
174+ var bearerTokenResult = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
175+ bearerTokenResult . Token . Should ( ) . Be ( adalToken ) ;
140176
141177 mockAdalTokenProvider
142178 . Verify ( x => x . AcquireTokenSilentlyAsync ( It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
179+ mockAdalTokenProvider
180+ . Verify ( x => x . AcquireTokenWithWindowsIntegratedAuth ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
143181 mockAdalTokenProvider
144182 . Verify ( x => x . AcquireTokenWithUI ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
145183 mockAdalTokenProvider
@@ -149,7 +187,7 @@ public async Task Get_IsRetry_DoesNotQueryCache()
149187 }
150188
151189 [ TestMethod ]
152- public async Task Get_WithoutCachedTokenAndIsNonInteractive_DoesNotCallFlows ( )
190+ public async Task Get_WithoutCachedTokenAndIsNonInteractive_DoesNotCallInteractiveFlows ( )
153191 {
154192 var source = new Uri ( "https://example.com/index.json" ) ;
155193 var isRetry = false ;
@@ -158,11 +196,13 @@ public async Task Get_WithoutCachedTokenAndIsNonInteractive_DoesNotCallFlows()
158196
159197 MockCachedToken ( null ) ;
160198
161- var bearerToken = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
162- bearerToken . Should ( ) . BeNull ( ) ;
199+ var bearerTokenResult = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
200+ bearerTokenResult . Should ( ) . BeNull ( ) ;
163201
164202 mockAdalTokenProvider
165203 . Verify ( x => x . AcquireTokenSilentlyAsync ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
204+ mockAdalTokenProvider
205+ . Verify ( x => x . AcquireTokenWithWindowsIntegratedAuth ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
166206 mockAdalTokenProvider
167207 . Verify ( x => x . AcquireTokenWithUI ( It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
168208 mockAdalTokenProvider
@@ -172,7 +212,7 @@ public async Task Get_WithoutCachedTokenAndIsNonInteractive_DoesNotCallFlows()
172212 }
173213
174214 [ TestMethod ]
175- public async Task Get_WithCachedTokenAndIsNonInteractive_DoesNotCallFlows ( )
215+ public async Task Get_WithCachedTokenAndIsNonInteractive_DoesNotCallAnyFlows ( )
176216 {
177217 var source = new Uri ( "https://example.com/index.json" ) ;
178218 var isRetry = false ;
@@ -182,11 +222,13 @@ public async Task Get_WithCachedTokenAndIsNonInteractive_DoesNotCallFlows()
182222 var adalToken = "TestADALToken" ;
183223 MockCachedToken ( adalToken ) ;
184224
185- var bearerToken = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
186- bearerToken . Should ( ) . Be ( adalToken ) ;
225+ var bearerTokenResult = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
226+ bearerTokenResult . Token . Should ( ) . Be ( adalToken ) ;
187227
188228 mockAdalTokenProvider
189229 . Verify ( x => x . AcquireTokenSilentlyAsync ( It . IsAny < CancellationToken > ( ) ) , Times . Once ) ;
230+ mockAdalTokenProvider
231+ . Verify ( x => x . AcquireTokenWithWindowsIntegratedAuth ( It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
190232 mockAdalTokenProvider
191233 . Verify ( x => x . AcquireTokenWithUI ( It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
192234 mockAdalTokenProvider
@@ -203,8 +245,8 @@ public async Task Get_IsRetryIsNonInteractive_ShouldWarn()
203245 var isNonInteractive = true ;
204246 var canShowDialog = false ;
205247
206- var bearerToken = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
207- bearerToken . Should ( ) . BeNull ( ) ;
248+ var bearerTokenResult = await bearerTokenProvider . GetAsync ( source , isRetry , isNonInteractive , canShowDialog , cancellationToken ) ;
249+ bearerTokenResult . Should ( ) . BeNull ( ) ;
208250
209251 mockAdalTokenProvider
210252 . Verify ( x => x . AcquireTokenSilentlyAsync ( It . IsAny < CancellationToken > ( ) ) , Times . Never ) ;
@@ -226,6 +268,13 @@ private void MockCachedToken(string token)
226268 . Returns ( Task . FromResult < IAdalToken > ( new AdalToken ( "Bearer" , token ) ) ) ;
227269 }
228270
271+ private void MockWindowsIntegratedToken ( string token )
272+ {
273+ mockAdalTokenProvider
274+ . Setup ( x => x . AcquireTokenWithWindowsIntegratedAuth ( It . IsAny < CancellationToken > ( ) ) )
275+ . Returns ( Task . FromResult < IAdalToken > ( new AdalToken ( "Bearer" , token ) ) ) ;
276+ }
277+
229278 private void MockDeviceFlowToken ( string token )
230279 {
231280 mockAdalTokenProvider
0 commit comments