Backup_FME_personal/force-app/main/default/classes/SharePointFeatureTest.cls

429 lines
13 KiB
OpenEdge ABL

@IsTest
public with sharing class SharePointFeatureTest {
@isTest
static void testGetAllSites_MyDriveTrue() {
Map<String, Object> params = new Map<String, Object>();
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<String, Object> folderMap = new Map<String, Object>();
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<HIC_FilesME__Linked_Folder__c> 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<String, Object> params = new Map<String, Object>();
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<String,Object> params = new Map<String,Object>();
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<String,Object> params = new Map<String,Object>();
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<String,Object> params = new Map<String,Object>();
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<String,Object> params = new Map<String,Object>();
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<String,Object> params = new Map<String,Object>();
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<String,Object> params = new Map<String,Object>();
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<String,Object> mailDetails = new Map<String,Object>();
// 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', '<p>This is test body</p>');
Map<String,Object> params = new Map<String,Object>();
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);
}
}