@IsTest public with sharing class BoxAuthTest { // Mock for HTTP callouts private class BoxTokenMock implements HttpCalloutMock { public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setStatusCode(200); // First call: token endpoint if (req.getMethod() == 'POST') { res.setBody('{"access_token":"testAccessToken","refresh_token":"testRefreshToken"}'); } // Second call: fetch user info else if (req.getMethod() == 'GET') { res.setBody('{"login":"testuser@box.com"}'); } return res; } } @IsTest static void testGetAccessToken() { // Set mock Test.setMock(HttpCalloutMock.class, new BoxTokenMock()); // Create instance of your auth class // Replace BoxAuth with your actual class name BoxAuth auth = new BoxAuth(); Test.startTest(); auth.getAccessToken( 'dummyCode', 'box', true, UserInfo.getUserId() ); Test.stopTest(); // Optional: Query token object if storeToken inserts record // Add assertion if needed System.assert(true); // Method executed successfully } private class RefreshTokenMock implements HttpCalloutMock { public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setStatusCode(200); res.setBody('{"access_token":"newAccessToken123"}'); return res; } } @IsTest static void testRefreshAccessToken() { Test.setMock(HttpCalloutMock.class, new RefreshTokenMock()); BoxAuth auth = new BoxAuth(); Test.startTest(); String token = auth.refreshAccessToken('oldRefreshToken'); Test.stopTest(); System.assertEquals('newAccessToken123', token); } }