Hi Everone,
In recent past times
observed external real-time integration unit tests were failing due to some
reasons. Like client secret was changed for the token service, external server was down
etc., Due to these issues our DevOps build pipeline got effected and VS test
task was failing. To overcome these issues we need to fake our HTTP web
requests also in unit test code.
We followed below steps to fake HTTP Requests
- Install HttpWebRequestWrapper from NuGet Packages
- Implement below code in your unit test file
var
fakeResponseBody = Helper.SampleTokenResponse;
var
fakeAzureKeyVaultResponse =
"{\"value\":\"secretkey\",\"id\":\"https://azure.vault.azure.net/secrets/"}";
var
fakeECSResponse = Helper.SoapSampleResponse;
using (new HttpWebRequestWrapperSession(
using (new HttpWebRequestWrapperSession(
new HttpWebRequestWrapperInterceptorCreator(req
=>
{
switch (req.HttpWebRequest.Host)
{
case "login.microsoftonline.com":
case "login.windows.net":
return
req.HttpWebResponseCreator.Create(fakeResponseBody);
case "azure.vault.azure.net":
return
req.HttpWebResponseCreator.Create(fakeAzureKeyVaultResponse);
case "devapi.testserver.com":
return
req.HttpWebResponseCreator.Create(fakeECSResponse);
default:
return req.HttpWebResponseCreator.Create(fakeECSResponse);
}
})))
{
var result =
context.ExecuteCodeActivity<GetSMARTActivities>(inputs, null);
Assert.IsNotNull(result["SMARTActivities"]);
}
That’s it. Note the above code is
written using FakeXrm Easy library for Dynamics CRM custom workflow activity, you need to change it as per your
requirements.
Let me know if you have any
questions. Thanks!
No comments:
Post a Comment