@@ -53,16 +53,50 @@ void main() {
5353 dependencyManager
5454 ..addInstance <NativeAuthBridge >(
5555 MockNativeAuthBridge (
56- signInWithUrl: expectAsync4 ((
57- argUrl,
58- argCallbackurlscheme,
59- argPreferprivatesession,
60- argBrowserpackagename,
56+ signInWithUrl: expectAsync1 ((
57+ argSignInOut,
6158 ) async {
62- expect (argUrl, contains (mockConfig.auth? .oauth? .domain));
63- expect (argCallbackurlscheme, testUrlScheme);
64- expect (argPreferprivatesession, isFalse);
65- expect (argBrowserpackagename, browserPackage);
59+ expect (argSignInOut.url, contains (mockConfig.auth? .oauth? .domain));
60+ expect (argSignInOut.callbackurlscheme, testUrlScheme);
61+ expect (argSignInOut.preferprivatesession, isFalse);
62+ expect (argSignInOut.browserPackageName, browserPackage);
63+ return {'code' : 'code' , 'state' : 'state' };
64+ }),
65+ ),
66+ )
67+ ..addInstance <Dispatcher <AuthEvent , AuthState >>(
68+ const MockDispatcher (),
69+ );
70+ await platform.signIn (options: options);
71+ });
72+
73+ asyncTest ('signInWithUrl with OIDC parameters' , (_) async {
74+ const options = CognitoSignInWithWebUIPluginOptions (
75+ isPreferPrivateSession: false ,
76+ browserPackageName: browserPackage,
77+ nonce: 'nonce' ,
78+ language: 'en' ,
79+ loginHint: 'username' ,
80+ prompt: [CognitoSignInWithWebUIPrompt .login, CognitoSignInWithWebUIPrompt .consent],
81+ resource: 'myapp://'
82+ );
83+ dependencyManager
84+ ..addInstance <NativeAuthBridge >(
85+ MockNativeAuthBridge (
86+ signInWithUrl: expectAsync1 ((
87+ argSignInOut,
88+ ) async {
89+ expect (argSignInOut.url, contains (mockConfig.auth? .oauth? .domain));
90+ expect (argSignInOut.callbackurlscheme, testUrlScheme);
91+ expect (argSignInOut.preferprivatesession, isFalse);
92+ expect (argSignInOut.browserPackageName, browserPackage);
93+ expect (argSignInOut.nonce, 'nonce' );
94+ expect (argSignInOut.language, 'es' );
95+ expect (argSignInOut.loginHint, 'username' );
96+ expect (argSignInOut.prompt, isNotNull);
97+ expect (argSignInOut.prompt? .contains (CognitoSignInWithWebUIPrompt .login.value), isTrue);
98+ expect (argSignInOut.prompt? .contains (CognitoSignInWithWebUIPrompt .consent.value), isTrue);
99+ expect (argSignInOut.resource, 'myapp://' );
66100 return {'code' : 'code' , 'state' : 'state' };
67101 }),
68102 ),
@@ -81,16 +115,13 @@ void main() {
81115 dependencyManager
82116 ..addInstance <NativeAuthBridge >(
83117 MockNativeAuthBridge (
84- signOutWithUrl: expectAsync4 ((
85- argUrl,
86- argCallbackurlscheme,
87- argPreferprivatesession,
88- argBrowserpackagename,
118+ signOutWithUrl: expectAsync1 ((
119+ argSignInOut
89120 ) async {
90- expect (argUrl , contains (mockConfig.auth? .oauth? .domain));
91- expect (argCallbackurlscheme , testUrlScheme);
92- expect (argPreferprivatesession , isFalse);
93- expect (argBrowserpackagename , browserPackage);
121+ expect (argSignInOut.url , contains (mockConfig.auth? .oauth? .domain));
122+ expect (argSignInOut.callbackurlscheme , testUrlScheme);
123+ expect (argSignInOut.preferprivatesession , isFalse);
124+ expect (argSignInOut.browserPackageName , browserPackage);
94125 }),
95126 ),
96127 )
@@ -103,12 +134,33 @@ void main() {
103134 );
104135}
105136
137+ class SignInOut {
138+ SignInOut (
139+ this .url,
140+ this .callbackurlscheme,
141+ this .preferprivatesession,
142+ this .browserPackageName,
143+ this .nonce,
144+ this .language,
145+ this .loginHint,
146+ this .prompt,
147+ this .resource
148+ )
149+
150+ String url = '' ;
151+ String callbackurlscheme = '' ;
152+ bool preferprivatesession = false ;
153+ String ? browserPackageName,
154+ String ? nonce;
155+ String ? language;
156+ String ? loginHint;
157+ List <String >? prompt;
158+ String ? resource;
159+ }
160+
106161typedef SignInOutFn <T > =
107162 Future <T > Function (
108- String argUrl,
109- String argCallbackurlscheme,
110- bool argPreferprivatesession,
111- String ? argBrowserpackagename,
163+ SignInOut signInOut
112164 );
113165
114166class MockNativeAuthBridge extends Fake implements NativeAuthBridge {
@@ -127,12 +179,22 @@ class MockNativeAuthBridge extends Fake implements NativeAuthBridge {
127179 String argCallbackurlscheme,
128180 bool argPreferprivatesession,
129181 String ? argBrowserpackagename,
182+ String ? argNonce,
183+ String ? argLanguage,
184+ String ? argLoginHint,
185+ List <String >? argPrompt,
186+ String ? argResource,
130187 ) async {
131- return _signInWithUrl? .call (
188+ return _signInWithUrl? .call (SignInOut (
132189 argUrl,
133190 argCallbackurlscheme,
134191 argPreferprivatesession,
135192 argBrowserpackagename,
193+ argNonce,
194+ argLanguage,
195+ argLoginHint,
196+ argPrompt,
197+ argResource)
136198 ) ??
137199 (throw UnimplementedError ());
138200 }
@@ -144,11 +206,16 @@ class MockNativeAuthBridge extends Fake implements NativeAuthBridge {
144206 bool argPreferprivatesession,
145207 String ? argBrowserpackagename,
146208 ) async {
147- return _signOutWithUrl? .call (
209+ return _signOutWithUrl? .call (SignInOut (
148210 argUrl,
149211 argCallbackurlscheme,
150212 argPreferprivatesession,
151213 argBrowserpackagename,
214+ null ,
215+ null ,
216+ null ,
217+ null ,
218+ null )
152219 ) ??
153220 (throw UnimplementedError ());
154221 }
0 commit comments