@isTest global with sharing class MockClient extends ClientFactory { global override void delay( Integer delayInMilliSeconds, List<String> requestIds ) { } global override List<Attachment> createAttachments( List<Types.CreateAttachmentInput> attachmentInputs, String library, String runAs ) { List<Attachment> atts = new List<Attachment>(); for (Integer i = 0; i < attachmentInputs.size(); i++) { Types.CreateAttachmentInput input = attachmentInputs[i]; Attachment att = new Attachment(); att.id = 'testid-' + String.valueOf(i); att.resource = new Resource( 'testid-' + String.valueOf(i), input.resourceType, 'test-resource-' + String.valueOf(i), library, input.driveId ); atts.add(att); } return atts; } global override List<Attachment> shareResources( List<Types.ShareResourceInput> shareResourceInputs, String library, String runAs ) { List<Attachment> atts = new List<Attachment>(); for (Integer i = 0; i < shareResourceInputs.size(); i++) { Types.ShareResourceInput input = shareResourceInputs[i]; Attachment att = new Attachment(); att.id = 'testid-' + String.valueOf(i); att.resource = new Resource( input.resourceId, input.resourceType, 'test-resource-' + String.valueOf(i), library, input.driveId ); atts.add(att); } return atts; } global override void deleteAttachments( List<Types.DeleteAttachmentInput> attachmentInputs, String library, String runAs ) { } global override void unshareResources( List<Types.UnshareResourceInput> unshareResourceInputs, String library, String runAs ) { } global override List<UpdateLicensesFlowOutput> assignUserLicenses( List<Types.UpdateLicensesInput> inputs, String runAs ) { List<UpdateLicensesFlowOutput> outs = new List<UpdateLicensesFlowOutput>(); for (Integer i = 0; i < inputs.size(); i++) { UpdateLicensesFlowOutput out = new UpdateLicensesFlowOutput(); out.totalLicenses = 100; out.remainingLicenses = 100 - (i + 1); outs.add(out); } return outs; } global override List<UpdateLicensesFlowOutput> unassignUserLicenses( List<Types.UpdateLicensesInput> inputs, String runAs ) { List<UpdateLicensesFlowOutput> outs = new List<UpdateLicensesFlowOutput>(); for (Integer i = 0; i < inputs.size(); i++) { UpdateLicensesFlowOutput out = new UpdateLicensesFlowOutput(); out.totalLicenses = 100; out.remainingLicenses = 100; outs.add(out); } return outs; } global override void updateLinksSettings( List<Types.UpdateLinkSettingsInput> inputs, String runAs ) { } global override List<Resource> createFolders( List<Types.CreateFolderInput> inputs, String libraryId, String runAs ) { List<Resource> resources = new List<Resource>(); for (Integer i = 0; i < inputs.size(); i++) { Types.CreateFolderInput input = inputs[i]; Resource createdFolder = new Resource( 'testid-' + String.valueOf(i), 'folder', 'testfolder-' + String.valueOf(i), libraryId, input.driveId ); resources.add(createdFolder); } return resources; } global override List<String> createMicrosoftTeam( List<Types.CreateMicrosoftTeamInput> inputs, String runAs ) { List<String> toReturn = new List<String>(); for (Integer i = 0; i < inputs.size(); i++) { toReturn.add('testid-' + String.valueOf(i)); } return toReturn; } global override List<SharePointSite> createSharePointSite( List<Types.CreateSharePointSiteInput> inputs, String runAs ) { List<SharePointSite> toReturn = new List<SharePointSite>(); for (Integer i = 0; i < inputs.size(); i++) { SharePointSite site = new SharePointSite(); site.id = 'test-siteid-' + String.valueOf(i); site.name = inputs[i].name; site.url = inputs[i].url; site.driveId = 'test-primarydriveid-' + String.valueOf(i); toReturn.add(site); } return toReturn; } global override List<Drive> createDrive( List<Types.CreateDriveInput> inputs, String runAs ) { List<Drive> drives = new List<Drive>(); for (Integer i = 0; i < inputs.size(); i++) { Drive d = new Drive(); d.id = 'testid-' + String.valueOf(i); drives.add(d); } return drives; } global override void createFoldersAsync( List<Types.CreateFolderInput> inputs, String libraryId, String runAs ) { } global override List<Link> createLinks( List<Types.CreateLinkInput> linkInputs, String library, String runAs ) { List<Link> links = new List<Link>(); for (Integer i = 0; i < linkInputs.size(); i++) { Link l = new Link(); l.id = 'testid-' + String.valueOf(i); l.url = 'http://test.url/' + String.valueOf(i); links.add(l); } return links; } global override List<ResourceList> getFolderContents( List<Resource> folders, String sortBy, String sortOrder, String runAs, String contentType ) { List<ResourceList> lists = new List<ResourceList>(); for (Integer i = 0; i < folders.size(); i++) { ResourceList rl = new ResourceList(); lists.add(rl); } return lists; } global override List<Dataroom> createDatarooms( List<Types.CreateDataroomInput> dataroomInputs, String runAs ) { List<Dataroom> datarooms = new List<Dataroom>(); for (Integer i = 0; i < dataroomInputs.size(); i++) { Dataroom d = new Dataroom(); d.id = 'testid-' + String.valueOf(i); datarooms.add(d); } return datarooms; } global override void addToDataroom( List<Types.AddDataroomChildrenInput> childrenInputs, String runAs ) { } global override List<GeneratedDocument> generateDocumentSync( List<Types.DocGenRequestInput> payloads, String runAs ) { List<GeneratedDocument> docs = new List<GeneratedDocument>(); for (Integer i = 0; i < payloads.size(); i++) { GeneratedDocument doc = new GeneratedDocument( 'test-name-' + String.valueOf(i), 'download-url-' + String.valueOf(i), 'test-content-version-id-' + String.valueOf(i) ); doc.file = new Resource( 'doc-resource-id' + String.valueOf(i), 'file', doc.name, 'library', payloads[i].destination.driveId ); docs.add(doc); } return docs; } global override void generateDocument( List<Types.DocGenRequestInput> payloads, String runAs ) { } global override List<FileRequest> createFileRequests( List<Types.CreateFileRequestInput> fileRequestInputs, String runAs ) { List<FileRequest> frs = new List<FileRequest>(); for (Integer i = 0; i < fileRequestInputs.size(); i++) { FileRequest fr = new FileRequest(); fr.id = 'testid-' + String.valueOf(i); frs.add(fr); } return frs; } global override void copyResources( List<Types.CopyResourceInput> inputs, String library, String driveId, String runAs ) { } global override List<List<Attachment>> listAttachments( List<String> parentIds, String runAs ) { List<List<Attachment>> result = new List<List<Attachment>>(); for (Integer i = 0; i < parentIds.size(); i++) { List<Attachment> attList = new List<Attachment>(); Attachment file = new Attachment(); file.id = 'testid-' + String.valueOf(i); file.resource = new Resource( 'testid-' + String.valueOf(i), 'file', 'name-' + String.valueOf(i), 'library', 'driveId-' + String.valueOf(i) ); Attachment folderAttachment = new Attachment(); folderAttachment.id = 'testfolderid-' + String.valueOf(i); folderAttachment.resource = new Resource( 'testfolderid-' + String.valueOf(i), 'folder', 'foldername-' + String.valueOf(i), 'library', 'driveId-' + String.valueOf(i) ); attList.add(file); attList.add(folderAttachment); result.add(attList); } return result; } global override void moveResources( List<Types.MoveResourceInput> inputs, String library, String runAs ) { } global override void updatePermissions( List<Types.PermissionInput> permissionInputs, String library, String runAs ) { } global override List<String> getPreviewUrls( List<Resource> resources, PreviewParams params, String library, String runAs ) { List<String> urls = new List<String>(); for (Integer i = 0; i < resources.size(); i++) { urls.add('https:/test.cloudfiles.io/' + String.valueOf(i)); //Check with Ankit on how preview urls look } return urls; } global override void deleteResources( List<Types.DeleteResourcesInput> resourcesInput, String library, String runAs ) { } global override void updateResources( List<Types.UpdateResourceInput> inputs, String library, String runAs ) { } global override List<ResourceList> searchByProperty( List<Types.SearchByPropertyInput> inputs, String library, String runAs ) { List<ResourceList> lists = new List<ResourceList>(); for (Integer i = 0; i < inputs.size(); i++) { Types.SearchByPropertyInput input = inputs[i]; Resource resource = new Resource( 'searchedid-' + String.valueOf(i), 'file', 'searched-value', library, input.driveId ); ResourceList rl = new ResourceList(); rl.resources = new List<Resource>{ resource }; lists.add(rl); } return lists; } global override void upload( List<Types.UploadSalesforceFilePayload> files, String runAs ) { } global override void createContentVersion( List<Types.CreateContentVersionPayload> files, String runAs ) { } global override void createContentVersionBatch( List<Types.CreateContentVersionBatchPayload> inputs, String runAs ) { } global override void processDocument( List<Types.ProcessDocumentPayload> payloads, String runAs ) { } global override void splitDocument( List<Types.SplitDocumentPayload> payloads, String runAs ) { } global override List<String> queryDocument( List<Types.QueryDocumentPayload> payloads, String runAs ) { List<String> responses = new List<String>(); for (Integer i = 0; i < payloads.size(); i++) { responses.add('ai-response-' + String.valueOf(i)); } return responses; } global override List<GeneratedDocument> mergeDocumentsSync( List<Types.MergeDocumentsRequestInput> payloads, String runAs ) { List<GeneratedDocument> docs = new List<GeneratedDocument>(); for (Integer i = 0; i < payloads.size(); i++) { Types.MergeDocumentsRequestInput input = payloads[i]; // Simulate a merged document with a file resource Resource file = new Resource( 'merged-file-id-' + String.valueOf(i), 'file', input.fileName != null ? input.fileName : 'merged-file-' + String.valueOf(i), 'library', 'driveId-' + String.valueOf(i) ); GeneratedDocument doc = new GeneratedDocument( input.fileName != null ? input.fileName : 'merged-file-' + String.valueOf(i), 'http://download.url/' + String.valueOf(i), file ); doc.contentVersionId = 'contentVersionId-' + String.valueOf(i); doc.previewUrl = 'http://preview.url/' + String.valueOf(i); docs.add(doc); } return docs; } }
Default Mock Values
The following MockClient class provides simulated responses for CloudFiles client methods, allowing you to test functionality without making real API calls in the test context. These are the default mocked responses that are returned when no custom mock is injected.