public void Subscription_Create_IsFullNumberMasked() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); var referenceId = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes(Faker.Name.FirstName(), Faker.Name.LastName(), Faker.Internet.Email(), Faker.Phone.PhoneNumber(), Faker.Company.CompanyName(), referenceId); var newPaymentInfo = GetTestPaymentMethod(newCustomer); newPaymentInfo.FullNumber = "4444444444444444"; // Act try { string data = string.Empty; Chargify.LogRequest = (requestMethod, address, postedData) => { data = postedData; }; var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo); Assert.Fail("Subscription should not have been created, since credit card number is not 1, 2 or 3 ending"); } catch (ChargifyException chEx) { Assert.IsFalse(chEx.LastDataPosted.Contains(newPaymentInfo.FullNumber), chEx.LastDataPosted); Assert.IsTrue(chEx.LastDataPosted.Contains(newPaymentInfo.FullNumber.Mask('X', 4))); } }
public void Can_Create_Invoice_Subscription() { // Arrange var product = Chargify.GetProductList().Values.DefaultIfEmpty(null).FirstOrDefault(p => p.PriceInCents > 0 && p.RequireCreditCard == false); if (product == null) { Assert.Inconclusive("No product to test"); return; } var referenceID = Guid.NewGuid().ToString(); var newCustomer = new CustomerAttributes(Faker.Name.First(), Faker.Name.Last(), Faker.Internet.Email(), Faker.Phone.Number(), Faker.Company.Name(), referenceID); // Act var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, PaymentCollectionMethod.Invoice); // Assert //Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); Assert.IsNotNull(newSubscription); Assert.IsNotNull(newSubscription.Customer); Assert.IsNull(newSubscription.PaymentProfile); Assert.IsTrue(newSubscription.SubscriptionID > int.MinValue); Assert.IsTrue(newSubscription.Customer.ChargifyID > int.MinValue); Assert.IsTrue(newSubscription.Customer.FirstName == newCustomer.FirstName); Assert.IsTrue(newSubscription.Customer.LastName == newCustomer.LastName); Assert.IsTrue(newSubscription.Customer.Email == newCustomer.Email); Assert.IsTrue(newSubscription.Customer.Phone == newCustomer.Phone); Assert.IsTrue(newSubscription.Customer.Organization == newCustomer.Organization); Assert.IsTrue(newSubscription.Customer.SystemID == referenceID); Assert.IsTrue(newSubscription.ProductPriceInCents == product.PriceInCents); Assert.IsTrue(newSubscription.ProductPrice == product.Price); Assert.IsTrue(newSubscription.PaymentCollectionMethod == PaymentCollectionMethod.Invoice); // Cleanup Assert.IsTrue(Chargify.DeleteSubscription(newSubscription.SubscriptionID, "Automatic cancel due to test")); }
public void Subscription_Reactivation() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); var referenceId = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes(Faker.Name.First(), Faker.Name.Last(), Faker.Internet.Email(), Faker.Phone.Number(), Faker.Company.Name(), referenceId); var newPaymentInfo = GetTestPaymentMethod(newCustomer); // Act var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo); var result = Chargify.DeleteSubscription(newSubscription.SubscriptionID, "testing"); var foundSubscription = Chargify.Find <Subscription>(newSubscription.SubscriptionID); var resultSubscription = Chargify.ReactivateSubscription(foundSubscription.SubscriptionID); // Assert #if !NUNIT Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); Assert.IsInstanceOfType(foundSubscription, typeof(Subscription)); Assert.IsInstanceOfType(resultSubscription, typeof(Subscription)); #endif Assert.IsNotNull(newSubscription); Assert.IsTrue(result); Assert.IsNotNull(foundSubscription); Assert.IsTrue(foundSubscription.State == SubscriptionState.Canceled); Assert.IsNotNull(newSubscription); Assert.IsTrue(resultSubscription.State == SubscriptionState.Active); }
public void Subscription_Can_Reactivate_With_Trial() { // Arrange var trialingProduct = Chargify.GetProductList().Values.FirstOrDefault(p => p.TrialInterval > 0); var referenceId = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes(Faker.Name.First(), Faker.Name.Last(), Faker.Internet.Email(), Faker.Phone.Number(), Faker.Company.Name(), referenceId); var newPaymentInfo = GetTestPaymentMethod(newCustomer); var createdSubscription = Chargify.CreateSubscription(trialingProduct.Handle, newCustomer, newPaymentInfo); Assert.IsNotNull(createdSubscription); var deletedSubscription = Chargify.DeleteSubscription(createdSubscription.SubscriptionID, "Delete for test Subscription_Can_Reactivate_With_Trial"); Assert.IsNotNull(deletedSubscription); var foundSubscription = Chargify.Find <Subscription>(createdSubscription.SubscriptionID); Assert.IsTrue(foundSubscription.State == SubscriptionState.Canceled, "Expected cancelled subscription on a trial product"); // Act var result = Chargify.ReactivateSubscription(foundSubscription.SubscriptionID, true, null, null); // Assert Assert.IsNotNull(result); #if !NUNIT Assert.IsInstanceOfType(result, typeof(ISubscription)); #endif Assert.IsTrue(result.State != foundSubscription.State); Assert.IsTrue(result.State == SubscriptionState.Trialing); }
public void Subscription_Create_WithCouponAfterSignup() { // Arrange var newCustomer = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "Chargify", Guid.NewGuid().ToString()); var newPaymentInfo = GetTestPaymentMethod(newCustomer); // Act var createdSubscription = Chargify.CreateSubscription("premium", newCustomer, newPaymentInfo); // Assert Assert.IsNotNull(createdSubscription); #if !NUNIT Assert.IsInstanceOfType(createdSubscription, typeof(ISubscription)); #endif Assert.IsTrue(createdSubscription.CouponCode == string.Empty); // Act Again var updatedSubscription = Chargify.AddCoupon(createdSubscription.SubscriptionID, "AC511"); // Assert Again Assert.IsNotNull(updatedSubscription); #if !NUNIT Assert.IsInstanceOfType(updatedSubscription, typeof(ISubscription)); #endif Assert.IsTrue(updatedSubscription.CouponCode == "AC511"); }
public void Subscription_Create_UsingOptions_ProductHandle() { // Arrange var exampleCustomer = Chargify.GetCustomerList().Values.DefaultIfEmpty(null).FirstOrDefault(); Assert.IsNotNull(exampleCustomer, "Customer not found"); var paymentInfo = GetTestPaymentMethod(exampleCustomer.ToCustomerAttributes() as CustomerAttributes); var product = Chargify.GetProductList().Values.FirstOrDefault(); Assert.IsNotNull(product, "Product not found"); var options = new SubscriptionCreateOptions() { CustomerID = exampleCustomer.ChargifyID, CreditCardAttributes = paymentInfo, ProductHandle = product.Handle }; // Act var result = Chargify.CreateSubscription(options); // Assert Assert.IsNotNull(result); Assert.AreEqual(product.Handle, result.Product.Handle); Assert.AreEqual(exampleCustomer.ChargifyID, result.Customer.ChargifyID); }
public void Subscription_Create_WithCouponAfterSignup() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); var newCustomer = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "Chargify", Guid.NewGuid().ToString()); var newPaymentInfo = GetTestPaymentMethod(newCustomer); const string couponCode = "68C8FDBA"; // Act var createdSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo); // Assert Assert.IsNotNull(createdSubscription); #if !NUNIT Assert.IsInstanceOfType(createdSubscription, typeof(ISubscription)); #endif Assert.IsTrue(createdSubscription.CouponCode == string.Empty); // Act Again var updatedSubscription = Chargify.AddCoupon(createdSubscription.SubscriptionID, couponCode); // Assert Again Assert.IsNotNull(updatedSubscription); #if !NUNIT Assert.IsInstanceOfType(updatedSubscription, typeof(ISubscription)); #endif Assert.IsTrue(updatedSubscription.CouponCode == couponCode); }
public void Subscription_Reactivation() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); var referenceID = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "123-456-7890", "Chargify", referenceID); var newPaymentInfo = GetTestPaymentMethod(newCustomer); // Act var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo); var result = Chargify.DeleteSubscription(newSubscription.SubscriptionID, "testing"); var foundSubscription = Chargify.Find <Subscription>(newSubscription.SubscriptionID); var resultSubscription = Chargify.ReactivateSubscription(foundSubscription.SubscriptionID); // Assert #if !NUNIT Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); Assert.IsInstanceOfType(foundSubscription, typeof(Subscription)); Assert.IsInstanceOfType(resultSubscription, typeof(Subscription)); #endif Assert.IsNotNull(newSubscription); Assert.IsTrue(result); Assert.IsNotNull(foundSubscription); Assert.IsTrue(foundSubscription.State == SubscriptionState.Canceled); Assert.IsNotNull(newSubscription); Assert.IsTrue(resultSubscription.State == SubscriptionState.Active); }
public void Subscription_Can_Reactivate_Without_Trial() { // Arrange var trialingProduct = Chargify.GetProductList().Values.FirstOrDefault(p => p.TrialInterval > 0); var referenceID = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "123-456-7890", "Chargify", referenceID); var newPaymentInfo = GetTestPaymentMethod(newCustomer); var createdSubscription = Chargify.CreateSubscription(trialingProduct.Handle, newCustomer, newPaymentInfo); Assert.IsNotNull(createdSubscription); var deletedSubscription = Chargify.DeleteSubscription(createdSubscription.SubscriptionID, "Delete for test Subscription_Can_Reactivate_With_Trial"); Assert.IsNotNull(deletedSubscription); var foundSubscription = Chargify.Find <Subscription>(createdSubscription.SubscriptionID); Assert.IsTrue(foundSubscription.State == SubscriptionState.Canceled, "Expected cancelled subscription on a trial product"); // Act var result = Chargify.ReactivateSubscription(foundSubscription.SubscriptionID, false); // Assert Assert.IsNotNull(result); #if !NUNIT Assert.IsInstanceOfType(result, typeof(ISubscription)); #endif Assert.IsTrue(result.State != foundSubscription.State); Assert.IsTrue(result.State == SubscriptionState.Active); }
public void Subscription_Create() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); var referenceId = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes(Faker.Name.First(), Faker.Name.Last(), Faker.Internet.Email(), Faker.Phone.Number(), Faker.Company.Name(), referenceId); var newPaymentInfo = GetTestPaymentMethod(newCustomer); // Act string data = string.Empty; Chargify.LogRequest = (requestMethod, address, postedData) => { data = postedData; }; var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo); // Assert #if !NUNIT Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); #endif Assert.IsNotNull(newSubscription); Assert.IsNotNull(newSubscription.Customer); Assert.IsNotNull(newSubscription.PaymentProfile); Assert.IsTrue(newSubscription.SubscriptionID > int.MinValue); Assert.IsTrue(newSubscription.Customer.ChargifyID > int.MinValue); Assert.AreEqual(newCustomer.FirstName, newSubscription.Customer.FirstName); Assert.AreEqual(newCustomer.LastName, newSubscription.Customer.LastName); Assert.AreEqual(newCustomer.Email, newSubscription.Customer.Email); Assert.AreEqual(newCustomer.Phone, newSubscription.Customer.Phone); Assert.IsTrue(newSubscription.Customer.Organization == newCustomer.Organization); Assert.IsTrue(newSubscription.Customer.SystemID == referenceId); Assert.IsTrue(newSubscription.PaymentProfile.FirstName == newPaymentInfo.FirstName); Assert.IsTrue(newSubscription.PaymentProfile.LastName == newPaymentInfo.LastName); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationMonth == newPaymentInfo.ExpirationMonth); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationYear == newPaymentInfo.ExpirationYear); Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress == newPaymentInfo.BillingAddress); //Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress2 == newPaymentInfo.BillingAddress2); Assert.IsTrue(newSubscription.PaymentProfile.BillingCity == newPaymentInfo.BillingCity); Assert.IsTrue(newSubscription.PaymentProfile.BillingCountry == newPaymentInfo.BillingCountry); Assert.IsTrue(newSubscription.PaymentProfile.BillingState == newPaymentInfo.BillingState); Assert.IsTrue(newSubscription.PaymentProfile.BillingZip == newPaymentInfo.BillingZip); Assert.IsTrue(newSubscription.ProductPriceInCents == product.PriceInCents); Assert.IsTrue(newSubscription.ProductPrice == product.Price); Assert.AreEqual(product.TrialInterval > 0 ? SubscriptionState.Trialing : SubscriptionState.Active, newSubscription.State); if (Chargify.UseJSON) { Assert.AreEqual(true, data.IsJSON()); Assert.AreEqual(false, data.IsXml()); } else { Assert.AreEqual(true, data.IsXml()); Assert.AreEqual(false, data.IsJSON()); } // Cleanup Assert.IsTrue(Chargify.DeleteSubscription(newSubscription.SubscriptionID, "Automatic cancel due to test")); }
public void Can_Create_Invoice_Subscription_For_Existing_Customer() { // Arrange var customers = Chargify.GetCustomerList().Keys; var referenceValue = customers.FirstOrDefault(systemID => !string.IsNullOrWhiteSpace(systemID)); ICustomer customer = Chargify.LoadCustomer(referenceValue); var products = Chargify.GetProductList().Values; var product = products.FirstOrDefault(p => p.PriceInCents > 0 && !p.RequireCreditCard); Assert.IsNotNull(product, "No valid product was found."); // Act var result = Chargify.CreateSubscription(product.Handle, customer.ChargifyID, PaymentCollectionMethod.Invoice); // Assert //Assert.IsInstanceOfType(result, typeof(Subscription)); Assert.IsNotNull(result); Assert.IsNotNull(result.Customer); Assert.IsNull(result.PaymentProfile); Assert.IsTrue(result.SubscriptionID > int.MinValue); Assert.IsTrue(result.Customer.ChargifyID > int.MinValue); Assert.IsTrue(result.Customer.FirstName == customer.FirstName); Assert.IsTrue(result.Customer.LastName == customer.LastName); Assert.IsTrue(result.Customer.Email == customer.Email); Assert.IsTrue(result.Customer.Phone == customer.Phone); Assert.IsTrue(result.Customer.Organization == customer.Organization); Assert.IsTrue(result.Customer.SystemID == customer.SystemID); Assert.IsTrue(result.ProductPriceInCents == product.PriceInCents); Assert.IsTrue(result.ProductPrice == product.Price); Assert.IsTrue(result.PaymentCollectionMethod == PaymentCollectionMethod.Invoice); // Cleanup Assert.IsTrue(Chargify.DeleteSubscription(result.SubscriptionID, "Automatic cancel due to test")); }
public void Subscription_Create_UsingOptions_MissingAllDetails() { // Arrange var options = new SubscriptionCreateOptions(); // Act var result = Chargify.CreateSubscription(options); }
public void Subscription_Create_UsingOptions_Null() { // Arrange SubscriptionCreateOptions options = null; // Act var result = Chargify.CreateSubscription(options); }
public void Subscription_Create_WithTwoComponents() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); var referenceID = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "Chargify", referenceID); var newPaymentInfo = GetTestPaymentMethod(newCustomer); Dictionary <int, string> componentsToUse = new Dictionary <int, string>() { { 998, "5" }, { 6776, "1" } }; // Act var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo, componentsToUse); var subComponents = Chargify.GetComponentsForSubscription(newSubscription.SubscriptionID); var usedComponents = from c in subComponents where componentsToUse.ContainsKey(c.Value.ComponentID) select c; // Assert #if !NUNIT Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); #endif Assert.IsNotNull(newSubscription); Assert.IsNotNull(newSubscription.Customer); Assert.IsNotNull(newSubscription.PaymentProfile); Assert.IsTrue(newSubscription.SubscriptionID > int.MinValue); Assert.IsTrue(newSubscription.Customer.ChargifyID > int.MinValue); Assert.IsTrue(newSubscription.Customer.FirstName == newCustomer.FirstName); Assert.IsTrue(newSubscription.Customer.LastName == newCustomer.LastName); Assert.IsTrue(newSubscription.Customer.Email == newCustomer.Email); Assert.IsTrue(newSubscription.Customer.Organization == newCustomer.Organization); Assert.IsTrue(newSubscription.Customer.SystemID == referenceID); Assert.IsTrue(newSubscription.PaymentProfile.FirstName == newPaymentInfo.FirstName); Assert.IsTrue(newSubscription.PaymentProfile.LastName == newPaymentInfo.LastName); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationMonth == newPaymentInfo.ExpirationMonth); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationYear == newPaymentInfo.ExpirationYear); Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress == newPaymentInfo.BillingAddress); //Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress2 == newPaymentInfo.BillingAddress2); Assert.IsTrue(newSubscription.PaymentProfile.BillingCity == newPaymentInfo.BillingCity); Assert.IsTrue(newSubscription.PaymentProfile.BillingCountry == newPaymentInfo.BillingCountry); Assert.IsTrue(newSubscription.PaymentProfile.BillingState == newPaymentInfo.BillingState); Assert.IsTrue(newSubscription.PaymentProfile.BillingZip == newPaymentInfo.BillingZip); Assert.IsTrue(usedComponents.Count() == 2); Assert.IsTrue(usedComponents.FirstOrDefault().Value.AllocatedQuantity == 5); // Cleanup Assert.IsTrue(Chargify.DeleteSubscription(newSubscription.SubscriptionID, "Automatic cancel due to test")); }
public void Subscription_Create_WithTwoComponents() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); var referenceId = Guid.NewGuid().ToString(); var newCustomer = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "Chargify", referenceId); var newPaymentInfo = GetTestPaymentMethod(newCustomer); var components = Chargify.GetComponentsForProductFamily(product.ProductFamily.ID); var componentsToUse = components.Take(2).ToDictionary(v => v.Key, v => "1"); // Act Assert.IsNotNull(product, "Product couldn't be found"); var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo, componentsToUse); var subComponents = Chargify.GetComponentsForSubscription(newSubscription.SubscriptionID); var usedComponents = from c in subComponents where componentsToUse.ContainsKey(c.Value.ComponentID) select c; // Assert #if !NUNIT Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); #endif Assert.IsNotNull(newSubscription); Assert.IsNotNull(newSubscription.Customer); Assert.IsNotNull(newSubscription.PaymentProfile); Assert.IsTrue(newSubscription.SubscriptionID > int.MinValue); Assert.IsTrue(newSubscription.Customer.ChargifyID > int.MinValue); Assert.IsTrue(newSubscription.Customer.FirstName == newCustomer.FirstName); Assert.IsTrue(newSubscription.Customer.LastName == newCustomer.LastName); Assert.IsTrue(newSubscription.Customer.Email == newCustomer.Email); Assert.IsTrue(newSubscription.Customer.Organization == newCustomer.Organization); Assert.IsTrue(newSubscription.Customer.SystemID == referenceId); Assert.IsTrue(newSubscription.PaymentProfile.FirstName == newPaymentInfo.FirstName); Assert.IsTrue(newSubscription.PaymentProfile.LastName == newPaymentInfo.LastName); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationMonth == newPaymentInfo.ExpirationMonth); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationYear == newPaymentInfo.ExpirationYear); Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress == newPaymentInfo.BillingAddress); //Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress2 == newPaymentInfo.BillingAddress2); Assert.IsTrue(newSubscription.PaymentProfile.BillingCity == newPaymentInfo.BillingCity); Assert.IsTrue(newSubscription.PaymentProfile.BillingCountry == newPaymentInfo.BillingCountry); Assert.IsTrue(newSubscription.PaymentProfile.BillingState == newPaymentInfo.BillingState); Assert.IsTrue(newSubscription.PaymentProfile.BillingZip == newPaymentInfo.BillingZip); Assert.IsTrue(usedComponents.Count() == componentsToUse.Count); foreach (var component in usedComponents) { Assert.IsTrue(componentsToUse.ContainsKey(component.Key)); //Assert.AreEqual(decimal.Parse(componentsToUse[component.Key]), component.Value.AllocatedQuantity); } // Cleanup Assert.IsTrue(Chargify.DeleteSubscription(newSubscription.SubscriptionID, "Automatic cancel due to test")); }
public void Subscription_Create_WithComponent() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); var productFamily = Chargify.GetProductFamilyList().Values.FirstOrDefault(); var referenceId = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "Chargify", referenceId); var newPaymentInfo = GetTestPaymentMethod(newCustomer); var component = Chargify.GetComponentsForProductFamily(productFamily.ID).FirstOrDefault(d => d.Value.Kind == ComponentType.Quantity_Based_Component && d.Value.Prices.Any(p => p.UnitPrice > 0m)).Value; Assert.IsNotNull(component, "Couldn't find any usable component."); // Act var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo, component.ID, 5); var subComponents = Chargify.GetComponentsForSubscription(newSubscription.SubscriptionID); var usedComponents = from c in subComponents where c.Value.ComponentID == component.ID select c; // Assert #if !NUNIT Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); #endif Assert.IsNotNull(newSubscription); Assert.IsNotNull(newSubscription.Customer); Assert.IsNotNull(newSubscription.PaymentProfile); Assert.IsTrue(newSubscription.SubscriptionID > int.MinValue); Assert.IsTrue(newSubscription.Customer.ChargifyID > int.MinValue); Assert.IsTrue(newSubscription.Customer.FirstName == newCustomer.FirstName); Assert.IsTrue(newSubscription.Customer.LastName == newCustomer.LastName); Assert.IsTrue(newSubscription.Customer.Email == newCustomer.Email); Assert.IsTrue(newSubscription.Customer.Organization == newCustomer.Organization); Assert.IsTrue(newSubscription.Customer.SystemID == referenceId); Assert.IsTrue(newSubscription.PaymentProfile.FirstName == newPaymentInfo.FirstName); Assert.IsTrue(newSubscription.PaymentProfile.LastName == newPaymentInfo.LastName); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationMonth == newPaymentInfo.ExpirationMonth); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationYear == newPaymentInfo.ExpirationYear); Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress == newPaymentInfo.BillingAddress); //Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress2 == newPaymentInfo.BillingAddress2); Assert.IsTrue(newSubscription.PaymentProfile.BillingCity == newPaymentInfo.BillingCity); Assert.IsTrue(newSubscription.PaymentProfile.BillingCountry == newPaymentInfo.BillingCountry); Assert.IsTrue(newSubscription.PaymentProfile.BillingState == newPaymentInfo.BillingState); Assert.IsTrue(newSubscription.PaymentProfile.BillingZip == newPaymentInfo.BillingZip); Assert.IsTrue(usedComponents.Count() == 1); Assert.IsTrue(usedComponents.FirstOrDefault().Value.AllocatedQuantity == 5); // Cleanup Assert.IsTrue(Chargify.DeleteSubscription(newSubscription.SubscriptionID, "Automatic cancel due to test")); }
public void Subscription_Create_UsingOptions_MissingProduct() { // Arrange var exampleCustomer = Chargify.GetCustomerList().Values.DefaultIfEmpty(defaultValue: null).FirstOrDefault(); var paymentInfo = GetTestPaymentMethod(exampleCustomer.ToCustomerAttributes() as CustomerAttributes); var options = new SubscriptionCreateOptions() { CustomerID = exampleCustomer.ChargifyID, CreditCardAttributes = paymentInfo }; // Act var result = Chargify.CreateSubscription(options); }
public void Subscription_Create_Using_ExistingProfile() { // Arrange var existingSubscription = Chargify.GetSubscriptionList().Values.FirstOrDefault(s => s.State == SubscriptionState.Active && s.PaymentProfile != null && s.PaymentProfile.Id > 0) as Subscription; Assert.IsNotNull(existingSubscription, "No applicable subscription found."); Assert.IsTrue(existingSubscription.PaymentProfile.Id > 0); // Act var newSubscription = Chargify.CreateSubscription(existingSubscription.Product.Handle, existingSubscription.Customer.ToCustomerAttributes(), DateTime.MinValue, existingSubscription.PaymentProfile.Id); // Assert Assert.IsNotNull(newSubscription); Assert.AreEqual(existingSubscription.PaymentProfile.Id, newSubscription.PaymentProfile.Id); }
public void Can_create_delayed_cancel() { var existingSubscription = Chargify.GetSubscriptionList().Values.FirstOrDefault(s => s.State == SubscriptionState.Active && s.PaymentProfile != null && s.PaymentProfile.Id > 0) as Subscription; ValidateRun(() => existingSubscription != null, "No applicable subscription found."); ValidateRun(() => existingSubscription.PaymentProfile.Id > 0, "No payment profile found"); var newSubscription = Chargify.CreateSubscription(existingSubscription.Product.Handle, existingSubscription.Customer.ToCustomerAttributes(), DateTime.MinValue, existingSubscription.PaymentProfile.Id); ValidateRun(() => newSubscription != null, "No new subscription was created. Cannot test cancellation"); var updatedSubscription = Chargify.UpdateDelayedCancelForSubscription(newSubscription.SubscriptionID, true, "Testing Delayed Cancel"); Assert.IsTrue(updatedSubscription.CancelAtEndOfPeriod); }
public void Subscription_Create_With_SpecialChars() { var product = Chargify.GetProductList().Values.FirstOrDefault(); var referenceId = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes("Scott!", "Pilgrim@", "*****@*****.**", "+1 (123) 456-7890", "@Chargify#$%^&@", referenceId); newCustomer.ShippingAddress = @"123 Main St.*()-=_+`~"; newCustomer.ShippingCity = @"Kingston{}[]|;':"; newCustomer.ShippingState = @"ON<>,.?/"; var newPaymentInfo = GetTestPaymentMethod(newCustomer); // Act var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo); // Assert #if !NUNIT Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); #endif Assert.IsNotNull(newSubscription); Assert.IsNotNull(newSubscription.Customer); Assert.IsNotNull(newSubscription.PaymentProfile); Assert.IsTrue(newSubscription.SubscriptionID > int.MinValue); Assert.IsTrue(newSubscription.Customer.ChargifyID > int.MinValue); Assert.IsTrue(newSubscription.Customer.FirstName == newCustomer.FirstName); Assert.IsTrue(newSubscription.Customer.LastName == newCustomer.LastName); Assert.IsTrue(newSubscription.Customer.Email == newCustomer.Email); Assert.IsTrue(newSubscription.Customer.Phone == newCustomer.Phone); Assert.IsTrue(newSubscription.Customer.Organization == newCustomer.Organization); Assert.IsTrue(newSubscription.Customer.SystemID == referenceId); Assert.IsTrue(newSubscription.PaymentProfile.FirstName == newPaymentInfo.FirstName); Assert.IsTrue(newSubscription.PaymentProfile.LastName == newPaymentInfo.LastName); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationMonth == newPaymentInfo.ExpirationMonth); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationYear == newPaymentInfo.ExpirationYear); Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress == newPaymentInfo.BillingAddress); Assert.IsTrue(newSubscription.PaymentProfile.BillingCity == newPaymentInfo.BillingCity); Assert.IsTrue(newSubscription.PaymentProfile.BillingCountry == newPaymentInfo.BillingCountry); Assert.IsTrue(newSubscription.PaymentProfile.BillingState == newPaymentInfo.BillingState); Assert.IsTrue(newSubscription.PaymentProfile.BillingZip == newPaymentInfo.BillingZip); // Cleanup Assert.IsTrue(Chargify.DeleteSubscription(newSubscription.SubscriptionID, "Automatic cancel due to test")); }
public void Subscription_Can_Be_Purged() { // Arrange var trialingProduct = Chargify.GetProductList().Values.FirstOrDefault(p => p.TrialInterval > 0); var referenceId = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes(Faker.Name.FirstName(), Faker.Name.LastName(), Faker.Internet.Email(), Faker.Phone.PhoneNumber(), Faker.Company.CompanyName(), referenceId); var newPaymentInfo = GetTestPaymentMethod(newCustomer); var createdSubscription = Chargify.CreateSubscription(trialingProduct.Handle, newCustomer, newPaymentInfo); Assert.IsNotNull(createdSubscription); Chargify.PurgeSubscription(createdSubscription.SubscriptionID); var purgedSubscription = Chargify.Find <Subscription>(createdSubscription.SubscriptionID); Assert.IsNull(purgedSubscription); }
public void Subscription_Create() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); var referenceID = Guid.NewGuid().ToString(); var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newCustomer = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "123-456-7890", "Chargify", referenceID); var newPaymentInfo = GetTestPaymentMethod(newCustomer); // Act var newSubscription = Chargify.CreateSubscription(product.Handle, newCustomer, newPaymentInfo); // Assert Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); Assert.IsNotNull(newSubscription); Assert.IsNotNull(newSubscription.Customer); Assert.IsNotNull(newSubscription.PaymentProfile); Assert.IsTrue(newSubscription.SubscriptionID > int.MinValue); Assert.IsTrue(newSubscription.Customer.ChargifyID > int.MinValue); Assert.IsTrue(newSubscription.Customer.FirstName == newCustomer.FirstName); Assert.IsTrue(newSubscription.Customer.LastName == newCustomer.LastName); Assert.IsTrue(newSubscription.Customer.Email == newCustomer.Email); Assert.IsTrue(newSubscription.Customer.Phone == newCustomer.Phone); Assert.IsTrue(newSubscription.Customer.Organization == newCustomer.Organization); Assert.IsTrue(newSubscription.Customer.SystemID == referenceID); Assert.IsTrue(newSubscription.PaymentProfile.FirstName == newPaymentInfo.FirstName); Assert.IsTrue(newSubscription.PaymentProfile.LastName == newPaymentInfo.LastName); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationMonth == newPaymentInfo.ExpirationMonth); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationYear == newPaymentInfo.ExpirationYear); Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress == newPaymentInfo.BillingAddress); //Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress2 == newPaymentInfo.BillingAddress2); Assert.IsTrue(newSubscription.PaymentProfile.BillingCity == newPaymentInfo.BillingCity); Assert.IsTrue(newSubscription.PaymentProfile.BillingCountry == newPaymentInfo.BillingCountry); Assert.IsTrue(newSubscription.PaymentProfile.BillingState == newPaymentInfo.BillingState); Assert.IsTrue(newSubscription.PaymentProfile.BillingZip == newPaymentInfo.BillingZip); Assert.IsTrue(newSubscription.ProductPriceInCents == product.PriceInCents); Assert.IsTrue(newSubscription.ProductPrice == product.Price); // Cleanup Assert.IsTrue(Chargify.DeleteSubscription(newSubscription.SubscriptionID, "Automatic cancel due to test")); }
public void Components_Create_Subscription_Multiple_Components() { // Arrange var product = Chargify.GetProductList().Values.FirstOrDefault(); Assert.IsNotNull(product, "Product couldn't be found"); var referenceId = Guid.NewGuid().ToString(); var newCustomer = new CustomerAttributes("Scott", "Pilgrim", "*****@*****.**", "Chargify", referenceId); var newPaymentInfo = GetTestPaymentMethod(newCustomer); // Find components that allow for a simple allocated_quantity = 1 to work for this simple test var components = Chargify.GetComponentsForProductFamily(product.ProductFamily.ID).Values.Where(c => c.Kind == ComponentType.Quantity_Based_Component || c.Kind == ComponentType.On_Off_Component); var componentsToUse = components.Take(2).ToList(); var options = new SubscriptionCreateOptions() { CustomerAttributes = newCustomer, CreditCardAttributes = newPaymentInfo, ProductHandle = product.Handle, Components = new System.Collections.Generic.List <ComponentDetails> { new ComponentDetails() { ComponentID = componentsToUse.First().ID, AllocatedQuantity = 1 }, new ComponentDetails() { ComponentID = componentsToUse.Last().ID, AllocatedQuantity = 1 } } }; // Act var newSubscription = Chargify.CreateSubscription(options); var subComponents = Chargify.GetComponentsForSubscription(newSubscription.SubscriptionID); var usedComponents = from c in subComponents where componentsToUse.Any(x => x.ID == c.Value.ComponentID) select c; // Assert Assert.IsInstanceOfType(newSubscription, typeof(Subscription)); Assert.IsNotNull(newSubscription); Assert.IsNotNull(newSubscription.Customer); Assert.IsNotNull(newSubscription.PaymentProfile); Assert.IsTrue(newSubscription.SubscriptionID > int.MinValue); Assert.IsTrue(newSubscription.Customer.ChargifyID > int.MinValue); Assert.IsTrue(newSubscription.Customer.FirstName == newCustomer.FirstName); Assert.IsTrue(newSubscription.Customer.LastName == newCustomer.LastName); Assert.IsTrue(newSubscription.Customer.Email == newCustomer.Email); Assert.IsTrue(newSubscription.Customer.Organization == newCustomer.Organization); Assert.IsTrue(newSubscription.Customer.SystemID == referenceId); Assert.IsTrue(newSubscription.PaymentProfile.FirstName == newPaymentInfo.FirstName); Assert.IsTrue(newSubscription.PaymentProfile.LastName == newPaymentInfo.LastName); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationMonth == newPaymentInfo.ExpirationMonth); Assert.IsTrue(newSubscription.PaymentProfile.ExpirationYear == newPaymentInfo.ExpirationYear); Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress == newPaymentInfo.BillingAddress); //Assert.IsTrue(newSubscription.PaymentProfile.BillingAddress2 == newPaymentInfo.BillingAddress2); Assert.IsTrue(newSubscription.PaymentProfile.BillingCity == newPaymentInfo.BillingCity); Assert.IsTrue(newSubscription.PaymentProfile.BillingCountry == newPaymentInfo.BillingCountry); Assert.IsTrue(newSubscription.PaymentProfile.BillingState == newPaymentInfo.BillingState); Assert.IsTrue(newSubscription.PaymentProfile.BillingZip == newPaymentInfo.BillingZip); Assert.IsTrue(usedComponents.Count() == componentsToUse.Count); foreach (var component in usedComponents) { Assert.IsTrue(componentsToUse.Any(x => x.ID == component.Key)); //Assert.AreEqual(decimal.Parse(componentsToUse[component.Key]), component.Value.AllocatedQuantity); } // Cleanup Assert.IsTrue(Chargify.DeleteSubscription(newSubscription.SubscriptionID, "Automatic cancel due to test")); }
public void Startup() { int familyId = int.MinValue; var productFamilyList = Chargify.GetProductFamilyList(); if (productFamilyList.Count == 0) { var newProductFamilyId = Guid.NewGuid().ToString(); var newProductFamily = Chargify.CreateProductFamily(new ProductFamily(newProductFamilyId, newProductFamilyId, null, null)); familyId = newProductFamily.ID; } else { familyId = productFamilyList.FirstOrDefault().Key; } var productId = int.MinValue; var productHandle = string.Empty; var productList = Chargify.GetProductList(); if (productList.Count == 0) { var newProductId = Guid.NewGuid().ToString(); var newProduct = Chargify.CreateProduct(familyId, newProductId, newProductId.Replace("-", "_"), 100, 1, IntervalUnit.Month, null, newProductId); productId = newProduct.ID; productHandle = newProduct.Handle; } else { productId = productList.FirstOrDefault().Key; productHandle = productList.FirstOrDefault().Value.Handle; } var customerId = int.MinValue; var customerList = Chargify.GetCustomerList(); string referenceID = Guid.NewGuid().ToString(); Customer customer = null; if (customerList.Count == 0) { var newCustomer = new Customer() { FirstName = "Scott", LastName = "Pilgrim", Email = "*****@*****.**", Phone = "123-456-7890", Organization = "Chargify", SystemID = referenceID, ShippingAddress = "Address Line 1", ShippingAddress2 = "Address Line 2", ShippingCity = "New York", ShippingState = "New York", ShippingZip = "10001", ShippingCountry = "US" }; customer = Chargify.CreateCustomer(newCustomer) as Customer; customerId = customer.ChargifyID; } else { customer = customerList.FirstOrDefault().Value as Customer; customerId = customer.ChargifyID; } var subscriptionList = Chargify.GetSubscriptionList(); if (subscriptionList.Count == 0) { var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newPaymentInfo = GetTestPaymentMethod(customer); var newSubscription = Chargify.CreateSubscription(productHandle, customer.ChargifyID, newPaymentInfo); } }
public void Startup() { int familyId = int.MinValue; var productFamilyList = Chargify.GetProductFamilyList(); if (productFamilyList.Count == 0) { var newProductFamilyId = Guid.NewGuid().ToString(); var newProductFamily = Chargify.CreateProductFamily(new ProductFamily(newProductFamilyId, newProductFamilyId, null, null)); familyId = newProductFamily.ID; } else { familyId = productFamilyList.FirstOrDefault().Key; } var productId = int.MinValue; var productHandle = string.Empty; var productList = Chargify.GetProductList(); if (productList.Count == 0) { var newProductId = Guid.NewGuid().ToString(); var newProduct = Chargify.CreateProduct(familyId, newProductId, newProductId.Replace("-", "_"), 100, 1, IntervalUnit.Month, null, newProductId); productId = newProduct.ID; productHandle = newProduct.Handle; } else { productId = productList.FirstOrDefault().Key; productHandle = productList.FirstOrDefault().Value.Handle; } var customerId = int.MinValue; var customerList = Chargify.GetCustomerList(); string referenceID = Guid.NewGuid().ToString(); Customer customer = null; if (customerList.Count == 0) { var newCustomer = new Customer() { FirstName = Faker.Name.FirstName(), LastName = Faker.Name.LastName(), Email = Faker.Internet.Email(), Phone = Faker.Phone.PhoneNumber(), Organization = Faker.Company.CompanyName(), SystemID = referenceID, ShippingAddress = Faker.Address.StreetAddress(false), ShippingAddress2 = Faker.Address.SecondaryAddress(), ShippingCity = Faker.Address.City(), ShippingState = Faker.Address.StateAbbr(), ShippingZip = Faker.Address.ZipCode(), ShippingCountry = "US" }; customer = Chargify.CreateCustomer(newCustomer) as Customer; customerId = customer.ChargifyID; } else { customer = customerList.FirstOrDefault().Value as Customer; customerId = customer.ChargifyID; } var subscriptionList = Chargify.GetSubscriptionList(); if (subscriptionList.Count == 0) { var expMonth = DateTime.Now.AddMonths(1).Month; var expYear = DateTime.Now.AddMonths(12).Year; var newPaymentInfo = GetTestPaymentMethod(customer); var newSubscription = Chargify.CreateSubscription(productHandle, customer.ChargifyID, newPaymentInfo); } }
public ActionResult Local(LocalSignup model, string id) { try { if (ModelState.IsValid) { // Attempt to register the user Guid userId = Guid.NewGuid(); var newUser = WebSecurity.CreateUserAndAccount(model.User.UserName, model.User.Password, new { Email = model.UserContact.EmailAddress, UserId = userId }); if (newUser != null) { if (!Roles.RoleExists("user")) { Roles.CreateRole("user"); } Roles.AddUsersToRoles(new string[] { model.User.UserName }, new string[] { "User" }); // Now that the user is created, attempt to create the corresponding subscription var customerInfo = new CustomerAttributes() { FirstName = model.UserContact.FirstName, LastName = model.UserContact.LastName, Email = model.UserContact.EmailAddress, SystemID = userId.ToString() }; var paymentAttributes = new CreditCardAttributes() { FullNumber = model.UserPayment.CardNumber.Trim(), CVV = model.UserPayment.CVV, ExpirationMonth = model.UserPayment.ExpirationMonth, ExpirationYear = model.UserPayment.ExpirationYear, BillingAddress = model.UserAddress.Address, BillingCity = model.UserAddress.City, BillingZip = model.UserAddress.Zip, BillingState = model.UserAddress.State, BillingCountry = model.UserAddress.Country }; try { var newSubscription = Chargify.CreateSubscription(id, customerInfo, paymentAttributes); WebSecurity.Login(model.User.UserName, model.User.Password, false); return(RedirectToAction("Index", "Site")); } catch (ChargifyException ex) { if (ex.ErrorMessages.Count > 0) { ModelState.AddModelError("", ex.ErrorMessages.FirstOrDefault().Message); } else { ModelState.AddModelError("", ex.ToString()); } } } else { //ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus)); } } return(RedirectToAction("Index")); } catch { return(View()); } }