Class InterceptorManager

java.lang.Object
com.azure.core.test.InterceptorManager
All Implemented Interfaces:
AutoCloseable

public class InterceptorManager extends Object implements AutoCloseable
A class that keeps track of network calls by either reading the data from an existing test session record or recording the network calls in memory. Test session records are saved or read from: "session-records/ testName.json"
  • If the testMode is TestMode.PLAYBACK, the manager tries to find an existing test session record to read network calls from.
  • If the testMode is TestMode.RECORD, the manager creates a new test session record and saves all the network calls to it.
  • If the testMode is TestMode.LIVE, the manager won't attempt to read or create a test session record.
When the InterceptorManager is disposed, if the testMode is TestMode.RECORD, the network calls that were recorded are persisted to: "session-records/testName.json"
  • Constructor Details

    • InterceptorManager

      @Deprecated public InterceptorManager(String testName, TestMode testMode)
      Deprecated.
      Creates a new InterceptorManager that either replays test-session records or saves them.
      • If testMode is TestMode.PLAYBACK, the manager tries to find an existing test session record to read network calls from.
      • If testMode is TestMode.RECORD, the manager creates a new test session record and saves all the network calls to it.
      The test session records are persisted in the path: "session-records/testName.json"
      Parameters:
      testName - Name of the test session record.
      testMode - The TestMode for this interceptor.
      Throws:
      UncheckedIOException - If testMode is TestMode.PLAYBACK and an existing test session record could not be located or the data could not be deserialized into an instance of RecordedData.
      NullPointerException - If testName is null.
    • InterceptorManager

      public InterceptorManager(TestContextManager testContextManager)
      Creates a new InterceptorManager that either replays test-session records or saves them.
      • If testMode is TestMode.PLAYBACK, the manager tries to find an existing test session record to read network calls from.
      • If testMode is TestMode.RECORD, the manager creates a new test session record and saves all the network calls to it.
      • If testMode is TestMode.LIVE, the manager won't attempt to read or create a test session record.
      The test session records are persisted in the path: "session-records/testName.json"
      Parameters:
      testContextManager - Contextual information about the test being ran, such as test name, TestMode, and others.
      Throws:
      UncheckedIOException - If testMode is TestMode.PLAYBACK and an existing test session record could not be located or the data could not be deserialized into an instance of RecordedData.
      NullPointerException - If testName is null.
    • InterceptorManager

      @Deprecated public InterceptorManager(String testName, Map<String,String> textReplacementRules)
      Creates a new InterceptorManager that replays test session records. It takes a set of textReplacementRules, that can be used by PlaybackClient to replace values in a NetworkCallRecord.getResponse(). The test session records are read from: "session-records/testName.json"
      Parameters:
      testName - Name of the test session record.
      textReplacementRules - A set of rules to replace text in NetworkCallRecord.getResponse() when playing back network calls.
      Throws:
      UncheckedIOException - An existing test session record could not be located or the data could not be deserialized into an instance of RecordedData.
      NullPointerException - If testName or textReplacementRules is null.
    • InterceptorManager

      @Deprecated public InterceptorManager(String testName, Map<String,String> textReplacementRules, boolean doNotRecord)
      Creates a new InterceptorManager that replays test session records. It takes a set of textReplacementRules, that can be used by PlaybackClient to replace values in a NetworkCallRecord.getResponse(). The test session records are read from: "session-records/testName.json"
      Parameters:
      testName - Name of the test session record.
      textReplacementRules - A set of rules to replace text in NetworkCallRecord.getResponse() when playing back network calls.
      doNotRecord - Flag indicating whether network calls should be record or played back.
      Throws:
      UncheckedIOException - An existing test session record could not be located or the data could not be deserialized into an instance of RecordedData.
      NullPointerException - If testName or textReplacementRules is null.
    • InterceptorManager

      public InterceptorManager(String testName, Map<String,String> textReplacementRules, boolean doNotRecord, String playbackRecordName)
      Creates a new InterceptorManager that replays test session records. It takes a set of textReplacementRules, that can be used by PlaybackClient to replace values in a NetworkCallRecord.getResponse(). The test session records are read from: "session-records/testName.json"
      Parameters:
      testName - Name of the test.
      textReplacementRules - A set of rules to replace text in NetworkCallRecord.getResponse() when playing back network calls.
      doNotRecord - Flag indicating whether network calls should be record or played back.
      playbackRecordName - Full name of the test including its iteration, used as the playback record name.
      Throws:
      UncheckedIOException - An existing test session record could not be located or the data could not be deserialized into an instance of RecordedData.
      NullPointerException - If testName or textReplacementRules is null.
  • Method Details

    • isPlaybackMode

      public boolean isPlaybackMode()
      Gets whether this InterceptorManager is in playback mode.
      Returns:
      true if the InterceptorManager is in playback mode and false otherwise.
    • isLiveMode

      public boolean isLiveMode()
      Gets whether this InterceptorManager is in live mode.
      Returns:
      true if the InterceptorManager is in live mode and false otherwise.
    • getRecordedData

      public com.azure.core.test.models.RecordedData getRecordedData()
      Gets the recorded data InterceptorManager is keeping track of.
      Returns:
      The recorded data managed by InterceptorManager.
    • getRecordPolicy

      public HttpPipelinePolicy getRecordPolicy()
      Gets a new HTTP pipeline policy that records network calls and its data is managed by InterceptorManager.
      Returns:
      HttpPipelinePolicy to record network calls.
    • getRecordPolicy

      public HttpPipelinePolicy getRecordPolicy(List<Function<String,String>> recordingRedactors)
      Gets a new HTTP pipeline policy that records network calls. The recorded content is redacted by the given list of redactor functions to hide sensitive information.
      Parameters:
      recordingRedactors - The custom redactor functions that are applied in addition to the default redactor functions defined in RecordingRedactor.
      Returns:
      HttpPipelinePolicy to record network calls.
    • getPlaybackClient

      public HttpClient getPlaybackClient()
      Gets a new HTTP client that plays back test session records managed by InterceptorManager.
      Returns:
      An HTTP client that plays back network calls from its recorded data.
    • close

      public void close()
      Disposes of resources used by this InterceptorManager. If testMode is TestMode.RECORD, all the network calls are persisted to: "session-records/testName.json"
      Specified by:
      close in interface AutoCloseable
    • addTextReplacementRule

      public void addTextReplacementRule(String regex, String replacement)
      Add text replacement rule (regex as key, the replacement text as value) into textReplacementRules
      Parameters:
      regex - the pattern to locate the position of replacement
      replacement - the replacement text