Inheritance: MonoBehaviour
        public IEnumerator Start()
        {
            loginUI = FindObjectOfType <LoginUI>();

            // Init SF controller
            SalesforceClient client = GetComponent <SalesforceClient>();

            if (ApplicationState.sfConnection != null)
            {
                client.setConnection(ApplicationState.sfConnection);
            }
            sfController = new SalesforceController(this, client);

            // Is this the first run?
            if (ApplicationState.sfConnection == null)
            {
                // Show login screen
                yield return(FindObjectOfType <VRUtil>().enableVrMode(false));

                loginUI.setSalesforceController(sfController);
                StartCoroutine(loginUI.fadeIn());
            }
            else             // Returning to menu, display config list
            {
                // Destroy non-VR UI
                Destroy(loginUI.gameObject);
                Destroy(FindObjectOfType <StandaloneInputModule>());
                // Enable VR UI
                StartCoroutine(Camera.main.fadeIn(3));
                setVrUiScreen(configurationSelectionContainer.name);
                yield return(initConfigSelectionView());

                yield return(transitionUi(true));
            }
        }
        public async Task <SalesforceClient> CreateClientAsync(string name, ApiVersion apiVersion = null, string oauthConfigName = "__default")
        {
            var savedToken = await this.GetTokenAsync(name);

            if (savedToken == null)
            {
                throw new KeyNotFoundException($"Connection {name} unknown");
            }

            using (var authClient = await CreateAuthenticationClientAsync(new Uri(savedToken.InstanceUrl, UriKind.Absolute), oauthConfigName))
            {
                this.logger.LogDebug($"Authenticating {name}...");
                var newToken = await authClient.ExchangeRefreshTokenForTokenAsync(savedToken.RefreshToken);

                this.logger.LogDebug($"Authenticated {newToken.IdTokenUserInfo?.Name}...");


                var salesforceClient = new SalesforceClient(
                    httpClient: this.serviceProvider.GetRequiredService <IHttpClientFactory>().CreateClient(),
                    salesforceToken: newToken,
                    logger: this.serviceProvider.GetRequiredService <ILogger <SalesforceClient> >());

                if (apiVersion == null)
                {
                    this.logger.LogTrace("Establishing newest API version");
                    await salesforceClient.SetToUseNewestApiVersionAsync();

                    this.logger.LogTrace($"API version: {salesforceClient.ApiVersion}");
                }

                return(salesforceClient);
            }
        }
示例#3
0
    public void getChatter(string id)
    {
        SalesforceClient client = GameObject.FindGameObjectWithTag("Salesforce").GetComponent <SalesforceClient>();

        client.getChatterFeed(id, this);
        objectId = id;
    }
        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);
        }
        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 async void Login()
        {
            var salesforceClient = new SalesforceClient();
            var loginResult      = await salesforceClient.Login(_username, _password, _organizationId);

            Assert.IsNotNull(loginResult);
        }
示例#7
0
        public void Authenticate_ValidCredentials_Authenticated()
        {
            var target = new SalesforceClient();

            target.Authenticate(CreateAuthenticationFlow(TestConfig.ClientId, TestConfig.ClientSecret, TestConfig.Username, TestConfig.Password));
            Assert.IsTrue(target.IsAuthenticated);
        }
示例#8
0
        public void Setup()
        {
            var key = "3MVG9A2kN3Bn17hueOTBLV6amupuqyVHycNQ43Q4pIHuDhYcP0gUA0zxwtLPCcnDlOKy0gopxQ4dA6BcNWLab";

            var redirectUrl = new Uri("com.sample.salesforce:/oauth2Callback");             // TODO: Move oauth redirect to constant or config
            var secret      = "5754078534436456018";

            Client = new SalesforceClient(key, secret, redirectUrl);


            var             users = Client.LoadUsers();
            ISalesforceUser user;

            if (users.SingleOrDefault() == null)
            {
                user = new SalesforceUser {
                    Username = "******",
                };
                user.Properties ["instance_url"] = @"https://na15.salesforce.com/";
                user.Properties ["access_token"] = @"00Di0000000bhOg!ARYAQLWetbW6H_Lw78K0SlJ3IU7bBCeOMEhtlP8hTvaWALsYNuxfkikbC5tbAfgdNvxjSkZJ6wHVr8A5qIKM7.KeBmGnoIlg";

                Client.Save(user);
            }
            else
            {
                user = users.FirstOrDefault();
            }

            Client.CurrentUser = user;
        }
        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");
            });
        }
        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");
            });
        }
