Microsoft 365 Developer Proxy v0.12 with new mocking capabilities

Waldek Mastykarz

Garry Trinder

We are excited to announce the release of Microsoft 365 Developer Proxy v0.12.0! This latest version brings a host of new features and improvements that will change the way you develop and test your applications.

Matching nth request in mocks

Have you ever needed to simulate a long running operation or test different responses for the same URL? With the new feature in v0.12.0, you can now mock the n-th call to a specific endpoint with a different response. This powerful capability allows you to accurately simulate complex scenarios without the need to tweak URLs or make manual changes. Here’s what you can do with the enhanced mock response object:

  • Extend the response object with an “nth” property that accepts a number. Screenshot of code: Matching nth request in mocks
  • The mock plugin keeps track of the number of times it matches the mock with a request.
  • If “nth” is specified on the response, the mock will be applied only if the number of times it has been matched matches the number specified.
  • If “nth” is not specified, the mock will be applied using the existing logic without considering the number of matched requests.
  • Setting “nth” to 0 allows you to temporarily disable mocks, making it easy to switch between different mock scenarios.

Screenshot of code: Microsoft 365 Developer Proxy simulating different responses on the same API endpoint

Microsoft 365 Developer Proxy simulating different responses on the same API endpoint

If you’re looking for an example, check out our Microsoft Graph connector preset.

For more information about this new configuration option, see the documentation.

Create mocks from intercepted requests

Creating mocks for your intercepted requests has never been more seamless thanks to the brand-new mock generator plugin that we introduce in this version. With this new plugin, you no longer need to manually build the mocks file for your API. Instead, have the proxy generate the mocks for you automatically, based on the actual data returned by your API.

To generate mocks:

  • In the configuration, enable the MockGeneratorPlugin
  • Start Microsoft 365 Developer Proxy with passing all requests through to APIs (m365proxy –failure-rate 0)
  • If needed, update proxy configuration on your system
  • Start recording (press ‘r’ while in the terminal)
  • Use your app to generate API traffic
  • When ready, press ‘s’ while in the terminal
  • Done: proxy has just generated for you a mock file with your mock requests

Screenshot of two windows of code: Microsoft 365 Developer Proxy generated mocks based on intercepted API requests

Microsoft 365 Developer Proxy generated mocks based on intercepted API requests

Delay traffic for real-world testing

Have you ever wondered how your app performs under slow network conditions or when the API that you use is overloaded? In v0.12.0, we have added a feature that allows you to “slow down” requests and emulate a slow connection and delayed API response.

Screenshot of code: Microsoft 365 Developer Proxy simulating slow API responses

Microsoft 365 Developer Proxy simulating slow API responses

This feature is perfect for demonstrating and testing your app’s performance in challenging network environments. Here’s how it works:

  • Enable the new LatencyPlugin in your configuration
  • Specify the minimal and maximal latency that you’d like to simulate
  • Each time the proxy intercepts a request, it will slow it down with a random delay from the range you specified

For more information about the plugin, see the documentation.

Custom behavior for rate limit exceeded

Dealing with rate limits can be challenging, especially when different APIs have varying behaviors. In v0.12.0, we have extended the rate limiting plugin to support configurable behavior when the limit is exceeded. Now you can:

  • Use two new configuration properties to configure the behavior when your app exceeds the API limit: “whenLimitExceeded” and “customResponseFile
  • Set “whenLimitExceeded” to either “Throttle” (default) or “Custom
  • When “whenLimitExceeded” is set to “Custom” provide a custom response including status, headers, and body

This flexibility ensures compatibility with APIs like GitHub, which returns a 403 Forbidden response when your app exceeds its API limits, rather than the typical 429 Too Many Requests error.

Screenshot of code: Microsoft 365 Developer Proxy simulating exceeding GitHub API rate limits Microsoft 365 Developer Proxy simulating exceeding GitHub API rate limits

For example, see the GitHub API rate limit preset on the Sample Solution Gallery.

For more information about the new options, see the documentation.

Reset date format for rate limit

Following our work on simulating rate limits on any API, in v0.12.0, we have extended the rate limit plugin to support a configuration option for defining the format of the reset window. Now, you can choose between using the number of seconds remaining to reset (current behavior) or UTC epoch seconds, which is used by APIs like GitHub. This enhancement empowers you to work seamlessly with different rate limit implementations and use Microsoft 365 Developer Proxy with any API.

For more information about the supported configuration options, see the documentation.

Mocking Microsoft Graph batch responses

Mocking responses for Microsoft Graph batch requests just got easier! In v0.12.0, we introduce a new Graph Mock Response Plugin which supports mocking responses inside Microsoft Graph batch requests.

Screenshot of code: Microsoft 365 Developer Proxy simulating mocking requests inside a Microsoft Graph batch request

Microsoft 365 Developer Proxy simulating mocking requests inside a Microsoft Graph batch request

This powerful new plugin leverages the existing mock infrastructure and offers advanced capabilities to handle batch requests. Here’s what you can expect:

  • Mock requests based on their URL, method, and request body inside Microsoft Graph batch requests.
  • If the intercepted request is a Microsoft Graph batch request, the Graph Mock Response Plugin will unpack the batch, respond to each request with the matching mock and pack all responses into a batch
  • If the intercepted request is not a batch request, it will be mocked as a regular request

Blocking unmocked requests

In v0.12.0, we have extended mock plugins with a configuration option to block passing through unmocked requests. By default, unmocked requests are passed through to the API. However, when passing through is disabled, the mock plugin will return a 502 Bad Gateway response.

Screenshot of code: Microsoft 365 Developer Proxy blocking a request that doesn’t have a matching mock response configured

Microsoft 365 Developer Proxy blocking a request that doesn’t have a matching mock response configured

This new configuration option provides more control over the behavior of your developer proxy. Now you can:

  • Choose to exclusively use mocks and prevent any calls to the API.
  • Ensure a consistent testing environment without worrying about accidental calls to the actual API.
  • Simplify your testing workflows and reduce dependencies on external services.

Try it now

Download Microsoft 365 Developer Proxy v0.12 and check if your apps properly handle API errors.

With Microsoft 365 Developer Proxy v0.12.0, you have access to a suite of powerful features that enhance your development and testing workflows. From precise mocking capabilities to emulating real-world network conditions, we’ve got you covered. Upgrade today and build more robust apps!

Follow us on X @Microsoft365Dev to stay up to date on the latest developer news and announcements.

0 comments

Discussion is closed.

Feedback usabilla icon