@@ -16,7 +16,6 @@ import 'dart:convert';
1616
1717import 'package:firebase_functions/src/https/auth.dart' ;
1818import 'package:firebase_functions/src/https/callable.dart' ;
19- import 'package:shelf/shelf.dart' ;
2019import 'package:test/test.dart' ;
2120
2221void main () {
@@ -26,9 +25,7 @@ void main() {
2625
2726 group ('extractAuthToken' , () {
2827 test ('returns missing when no Authorization header' , () async {
29- final request = _createRequest ();
30-
31- final (status, auth) = await extractAuthToken (request);
28+ final (status, auth) = await extractAuthToken ({});
3229
3330 expect (status, TokenStatus .missing);
3431 expect (auth, isNull);
@@ -37,11 +34,9 @@ void main() {
3734 test (
3835 'returns invalid when Authorization header is not Bearer format' ,
3936 () async {
40- final request = _createRequest (
41- headers: {'authorization' : 'Basic abc123' },
42- );
43-
44- final (status, auth) = await extractAuthToken (request);
37+ final (status, auth) = await extractAuthToken ({
38+ 'authorization' : 'Basic abc123' ,
39+ });
4540
4641 expect (status, TokenStatus .invalid);
4742 expect (auth, isNull);
@@ -50,9 +45,10 @@ void main() {
5045
5146 test ('returns invalid when token has no uid/sub claim' , () async {
5247 final jwt = _createJwt ({'email' : 'test@example.com' });
53- final request = _createRequest (headers: {'authorization' : 'Bearer $jwt ' });
5448
55- final (status, auth) = await extractAuthToken (request);
49+ final (status, auth) = await extractAuthToken ({
50+ 'authorization' : 'Bearer $jwt ' ,
51+ });
5652
5753 expect (status, TokenStatus .invalid);
5854 expect (auth, isNull);
@@ -64,9 +60,10 @@ void main() {
6460 'email' : 'test@example.com' ,
6561 'custom_claim' : 'value' ,
6662 });
67- final request = _createRequest (headers: {'authorization' : 'Bearer $jwt ' });
6863
69- final (status, auth) = await extractAuthToken (request);
64+ final (status, auth) = await extractAuthToken ({
65+ 'authorization' : 'Bearer $jwt ' ,
66+ });
7067
7168 expect (status, TokenStatus .valid);
7269 expect (auth, isNotNull);
@@ -78,40 +75,41 @@ void main() {
7875
7976 test ('extracts uid from user_id claim as fallback' , () async {
8077 final jwt = _createJwt ({'user_id' : 'user456' });
81- final request = _createRequest (headers: {'authorization' : 'Bearer $jwt ' });
8278
83- final (status, auth) = await extractAuthToken (request);
79+ final (status, auth) = await extractAuthToken ({
80+ 'authorization' : 'Bearer $jwt ' ,
81+ });
8482
8583 expect (status, TokenStatus .valid);
8684 expect (auth? .uid, 'user456' );
8785 });
8886
8987 test ('handles case-insensitive Bearer prefix' , () async {
9088 final jwt = _createJwt ({'sub' : 'user123' });
91- final request = _createRequest (headers: {'authorization' : 'bearer $jwt ' });
9289
93- final (status, auth) = await extractAuthToken (request);
90+ final (status, auth) = await extractAuthToken ({
91+ 'authorization' : 'bearer $jwt ' ,
92+ });
9493
9594 expect (status, TokenStatus .valid);
9695 expect (auth? .uid, 'user123' );
9796 });
9897
9998 test ('returns invalid for malformed JWT' , () async {
100- final request = _createRequest (
101- headers: {'authorization' : 'Bearer not-a-valid-jwt' },
102- );
103-
104- final (status, auth) = await extractAuthToken (request);
99+ final (status, auth) = await extractAuthToken ({
100+ 'authorization' : 'Bearer not-a-valid-jwt' ,
101+ });
105102
106103 expect (status, TokenStatus .invalid);
107104 expect (auth, isNull);
108105 });
109106
110107 test ('returns invalid for JWT with empty payload' , () async {
111108 final jwt = _createJwt ({});
112- final request = _createRequest (headers: {'authorization' : 'Bearer $jwt ' });
113109
114- final (status, auth) = await extractAuthToken (request);
110+ final (status, auth) = await extractAuthToken ({
111+ 'authorization' : 'Bearer $jwt ' ,
112+ });
115113
116114 expect (status, TokenStatus .invalid);
117115 expect (auth, isNull);
@@ -120,29 +118,29 @@ void main() {
120118
121119 group ('extractAppCheckToken' , () {
122120 test ('returns missing when no X-Firebase-AppCheck header' , () async {
123- final request = _createRequest ();
124-
125- final (status, appCheck) = await extractAppCheckToken (request);
121+ final (status, appCheck) = await extractAppCheckToken ({});
126122
127123 expect (status, TokenStatus .missing);
128124 expect (appCheck, isNull);
129125 });
130126
131127 test ('returns invalid when token has no sub claim' , () async {
132128 final jwt = _createJwt ({'other' : 'value' });
133- final request = _createRequest (headers: {'x-firebase-appcheck' : jwt});
134129
135- final (status, appCheck) = await extractAppCheckToken (request);
130+ final (status, appCheck) = await extractAppCheckToken ({
131+ 'x-firebase-appcheck' : jwt,
132+ });
136133
137134 expect (status, TokenStatus .invalid);
138135 expect (appCheck, isNull);
139136 });
140137
141138 test ('returns valid with AppCheckData for valid token' , () async {
142139 final jwt = _createJwt ({'sub' : 'app123' });
143- final request = _createRequest (headers: {'x-firebase-appcheck' : jwt});
144140
145- final (status, appCheck) = await extractAppCheckToken (request);
141+ final (status, appCheck) = await extractAppCheckToken ({
142+ 'x-firebase-appcheck' : jwt,
143+ });
146144
147145 expect (status, TokenStatus .valid);
148146 expect (appCheck, isNotNull);
@@ -152,9 +150,10 @@ void main() {
152150
153151 test ('extracts app_id from explicit claim' , () async {
154152 final jwt = _createJwt ({'sub' : 'sub-value' , 'app_id' : 'explicit-app-id' });
155- final request = _createRequest (headers: {'x-firebase-appcheck' : jwt});
156153
157- final (status, appCheck) = await extractAppCheckToken (request);
154+ final (status, appCheck) = await extractAppCheckToken ({
155+ 'x-firebase-appcheck' : jwt,
156+ });
158157
159158 expect (status, TokenStatus .valid);
160159 expect (appCheck? .appId, 'explicit-app-id' );
@@ -165,14 +164,11 @@ void main() {
165164 test ('returns both auth and app check data when present' , () async {
166165 final authJwt = _createJwt ({'sub' : 'user123' });
167166 final appCheckJwt = _createJwt ({'sub' : 'app123' });
168- final request = _createRequest (
169- headers: {
170- 'authorization' : 'Bearer $authJwt ' ,
171- 'x-firebase-appcheck' : appCheckJwt,
172- },
173- );
174167
175- final result = await checkTokens (request);
168+ final result = await checkTokens ({
169+ 'authorization' : 'Bearer $authJwt ' ,
170+ 'x-firebase-appcheck' : appCheckJwt,
171+ });
176172
177173 expect (result.result.auth, TokenStatus .valid);
178174 expect (result.result.app, TokenStatus .valid);
@@ -181,9 +177,7 @@ void main() {
181177 });
182178
183179 test ('returns missing status when headers are absent' , () async {
184- final request = _createRequest ();
185-
186- final result = await checkTokens (request);
180+ final result = await checkTokens ({});
187181
188182 expect (result.result.auth, TokenStatus .missing);
189183 expect (result.result.app, TokenStatus .missing);
@@ -194,14 +188,11 @@ void main() {
194188 test ('handles mixed valid and invalid tokens' , () async {
195189 final authJwt = _createJwt ({'sub' : 'user123' });
196190 final invalidAppCheckJwt = _createJwt ({'no_sub' : 'value' });
197- final request = _createRequest (
198- headers: {
199- 'authorization' : 'Bearer $authJwt ' ,
200- 'x-firebase-appcheck' : invalidAppCheckJwt,
201- },
202- );
203191
204- final result = await checkTokens (request);
192+ final result = await checkTokens ({
193+ 'authorization' : 'Bearer $authJwt ' ,
194+ 'x-firebase-appcheck' : invalidAppCheckJwt,
195+ });
205196
206197 expect (result.result.auth, TokenStatus .valid);
207198 expect (result.result.app, TokenStatus .invalid);
@@ -267,12 +258,3 @@ String _createJwt(Map<String, dynamic> payload) {
267258
268259 return '$header .$body .$signature ' ;
269260}
270-
271- /// Creates a test request with optional headers.
272- Request _createRequest ({Map <String , String >? headers}) {
273- return Request (
274- 'POST' ,
275- Uri .parse ('http://localhost:8080/test' ),
276- headers: headers,
277- );
278- }
0 commit comments