public async Task CreatesConflictingCustomer() { // given var request = new CreateCustomerRequest { AddressLine1 = "Address Line 1", AddressLine2 = "Address Line 2", AddressLine3 = "Address Line 3", City = "London", CompanyName = "Company Name", CountryCode = "NZ", DanishIdentityNumber = "2205506218", Email = "*****@*****.**", FamilyName = "Family Name", GivenName = "Given Name", Language = "en", Metadata = new Dictionary <string, string> { ["Key1"] = "Value1", ["Key2"] = "Value2", ["Key3"] = "Value3", }, PhoneNumber = "+44 20 7183 8674", PostalCode = "SW1A 1AA", Region = "Essex", SwedishIdentityNumber = "5302256218", }; var subject = new CustomersClient(_clientConfiguration); // when await subject.CreateAsync(request); var result = await subject.CreateAsync(request); var actual = result.Item; // then Assert.That(actual, Is.Not.Null); Assert.That(actual.Id, Is.Not.Null); Assert.That(actual.AddressLine1, Is.EqualTo(request.AddressLine1)); Assert.That(actual.AddressLine2, Is.EqualTo(request.AddressLine2)); Assert.That(actual.AddressLine3, Is.EqualTo(request.AddressLine3)); Assert.That(actual.City, Is.EqualTo(request.City)); Assert.That(actual.CountryCode, Is.EqualTo(request.CountryCode)); Assert.That(actual.CreatedAt, Is.Not.EqualTo(default(DateTimeOffset))); Assert.That(actual.DanishIdentityNumber, Is.EqualTo(request.DanishIdentityNumber)); Assert.That(actual.Email, Is.EqualTo(request.Email)); Assert.That(actual.FamilyName, Is.EqualTo(request.FamilyName)); Assert.That(actual.GivenName, Is.EqualTo(request.GivenName)); Assert.That(actual.Language, Is.EqualTo(request.Language)); Assert.That(actual.Metadata, Is.EqualTo(request.Metadata)); Assert.That(actual.PhoneNumber, Is.EqualTo(request.PhoneNumber)); Assert.That(actual.PostalCode, Is.EqualTo(request.PostalCode)); Assert.That(actual.Region, Is.EqualTo(request.Region)); Assert.That(actual.SwedishIdentityNumber, Does.Contain(request.SwedishIdentityNumber)); }
private async Task <Customer> CreateCustomer( string countryCode, string language, string danishIdentityNumber = null, string swedishIdentityNumber = null) { var request = new CreateCustomerRequest { AddressLine1 = "Address Line 1", AddressLine2 = "Address Line 2", AddressLine3 = "Address Line 3", City = "London", CompanyName = "Company Name", CountryCode = countryCode, DanishIdentityNumber = danishIdentityNumber, Email = "*****@*****.**", FamilyName = "Family Name", GivenName = "Given Name", Language = language, Metadata = new Dictionary <string, string> { ["Key1"] = "Value1", ["Key2"] = "Value2", ["Key3"] = "Value3", }, PhoneNumber = "+44 1234 567890", PostalCode = "SW1A 1AA", Region = "Essex", SwedishIdentityNumber = swedishIdentityNumber }; var customersClient = new CustomersClient(_clientConfiguration); return((await customersClient.CreateAsync(request)).Item); }
public void CreateCustomerRequestIsNullThrows() { // given var subject = new CustomersClient(_clientConfiguration); CreateCustomerRequest request = null; // when AsyncTestDelegate test = () => subject.CreateAsync(request); // then var ex = Assert.ThrowsAsync <ArgumentNullException>(test); Assert.That(ex.ParamName, Is.EqualTo(nameof(request))); }
public async Task CallsCreateCustomerEndpoint() { // given var subject = new CustomersClient(_clientConfiguration); var request = new CreateCustomerRequest { IdempotencyKey = Guid.NewGuid().ToString() }; // when await subject.CreateAsync(request); // then _httpTest .ShouldHaveCalled("https://api.gocardless.com/customers") .WithHeader("Idempotency-Key") .WithVerb(HttpMethod.Post); }
public void ValidationFailsForRequestThrows() { // given var request = new CreateCustomerRequest { AddressLine1 = "Address Line 1", AddressLine2 = "Address Line 2", AddressLine3 = "Address Line 3", City = "London", CompanyName = "Company Name", CountryCode = "DK", DanishIdentityNumber = "2205506218", Email = "*****@*****.**", FamilyName = "Family Name", GivenName = "Given Name", Language = "incorrect language", // This triggers the error. Metadata = new Dictionary <string, string> { ["Key1"] = "Value1", ["Key2"] = "Value2", ["Key3"] = "Value3", }, PostalCode = "SW1A 1AA", Region = "Essex", SwedishIdentityNumber = "5302256218", }; var subject = new CustomersClient(_clientConfiguration); // when AsyncTestDelegate test = () => subject.CreateAsync(request); // then var ex = Assert.ThrowsAsync <ValidationFailedException>(test); Assert.That(ex.Code, Is.EqualTo((int)HttpStatusCode.UnprocessableEntity)); Assert.That(ex.DocumentationUrl, Is.Not.Null); Assert.That(ex.Errors?.Any(), Is.True); Assert.That(ex.Message, Is.Not.Null.And.Not.Empty); Assert.That(ex.RawResponse, Is.Not.Null.And.Not.Empty); Assert.That(ex.RequestId, Is.Not.Null.And.Not.Empty); }