Example #1
0
        public async Task ShouldReturnBadRequestForInvalidContractIdForContract()
        {
            var placeOrder = new PlaceOrder
            {
                OrderId   = "678ghi",
                ItemName  = "Nu wave oven",
                OrderDate = DateTime.Now
            };

            var invalidGuid = Guid.NewGuid();

            var placeOrderMessage = new PlaceOrderContract
            {
                ContractId = invalidGuid,
                Message    = new PlaceOrderMessageDetails
                {
                    Id        = Guid.NewGuid(),
                    ItemName  = placeOrder.ItemName,
                    OrderDate = placeOrder.OrderDate,
                    OrderId   = placeOrder.OrderId,
                    Timestamp = DateTime.Now
                }
            };

            var stringContent = new StringContent(JsonConvert.SerializeObject(placeOrderMessage), Encoding.UTF8, "application/json");
            var response      = await Client.PostAsync(_totemSettings.TestMessageApiUrl, stringContent);

            await DisplayErrors(response);

            response.StatusCode.ShouldBe(HttpStatusCode.BadRequest);

            var responseString = await response.Content.ReadAsStringAsync();

            responseString.ShouldContain("Unable to test message; confirm that your request message is valid JSON.");
        }
Example #2
0
        public async Task ShouldReturnSuccessForValidContract()
        {
            var placeOrder = new PlaceOrder
            {
                OrderId   = "123abc",
                ItemName  = "Frying Pan",
                OrderDate = DateTime.Now
            };

            var placeOrderMessage = new PlaceOrderContract
            {
                ContractId = Guid.Parse(_totemSettings.ValidPlaceOrderContractId),
                Message    = new PlaceOrderMessageDetails
                {
                    Id        = Guid.NewGuid(),
                    ItemName  = placeOrder.ItemName,
                    OrderDate = placeOrder.OrderDate,
                    OrderId   = placeOrder.OrderId,
                    Timestamp = DateTime.Now
                }
            };

            var stringContent = new StringContent(JsonConvert.SerializeObject(placeOrderMessage), Encoding.UTF8, "application/json");

            var response = await Client.PostAsync(_totemSettings.TestMessageApiUrl, stringContent);

            await DisplayErrors(response);

            response.EnsureSuccessStatusCode();
        }
Example #3
0
        public async Task ShouldReturnBadRequestForInvalidMessageIdForContract()
        {
            var placeOrder = new PlaceOrder
            {
                OrderId   = "456def",
                ItemName  = "Griddle",
                OrderDate = DateTime.Now
            };

            var placeOrderMessage = new PlaceOrderContract
            {
                ContractId = Guid.Parse(_totemSettings.ValidPlaceOrderContractId),
                Message    = new PlaceOrderMessageDetails
                {
                    Id        = null,
                    ItemName  = placeOrder.ItemName,
                    OrderDate = placeOrder.OrderDate,
                    OrderId   = placeOrder.OrderId,
                    Timestamp = DateTime.Now
                }
            };

            var stringContent = new StringContent(JsonConvert.SerializeObject(placeOrderMessage), Encoding.UTF8, "application/json");
            var response      = await Client.PostAsync(_totemSettings.TestMessageApiUrl, stringContent);

            await DisplayErrors(response);

            response.StatusCode.ShouldBe(HttpStatusCode.BadRequest);

            var responseString = await response.Content.ReadAsStringAsync();

            responseString.ShouldContain("Message does not match contract");
        }
Example #4
0
        public async Task ShouldReturnBadRequestForInvalidPropertyForContract()
        {
            var placeOrder = new PlaceOrder
            {
                OrderId   = "901jki",
                ItemName  = "Cutting board",
                OrderDate = DateTime.Now
            };

            var placeOrderMessage = new PlaceOrderContract
            {
                ContractId = Guid.Parse(_totemSettings.ValidPlaceOrderContractId),
                Message    = new MessageDetailsWithAdditionalField
                {
                    Id           = Guid.NewGuid(),
                    Timestamp    = DateTime.Now,
                    InvalidField = "this should error out"
                }
            };

            var stringContent = new StringContent(JsonConvert.SerializeObject(placeOrderMessage), Encoding.UTF8, "application/json");
            var response      = await Client.PostAsync(_totemSettings.TestMessageApiUrl, stringContent);

            await DisplayErrors(response);

            response.StatusCode.ShouldBe(HttpStatusCode.BadRequest);

            var responseString = await response.Content.ReadAsStringAsync();

            responseString.ShouldContain("Message property \\\"InvalidField\\\" is not part of the contract.");
        }