@@ -8,7 +8,8 @@ void main() {
8
8
final baseBaseJson = {
9
9
"server" : "zulip.example.cloud" ,
10
10
"realm_id" : "4" ,
11
- "realm_uri" : "https://zulip.example.com/" ,
11
+ "realm_uri" : "https://zulip.example.com/" , // TODO(server-9)
12
+ "realm_url" : "https://zulip.example.com/" ,
12
13
"user_id" : "234" ,
13
14
};
14
15
@@ -70,7 +71,8 @@ void main() {
70
71
check (parse (streamJson))
71
72
..server.equals (baseJson['server' ]! )
72
73
..realmId.equals (4 )
73
- ..realmUri.equals (Uri .parse (baseJson['realm_uri' ]! ))
74
+ ..realmUrl.equals (Uri .parse (baseJson['realm_url' ]! ))
75
+ ..realmUrl.equals (Uri .parse (baseJson['realm_uri' ]! )) // TODO(server-9)
74
76
..userId.equals (234 )
75
77
..senderId.equals (123 )
76
78
..senderAvatarUrl.equals (Uri .parse (streamJson['sender_avatar_url' ]! ))
@@ -137,17 +139,28 @@ void main() {
137
139
checkInert ({ 'awesome_feature' : 'enabled' });
138
140
});
139
141
142
+ test ('uses deprecated fields when newer fields are missing' , () {
143
+ final baseline = parse (dmJson);
144
+
145
+ // FL 257 deprecated 'realm_uri' in favor of 'realm_url'.
146
+ final jsonSansRealm =
147
+ { ...dmJson }..remove ('realm_url' )..remove ('realm_uri' );
148
+ check (parse ({ ...jsonSansRealm, 'realm_url' : 'https://zulip.example.com/' })).jsonEquals (baseline);
149
+ });
150
+
140
151
group ("parse failures on malformed 'message'" , () {
141
152
int n = 1 ;
142
153
test ("${n ++}" , () => checkParseFails ({ ...dmJson }..remove ('server' )));
143
154
test ("${n ++}" , () => checkParseFails ({ ...dmJson }..remove ('realm_id' )));
144
155
test ("${n ++}" , () => checkParseFails ({ ...dmJson, 'realm_id' : '12,34' }));
145
156
test ("${n ++}" , () => checkParseFails ({ ...dmJson, 'realm_id' : 'abc' }));
146
- test ("${n ++}" , () => checkParseFails ({ ...dmJson }..remove ('realm_uri' )));
157
+ test ("${n ++}" , () => checkParseFails ({ ...dmJson }
158
+ ..remove ('realm_url' )
159
+ ..remove ('realm_uri' ))); // TODO(server-9)
147
160
test (skip: true , // Dart's Uri.parse is lax in what it accepts.
148
- "${n ++}" , () => checkParseFails ({ ...dmJson, 'realm_uri ' : 'zulip.example.com' }));
161
+ "${n ++}" , () => checkParseFails ({ ...dmJson, 'realm_url ' : 'zulip.example.com' }));
149
162
test (skip: true , // Dart's Uri.parse is lax in what it accepts.
150
- "${n ++}" , () => checkParseFails ({ ...dmJson, 'realm_uri ' : '/examplecorp' }));
163
+ "${n ++}" , () => checkParseFails ({ ...dmJson, 'realm_url ' : '/examplecorp' }));
151
164
152
165
test ("${n ++}" , () => checkParseFails ({ ...streamJson, 'stream_id' : '12,34' }));
153
166
test ("${n ++}" , () => checkParseFails ({ ...streamJson, 'stream_id' : 'abc' }));
@@ -190,7 +203,8 @@ void main() {
190
203
check (parse (baseJson))
191
204
..server.equals (baseJson['server' ]! )
192
205
..realmId.equals (4 )
193
- ..realmUri.equals (Uri .parse (baseJson['realm_uri' ]! ))
206
+ ..realmUrl.equals (Uri .parse (baseJson['realm_url' ]! ))
207
+ ..realmUrl.equals (Uri .parse (baseJson['realm_uri' ]! )) // TODO(server-9)
194
208
..userId.equals (234 )
195
209
..zulipMessageIds.deepEquals ([123 , 234 ]);
196
210
});
@@ -210,18 +224,29 @@ void main() {
210
224
check (parse ({ ...baseJson, 'awesome_feature' : 'enabled' })).jsonEquals (baseline);
211
225
});
212
226
227
+ test ('uses deprecated fields when newer fields are missing' , () {
228
+ final baseline = parse (baseJson);
229
+
230
+ // FL 257 deprecated 'realm_uri' in favor of 'realm_url'.
231
+ final jsonSansRealm =
232
+ { ...baseJson }..remove ('realm_url' )..remove ('realm_uri' );
233
+ check (parse ({ ...jsonSansRealm, 'realm_url' : 'https://zulip.example.com/' })).jsonEquals (baseline);
234
+ });
235
+
213
236
group ('parse failures on malformed data' , () {
214
237
int n = 1 ;
215
238
216
239
test ("${n ++}" , () => checkParseFails ({ ...baseJson }..remove ('server' )));
217
240
test ("${n ++}" , () => checkParseFails ({ ...baseJson }..remove ('realm_id' )));
218
241
test ("${n ++}" , () => checkParseFails ({ ...baseJson, 'realm_id' : 'abc' }));
219
242
test ("${n ++}" , () => checkParseFails ({ ...baseJson, 'realm_id' : '12,34' }));
220
- test ("${n ++}" , () => checkParseFails ({ ...baseJson }..remove ('realm_uri' )));
243
+ test ("${n ++}" , () => checkParseFails ({ ...baseJson }
244
+ ..remove ('realm_url' )
245
+ ..remove ('realm_uri' ))); // TODO(server-9)
221
246
test (skip: true , // Dart's Uri.parse is lax in what it accepts.
222
- "${n ++}" , () => checkParseFails ({ ...baseJson, 'realm_uri ' : 'zulip.example.com' }));
247
+ "${n ++}" , () => checkParseFails ({ ...baseJson, 'realm_url ' : 'zulip.example.com' }));
223
248
test (skip: true , // Dart's Uri.parse is lax in what it accepts.
224
- "${n ++}" , () => checkParseFails ({ ...baseJson, 'realm_uri ' : '/examplecorp' }));
249
+ "${n ++}" , () => checkParseFails ({ ...baseJson, 'realm_url ' : '/examplecorp' }));
225
250
226
251
for (final badIntList in ["abc,34" , "12,abc" , "12," , "" ]) {
227
252
test ("${n ++}" , () => checkParseFails ({ ...baseJson, 'zulip_message_ids' : badIntList }));
@@ -237,7 +262,7 @@ extension UnexpectedFcmMessageChecks on Subject<UnexpectedFcmMessage> {
237
262
extension FcmMessageWithIdentityChecks on Subject <FcmMessageWithIdentity > {
238
263
Subject <String > get server => has ((x) => x.server, 'server' );
239
264
Subject <int > get realmId => has ((x) => x.realmId, 'realmId' );
240
- Subject <Uri > get realmUri => has ((x) => x.realmUri , 'realmUri ' );
265
+ Subject <Uri > get realmUrl => has ((x) => x.realmUrl , 'realmUrl ' );
241
266
Subject <int > get userId => has ((x) => x.userId, 'userId' );
242
267
}
243
268
0 commit comments