示例#1
0
        /// <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());
        }
示例#2
0
        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}')");
        }