示例#11
0
        public void TestPropertiesAuthPathAndTokenPath()
        {
            string path_auth  = @"http://xamarin.com/auth";
            string path_token = @"http://xamarin.com/token";

            SalesforceClient.AuthPath  = path_auth;
            SalesforceClient.TokenPath = path_token;

            string client_id     = "ajde klajent";
            string client_secret = "very very secret";
            Uri    uri_redirect  = new Uri("http://holisticware.net");

            SalesforceClient client = new SalesforceClient
                                      (
                client_id,
                client_secret,
                uri_redirect
                                      );

            Assert.AreNotEqual
            (
                SalesforceClient.AuthPath,
                @"https://login.salesforce.com/services/oauth2/authorize"
            );
            Assert.AreNotEqual
            (
                SalesforceClient.AuthPath,
                @"https://login.salesforce.com/services/oauth2/authorize"
            );

            Assert.AreEqual(SalesforceClient.AuthPath, path_auth);
            Assert.AreEqual(SalesforceClient.TokenPath, path_token);

            return;
        }
示例#12
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            Client = new SalesforceClient(consumerKey, consumerSecret, callbackUrl);
            Client.AuthenticationComplete += (sender, e) => OnAuthenticationCompleted(e);

            var users = Client.LoadUsers();

            if (!users.Any())
            {
                var intent = Client.GetLoginInterface() as Intent;
                StartActivityForResult(intent, 42);
            }
            else
            {
                LoadAccounts();
            }

            ListView.ItemClick += (sender, e) => {
                var t = ((DataAdapter)ListAdapter)[e.Position];

                System.Diagnostics.Debug.WriteLine("Clicked on " + t.ToString());

                var intent = new Intent();
                intent.SetClass(this, typeof(DetailActivity));
                intent.PutExtra("JsonItem", "{\"attributes\": {\"type\": \"Account\", \"url\": \"/services/data/v28.0/sobjects/Account/\"}, " +
                                string.Format("\"Id\": \"{0}\", \"Name\": \"{1}\", \"AccountNumber\": \"{2}\", \"Phone\": \"{3}\", \"Website\": \"{4}\", \"Industry\": \"{5}\"", t.Id, t.Name, t.AccountNumber, t.Phone, t.Website, t.Industry) + "}");

                StartActivity(intent);
            };
        }
示例#13
0
        /// <summary>
        /// Builds client according to parameter.
        /// </summary>
        /// <param name="service">API service enum.</param>
        /// <returns>Client instance.</returns>
        public static IClient GetClient(ApisEnum service)
        {
            IClient client;

            switch (service)
            {
            case ApisEnum.Pivotal:
                client = PivotalClient.GetInstance();
                break;

            case ApisEnum.Trello:
                client = TrelloClient.GetInstance();
                break;

            case ApisEnum.Todoist:
                client = TodoistClient.GetInstance();
                break;

            case ApisEnum.Salesforce:
                client = SalesforceClient.GetInstance();
                break;

            default:
                client = PivotalClient.GetInstance();
                break;
            }

            return(client);
        }
示例#14
0
        public void InitializeSalesforce(Context context)
        {
            this.context = context;
                #endif

            const string consumerKey    = "YOUR_CONSUMER_KEY";
            const string consumerSecret = "YOUR_CONSUMER_SECRET";
            var          callbackUrl    = new Uri(@"com.sample.salesforce:/oauth2Callback");

            // Creates our connection to salesforce.
            Client = new SalesforceClient(consumerKey, consumerSecret, callbackUrl);
            Client.AuthenticationComplete += (sender, e) => OnAuthenticationCompleted(e);

            // Get authenticated users from the local keystore
            var users = Client.LoadUsers();
            if (!users.Any())
            {
                // Begin OAuth journey
                StartAuthorization();
            }
            else
            {
                // Immediately go to accounts screen
                LoadAccounts();
                LoadProducts();
                LoadMonkeys();
            }
        }
        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);
        }
        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");
            });
        }
