public void Authenticate_ValidCredentials_Authenticated() { var target = new SalesforceClient(); target.Authenticate(CreateAuthenticationFlow(TestConfig.ClientId, TestConfig.ClientSecret, TestConfig.Username, TestConfig.Password)); Assert.IsTrue(target.IsAuthenticated); }
public void Update_ErrorReceivedWithInvalidFields_Exception() { var response = new Mock <IRestResponse <object> >(); response.Setup(r => r.Content).Returns("[{ errorCode: 'error', message: 'error', fields: ['field1', 'field2'] }]"); response.Setup(r => r.StatusCode).Returns(HttpStatusCode.BadRequest); var restClient = new Mock <IRestClient>(); restClient.Setup(r => r.BaseUrl).Returns(new Uri("http://tokenUrl")); restClient.Setup(r => r.Execute <object>(It.IsAny <IRestRequest>())).Returns(response.Object); restClient.Setup(r => r.Execute(It.IsAny <IRestRequest>())).Returns(response.Object); var flow = new Mock <IAuthenticationFlow>(); flow.Setup(f => f.Authenticate()).Returns(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(restClient.Object); target.Authenticate(flow.Object); ExceptionAssert.IsThrowing(new SalesforceException("TESTE", "error", new string[] { "field1", "field2" }), () => { target.Update("TESTE", "TESTE", "TESTE"); }); }
public void Update_StatusCodeOkButErrorException_Exception() { var response = MockRepository.GenerateMock <IRestResponse <object> >(); response.Expect(r => r.Content).Return(""); response.Expect(r => r.StatusCode).Return(HttpStatusCode.NoContent); response.Expect(r => r.ErrorException).Return(new Exception("TESTE")); var restClient = MockRepository.GenerateMock <IRestClient>(); restClient.Expect(r => r.BaseUrl).SetPropertyWithArgument(new Uri("http://tokenUrl")); restClient.Expect(r => r.Execute <object>(null)).IgnoreArguments().Return(response); var flow = MockRepository.GenerateMock <IAuthenticationFlow>(); flow.Expect(f => f.Authenticate()).Return(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(restClient); target.Authenticate(flow); ExceptionAssert.IsThrowing(new FormatException("TESTE" + Environment.NewLine), () => { target.Update("TESTE", "TESTE", "TESTE"); }); }
public void Update_StatusCodeOkButErrorException_Exception() { var response = new Mock <IRestResponse <object> >(); response.Setup(r => r.Content).Returns(""); response.Setup(r => r.StatusCode).Returns(HttpStatusCode.NoContent); response.Setup(r => r.ErrorException).Returns(new Exception("TESTE")); var restClient = new Mock <IRestClient>(); restClient.Setup(r => r.BaseUrl).Returns(new Uri("http://tokenUrl")); restClient.Setup(r => r.Execute(It.IsAny <IRestRequest>())).Returns(response.Object); var flow = new Mock <IAuthenticationFlow>(); flow.Setup(f => f.Authenticate()).Returns(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(restClient.Object); target.Authenticate(flow.Object); ExceptionAssert.IsThrowing(new FormatException("TESTE" + Environment.NewLine), () => { target.Update("TESTE", "TESTE", "TESTE"); }); }
public void Update_ErrorReceivedWithInvalidFields_Exception() { var response = MockRepository.GenerateMock <IRestResponse <object> >(); response.Expect(r => r.Content).Return("[{ errorCode: 'error', message: 'error', fields: ['field1', 'field2'] }]"); response.Expect(r => r.StatusCode).Return(HttpStatusCode.BadRequest); var restClient = MockRepository.GenerateMock <IRestClient>(); restClient.Expect(r => r.BaseUrl).SetPropertyWithArgument(new Uri("http://tokenUrl")); restClient.Expect(r => r.Execute <object>(null)).IgnoreArguments().Return(response); var flow = MockRepository.GenerateMock <IAuthenticationFlow>(); flow.Expect(f => f.Authenticate()).Return(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(restClient); target.Authenticate(flow); ExceptionAssert.IsThrowing(new SalesforceException("TESTE", "error", new string[] { "field1", "field2" }), () => { target.Update("TESTE", "TESTE", "TESTE"); }); }
private SalesforceClient CreateAltUrlClientWithResponseOk <T>(HttpStatusCode statusCode, T data, Action <Uri> recordUrl) where T : new() { var response = new Mock <IRestResponse <T> >(); response.Setup(r => r.Content).Returns("{\"id\":\"id\",\"records\":[{\"Id\": \"1\"},{\"Id\":\"2\"}]}"); response.Setup(r => r.StatusCode).Returns(statusCode); response.Setup(r => r.ErrorException).Returns((Exception)null); response.Setup(r => r.Data).Returns(data); var restClient = new Mock <IRestClient>(); restClient.Setup(r => r.BaseUrl).Returns(new Uri($"http://url{AltUrl}/TESTE")); restClient.Setup(r => r.Execute(It.IsAny <IRestRequest>())).Returns(response.Object); restClient.Setup(r => r.Execute <T>(It.IsAny <IRestRequest>())).Returns(response.Object); var flow = new Mock <IAuthenticationFlow>(); flow.Setup(f => f.Authenticate()).Returns(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(restClient.Object); target.Authenticate(flow.Object); return(target); }
private SalesforceClient CreateAltUrlClientWithResponseOk <T>(HttpStatusCode statusCode, T data, Action <Uri> recordUrl) where T : new() { var response = MockRepository.GenerateMock <IRestResponse <T> >(); response.Expect(r => r.Content).Return("{\"id\":\"id\",\"records\":[{\"Id\": \"1\"},{\"Id\":\"2\"}]}"); response.Expect(r => r.StatusCode).Return(statusCode); response.Expect(r => r.ErrorException).Return(null); response.Expect(r => r.Data).Return(data); var restClient = MockRepository.GenerateMock <IRestClient>(); restClient.Expect(r => r.BaseUrl = new Uri(string.Format("http://url{0}/TESTE", AltUrl))).IgnoreArguments().Do(recordUrl); restClient.Expect(r => r.Execute(null)).IgnoreArguments().Return(response); restClient.Expect(r => r.Execute <T>(null)).IgnoreArguments().Return(response); var flow = MockRepository.GenerateMock <IAuthenticationFlow>(); flow.Expect(f => f.Authenticate()).Return(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(restClient); target.Authenticate(flow); return(target); }
private SalesforceClient CreateClientWithResponseOk <T>(HttpStatusCode statusCode, T data) where T : new() { var response = MockRepository.GenerateMock <IRestResponse <T> >(); response.Expect(r => r.Content).Return("{\"id\":\"id\",\"records\":[{\"Id\": \"1\"},{\"Id\":\"2\"}]}"); response.Expect(r => r.StatusCode).Return(statusCode); response.Expect(r => r.ErrorException).Return(null); response.Expect(r => r.Data).Return(data); var restClient = MockRepository.GenerateMock <IRestClient>(); //restClient.Expect(r => r.BaseUrl).SetPropertyWithArgument("url/services/data/v28.0/query?q=SELECT Id FROM TESTE WHERE Id = 'TESTE'"); restClient.Expect(r => r.Execute <T>(null)).IgnoreArguments().Return(response); var flow = MockRepository.GenerateMock <IAuthenticationFlow>(); flow.Expect(f => f.Authenticate()).Return(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(restClient); target.Authenticate(flow); return(target); }
public void Authenticate_InvalidClientSecret_InvalidClientSecret() { var target = new SalesforceClient(); ExceptionAssert.IsThrowing(new SalesforceException(SalesforceError.InvalidClient, "invalid client credentials"), () => { target.Authenticate(CreateAuthenticationFlow(TestConfig.ClientId, "invalid client secret", "invalid user name", TestConfig.Password)); }); Assert.IsFalse(target.IsAuthenticated); }
public void Authenticate_InvalidPassword_InvalidPassword() { var target = new SalesforceClient(); ExceptionAssert.IsThrowing(new SalesforceException(SalesforceError.InvalidPassword, "authentication failure"), () => { target.Authenticate(CreateAuthenticationFlow(TestConfig.ClientId, TestConfig.ClientSecret, TestConfig.Username, "invalid password")); }); Assert.IsFalse(target.IsAuthenticated); }
public void Authenticate_InvalidPassword_InvalidPassword() { var target = new SalesforceClient(); ExceptionAssert.IsThrowing(new SalesforceException(SalesforceError.InvalidPassword, "authentication failure - invalid password"), () => { target.Authenticate(CreateAuthenticationFlow(TestConfig.ClientId, TestConfig.ClientSecret, TestConfig.Username, "invalid password")); }); Assert.IsFalse(target.IsAuthenticated); }
public void Authenticate_InvalidClientSecret_InvalidClientSecret() { var target = new SalesforceClient(); ExceptionAssert.IsThrowing(new SalesforceException(SalesforceError.InvalidClient, "invalid client credentials"), () => { target.Authenticate(CreateAuthenticationFlow(TestConfig.ClientId, "invalid client secret", "invalid user name", TestConfig.Password)); }); Assert.IsFalse(target.IsAuthenticated); }
public void Authenticate_FlowCanAuthenticate_IsAuthenticated() { var flow = MockRepository.GenerateMock <IAuthenticationFlow>(); flow.Expect(f => f.Authenticate()).Return(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(); target.Authenticate(flow); Assert.IsTrue(target.IsAuthenticated); Assert.AreEqual(target.InstanceUrl, "http://url"); }
public void Authenticate_FlowCannotAuthenticate_Exception() { var flow = MockRepository.GenerateMock <IAuthenticationFlow>(); flow.Expect(f => f.Authenticate()).Throw(new SalesforceException(SalesforceError.AuthenticationFailure, "authentication failure")); var target = new SalesforceClient(); ExceptionAssert.IsThrowing(new SalesforceException(SalesforceError.AuthenticationFailure, "authentication failure"), () => { target.Authenticate(flow); }); }
private SalesforceClient CreateClientAndAuth( string clientId, string clientSecret, string username, string password) { var client = new SalesforceClient(); var authenticationFlow = CreateAuthenticationFlow(clientId, clientSecret, username, password); client.Authenticate(authenticationFlow); return(client); }
public void Publish_Package_InstalledAndRunning() { var clientId = ConfigHelper.ReadAppSetting ("SalesforceSharp.FunctionalTests", "ClientId"); var clientSecret = ConfigHelper.ReadAppSetting ("SalesforceSharp.FunctionalTests", "ClientSecret"); var username = ConfigHelper.ReadAppSetting ("SalesforceSharp.FunctionalTests", "Username"); var password = ConfigHelper.ReadAppSetting ("SalesforceSharp.FunctionalTests", "Password"); var flow = new UsernamePasswordAuthenticationFlow (clientId, clientSecret, username, password); var client = new SalesforceClient(); client.Authenticate (flow); var users = client.Query<UserStub> ("SELECT Username, Email FROM USER"); Assert.That (users.Count > 0); Assert.IsFalse (String.IsNullOrEmpty (users [0].Username)); Assert.IsFalse (String.IsNullOrEmpty (users [0].Email)); Assert.IsTrue (String.IsNullOrEmpty (users [0].Alias)); }
public void Publish_Package_InstalledAndRunning() { var clientId = ConfigHelper.ReadAppSetting("SalesforceSharp.FunctionalTests", "ClientId"); var clientSecret = ConfigHelper.ReadAppSetting("SalesforceSharp.FunctionalTests", "ClientSecret"); var username = ConfigHelper.ReadAppSetting("SalesforceSharp.FunctionalTests", "Username"); var password = ConfigHelper.ReadAppSetting("SalesforceSharp.FunctionalTests", "Password"); var flow = new UsernamePasswordAuthenticationFlow(clientId, clientSecret, username, password); var client = new SalesforceClient(); client.Authenticate(flow); var users = client.Query <UserStub> ("SELECT Username, Email FROM USER"); Assert.That(users.Count > 0); Assert.IsFalse(String.IsNullOrEmpty(users [0].Username)); Assert.IsFalse(String.IsNullOrEmpty(users [0].Email)); Assert.IsTrue(String.IsNullOrEmpty(users [0].Alias)); }
private SalesforceClient CreateClientWithResponseError <T>() where T : new() { var response = MockRepository.GenerateMock <IRestResponse <T> >(); response.Expect(r => r.Content).Return("[{ errorCode: 'error', message: 'error' }]"); response.Expect(r => r.StatusCode).Return(HttpStatusCode.BadRequest); var restClient = MockRepository.GenerateMock <IRestClient>(); restClient.Expect(r => r.BaseUrl).SetPropertyWithArgument(new Uri("http://tokenUrl")); restClient.Expect(r => r.Execute <T>(null)).IgnoreArguments().Return(response); var flow = MockRepository.GenerateMock <IAuthenticationFlow>(); flow.Expect(f => f.Authenticate()).Return(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(restClient); target.Authenticate(flow); return(target); }
private SalesforceClient CreateClientWithResponseError <T>() where T : new() { var response = new Mock <IRestResponse <T> >(); response.Setup(r => r.Content).Returns("[{ errorCode: 'error', message: 'error' }]"); response.Setup(r => r.StatusCode).Returns(HttpStatusCode.BadRequest); var restClient = new Mock <IRestClient>(); restClient.Setup(r => r.BaseUrl).Returns(new Uri("http://tokenUrl")); restClient.Setup(r => r.Execute(It.IsAny <IRestRequest>())).Returns(response.Object); restClient.Setup(r => r.Execute <T>(It.IsAny <IRestRequest>())).Returns(response.Object); var flow = new Mock <IAuthenticationFlow>(); flow.Setup(f => f.Authenticate()).Returns(new AuthenticationInfo("access", "http://url")); var target = new SalesforceClient(restClient.Object); target.Authenticate(flow.Object); return(target); }
static void Main(string[] args) { // See the SalesforceSetupWalkthrough.doc for information on how to configure your SalesForce account // from your setup >> create >> apps >> connected apps settings in SalesForce const string sfdcConsumerKey = "3MVG9JZ_r.QzrS7gHCcJexYMP2UL45ZgzaagHsVXfYSjWwlhU7n2uaxzfsuBNvwjofV70lM9QtA_xYLTxXjgf"; const string sfdcConsumerSecret = "2968907211720668629"; // your user credentials in salesforce const string sfdcUserName = "******"; const string sfdcPassword = "******"; // your security token form salesforce. Name >> My Settings >> Personal >> Reset My Security Token const string sfdcToken = "w7UGcyJnOaWX8U7XRCEbIfLYw"; var client = new SalesforceClient(); var authFlow = new UsernamePasswordAuthenticationFlow(sfdcConsumerKey, sfdcConsumerSecret, sfdcUserName, sfdcPassword + sfdcToken); // all actions should be in a try-catch - i'll just do the authentication one for an example try { client.Authenticate(authFlow); } catch (SalesforceException ex) { Console.WriteLine("Authentication failed: {0} : {1}", ex.Error, ex.Message); } // create a record using a class instance SFCaseUpdate myCase = new SFCaseUpdate(); myCase.Subject = "This is the subject of my salesforce case"; myCase.Description = "This is the description of my salesforce case"; myCase.Rank__c = 5; client.Create("Case", myCase); // create a record using an anonymous class and returns the ID string resultID = client.Create("Case", new { Subject = "This is the subject of another salesforce case", Description = "This is the description of that other salesforce case", Rank__c = 5 }); // query records var records = client.Query <SFCase>("SELECT id, CaseNumber, Subject, Description, Rank__c FROM Case"); foreach (var r in records) { Console.WriteLine("Query Records {0}: {1} {2}", r.id, r.CaseNumber, r.Subject); } // find the record we just added by the ID we captured above in resultID var record = client.FindById <SFCase>("Case", resultID); Console.WriteLine("\n\nRead this record {0} {1} {2} {3} {4}\n\n", record.id, record.CaseNumber, record.Subject, record.Description, record.Rank__c); // update that record and set the custom field rank to 1 using an anonymous class. client.Update("Case", resultID, new { Rank__c = 1 }); // update that record and set the custom field rank to 9001 using a class instance, note that i have to fill in every property from the record or it will push back nulls SFCaseUpdate myupdate = new SFCaseUpdate(); myupdate.Rank__c = 9001; myupdate.Description = record.Description; myupdate.Subject = record.Subject; client.Update("Case", resultID, myupdate); // re-read it to see if it updated correctly, rank should = 9001 var record2 = client.FindById <SFCase>("Case", resultID); Console.WriteLine("Read this record again {0} {1} {2} {3} {4}\n\n", record2.id, record2.CaseNumber, record2.Subject, record2.Description, record2.Rank__c); // now delete the record I added client.Delete("Case", resultID); Console.WriteLine("Hit Enter to Exit"); Console.ReadKey(); }
static void Main(string[] args) { // See the SalesforceSetupWalkthrough.doc for information on how to configure your SalesForce account // from your setup >> create >> apps >> connected apps settings in SalesForce const string sfdcConsumerKey = "3MVG9JZ_r.QzrS7gHCcJexYMP2UL45ZgzaagHsVXfYSjWwlhU7n2uaxzfsuBNvwjofV70lM9QtA_xYLTxXjgf"; const string sfdcConsumerSecret = "2968907211720668629"; // your user credentials in salesforce const string sfdcUserName = "******"; const string sfdcPassword = "******"; // your security token form salesforce. Name >> My Settings >> Personal >> Reset My Security Token const string sfdcToken = "w7UGcyJnOaWX8U7XRCEbIfLYw"; var client = new SalesforceClient(); var authFlow = new UsernamePasswordAuthenticationFlow(sfdcConsumerKey, sfdcConsumerSecret, sfdcUserName, sfdcPassword + sfdcToken); // all actions should be in a try-catch - i'll just do the authentication one for an example try { client.Authenticate(authFlow); } catch (SalesforceException ex) { Console.WriteLine("Authentication failed: {0} : {1}", ex.Error, ex.Message); } // create a record using a class instance SFCaseUpdate myCase = new SFCaseUpdate(); myCase.Subject = "This is the subject of my salesforce case"; myCase.Description = "This is the description of my salesforce case"; myCase.Rank__c = 5; client.Create("Case", myCase); // create a record using an anonymous class and returns the ID string resultID = client.Create("Case", new { Subject = "This is the subject of another salesforce case", Description = "This is the description of that other salesforce case", Rank__c = 5 }); // query records var records = client.Query<SFCase>("SELECT id, CaseNumber, Subject, Description, Rank__c FROM Case"); foreach (var r in records) { Console.WriteLine("Query Records {0}: {1} {2}", r.id, r.CaseNumber, r.Subject); } // find the record we just added by the ID we captured above in resultID var record = client.FindById<SFCase>("Case", resultID); Console.WriteLine("\n\nRead this record {0} {1} {2} {3} {4}\n\n", record.id, record.CaseNumber, record.Subject, record.Description, record.Rank__c); // update that record and set the custom field rank to 1 using an anonymous class. client.Update("Case", resultID, new { Rank__c = 1 }); // update that record and set the custom field rank to 9001 using a class instance, note that i have to fill in every property from the record or it will push back nulls SFCaseUpdate myupdate = new SFCaseUpdate(); myupdate.Rank__c = 9001; myupdate.Description = record.Description; myupdate.Subject = record.Subject; client.Update("Case", resultID, myupdate); // re-read it to see if it updated correctly, rank should = 9001 var record2 = client.FindById<SFCase>("Case", resultID); Console.WriteLine("Read this record again {0} {1} {2} {3} {4}\n\n", record2.id, record2.CaseNumber, record2.Subject, record2.Description, record2.Rank__c); // now delete the record I added client.Delete("Case", resultID); Console.WriteLine("Hit Enter to Exit"); Console.ReadKey(); }
private SalesforceClient CreateClientAndAuth( string clientId, string clientSecret, string username, string password) { var client = new SalesforceClient(); var authenticationFlow = CreateAuthenticationFlow(clientId, clientSecret, username, password); client.Authenticate(authenticationFlow); return client; }
public void Authenticate_ValidCredentials_Authenticated() { var target = new SalesforceClient(); target.Authenticate(CreateAuthenticationFlow(TestConfig.ClientId, TestConfig.ClientSecret, TestConfig.Username, TestConfig.Password)); Assert.IsTrue(target.IsAuthenticated); }