protected IShareFileClient GetShareFileClient()
        {
            try
            {
                using (var fileStream = System.IO.File.OpenRead("TestConfig.json"))
                    using (var streamReader = new StreamReader(fileStream))
                    {
                        var info     = streamReader.ReadToEnd();
                        var userInfo = JsonConvert.DeserializeObject <UserInfo>(info);

                        var sfClient = new ShareFileClient(userInfo.GetBaseUri().ToString());

                        lock (oauthTokenLock)
                        {
                            if (token == null)
                            {
                                var oauthService = new OAuthService(sfClient, userInfo.ClientId, userInfo.ClientSecret);
                                token = oauthService.GetPasswordGrantRequestQuery(userInfo.Email, userInfo.Password, userInfo.Subdomain, userInfo.Domain).Execute();
                            }
                        }

                        sfClient.BaseUri = token.GetUri();
                        sfClient.AddOAuthCredentials(token);
                        return(sfClient);
                    }
            }
            catch (Exception exception)
            {
                Assert.Inconclusive(string.Format("No UserInfo found in TestConfig.json. Exception: {0}", exception));
                throw;
            }
        }
        /// <summary>
        /// </summary>
        /// <param name="oauthToken"></param>
        public void AddOAuthCredentials(OAuthToken oauthToken)
        {
            var host = oauthToken.GetUri();

            Logging.Info("Adding OAuth Credentials using oauthToken");
            Logging.Debug("Host: {0}", new object[] { host });

            try
            {
                var existingCredentials = CredentialCache.GetCredential(host, "Bearer");
                if (existingCredentials != null)
                {
                    CredentialCache.Remove(host, "Bearer");
                }
            }
            catch (Exception exception)
            {
                Logging.Error(exception, "Failed to add OAuth credentials");
            }
            finally
            {
                CredentialCache.Add(host, "Bearer", new OAuth2Credential(oauthToken));
            }
        }