public void ClientRequestIdPresentInWebRequestAndValidGuid()
 {
     var mock = new MockRepository(MockBehavior.Loose);
     var request = mock.Create<HttpWebRequest>();
     var headers = new WebHeaderCollection();
     request.SetupProperty(c => c.Headers,headers);
     ClientRequestIdAdapter adapter = new ClientRequestIdAdapter();
     adapter.AddClientRequestId(request.Object);
     Assert.AreEqual(1, request.Object.Headers.Count);
     string xMsClientRequestId = "x-ms-client-request-id";
     Assert.IsNotNull(request.Object.Headers[xMsClientRequestId]);
     Guid guid;
     Assert.IsTrue(Guid.TryParse(request.Object.Headers[xMsClientRequestId],out guid));
 }
        private Uri GetAccountApiEndpoint(OAuthDataServiceAdapter dataServiceAdapter, ServiceVersionAdapter versionAdapter, Uri apiServer, UserAgentAdapter userAgentAdapter,ClientRequestIdAdapter clientRequestIdAdapter)
        {
            MediaRetryPolicy retryPolicy = new MediaRetryPolicy(
                GetWebRequestTransientErrorDetectionStrategy(),
                RetryStrategyFactory.DefaultStrategy());

            Uri apiEndpoint = null;
            retryPolicy.ExecuteAction(
                    () =>
                        {
                            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(apiServer);
                            request.AllowAutoRedirect = false;
                            dataServiceAdapter.AddAccessTokenToRequest(request);
                            versionAdapter.AddVersionToRequest(request);
                            userAgentAdapter.AddUserAgentToRequest(request);
                            clientRequestIdAdapter.AddClientRequestId(request);

                            using (WebResponse response = request.GetResponse())
                            {
                                apiEndpoint = GetAccountApiEndpointFromResponse(response);
                            }
                        }
                );

            return apiEndpoint;
        }