public void FixtureSetup()
        {

            // Keep a list of envelope IDs so we can cleanup later
            envelopeIDs = new List<string>();

            // Grab all of the account information
            _apiUrl = ConfigurationManager.AppSettings["APIUrl"];
            _accountId = ConfigurationManager.AppSettings["APIAccountId"];
            _email = ConfigurationManager.AppSettings["APIUserEmail"];
            
            if (ConfigurationManager.AppSettings["IntegratorsKey"] != null && ConfigurationManager.AppSettings["IntegratorsKey"].Length > 0)
            {
                _userName = "******" + ConfigurationManager.AppSettings["IntegratorsKey"] + "]";
            }
            else
            {
                Assert.Fail("You must use an integrator's key!");
            }
            _userName += _email;
            _password = ConfigurationManager.AppSettings["Password"];
            _apiClient = new DocuSignWeb.APIServiceSoapClient("APIServiceSoap", _apiUrl);
            _apiClient.ClientCredentials.UserName.UserName = _userName;
            _apiClient.ClientCredentials.UserName.Password = _password;

            // Sanity checking
            Console.WriteLine("Created SOAP client with ApiUrl {0}, UserName {1} and Password {2}", _apiClient.Endpoint.Address,
                               _apiClient.ClientCredentials.UserName.UserName, _apiClient.ClientCredentials.UserName.Password);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="accountCredentials"></param>
        /// <returns>A disposable object you should wrap in using() statement</returns>
        public static DocuSignWeb.APIServiceSoap CreateApiProxy(AccountCredentials accountCredentials)
        {
#if true
            // the envelope is finally constructed we are ready to send it in
            DocuSignWeb.APIServiceSoapClient apiService = new DocuSignWeb.APIServiceSoapClient("APIServiceSoap", accountCredentials.ApiUrl);

            apiService.ClientCredentials.UserName.UserName = accountCredentials.UserName;
            apiService.ClientCredentials.UserName.Password = accountCredentials.Password;

            return(apiService);
#else       // this is a security token configuration
            // this is required for certain calls like RequestRecipientToken
            // you need to get a certificate from Thawte or VeriSign first and install it
            DocuSignWeb.APIServiceSoapClient apiService = new DocuSignWeb.APIServiceSoapClient("APIServiceSoap1", accountCredentials.ApiUrl);
            apiService.ClientCredentials.UserName.UserName = "******" + ConfigurationManager.AppSettings["IntegratorsKey"] + "]" + ConfigurationManager.AppSettings["APIUserEmail"];
            apiService.ClientCredentials.UserName.Password = ConfigurationManager.AppSettings["Password"];

            //
            // need to add the supporting token since DocuSign uses dual authentication for
            // for critical calls
            CustomBinding                   binding         = (CustomBinding)apiService.Endpoint.Binding;
            BindingElementCollection        elements        = binding.CreateBindingElements();
            SecurityBindingElement          security        = elements.Find <SecurityBindingElement>();
            UserNameSecurityTokenParameters tokenParameters = new UserNameSecurityTokenParameters();
            tokenParameters.InclusionMode      = SecurityTokenInclusionMode.AlwaysToRecipient;
            tokenParameters.RequireDerivedKeys = false;
            security.EndpointSupportingTokenParameters.SignedEncrypted.Add(
                tokenParameters);
            apiService.Endpoint.Binding = new CustomBinding(elements.ToArray());;
            return(apiService);
#endif
        }
        public static APIServiceSoap CreateApiProxy(Account Identity, string password)
        {
#if true
            // the envelope is finally constructed we are ready to send it in
            AccountCredentials accountCredentials = new AccountCredentials();

            //If there are many accounts then the firet one is chosen for sending
            accountCredentials.AccountId = Identity.AccountID;
            accountCredentials.ApiUrl    = "https://demo.docusign.net/api/3.0/api.asmx";
            APIServiceSoapClient apiService = new APIServiceSoapClient("APIServiceSoap", accountCredentials.ApiUrl);
            apiService.ClientCredentials.UserName.UserName = Identity.UserID;
            apiService.ClientCredentials.UserName.Password = password;

            return(apiService);
#else       // this is a security token configuration
            // this is required for certain calls like RequestRecipientToken
            // you need to get a certificate from Thawte or VeriSign first and install it
            DocuSignWeb.APIServiceSoapClient apiService = new DocuSignWeb.APIServiceSoapClient("APIServiceSoap1", accountCredentials.ApiUrl);
            apiService.ClientCredentials.UserName.UserName = ConfigurationManager.AppSettings["APIUserName"];
            apiService.ClientCredentials.UserName.Password = ConfigurationManager.AppSettings["Password"];

            //
            // need to add the supporting token since DocuSign uses dual authentication for
            // for critical calls
            CustomBinding                   binding         = (CustomBinding)apiService.Endpoint.Binding;
            BindingElementCollection        elements        = binding.CreateBindingElements();
            SecurityBindingElement          security        = elements.Find <SecurityBindingElement>();
            UserNameSecurityTokenParameters tokenParameters = new UserNameSecurityTokenParameters();
            tokenParameters.InclusionMode      = SecurityTokenInclusionMode.AlwaysToRecipient;
            tokenParameters.RequireDerivedKeys = false;
            security.EndpointSupportingTokenParameters.SignedEncrypted.Add(
                tokenParameters);
            apiService.Endpoint.Binding = new CustomBinding(elements.ToArray());;
            return(apiService);
#endif
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="accountCredentials"></param>
        /// <returns>A disposable object you should wrap in using() statement</returns>
        public static DocuSignWeb.APIServiceSoap CreateApiProxy(AccountCredentials accountCredentials)
        {
            #if true
            // the envelope is finally constructed we are ready to send it in
            DocuSignWeb.APIServiceSoapClient apiService = new DocuSignWeb.APIServiceSoapClient("APIServiceSoap", accountCredentials.ApiUrl);

            apiService.ClientCredentials.UserName.UserName = accountCredentials.UserName;
            apiService.ClientCredentials.UserName.Password = accountCredentials.Password;

            return apiService;

            #else       // this is a security token configuration
            // this is required for certain calls like RequestRecipientToken
            // you need to get a certificate from Thawte or VeriSign first and install it
            DocuSignWeb.APIServiceSoapClient apiService = new DocuSignWeb.APIServiceSoapClient("APIServiceSoap1", accountCredentials.ApiUrl);
            apiService.ClientCredentials.UserName.UserName = "******"+ConfigurationManager.AppSettings["IntegratorsKey"]+"]"+ConfigurationManager.AppSettings["APIUserEmail"];
            apiService.ClientCredentials.UserName.Password = ConfigurationManager.AppSettings["Password"];

            //
            // need to add the supporting token since DocuSign uses dual authentication for
            // for critical calls
            CustomBinding binding = (CustomBinding)apiService.Endpoint.Binding;
            BindingElementCollection elements = binding.CreateBindingElements();
            SecurityBindingElement security = elements.Find<SecurityBindingElement>();
            UserNameSecurityTokenParameters tokenParameters = new UserNameSecurityTokenParameters();
            tokenParameters.InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient;
            tokenParameters.RequireDerivedKeys = false;
            security.EndpointSupportingTokenParameters.SignedEncrypted.Add(
              tokenParameters);
            apiService.Endpoint.Binding = new CustomBinding(elements.ToArray()); ;
            return apiService;
            #endif
        }