コード例 #1
0
        public async void ShouldTransformToObject()
        {
            //Arrange
            var document = await OpenAPiDocumentReader.Read();

            var httpContext = new FakedHttpContext().ModifyRequest(r => { r.Method = "Post"; });

            //Act
            var operation = _operationMatcher.MatchByRequestAction(document.Paths["/pet"], httpContext);
            var schema    = _schemaSelector.Select(operation);
            var o         = _transformer.Transform(schema.Item2);

            //Assert
            var str = await JsonConvert.SerializeObjectAsync(o);

            str.Should().Be("{\"id\":1234,\"name\":\"add pet\",\"category\":{\"id\":1111,\"name\":\"dog\"}}");
        }
コード例 #2
0
        public async Task InvokeAsync(HttpContext context, IEnumerable <IOpenApiDocumentSource> sources,
                                      IOpenApiPathItemMatcher pathItemMatcher,
                                      IOpenApiOperationMatcher operationMatcher,
                                      IOpenApiSchemaSelector schemaSelector,
                                      IOpenApiObjectTransformer transformer,
                                      ILogger <MockServerMiddleware> logger)
        {
            _documentCache ??= await sources
            .OrderByDescending(x => x.Priority)
            .FirstOrDefault(x => x.IsValid)
            ?.Read();

            if (_documentCache == null)
            {
                NotFound(context, "Can not read swagger json");
                return;
            }

            var o      = new object();
            var schema = new Tuple <int, OpenApiObject>(200, new OpenApiObject());

            try
            {
                var pathItem  = pathItemMatcher.MatchByRequestUrl(_documentCache, context);
                var operation = operationMatcher.MatchByRequestAction(pathItem, context);
                schema = schemaSelector.Select(operation);
                o      = transformer.Transform(schema.Item2);
            }
            catch (MockServerException e)
            {
                logger.LogError(e, "Can not get example from swagger according to request");
                NotFound(context, "Can not get example from swagger according to request");
                return;
            }

            var json = JsonSerializer.Serialize(o, new JsonSerializerOptions()
            {
                WriteIndented = true,
                PropertyNameCaseInsensitive = true
            });

            context.Response.StatusCode  = schema.Item1;
            context.Response.ContentType = "application/json";
            await context.Response.WriteAsync(json);
        }