示例#17
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo {
                    Title = "LoanProcessorAPI", Version = "v1"
                });
            });
            services.AddSingleton(SFDCConfig);

            services.TryAddSingleton <ISalesforceClient>((container) =>
            {
                var logger = container.GetRequiredService <ILogger <SalesforceClient> >();
                var client = new SalesforceClient(logger, SFDCConfig);
                return(client);
            }
                                                         );
            services.TryAddSingleton <IBlendClient>((container) =>
            {
                var logger = container.GetRequiredService <ILogger <BlendClient> >();
                var client = new BlendClient(logger, BlendConfig);
                return(client);
            }
                                                    );
        }
        public void AnyAction_NotAuthentacated_Exception()
        {
            var target = new SalesforceClient();

            ExceptionAssert.IsThrowing(new InvalidOperationException("Please, execute Authenticate method before call any REST API operation."), () =>
            {
                target.Create("TESTE", "TESTE");
            });

            ExceptionAssert.IsThrowing(new InvalidOperationException("Please, execute Authenticate method before call any REST API operation."), () =>
            {
                target.Delete("TESTE", "TESTE");
            });

            ExceptionAssert.IsThrowing(new InvalidOperationException("Please, execute Authenticate method before call any REST API operation."), () =>
            {
                target.FindById <Exception>("TESTE", "TESTE");
            });

            ExceptionAssert.IsThrowing(new InvalidOperationException("Please, execute Authenticate method before call any REST API operation."), () =>
            {
                target.Query <Exception>("TESTE");
            });

            ExceptionAssert.IsThrowing(new InvalidOperationException("Please, execute Authenticate method before call any REST API operation."), () =>
            {
                target.Update("TESTE", "TESTE", "TESTE");
            });
        }
        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 Constructor_NoArgs_DefaultValues()
        {
            var target = new SalesforceClient();

            Assert.AreEqual("v28.0", target.ApiVersion);
            Assert.IsNull(target.InstanceUrl);
            Assert.IsFalse(target.IsAuthenticated);
        }
示例#21
0
 public void getPhoto()
 {
     if (photoUrl != null)
     {
         SalesforceClient client = GameObject.FindGameObjectWithTag("Salesforce").GetComponent <SalesforceClient>();
         client.getChatterPhoto(photoUrl, this);
     }
 }
示例#22
0
 public void DeleteGroup()
 {
     foreach (string id in helper.GetIds())
     {
         var request = new SalesforceRequest("group/" + id);
         RequestManager.Delete(SalesforceClient.GetInstance(), request);
     }
 }
        private static async Task CreateExternalIdField(string objectName, string fieldName)
        {
            var salesforceClient = new SalesforceClient();
            var loginResult      = await salesforceClient.Login(_username, _password, _organizationId);

            await salesforceClient.CreateCustomField(objectName, fieldName, loginResult.SessionId,
                                                     loginResult.MetadataServerUrl, true);
        }
示例#24
0
        public void GetRecordProjection_Result()
        {
            var jSonPropertyString = SalesforceClient.GetRecordProjection(typeof(TestJson));

            Assert.IsTrue(jSonPropertyString.Contains("Id"));
            Assert.IsTrue(jSonPropertyString.Contains("JsonName"));
            Assert.IsFalse(jSonPropertyString.Contains("JsonIgnoreMe"));
        }
示例#25
0
 public void Setup()
 {
     _optionsConcreteSub = Substitute.For <SalesforceConnectorOptions>();
     _messageServiceSub  = Substitute.For <IHttpMessageService>();
     _optionsSub         = Substitute.For <IOptions <SalesforceConnectorOptions> >();
     _optionsSub.Value.Returns(_optionsConcreteSub);
     _testedService = new SalesforceClient(_messageServiceSub, _optionsSub);
 }
示例#26
0
 public void DeleteAccount()
 {
     foreach (string id in helper.GetIds())
     {
         var request = new SalesforceRequest($"Account/{id}");
         RequestManager.Delete(SalesforceClient.GetInstance(), request);
     }
 }
 public SalesforceStreamingService(
     ILogger <SalesforceStreamingService> logger, IApplicationLifetime appLifetime,
     IOptions <SalesforceConfig> sfOptions, SalesforceClient salesforceClient)
 {
     this.logger           = logger;
     this.appLifetime      = appLifetime;
     this.salesforceClient = salesforceClient;
     this.sfOptions        = sfOptions.Value;
 }
        public void Update_NullOrEmptyRecordId_Exception()
        {
            var target = new SalesforceClient();

            ExceptionAssert.IsThrowing(new ArgumentException("Argument 'recordId' can't be empty.", "recordId"), () =>
            {
                target.Update("TESTE", "", "TESTE");
            });
        }
        public void Update_NullRecord_Exception()
        {
            var target = new SalesforceClient();

            ExceptionAssert.IsThrowing(new ArgumentNullException("record"), () =>
            {
                target.Update("TESTE", "TESTE", null);
            });
        }
        public void Create_NullOrEmptyObjectName_Exception()
        {
            var target = new SalesforceClient();

            ExceptionAssert.IsThrowing(new ArgumentException("Argument 'objectName' can't be empty.", "objectName"), () =>
            {
                target.Create("", "TESTE");
            });
        }
        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);
        }
