/// <summary> /// Gets a solution. /// </summary> /// <param name="solutionUniqueName">The unique name of the solution.</param> /// <returns>The solution.</returns> public async Task <DynamicsCrmSolution> GetSolutionAsync(string solutionUniqueName) { LogInformation("Acquiring access token..."); IHttpClient httpClient = TokenProvider.GetHttpClient(_audience); LogInformation($"Acquiring solution named '{solutionUniqueName}' from Dynamics CRM instance '{_uniqueName}'..."); HttpResponseMessage response = await httpClient.GetAsync($"{_baseAddress}solutions?$filter=uniquename eq '{solutionUniqueName}'"); DynamicsCrmValueResponse <DynamicsCrmSolution> result = null; if (response.IsSuccessStatusCode) { result = JsonConvert.DeserializeObject <DynamicsCrmValueResponse <DynamicsCrmSolution> >(await response.Content.ReadAsStringAsync()); if (result == null || result.Value == null) { return(null); } } else { LogError($"ERROR: ({response.StatusCode}) {response.ReasonPhrase}"); throw new RequestException(response); } return(result.Value.FirstOrDefault()); }
public void GetSolutionsAsyncSuccess() { string expectedUniqueName = "orgtest1"; string expectedDomainName = "orgtest5"; string expectedOrgId = Guid.NewGuid().ToString(); string expectedSolutionId = Guid.NewGuid().ToString(); string expectedSolutionUniqueName = "TestSolution"; string expectedSolutionVersion = "1.0.0.5"; string expectedRequestUri = $"https://{expectedDomainName}.crm.dynamics.com/api/data/v9.0/solutions"; string responseFilePath = @"./data/templates/responses/dynamicsCrm/getSolutions.json"; HttpRequestMessage expectedRequest = TestHelper.CreateHttpRequest( HttpMethod.Get, expectedRequestUri); _httpClient.RegisterExpectedRequest(new ExpectedRequest(expectedRequest)); HttpResponseMessage expectedResponse = TestHelper.CreateHttpResponse( HttpStatusCode.OK, null, responseFilePath, "application/json", new Dictionary <string, string>() { { "orgId", expectedOrgId }, { "solutionId", expectedSolutionId }, { "uniqueName", expectedSolutionUniqueName }, { "version", expectedSolutionVersion }, }); _httpClient.RegisterExpectedResponse( expectedRequestUri, new ExpectedResponse(expectedResponse)); IDynamicsCrmClient client = new DynamicsCrmClient( expectedUniqueName, expectedDomainName, _tokenProvider); DynamicsCrmValueResponse <DynamicsCrmSolution> response = client.GetSolutionsAsync().Result; Assert.IsNotNull(response, "The response should not be null!"); Assert.IsNotNull(response.Value, "The response Value member should not be null!"); Assert.AreEqual(1, response.Value.Length, $"Unexpected number of solutions returned ('1' != '{response.Value.Length}')!"); Assert.AreEqual(expectedSolutionId, response.Value[0].SolutionId, $"Unexpected solution id ('{expectedSolutionId}' != '{response.Value[0].SolutionId}')"); Assert.AreEqual(expectedSolutionUniqueName, response.Value[0].UniqueName, $"Unexpected solution id ('{expectedSolutionUniqueName}' != '{response.Value[0].UniqueName}')"); Assert.AreEqual(expectedSolutionVersion, response.Value[0].Version, $"Unexpected solution id ('{expectedSolutionVersion}' != '{response.Value[0].Version}')"); }