@IsTest public with sharing class SharePointFeatureTest { @isTest static void testGetAllSites_MyDriveTrue() { Map params = new Map(); params.put('isServiceMode', false); params.put('myDrive', true); params.put('isRootFolder', true); params.put('folderId', 'testFolder'); params.put('accessToken', 'testToken'); params.put('level', 'getAllSite'); System.debug('Params >>> ' + params); Test.startTest(); SharePointFeature feature = new SharePointFeature(); OperationResult result = feature.listFiles(params); Test.stopTest(); System.debug('Result >>> ' + result); System.assert(result != null); // Case 2 : getSites params.put('level', 'getSites'); OperationResult res2 = feature.listFiles(params); System.debug('Result getSites: ' + res2); System.assertNotEquals(null, res2); // Case 3 : getDocumentDrive params.put('level', 'getDocumentDrive'); OperationResult res3 = feature.listFiles(params); System.debug('Result getDocumentDrive: ' + res3); System.assertNotEquals(null, res3); // Case 4 : getFilesInsideDocDrive params.put('level', 'getFilesInsideDocDrive'); OperationResult res4 = feature.listFiles(params); System.debug('Result getFilesInsideDocDrive: ' + res4); System.assertNotEquals(null, res4); // Case 5 : folderId blank params.put('folderId', ''); params.put('level', 'getDocumentDrive'); OperationResult res5 = feature.listFiles(params); System.debug('Result folderId blank: ' + res5); System.assertNotEquals(null, res5); // Case 6 : Invalid level params.put('level', 'invalidLevel'); OperationResult res6 = feature.listFiles(params); System.debug('Result invalid level: ' + res6); System.assertNotEquals(null, res6); } @isTest static void testLinkFiles() { // Create parent record Account acc = new Account(Name = 'Test Account'); insert acc; System.debug('Created Account Id >>> ' + acc.Id); // Create Linked Folder record HIC_FilesME__Linked_Folder__c folder = new HIC_FilesME__Linked_Folder__c( HIC_FilesME__Linked_Record__c = acc.Id, HIC_FilesME__External_Folder_ID__c = 'Folder123', HIC_FilesME__Folder_Name__c = 'Test Folder', HIC_FilesME__Folder_URL__c = 'https://testfolder.com', HIC_FilesME__Storage_Provider__c = 'SharePoint', HIC_FilesME__Access_Level__c = 'Public', HIC_FilesME__Is_Active__c = true ); insert folder; System.debug('Inserted Folder >>> ' + folder); Test.startTest(); SharePointFeature obj = new SharePointFeature(); OperationResult result = obj.linkFiles(acc.Id); Test.stopTest(); System.debug('OperationResult >>> ' + result); System.assert(result != null, 'Result should not be null'); } @isTest static void testToLinkFiles() { // Create parent record Account acc = new Account(Name = 'Test Account'); insert acc; System.debug('Account Id >>> ' + acc.Id); // Prepare folder details JSON Map folderMap = new Map(); folderMap.put('id', 'Folder123'); folderMap.put('name', 'Test Folder'); folderMap.put('url', 'https://testfolder.com'); String folderDetails = JSON.serialize(folderMap); System.debug('FolderDetails JSON >>> ' + folderDetails); Test.startTest(); SharePointFeature obj = new SharePointFeature(); OperationResult result = obj.toLinkFiles( acc.Id, folderDetails, 'SharePoint' ); Test.stopTest(); System.debug('OperationResult >>> ' + result); // Verify record inserted List folders = [SELECT Id, HIC_FilesME__Folder_Name__c FROM HIC_FilesME__Linked_Folder__c WHERE HIC_FilesME__Linked_Record__c = :acc.Id]; System.debug('Inserted folders >>> ' + folders); System.assertEquals(1, folders.size()); System.assertEquals('Test Folder', folders[0].HIC_FilesME__Folder_Name__c); } // Mock class for HTTP callout public class CreateFolderMock implements HttpCalloutMock { public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setHeader('Content-Type', 'application/json'); res.setStatusCode(201); String body = '{"id":"12345","name":"Test Folder"}'; res.setBody(body); System.debug('Mock Request Endpoint >>> ' + req.getEndpoint()); System.debug('Mock Request Body >>> ' + req.getBody()); return res; } } @isTest static void testCreateFolderSuccess() { Test.setMock(HttpCalloutMock.class, new CreateFolderMock()); Map params = new Map(); params.put('parentFolderId', 'drive123:abc:item123'); params.put('isServiceMode', false); params.put('folderName', 'UnitTestFolder'); params.put('accessToken', 'dummy_access_token'); System.debug('params >>> ' + params); Test.startTest(); SharePointFeature feature = new SharePointFeature(); OperationResult result = feature.createFolder(params); Test.stopTest(); System.debug('OperationResult >>> ' + result); System.assertNotEquals(null, result); } // Mock class for HTTP DELETE callout public class DeleteFileMock implements HttpCalloutMock { public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setHeader('Content-Type','application/json'); res.setStatusCode(204); // success for delete System.debug('Mock Endpoint >>> ' + req.getEndpoint()); System.debug('Mock Method >>> ' + req.getMethod()); return res; } } @isTest static void testDeleteFileSuccess() { Test.setMock(HttpCalloutMock.class, new DeleteFileMock()); Map params = new Map(); params.put('fileId','drive123:site123:item123'); params.put('accessToken','dummyToken'); params.put('isServiceMode',false); System.debug('Params >>> ' + params); Test.startTest(); SharePointFeature feature = new SharePointFeature(); OperationResult result = feature.deleteFile(params); Test.stopTest(); System.debug('Result >>> ' + result); System.assertNotEquals(null,result); } public class RenameFileMock implements HttpCalloutMock { public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setHeader('Content-Type','application/json'); res.setStatusCode(200); res.setBody('{"name":"RenamedFile.txt"}'); System.debug('Mock Endpoint >>> ' + req.getEndpoint()); System.debug('Mock Method >>> ' + req.getMethod()); System.debug('Mock Body >>> ' + req.getBody()); return res; } } @isTest static void testRenameFileSuccess() { Test.setMock(HttpCalloutMock.class, new RenameFileMock()); Map params = new Map(); params.put('fileId','drive123:site123:item123'); params.put('newFileName','RenamedFile.txt'); params.put('accessToken','dummyToken'); params.put('isServiceMode',false); System.debug('Params >>> ' + params); Test.startTest(); SharePointFeature feature = new SharePointFeature(); OperationResult result = feature.renameFile(params); Test.stopTest(); System.debug('Rename Success Result >>> ' + result); System.assertNotEquals(null,result); } @isTest static void testRenameFileMissingParams() { Map params = new Map(); params.put('fileId',null); params.put('newFileName',null); SharePointFeature feature = new SharePointFeature(); Test.startTest(); OperationResult result = feature.renameFile(params); Test.stopTest(); System.debug('Missing Params Result >>> ' + result); System.assertNotEquals(null,result); } @isTest static void testRenameFileInvalidFileId() { Map params = new Map(); params.put('fileId','invalidId'); params.put('newFileName','Test.txt'); SharePointFeature feature = new SharePointFeature(); Test.startTest(); OperationResult result = feature.renameFile(params); Test.stopTest(); System.debug('Invalid FileId Result >>> ' + result); System.assertNotEquals(null,result); } // Mock class for PATCH callout public class MoveFileMock implements HttpCalloutMock { public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setHeader('Content-Type', 'application/json'); res.setStatusCode(200); res.setBody('{"success":"File moved successfully"}'); System.debug('Mock Endpoint >>> ' + req.getEndpoint()); System.debug('Mock Method >>> ' + req.getMethod()); System.debug('Mock Body >>> ' + req.getBody()); return res; } } @isTest static void testMoveFileAndFolderSuccess() { Test.setMock(HttpCalloutMock.class, new MoveFileMock()); Map params = new Map(); params.put('fileId','drive123:site123:item123'); params.put('newFolderId','drive123:site123:newParent123'); params.put('oldFolderId','drive123:site123:oldParent123'); params.put('accessToken','dummyToken'); params.put('isServiceMode',false); System.debug('Move Params >>> ' + params); Test.startTest(); SharePointFeature feature = new SharePointFeature(); OperationResult result = feature.moveFileAndFolder(params); Test.stopTest(); System.debug('Move Success Result >>> ' + result); System.assertNotEquals(null, result); } public class DownloadFileMock implements HttpCalloutMock { public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setHeader('Content-Type', 'application/octet-stream'); res.setStatusCode(200); Blob fileData = Blob.valueOf('Dummy File Content'); res.setBodyAsBlob(fileData); System.debug('Mock Endpoint >>> ' + req.getEndpoint()); System.debug('Mock Method >>> ' + req.getMethod()); return res; } } @isTest static void testDownloadFileSuccess() { Test.setMock(HttpCalloutMock.class, new DownloadFileMock()); Map params = new Map(); params.put('fileId','drive123:site123:item123'); params.put('accessToken','dummyAccessToken'); params.put('isServiceMode',false); System.debug('Download Params >>> ' + params); Test.startTest(); SharePointFeature feature = new SharePointFeature(); OperationResult result = feature.downloadFile(params); Test.stopTest(); System.debug('Download Result >>> ' + result); System.assertNotEquals(null,result); } @isTest static void testEmailFileSuccess(){ // Create Org Wide Email Address // OrgWideEmailAddress owe = new OrgWideEmailAddress(); // owe.Address = 'test@test.com'; // owe.DisplayName = 'Test Email'; // owe.IsAllowAllProfiles = true; // insert owe; Map mailDetails = new Map(); // mailDetails.put('fromUser', owe.Id); mailDetails.put('toUser', 'receiver@test.com'); mailDetails.put('ccUser', 'cc@test.com'); mailDetails.put('bccUser', 'bcc@test.com'); mailDetails.put('subject', 'Test Subject'); mailDetails.put('body', '

This is test body

'); Map params = new Map(); params.put('isServiceMode', false); params.put('fileId', 'drive123:site123:item123'); params.put('fileName', 'TestFile.txt'); params.put('toSendFileNameMimeType', 'text/plain'); params.put('mailDetails', mailDetails); System.debug('Params >>> ' + params); Test.startTest(); SharePointFeature feature = new SharePointFeature(); OperationResult result = feature.emailFile(params); Test.stopTest(); System.debug('Email Result >>> ' + result); System.assertNotEquals(null,result); } }