示例#33
0
        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));
        }
示例#34
0
        public void SalesforceClientAdd()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);
            var ticks = DateTime.UtcNow.Ticks;
            var contact = new Contact
                          {
                              LastName = "TestContact",
                              FirstName = ticks.ToString(),
                              Email = "testcontact+" + ticks + "@gmail.com"
                          };

            // Act
            var id = service.Add<Contact>(contact);

            // Assert
            Assert.NotNull(id);
            Assert.AreEqual(id, contact.Id);
        }
示例#35
0
        public void SalesforceClientAddAndDelete()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);
            var ticks = DateTime.UtcNow.Ticks;
            var contact = new
                          {
                              LastName = "TestContact",
                              FirstName = ticks,
                              Email = "testcontact+" + ticks + "@gmail.com"
                          };

            // Act
            var id = service.Add<Contact>(contact);

            // Assert
            Assert.NotNull(id);

            // Act
            service.Delete<Contact>(id);

            // Assert
        }
示例#36
0
        public void SalesforceClientAddAndDeleteAsync()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);
            var ticks = DateTime.UtcNow.Ticks;
            var contact = new
                          {
                              LastName = "TestContact",
                              FirstName = ticks,
                              Email = "testcontact+" + ticks + "@gmail.com"
                          };

            // Act
            var addResponse = service.AddAsync<Contact>(contact).Result;

            // Assert
            Assert.NotNull(addResponse.Id);

            // Act
            var response = service.DeleteAsync<Contact>(addResponse.Id).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
        }
示例#37
0
        public void SalesforceClientQueryFail()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            var exception =
                Assert.Throws<SalesforceException>(() => service.Query<Account>("SELECT id, name from NonExistingTable"));
            Assert.AreEqual(HttpStatusCode.BadRequest, exception.StatusCode);
        }
示例#38
0
        public void SalesforceClientQueryAsync()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            IList<Account> accounts = service.QueryAsync<Account>("SELECT id, name from Account").Result;

            // Assert
            Assert.NotNull(accounts);
            Assert.True(accounts.Count > 0);

            foreach (var account in accounts)
            {
                Console.WriteLine(account.Name);
            }
        }
示例#39
0
        public void SalesforceClientQueryAsyncFail()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            var accounts = service.QueryAsync<Account>("SELECT id, name from NonExistingTable").Result;
            Assert.IsNull(accounts);
        }
示例#40
0
        public void SalesforceClientUpdateValidatesNullId()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            Assert.Throws<ArgumentNullException>(() => service.Update<Account>(new Account(), null));
        }
示例#41
0
        public void SalesforceClientConstructorFails()
        {
            // Arrange
            // Act
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken + "Wrong");

            // Assert
            Assert.Null(service.AccessToken);
        }
示例#42
0
        public void SalesforceClientUpdateAsyncNonExistingObject()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            var response = service.UpdateAsync<Contact>(new {Description = Guid.NewGuid()}, "InvalidID").Result;
            Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);
        }
示例#43
0
        public void SalesforceClientUpdateExistingObject()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);
            Contact contact = service.Get<Contact>(ContactId);
            var updateContact = new {Description = Guid.NewGuid().ToString()};

            // Act
            service.Update<Contact>(updateContact, contact.Id);

            // Assert
            contact = service.Get<Contact>(ContactId);
            Assert.AreEqual(updateContact.Description, contact.Description);
        }
示例#44
0
        public void SalesforceClientDescribeValidatesNull()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            Assert.Throws<ArgumentNullException>(() => service.Describe(null));
        }
示例#45
0
        public void SalesforceClientGetAsyncNonExistingObject()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            var contact = service.GetAsync<Contact>("003iiiiiiiiiiiii").Result;
            Assert.IsNull(contact);
        }
示例#46
0
        public void SalesforceClientDescribeFails()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            var exception = Assert.Throws<SalesforceException>(() => service.Describe("AccountError"));
            Assert.AreEqual(HttpStatusCode.NotFound, exception.StatusCode);
        }
示例#47
0
        public void SalesforceClientDescribeGlobalAsync()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            var response = service.DescribeGlobalAsync().Result;

            // Assert
            Assert.IsNotNull(response);
            Assert.NotNull(response.SObjects);
            Assert.True(response.SObjects.Count > 0);
            Assert.IsNotNull(response.SObjects[0].Urls);

            Console.WriteLine(response.Encoding);
            Console.WriteLine(response.MaxBatchSize);
            Console.WriteLine(response.SObjects[0].Name);
        }
