@IsTest private class GoogleDriveAuthTest { private static StorageProviderConfigUtil.Config getMockConfig() { StorageProviderConfigUtil.Config cfg = new StorageProviderConfigUtil.Config(); cfg.clientId = 'mockClientId'; cfg.clientSecret = 'mockSecret'; cfg.authEndpoint = 'https://accounts.google.com/o/oauth2/auth'; cfg.tokenEndpoint = 'https://www.googleapis.com/oauth2/v4/token'; cfg.redirectUri = 'https://example.com/oauth/callback'; cfg.scope = 'https://www.googleapis.com/auth/drive'; return cfg; } private static HttpResponse mockTokenResponse(Integer statusCode, String body) { HttpResponse res = new HttpResponse(); res.setStatusCode(statusCode); res.setBody(body); return res; } // @IsTest // static void testInitiateAuth() { // User u = [SELECT Id FROM User WHERE IsActive = TRUE LIMIT 1]; // System.runAs(u) { // Storage_Provider_Config__mdt mdt = [ // SELECT DeveloperName, Provider_Type__c, Auth_Endpoint__c, Token_Endpoint__c, // Scope__c, Redirect_Uri__c, Client_Id__c, Client_Secret__c // FROM Storage_Provider_Config__mdt // WHERE DeveloperName = 'Google_Drive' // LIMIT 1 // ]; // Test.startTest(); // GoogleDriveAuth auth = new GoogleDriveAuth(); // String url = auth.initiateAuth('Google Drive'); // Test.stopTest(); // System.assert(url.contains('client_id=' + mdt.Client_Id__c)); // //System.assert(url.contains('redirect_uri=' + EncodingUtil.urlEncode(mdt.Redirect_Uri__c, 'UTF-8'))); // } // } // @IsTest // static void testGetAccessTokenSuccess() { // User u = [SELECT Id FROM User WHERE IsActive = TRUE LIMIT 1]; // System.runAs(u) { // Test.startTest(); // Test.setMock(HttpCalloutMock.class, new GoogleDriveHttpCalloutMock()); // GoogleDriveAuth auth = new GoogleDriveAuth(); // auth.getAccessToken('dummyCode', 'Google Drive', false, UserInfo.getUserId()); // Test.stopTest(); // } // } @IsTest static void testRefreshAccessTokenSuccess() { User u = [SELECT Id FROM User WHERE IsActive = TRUE LIMIT 1]; System.runAs(u) { Test.startTest(); Test.setMock(HttpCalloutMock.class, new GoogleDriveHttpCalloutMock()); GoogleDriveAuth auth = new GoogleDriveAuth(); String token = auth.refreshAccessToken('dummyRefreshToken'); Test.stopTest(); System.assertEquals('mockRefreshedToken', token, 'Should return refreshed token'); } } @IsTest static void testOrgSandBoxOrProduction() { User u = [SELECT Id FROM User WHERE IsActive = TRUE LIMIT 1]; System.runAs(u) { Test.startTest(); Boolean isProd = GoogleDriveAuth.orgSandBoxOrProduction(); Test.stopTest(); System.assert(isProd == ![SELECT IsSandbox FROM Organization LIMIT 1].IsSandbox, 'Should match org type'); } } private class GoogleDriveHttpCalloutMock implements HttpCalloutMock { public HttpResponse respond(HttpRequest req) { if (req.getEndpoint().contains('oauth2/v4/token')) { if (req.getMethod() == 'POST' && req.getBody().contains('grant_type=authorization_code')) { return mockTokenResponse(200, '{"access_token":"mockAccessToken","refresh_token":"mockRefreshToken"}'); } else if (req.getBody().contains('grant_type=refresh_token')) { return mockTokenResponse(200, '{"access_token":"mockRefreshedToken"}'); } } return mockTokenResponse(404, 'Not Found'); } } }