Example #1
0
        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);
        }
Example #3
0
        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)));
        }
Example #4
0
        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);
        }