public void Test_Paging() { const int large = 20; const int small = 5; var connector = new CustomerConnector(); connector.Limit = large; connector.SortBy = Sort.By.Customer.CustomerNumber; connector.SortOrder = Sort.Order.Ascending; var largeCustomerCollection = connector.Find(); //get up to 'large' number of entities var totalCustomers = largeCustomerCollection.TotalResources; var neededPages = GetNeededPages(Math.Min(totalCustomers, large), small); var mergedCollection = new List <CustomerSubset>(); for (int i = 0; i < neededPages; i++) { connector.Limit = small; connector.Page = i + 1; var smallCustomerCollection = connector.Find(); mergedCollection.AddRange(smallCustomerCollection.Entities); } for (int i = 0; i < largeCustomerCollection.Entities.Count; i++) { Assert.AreEqual(largeCustomerCollection.Entities[i].CustomerNumber, mergedCollection[i].CustomerNumber); } }
public void TestCustomer() { var connector = new CustomerConnector(); connector.Authorization = new StaticTokenAuth(at, cs); var customer = connector.Get("0022"); customer.GLN = "123"; customer.GLNDelivery = "12345"; customer.Active = "false"; customer = connector.Update(customer); Assert.IsFalse(connector.HasError); Assert.IsTrue(customer.Active == "false"); connector.FilterBy = Filter.Customer.Inactive; var customers = connector.Find(); Assert.IsFalse(connector.HasError); Assert.IsTrue(customers.CustomerSubset.Any(c => c.CustomerNumber == "0022")); customer.Active = "true"; connector.Update(customer); Assert.IsFalse(connector.HasError); Assert.IsTrue(customer.Active == "true"); customers = connector.Find(); Assert.IsFalse(customers.CustomerSubset.Any(c => c.CustomerNumber == "0022")); }
public void Test_Find() { #region Arrange //Add code to create required resources #endregion Arrange var testKeyMark = TestUtils.RandomString(); ICustomerConnector connector = new CustomerConnector(); var newCustomer = new Customer() { Name = "TestCustomer", Address1 = "TestStreet 1", Address2 = "TestStreet 2", ZipCode = "01010", City = testKeyMark, CountryCode = "SE", //CountryCode needs to be valid Email = "*****@*****.**", Type = CustomerType.Private, Active = false, Comments = testKeyMark }; //Add entries for (var i = 0; i < 5; i++) { connector.Create(newCustomer); } //Apply base test filter connector.Search.City = testKeyMark; var fullCollection = connector.Find(); MyAssert.HasNoError(connector); Assert.AreEqual(5, fullCollection.TotalResources); Assert.AreEqual(5, fullCollection.Entities.Count); Assert.AreEqual(1, fullCollection.TotalPages); //Apply Limit connector.Search.Limit = 2; var limitedCollection = connector.Find(); MyAssert.HasNoError(connector); Assert.AreEqual(5, limitedCollection.TotalResources); Assert.AreEqual(2, limitedCollection.Entities.Count); Assert.AreEqual(3, limitedCollection.TotalPages); //Delete entries foreach (var entry in fullCollection.Entities) { connector.Delete(entry.CustomerNumber); } #region Delete arranged resources //Add code to delete temporary resources #endregion Delete arranged resources }
public void TestCustomer() { var connector = new CustomerConnector(); connector.AccessToken = at; connector.ClientSecret = cs; var customer = connector.Get("0022"); customer.GLN = "123"; customer.GLNDelivery = "12345"; customer.Active = "false"; customer = connector.Update(customer); Assert.IsFalse(connector.HasError); Assert.IsTrue(customer.Active == "false"); connector.FilterBy = Filter.Customer.Inactive; var customers = connector.Find(); Assert.IsFalse(connector.HasError); Assert.IsTrue(customers.TotalResources == "1"); customer.Active = "true"; connector.Update(customer); Assert.IsFalse(connector.HasError); Assert.IsTrue(customer.Active == "true"); }
public void Test_NoRateLimiter_TooManyRequest_Error() { ConnectionSettings.UseRateLimiter = false; var connector = new CustomerConnector(); ErrorInformation error = null; int i; for (i = 0; i < 200; i++) { connector.Search.City = TestUtils.RandomString(); connector.Find(); if (connector.HasError) { error = connector.Error; break; } } //Restore settings ConnectionSettings.UseRateLimiter = true; //Assert //Assert.IsTrue(failed > 0); Console.WriteLine($@"Succesful requests: {i}"); Assert.IsNotNull(error); Assert.IsTrue(error.Message.Contains("Too Many Requests")); }
public void Test_Find_ParamsAdded() { var connector = new CustomerConnector { Name = "TestName", City = "TestCity", FilterBy = Filter.Customer.Active, SortBy = Sort.By.Customer.Name, SortOrder = Sort.Order.Ascending, LastModified = new DateTime(2000, 01, 01, 20, 10, 05), //2000-01-20 20:10:05 Limit = 10, Offset = 0, Page = 1 }; connector.Find(); MyAssert.HasNoError(connector); Assert.IsTrue(connector.RequestUriString.Contains("name=TestName")); Assert.IsTrue(connector.RequestUriString.Contains("city=TestCity")); Assert.IsTrue(connector.RequestUriString.Contains("filter=active")); Assert.IsTrue(connector.RequestUriString.Contains("sortby=name")); Assert.IsTrue(connector.RequestUriString.Contains("sortorder=ascending")); Assert.IsTrue(connector.RequestUriString.Contains("lastmodified=2000-01-01+20%3a10%3a05")); //"lastmodified=2000-01-20 20:10:05" in URL encoding Assert.IsTrue(connector.RequestUriString.Contains("limit=10")); Assert.IsTrue(connector.RequestUriString.Contains("offset=0")); Assert.IsTrue(connector.RequestUriString.Contains("page=1")); }
public void Test_NoRateLimiter_TooManyRequest_Error() { var connector = new CustomerConnector(); connector.UseRateLimiter = false; FortnoxApiException error = null; int i; for (i = 0; i < 200; i++) { var searchSettings = new CustomerSearch(); searchSettings.City = TestUtils.RandomString(); try { connector.Find(searchSettings); } catch (FortnoxApiException ex) { error = ex; break; } } //Assert //Assert.IsTrue(failed > 0); Console.WriteLine($@"Succesful requests: {i}"); Assert.IsNotNull(error); Console.WriteLine(error.Message); Assert.IsTrue(error.Message.Contains("Too Many Requests")); Thread.Sleep(5 * 1000); //Sleep to cooldown/recover from "debt" (otherwise following tests will fail with TooManyRequests) }
public void Test_Find_ParamsNullable() { var connector = new CustomerConnector() { Name = "TestName", City = null, FilterBy = null, SortBy = null, SortOrder = null, LastModified = null, Limit = null, Offset = null, Page = null }; connector.Find(); MyAssert.HasNoError(connector); Assert.IsFalse(connector.RequestUriString.Contains("city=")); Assert.IsFalse(connector.RequestUriString.Contains("filter=")); Assert.IsFalse(connector.RequestUriString.Contains("sortby=")); Assert.IsFalse(connector.RequestUriString.Contains("sortorder=")); Assert.IsFalse(connector.RequestUriString.Contains("lastmodified=")); Assert.IsFalse(connector.RequestUriString.Contains("limit=")); Assert.IsFalse(connector.RequestUriString.Contains("offset=")); Assert.IsFalse(connector.RequestUriString.Contains("page=")); }
public void Test_AllInOnePage() { //To make this test make sense, over 100 customers must exist, ideally over 500 ICustomerConnector connector = new CustomerConnector(); var result = connector.Find(null); Assert.IsTrue(result.TotalPages > 1); var searchSettings = new CustomerSearch(); searchSettings.Limit = APIConstants.Unlimited; var allInOneResult = connector.Find(searchSettings); Assert.AreEqual(1, allInOneResult.TotalPages); Assert.AreEqual(result.TotalResources, allInOneResult.Entities.Count); }
public void TestConnection1() { var cc = new CustomerConnector(); cc.AccessToken = ""; cc.ClientSecret = ""; cc.Find(); }
public void TestConnection1() { var cc = new CustomerConnector(); cc.Authorization = new StaticTokenAuth("", ""); cc.Find(); }
public void TestConnection_NoCredenials_Error() { //Arrange ConnectionCredentials.AccessToken = null; ConnectionCredentials.ClientSecret = null; //Act ICustomerConnector cc = new CustomerConnector(); cc.Find(null); }
public void TestConnection_WrongCredenials_Error() { //Arrange ConnectionCredentials.AccessToken = "ABC"; ConnectionCredentials.ClientSecret = "DEF"; //Act ICustomerConnector cc = new CustomerConnector(); cc.Find(null); }
public void TestConnection_WithoutCredenials_Error() { //Arrange ConnectionCredentials.AccessToken = ""; ConnectionCredentials.ClientSecret = ""; //Act var cc = new CustomerConnector(); cc.AccessToken = ""; cc.ClientSecret = ""; cc.Find(); }
public void TestConnection_EmptyCredenials_Error() { //Arrange ConnectionCredentials.AccessToken = ""; ConnectionCredentials.ClientSecret = ""; //Act ICustomerConnector cc = new CustomerConnector(); cc.Find(); Assert.IsTrue(cc.HasError); }
public void TestConnection_GlobalCredentials_Set() { //Arrange ConnectionCredentials.AccessToken = TestCredentials.Access_Token; ConnectionCredentials.ClientSecret = TestCredentials.Client_Secret; //Act ICustomerConnector connector = new CustomerConnector(); var customers = connector.Find(null); Assert.IsNotNull(customers); }
public void Test_Find_ParamsNotAdded() { var connector = new CustomerConnector(); connector.Name = "TestName"; connector.Find(); MyAssert.HasNoError(connector); Assert.IsFalse(connector.RequestUriString.Contains("city=")); Assert.IsFalse(connector.RequestUriString.Contains("filter=")); Assert.IsFalse(connector.RequestUriString.Contains("sortby=")); Assert.IsFalse(connector.RequestUriString.Contains("sortorder=")); Assert.IsFalse(connector.RequestUriString.Contains("lastmodified=")); Assert.IsFalse(connector.RequestUriString.Contains("limit=")); Assert.IsFalse(connector.RequestUriString.Contains("offset=")); Assert.IsFalse(connector.RequestUriString.Contains("page=")); }
public void TestConnection_LocalCredentials_Set() { //Arrange ConnectionCredentials.AccessToken = ""; ConnectionCredentials.ClientSecret = ""; //Act ICustomerConnector connector = new CustomerConnector(); connector.AccessToken = TestCredentials.Access_Token; connector.ClientSecret = TestCredentials.Client_Secret; var customers = connector.Find(); MyAssert.HasNoError(connector); Assert.IsNotNull(customers); }
public void Test_RateLimiter_NoError() { var connector = new CustomerConnector(); var watch = new Stopwatch(); watch.Start(); for (var i = 0; i < 200; i++) { connector.Search.City = TestUtils.RandomString(); //Needs to be random to make unique GET request connector.Find(); MyAssert.HasNoError(connector); } watch.Stop(); Console.WriteLine(@"Total time: " + watch.ElapsedMilliseconds); }
public void Test_issue57_fixed() // Origins from https://github.com/FortnoxAB/csharp-api-sdk/issues/57 { var connector = new CustomerConnector(); var specificCustomer = connector.Create(new Customer() { Name = "TestCustomer", OrganisationNumber = "123456789" }); var searchSettings = new CustomerSearch(); searchSettings.OrganisationNumber = "123456789"; var customers = connector.Find(searchSettings).Entities; var customer = customers.FirstOrDefault(c => c.CustomerNumber == specificCustomer.CustomerNumber); Assert.IsNotNull(customer); connector.Delete(specificCustomer.CustomerNumber); }
public void Test_NoRateLimiter_TooManyRequest_Error() { ConnectionSettings.UseRateLimiter = false; var connector = new CustomerConnector(); ErrorInformation error = null; for (var i = 0; i < 200; i++) { connector.Find(); if (connector.HasError) { error = connector.Error; break; } } //Restore settings ConnectionSettings.UseRateLimiter = true; //Assert Assert.IsNotNull(error); Assert.IsTrue(error.Message.Contains("Too Many Requests")); }
public async Task <IActionResult> Refresh() { try { // Ta bort kunder från den lokala databasen if (_context.Customers.Any()) { _context.Customers.RemoveRange(_context.Customers); } //ta bort artiklar från databasen if (_context.Articles.Any()) { _context.Articles.RemoveRange(_context.Articles); } var connector = new CustomerConnector { FilterBy = Filter.Customer.Active, Limit = 500 }; var customers = connector.Find(); // Loopa sidindelning while (customers != null && int.Parse(customers.CurrentPage) <= int.Parse(customers.TotalPages)) { // För varje sida loopar vi alla kunder foreach (var fortnoxCustomer in customers.CustomerSubset) { var customer = new Models.Customer { CustomerNumber = fortnoxCustomer.CustomerNumber, Address1 = fortnoxCustomer.Address1, Address2 = fortnoxCustomer.Address2, City = fortnoxCustomer.City, Name = fortnoxCustomer.Name, OrganisationNumber = fortnoxCustomer.OrganisationNumber, ZipCode = fortnoxCustomer.ZipCode }; _context.Customers.Add(customer); } // Byt till nästa sida connector.Page = int.Parse(customers.CurrentPage) + 1; customers = connector.Find(); } var articleConnector = new ArticleConnector { FilterBy = Filter.Article.Active, Limit = 500 }; var articles = articleConnector.Find(); while (articles != null && int.Parse(articles.CurrentPage) <= int.Parse(articles.TotalPages)) { // För varje sida loopar vi alla artiklar foreach (var fortnoxArticle in articles.ArticleSubset) { var article = new Models.Article { ArticleNumber = fortnoxArticle.ArticleNumber, Name = fortnoxArticle.Description, SalesPrice = float.Parse(fortnoxArticle.SalesPrice), Unit = fortnoxArticle.Unit }; _context.Articles.Add(article); } articleConnector.Page = int.Parse(articles.CurrentPage) + 1; articles = articleConnector.Find(); } await _context.SaveChangesAsync(); return(Ok()); } catch (Exception ex) { return(StatusCode(500, new Models.ErrorResponse(ex.Message))); throw; } }
public void Test_Customer_Search() { var testId = Guid.NewGuid().ToString(); //serves to identify entities created in this test var connector = new CustomerConnector(); var newCustomers = new List <Customer>() { new Customer() { Name = testId, Address1 = "TestStreet 1", Address2 = "TestStreet 2", ZipCode = "01010", City = "Testopolis", Email = "*****@*****.**", Type = CustomerType.PRIVATE, Active = true }, new Customer() { Name = testId, Address1 = "TestStreet 1", Address2 = "TestStreet 2", ZipCode = "01010", City = "TestCity", Email = "*****@*****.**", Type = CustomerType.PRIVATE, Active = true }, new Customer() { Name = testId, Address1 = "TestStreet 1", Address2 = "TestStreet 2", ZipCode = "01010", City = "PolisTest", Email = "*****@*****.**", Type = CustomerType.PRIVATE, Active = true }, new Customer() { Name = testId, Address1 = "TestStreet 1", Address2 = "TestStreet 2", ZipCode = "01010", City = "Testopolis", Email = "*****@*****.**", Type = CustomerType.PRIVATE, Active = false } }; for (int i = 0; i < newCustomers.Count; i++) { newCustomers[i] = connector.Create(newCustomers[i]); MyAssert.HasNoError(connector); } connector.Limit = 10; connector.LastModified = DateTime.Today; connector.SortBy = Sort.By.Customer.Name; connector.Offset = 0; connector.Page = 1; connector.FilterBy = Filter.Customer.Active; //Matched by customers 1,2,3 connector.City = "polis"; //Matched by customers 1,3,4 connector.Name = testId; //Matched by customers 1,2,3,4 (all) var retrievedCustomers = connector.Find(); MyAssert.HasNoError(connector); Assert.AreEqual(2, retrievedCustomers.Entities.Count); //Final matched customers: 1,3 foreach (var customer in newCustomers) { connector.Delete(customer.CustomerNumber); MyAssert.HasNoError(connector); } }