示例#48
0
        public void SalesforceClientDescribeAsyncFails()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            var result = service.DescribeAsync("AccountError").Result;
            Assert.IsNull(result);
        }
示例#49
0
        public void SalesforceClientDescribeAsync()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            var response = service.DescribeAsync("Account").Result;

            // Assert
            Assert.IsNotNull(response);
            Assert.IsNotNull(response.Fields);
            Assert.IsNotNull(response.Urls);
            Assert.IsNotNull(response.ChildRelationships);

            Console.WriteLine(response.Name);
            Console.WriteLine(response.Undeletable);
            Console.WriteLine(response.Fields.Count);
            Console.WriteLine(response.Urls.Describe);
        }
示例#50
0
        public void SalesforceClientDeleteAsyncFails()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            var response = service.DeleteAsync<Contact>("BadId").Result;
            Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);
        }
示例#51
0
        public void SalesforceClientUpdateAsyncEntireObject()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);
            var contact = new Contact {Id = ContactId, Description = Guid.NewGuid().ToString()};

            // Act
            var response = service.UpdateAsync<Contact>(contact).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
        }
示例#52
0
        public void SalesforceClientGetExistingObject()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            Contact contact = service.Get<Contact>(ContactId);

            // Assert
            Assert.NotNull(contact);
            Assert.AreEqual(ContactId, contact.Id);
        }
示例#53
0
        public void SalesforceClientUpdateAsyncExistingObject()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);
            Contact contact = service.Get<Contact>(ContactId);
            var updateContact = new {Description = Guid.NewGuid().ToString()};

            // Act
            var response = service.UpdateAsync<Contact>(updateContact, contact.Id).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
        }
示例#54
0
        public void SalesforceClientGetNonExistingObject()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            var exception = Assert.Throws<SalesforceException>(() => service.Get<Contact>("003iiiiiiiiiiiii"));
            Assert.AreEqual(HttpStatusCode.NotFound, exception.StatusCode);
        }
示例#55
0
        public void SalesforceClientUpdateEntireObject()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);
            var contact = new Contact {Id = ContactId, Description = Guid.NewGuid().ToString()};

            // Act
            service.Update<Contact>(contact);

            // Assert
            var updatedContact = service.Get<Contact>(ContactId);
            Assert.AreEqual(contact.Description, updatedContact.Description);
        }
        private static async Task CreateExternalIdField(string objectName, string fieldName)
        {
            var salesforceClient = new SalesforceClient();
            var loginResult = await salesforceClient.Login(_username, _password, _organizationId);

            await salesforceClient.CreateCustomField(objectName, fieldName, loginResult.SessionId,
                    loginResult.MetadataServerUrl, true);
        }
示例#57
0
        public void SalesforceClientUpdateNonExistingObject()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            // Assert
            var exception =
                Assert.Throws<SalesforceException>(
                    () => service.Update<Contact>(new {Description = Guid.NewGuid()}, "InvalidID"));
            Assert.AreEqual(HttpStatusCode.NotFound, exception.StatusCode);
        }
示例#58
0
        public void SalesforceClientGetVersionsAsync()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);

            // Act
            IList<ApiVersion> versions = service.GetVersionsAsync().Result;

            // Assert
            Assert.IsNotNull(versions);
            Assert.True(versions.Count > 0);

            foreach (var version in versions)
            {
                Console.WriteLine(version.Version);
            }
        }
示例#59
0
        public void SalesforceClientAddAsyncFails()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);
            var ticks = DateTime.UtcNow.Ticks;
            var contact = new
                          {
                              NonExistingField = "TestContact",
                              FirstName = ticks,
                              Email = "testcontact+" + ticks + "@gmail.com"
                          };

            // Act
            // Assert
            var id = service.AddAsync<Contact>(contact).Result;
            Assert.IsNull(id);
        }
示例#60
0
        public void SalesforceClientAddFails()
        {
            // Arrange
            var service = new SalesforceClient(ConsumerKey, ConsumerSecret, RefreshToken);
            var ticks = DateTime.UtcNow.Ticks;
            var contact = new
                          {
                              NonExistingField = "TestContact",
                              FirstName = ticks,
                              Email = "testcontact+" + ticks + "@gmail.com"
                          };

            // Act
            // Assert
            var exception = Assert.Throws<SalesforceException>(() => service.Add<Contact>(contact));
            Assert.AreEqual(HttpStatusCode.BadRequest, exception.StatusCode);
        }