Skip to content

Getting Started with HTTP Mocking

Johannes Fischer edited this page May 3, 2024 · 2 revisions

Getting Started with HTTP Mocking in RFLIB

Overview

RFLIB's HTTP Mocking Framework provides a powerful and flexible way to simulate HTTP responses in Salesforce, allowing developers to test integrations without actual external systems. This is especially beneficial in isolated development and training environments or when the actual endpoint is under development.

Benefits of Using HTTP Mocking

  1. Isolated Testing: Enables testing in environments without connectivity to external systems.
  2. Parallel Development: Facilitates development and testing when the actual endpoint is still being developed. Mocks can use agreed-upon protocols and sample payloads, making the transition to live integration seamless once mocks are disabled.

Enabling HTTP Mocking

To enable HTTP mocking:

  1. Navigate to RFLIB Global Settings in Salesforce Setup.
  2. Set Http_Mocking_Enabled to TRUE to activate the mocking framework.
  3. Additional settings include:
    • Http_Mocking_Allow_In_Production: Allows mocking in production environments when needed.
    • Http_Mocking_Throw_Error_If_Mock_Not_Found: Configures the system to throw an error if no matching mock endpoint is found.

See the Global Config Settings page for more details.

Configuring Mock Endpoints

To configure a mock endpoint, create a new record in the RFLIB HTTP Mock Endpoint (rflib_HTTP_Mock_Endpoint__mdt) metadata type with the following fields:

  • HTTP_Method__c: The HTTP method (GET, POST, etc.)
  • URL_Pattern__c: Regex pattern to match the request URL.
  • Payload_Pattern__c: Regex pattern to match the request payload.
  • Response_Status__c: The HTTP status code to return.
  • Response_Payload__c: The payload to return in the response.
  • Is_Active__c: Flag to enable or disable the mock endpoint.

Here is a sample configuration:

Mock Endpoint Configuration Sample

Example: Making a Mocked HTTP Request

// Create an instance of rflib_HttpRequest
rflib_HttpRequest request = new rflib_HttpRequest();
request.setEndpoint('https://api.example.com/data');
request.setMethod('POST');
request.setBody('{"query": "info"}');

// Send the request - the response will be mocked if mocking is enabled
HttpResponse response = request.send();

// Logging and error handling
System.debug('Status: ' + response.getStatusCode());
System.debug('Body: ' + response.getBody());

// If mocking is enabled and configured correctly, this will output mocked response details.
// If no mock matches and 'Http_Mocking_Throw_Error_If_Mock_Not_Found' is TRUE, an error is thrown.