blob: b025fec49a7b2c66fd6d65a039b1cb4fc055d806 [file] [log] [blame]
Ben Rohlfs3a6ff7e2021-01-18 14:08:39 +01001/* eslint-disable @typescript-eslint/no-unused-vars */
2/**
3 * @license
4 * Copyright (C) 2020 The Android Open Source Project
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18import {RestApiService} from '../../services/services/gr-rest-api/gr-rest-api';
19import {
20 AccountDetailInfo,
21 AccountExternalIdInfo,
22 AccountInfo,
23 ServerInfo,
24 ProjectInfo,
25 AccountCapabilityInfo,
26 SuggestedReviewerInfo,
27 GroupNameToGroupInfoMap,
28 ParsedJSON,
29 EditPreferencesInfo,
30 SshKeyInfo,
31 RepoName,
32 GpgKeyInfo,
33 PreferencesInfo,
34 EmailInfo,
35 ProjectAccessInfo,
36 CapabilityInfoMap,
37 ChangeInfo,
38 ProjectInfoWithName,
39 GroupInfo,
40 BranchInfo,
41 ConfigInfo,
42 EditInfo,
43 DashboardInfo,
44 ProjectAccessInfoMap,
45 IncludedInInfo,
46 CommentInfo,
47 PathToCommentsInfoMap,
48 PluginInfo,
49 DocResult,
50 ContributorAgreementInfo,
51 Password,
52 ProjectWatchInfo,
53 NameToProjectInfoMap,
54 GroupAuditEventInfo,
55 Base64FileContent,
56 TagInfo,
57 RelatedChangesInfo,
58 SubmittedTogetherInfo,
59 FilePathToDiffInfoMap,
60 BlameInfo,
61 ImagesForDiff,
62 ActionNameToActionInfoMap,
63 Hashtag,
64 FileNameToFileInfoMap,
65 TopMenuEntryInfo,
66 MergeableInfo,
67 CommitInfo,
68 GroupId,
69 GroupName,
70 UrlEncodedRepoName,
71} from '../../types/common';
72import {DiffInfo, DiffPreferencesInfo} from '../../types/diff';
73import {ParsedChangeInfo} from '../../elements/shared/gr-rest-api-interface/gr-reviewer-updates-parser';
74import {readResponsePayload} from '../../elements/shared/gr-rest-api-interface/gr-rest-apis/gr-rest-api-helper';
75import {
76 createAccountDetailWithId,
77 createChange,
78 createCommit,
79 createConfig,
80 createPreferences,
81 createServerInfo,
82} from '../test-data-generators';
83import {
84 createDefaultDiffPrefs,
85 createDefaultEditPrefs,
86} from '../../constants/constants';
87
88export const grRestApiMock: RestApiService = {
89 addAccountEmail(): Promise<Response> {
90 return Promise.resolve(new Response());
91 },
92 addAccountGPGKey(): Promise<Record<string, GpgKeyInfo>> {
93 return Promise.resolve({});
94 },
95 addAccountSSHKey(): Promise<SshKeyInfo> {
96 throw new Error('addAccountSSHKey() not implemented by RestApiMock.');
97 },
98 addToAttentionSet(): Promise<Response> {
99 return Promise.resolve(new Response());
100 },
101 applyFixSuggestion(): Promise<Response> {
102 return Promise.resolve(new Response());
103 },
104 awaitPendingDiffDrafts(): Promise<void> {
105 return Promise.resolve();
106 },
107 confirmEmail(): Promise<string | null> {
108 return Promise.resolve('');
109 },
110 createChange(): Promise<ChangeInfo | undefined> {
111 throw new Error('createChange() not implemented by RestApiMock.');
112 },
113 createGroup(): Promise<Response> {
114 return Promise.resolve(new Response());
115 },
116 createRepo(): Promise<Response> {
117 return Promise.resolve(new Response());
118 },
119 createRepoBranch(): Promise<Response> {
120 return Promise.resolve(new Response());
121 },
122 createRepoTag(): Promise<Response> {
123 return Promise.resolve(new Response());
124 },
125 deleteAccountEmail(): Promise<Response> {
126 return Promise.resolve(new Response());
127 },
128 deleteAccountGPGKey(): Promise<Response> {
129 return Promise.resolve(new Response());
130 },
131 deleteAccountIdentity(): Promise<unknown> {
132 return Promise.resolve(new Response());
133 },
134 deleteAccountSSHKey(): void {},
135 deleteAssignee(): Promise<Response> {
136 return Promise.resolve(new Response());
137 },
138 deleteChangeCommitMessage(): Promise<Response> {
139 return Promise.resolve(new Response());
140 },
141 deleteComment(): Promise<CommentInfo> {
142 throw new Error('deleteComment() not implemented by RestApiMock.');
143 },
144 deleteDiffDraft(): Promise<Response> {
145 return Promise.resolve(new Response());
146 },
147 deleteDraftComments(): Promise<Response> {
148 return Promise.resolve(new Response());
149 },
150 deleteFileInChangeEdit(): Promise<Response | undefined> {
151 return Promise.resolve(new Response());
152 },
153 deleteGroupMember(): Promise<Response> {
154 return Promise.resolve(new Response());
155 },
156 deleteIncludedGroup(): Promise<Response> {
157 return Promise.resolve(new Response());
158 },
159 deleteRepoBranches(): Promise<Response> {
160 return Promise.resolve(new Response());
161 },
162 deleteRepoTags(): Promise<Response> {
163 return Promise.resolve(new Response());
164 },
165 deleteVote(): Promise<Response> {
166 return Promise.resolve(new Response());
167 },
168 deleteWatchedProjects(): Promise<Response> {
169 return Promise.resolve(new Response());
170 },
171 executeChangeAction(): Promise<Response | undefined> {
172 return Promise.resolve(new Response());
173 },
174 generateAccountHttpPassword(): Promise<Password> {
175 return Promise.resolve('asdf');
176 },
177 getAccount(): Promise<AccountDetailInfo | undefined> {
178 return Promise.resolve(createAccountDetailWithId(1));
179 },
180 getAccountAgreements(): Promise<ContributorAgreementInfo[] | undefined> {
181 return Promise.resolve([]);
182 },
183 getAccountCapabilities(): Promise<AccountCapabilityInfo | undefined> {
184 return Promise.resolve({});
185 },
186 getAccountDetails(): Promise<AccountDetailInfo | undefined> {
187 return Promise.resolve(createAccountDetailWithId(1));
188 },
189 getAccountEmails(): Promise<EmailInfo[] | undefined> {
190 return Promise.resolve([]);
191 },
192 getAccountGPGKeys(): Promise<Record<string, GpgKeyInfo>> {
193 return Promise.resolve({});
194 },
195 getAccountGroups(): Promise<GroupInfo[] | undefined> {
196 return Promise.resolve([]);
197 },
198 getAccountSSHKeys(): Promise<SshKeyInfo[] | undefined> {
199 return Promise.resolve([]);
200 },
201 getAccountStatus(): Promise<string | undefined> {
202 return Promise.resolve('');
203 },
204 getAvatarChangeUrl(): Promise<string | undefined> {
205 return Promise.resolve('');
206 },
207 getBlame(): Promise<BlameInfo[] | undefined> {
208 return Promise.resolve([]);
209 },
210 getCapabilities(): Promise<CapabilityInfoMap | undefined> {
211 return Promise.resolve({});
212 },
213 getChange(): Promise<ChangeInfo | null> {
214 throw new Error('getChange() not implemented by RestApiMock.');
215 },
216 getChangeActionURL(): Promise<string> {
217 return Promise.resolve('');
218 },
219 getChangeCherryPicks(): Promise<ChangeInfo[] | undefined> {
220 return Promise.resolve([]);
221 },
222 getChangeCommitInfo(): Promise<CommitInfo | undefined> {
223 return Promise.resolve(createCommit());
224 },
225 getChangeConflicts(): Promise<ChangeInfo[] | undefined> {
226 return Promise.resolve([]);
227 },
228 getChangeDetail(): Promise<ParsedChangeInfo | null | undefined> {
229 return Promise.resolve(createChange() as ParsedChangeInfo);
230 },
231 getChangeEdit(): Promise<false | EditInfo | undefined> {
232 return Promise.resolve(false);
233 },
234 getChangeFiles(): Promise<FileNameToFileInfoMap | undefined> {
235 return Promise.resolve({});
236 },
237 getChangeIncludedIn(): Promise<IncludedInInfo | undefined> {
238 throw new Error('getChangeIncludedIn() not implemented by RestApiMock.');
239 },
240 getChangeOrEditFiles(): Promise<FileNameToFileInfoMap | undefined> {
241 return Promise.resolve({});
242 },
243 getChangeRevisionActions(): Promise<ActionNameToActionInfoMap | undefined> {
244 return Promise.resolve({});
245 },
246 getChangeSuggestedCCs(): Promise<SuggestedReviewerInfo[] | undefined> {
247 return Promise.resolve([]);
248 },
249 getChangeSuggestedReviewers(): Promise<SuggestedReviewerInfo[] | undefined> {
250 return Promise.resolve([]);
251 },
252 getChanges() {
253 return Promise.resolve([]);
254 },
255 getChangesSubmittedTogether(): Promise<SubmittedTogetherInfo | undefined> {
256 throw new Error('getChangesSubmittedTogether() not implemented by mock.');
257 },
258 getChangesWithSameTopic(): Promise<ChangeInfo[] | undefined> {
259 return Promise.resolve([]);
260 },
261 getConfig(): Promise<ServerInfo | undefined> {
262 return Promise.resolve(createServerInfo());
263 },
264 getDashboard(): Promise<DashboardInfo | undefined> {
265 throw new Error('getDashboard() not implemented by RestApiMock.');
266 },
267 getDefaultPreferences(): Promise<PreferencesInfo | undefined> {
268 throw new Error('getDefaultPreferences() not implemented by RestApiMock.');
269 },
270 getDiff(): Promise<DiffInfo | undefined> {
271 throw new Error('getDiff() not implemented by RestApiMock.');
272 },
273 getDiffChangeDetail(): Promise<ChangeInfo | undefined | null> {
274 throw new Error('getDiffChangeDetail() not implemented by RestApiMock.');
275 },
276 getDiffComments() {
277 throw new Error('getDiffComments() not implemented by RestApiMock.');
278 },
279 getDiffDrafts() {
280 throw new Error('getDiffDrafts() not implemented by RestApiMock.');
281 },
282 getDiffPreferences(): Promise<DiffPreferencesInfo | undefined> {
283 return Promise.resolve(createDefaultDiffPrefs());
284 },
285 getDiffRobotComments() {
286 throw new Error('getDiffRobotComments() not implemented by RestApiMock.');
287 },
288 getDocumentationSearches(): Promise<DocResult[] | undefined> {
289 return Promise.resolve([]);
290 },
291 getEditPreferences(): Promise<EditPreferencesInfo | undefined> {
292 return Promise.resolve(createDefaultEditPrefs());
293 },
294 getExternalIds(): Promise<AccountExternalIdInfo[] | undefined> {
295 return Promise.resolve([]);
296 },
297 getFileContent(): Promise<Response | Base64FileContent | undefined> {
298 return Promise.resolve(new Response());
299 },
300 getFromProjectLookup(): Promise<RepoName | undefined> {
301 throw new Error('getFromProjectLookup() not implemented by RestApiMock.');
302 },
303 getGroupAuditLog(): Promise<GroupAuditEventInfo[] | undefined> {
304 return Promise.resolve([]);
305 },
306 getGroupConfig(id: GroupId | GroupName): Promise<GroupInfo | undefined> {
307 return Promise.resolve({
308 id: id as GroupId,
309 });
310 },
311 getGroupMembers(): Promise<AccountInfo[]> {
312 return Promise.resolve([]);
313 },
314 getGroups(): Promise<GroupNameToGroupInfoMap | undefined> {
315 return Promise.resolve({});
316 },
317 getImagesForDiff(): Promise<ImagesForDiff> {
318 throw new Error('getImagesForDiff() not implemented by RestApiMock.');
319 },
320 getIncludedGroup(): Promise<GroupInfo[] | undefined> {
321 return Promise.resolve([]);
322 },
323 getIsAdmin(): Promise<boolean | undefined> {
324 return Promise.resolve(false);
325 },
326 getIsGroupOwner(): Promise<boolean> {
327 return Promise.resolve(false);
328 },
329 getLoggedIn(): Promise<boolean> {
330 return Promise.resolve(true);
331 },
332 getMergeable(): Promise<MergeableInfo | undefined> {
333 throw new Error('getMergeable() not implemented by RestApiMock.');
334 },
335 getPlugins(): Promise<{[p: string]: PluginInfo} | undefined> {
336 return Promise.resolve({});
337 },
338 getPortedComments(): Promise<PathToCommentsInfoMap | undefined> {
339 return Promise.resolve({});
340 },
341 getPortedDrafts(): Promise<PathToCommentsInfoMap | undefined> {
342 return Promise.resolve({});
343 },
344 getPreferences(): Promise<PreferencesInfo | undefined> {
345 return Promise.resolve(createPreferences());
346 },
347 getProjectConfig(): Promise<ConfigInfo | undefined> {
348 return Promise.resolve(createConfig());
349 },
350 getRelatedChanges(): Promise<RelatedChangesInfo | undefined> {
351 return Promise.resolve({changes: []});
352 },
353 getRepo(repo: RepoName): Promise<ProjectInfo | undefined> {
354 return Promise.resolve({
355 id: (repo as string) as UrlEncodedRepoName,
356 name: repo,
357 });
358 },
359 getRepoAccess(): Promise<ProjectAccessInfoMap | undefined> {
360 return Promise.resolve({});
361 },
362 getRepoAccessRights(): Promise<ProjectAccessInfo | undefined> {
363 return Promise.resolve(undefined);
364 },
365 getRepoBranches(): Promise<BranchInfo[] | undefined> {
366 return Promise.resolve([]);
367 },
368 getRepoDashboards(): Promise<DashboardInfo[] | undefined> {
369 return Promise.resolve([]);
370 },
371 getRepoTags(): Promise<TagInfo[]> {
372 return Promise.resolve([]);
373 },
374 getRepos(): Promise<ProjectInfoWithName[] | undefined> {
375 return Promise.resolve([]);
376 },
377 getResponseObject(response: Response): Promise<ParsedJSON> {
378 return readResponsePayload(response).then(payload => payload.parsed);
379 },
380 getReviewedFiles(): Promise<string[] | undefined> {
381 return Promise.resolve([]);
382 },
383 getRobotCommentFixPreview(): Promise<FilePathToDiffInfoMap | undefined> {
384 return Promise.resolve({});
385 },
386 getSuggestedAccounts(): Promise<AccountInfo[] | undefined> {
387 return Promise.resolve([]);
388 },
389 getSuggestedGroups(): Promise<GroupNameToGroupInfoMap | undefined> {
390 return Promise.resolve({});
391 },
392 getSuggestedProjects(): Promise<NameToProjectInfoMap | undefined> {
393 return Promise.resolve({});
394 },
395 getTopMenus(): Promise<TopMenuEntryInfo[] | undefined> {
396 return Promise.resolve([]);
397 },
398 getVersion(): Promise<string | undefined> {
399 return Promise.resolve('');
400 },
401 getWatchedProjects(): Promise<ProjectWatchInfo[] | undefined> {
402 return Promise.resolve([]);
403 },
404 hasPendingDiffDrafts(): number {
405 return 0;
406 },
407 invalidateAccountsCache(): void {},
408 invalidateGroupsCache(): void {},
409 invalidateReposCache(): void {},
410 probePath(): Promise<boolean> {
411 return Promise.resolve(true);
412 },
413 putChangeCommitMessage(): Promise<Response> {
414 return Promise.resolve(new Response());
415 },
416 queryChangeFiles(): Promise<string[] | undefined> {
417 return Promise.resolve([]);
418 },
419 removeChangeReviewer(): Promise<Response | undefined> {
420 return Promise.resolve(new Response());
421 },
422 removeFromAttentionSet(): Promise<Response> {
423 return Promise.resolve(new Response());
424 },
425 renameFileInChangeEdit(): Promise<Response | undefined> {
426 return Promise.resolve(new Response());
427 },
428 restoreFileInChangeEdit(): Promise<Response | undefined> {
429 return Promise.resolve(new Response());
430 },
431 runRepoGC(): Promise<Response> {
432 return Promise.resolve(new Response());
433 },
434 saveAccountAgreement(): Promise<Response> {
435 return Promise.resolve(new Response());
436 },
437 saveChangeEdit(): Promise<Response> {
438 return Promise.resolve(new Response());
439 },
440 saveChangeReview() {
441 return Promise.resolve(new Response());
442 },
443 saveChangeReviewed(): Promise<Response | undefined> {
444 return Promise.resolve(new Response());
445 },
446 saveChangeStarred(): Promise<Response> {
447 return Promise.resolve(new Response());
448 },
449 saveDiffDraft(): Promise<Response> {
450 return Promise.resolve(new Response());
451 },
452 saveDiffPreferences(): Promise<Response> {
453 return Promise.resolve(new Response());
454 },
455 saveEditPreferences(): Promise<Response> {
456 return Promise.resolve(new Response());
457 },
458 saveFileReviewed(): Promise<Response> {
459 return Promise.resolve(new Response());
460 },
461 saveFileUploadChangeEdit(): Promise<Response | undefined> {
462 return Promise.resolve(new Response());
463 },
464 saveGroupDescription(): Promise<Response> {
465 return Promise.resolve(new Response());
466 },
467 saveGroupMember(): Promise<AccountInfo> {
468 return Promise.resolve({});
469 },
470 saveGroupName(): Promise<Response> {
471 return Promise.resolve(new Response());
472 },
473 saveGroupOptions(): Promise<Response> {
474 return Promise.resolve(new Response());
475 },
476 saveGroupOwner(): Promise<Response> {
477 return Promise.resolve(new Response());
478 },
479 saveIncludedGroup(): Promise<GroupInfo | undefined> {
480 throw new Error('saveIncludedGroup() not implemented by RestApiMock.');
481 },
482 savePreferences(): Promise<Response> {
483 return Promise.resolve(new Response());
484 },
485 saveRepoConfig(): Promise<Response> {
486 return Promise.resolve(new Response());
487 },
488 saveWatchedProjects(): Promise<ProjectWatchInfo[]> {
489 return Promise.resolve([]);
490 },
491 send() {
492 return Promise.resolve(new Response());
493 },
494 setAccountDisplayName(): Promise<void> {
495 return Promise.resolve();
496 },
497 setAccountName(): Promise<void> {
498 return Promise.resolve();
499 },
500 setAccountStatus(): Promise<void> {
501 return Promise.resolve();
502 },
503 setAccountUsername(): Promise<void> {
504 return Promise.resolve();
505 },
506 setAssignee(): Promise<Response> {
507 return Promise.resolve(new Response());
508 },
509 setChangeHashtag(): Promise<Hashtag[]> {
510 return Promise.resolve([]);
511 },
512 setChangeTopic(): Promise<string> {
513 return Promise.resolve('');
514 },
515 setDescription(): Promise<Response> {
516 return Promise.resolve(new Response());
517 },
518 setInProjectLookup(): void {},
519 setPreferredAccountEmail(): Promise<void> {
520 return Promise.resolve();
521 },
522 setRepoAccessRights(): Promise<Response> {
523 return Promise.resolve(new Response());
524 },
525 setRepoAccessRightsForReview(): Promise<ChangeInfo> {
526 throw new Error('setRepoAccessRightsForReview() not implemented by mock.');
527 },
528 setRepoHead(): Promise<Response> {
529 return Promise.resolve(new Response());
530 },
531};