@isTest private class RefreshTokenKeepAliveTest { private class TokenRefreshMock implements HttpCalloutMock { Integer status; String body; TokenRefreshMock(Integer status, String body) { this.status = status; this.body = body; } public HTTPResponse respond(HTTPRequest req) { HttpResponse res = new HttpResponse(); res.setHeader('Content-Type', 'application/json'); res.setBody(body); res.setStatusCode(status); return res; } } private static HIC_ShopifySync__Configuration__c seedConfig() { HIC_ShopifySync__Configuration__c c = new HIC_ShopifySync__Configuration__c( Name = 'Default', HIC_ShopifySync__ClientId__c = 'test_client_id', HIC_ShopifySync__ClientSecret__c = 'test_client_secret', HIC_ShopifySync__Access_Token__c = 'old_access', HIC_ShopifySync__Refresh_Token__c = 'old_refresh' ); insert c; return c; } @isTest static void execute_doesNotThrow() { seedConfig(); Test.setMock(HttpCalloutMock.class, new TokenRefreshMock(200, '{"access_token":"new_access","refresh_token":"new_refresh"}')); Test.startTest(); new RefreshTokenKeepAlive().execute(null); Test.stopTest(); } @isTest static void refreshNow_withNoConfig_doesNothing() { Test.startTest(); RefreshTokenKeepAlive.refreshNow(); Test.stopTest(); } @isTest static void refreshNow_withBlankRefreshToken_doesNothing() { HIC_ShopifySync__Configuration__c c = new HIC_ShopifySync__Configuration__c( Name = 'Default', HIC_ShopifySync__ClientId__c = 'cid', HIC_ShopifySync__ClientSecret__c = 'csec' ); insert c; Test.startTest(); RefreshTokenKeepAlive.refreshNow(); Test.stopTest(); HIC_ShopifySync__Configuration__c after = [SELECT HIC_ShopifySync__Refresh_Token__c FROM HIC_ShopifySync__Configuration__c WHERE Name = 'Default']; System.assertEquals(null, after.HIC_ShopifySync__Refresh_Token__c); } }