Exemple #1
0
        public async Task ServiceMiddleWare_ShouldRaiseDescriptiveError()
        {
            var loggerMock        = new Mock <ILogger>();
            var loggerFactoryMock = new Mock <ILoggerFactory>();

            loggerFactoryMock.Setup(x => x.CreateLogger(It.IsAny <string>())).Returns(loggerMock.Object);

            var coll    = new MetadataCollection(new[] { typeof(ITestService) }, "bla", 1, 5);
            int version = 1;
            var service = new TestService();

            var headers = new Dictionary <string, string>
            {
                { "ServiceVersion", version.ToString() },
                { "Content-Type", "application/json" },
            };

            var middleware = new ServiceMiddleware(null, loggerFactoryMock.Object);

            // Missing required property Name
            var contextMock = PrepareHttpContext(headers, service, "/testservice/addperson", "", "POST",
                                                 "{ person: { Gender: 0, Age: 33 } }");
            await middleware.Invoke(contextMock.Object, coll[version]);

            string message = Encoding.UTF8.GetString((contextMock.Object.Response.Body as MemoryStream).ToArray());

            Assert.StartsWith("Missing required property", message);
            Assert.Equal(400, contextMock.Object.Response.StatusCode);
        }
Exemple #2
0
        public async Task ServiceMiddleWare_PerformGetAndPostRequests()
        {
            var loggerMock = new Mock <ILoggerFactory>();
            var coll       = new MetadataCollection(new[] { typeof(ITestService) }, "bla", 1, 5);
            int version    = 1;
            var service    = new TestService();

            var headers = new Dictionary <string, string>
            {
                { "ServiceVersion", version.ToString() },
                { "Content-Type", "application/json" },
            };

            var middleware = new ServiceMiddleware(null, loggerMock.Object);

            // Add three persons
            var contextMock = PrepareHttpContext(headers, service, "/testservice/addperson", "", "POST",
                                                 "{ person: { Name: 'Piet', Gender: 0, Age: 33 } }");
            await middleware.Invoke(contextMock.Object, coll[version]);

            contextMock = PrepareHttpContext(headers, service, "/testservice/addperson", "", "POST",
                                             "{ person: { Name: 'Jannie', Gender: 1, Age: 13 } }");
            await middleware.Invoke(contextMock.Object, coll[version]);

            contextMock = PrepareHttpContext(headers, service, "/testservice/addperson", "", "POST",
                                             "{ person: { Name: 'Jan', Gender: 0, Age: 35 } }");
            await middleware.Invoke(contextMock.Object, coll[version]);

            // Find all persons starting with 'ja'
            contextMock = PrepareHttpContext(headers, service, "/testservice/FindPersons", "?name=ja", "GET", "");
            await middleware.Invoke(contextMock.Object, coll[version]);

            // Read the result
            string json   = Encoding.UTF8.GetString((contextMock.Object.Response.Body as MemoryStream).ToArray());
            var    result = JToken.Parse(json) as JArray;

            Assert.Equal(2, result.Count);
            Assert.All(result, it => Assert.StartsWith("ja", it["name"].Value <string>(), StringComparison.InvariantCultureIgnoreCase));

            // Find all persons starting with 'ja' asynchronously
            contextMock = PrepareHttpContext(headers, service, "/testservice/FindPersons2", "?name=ja", "GET", "");
            await middleware.Invoke(contextMock.Object, coll[version]);

            // Read the result
            json   = Encoding.UTF8.GetString((contextMock.Object.Response.Body as MemoryStream).ToArray());
            result = JToken.Parse(json) as JArray;
            Assert.Equal(2, result.Count);
            Assert.All(result, it => Assert.StartsWith("ja", it["name"].Value <string>(), StringComparison.InvariantCultureIgnoreCase));
        }
Exemple #3
0
        public async Task ServiceMiddleWare_CanHandleEmptyQuery()
        {
            var loggerMock = new Mock <ILoggerFactory>();
            var coll       = new MetadataCollection(new[] { typeof(ITestService) }, "bla", 1, 5);
            int version    = 1;
            var service    = new TestService();

            var headers = new Dictionary <string, string>
            {
                { "ServiceVersion", version.ToString() },
                { "Content-Type", "application/json" },
            };

            var middleware = new ServiceMiddleware(null, loggerMock.Object);
            // Get request with an empty query
            var contextMock = PrepareHttpContext(headers, service, "/testservice/FindPersons", "", "GET", "");
            await middleware.Invoke(contextMock.Object, coll[version]);

            string json = Encoding.UTF8.GetString((contextMock.Object.Response.Body as MemoryStream).ToArray());

            Assert.Equal("[]", json);
        }