protected override void Arrange() { var configValueProvider = new ApiSettings(); configValueProvider.UseReverseProxyHeaders = true; Feature item = new Feature(); item.IsEnabled = true; item.Name = "openApiMetadata"; configValueProvider.Features.Add(item); _openApiMetadataCacheProvider = Stub <IOpenApiMetadataCacheProvider>(); A.CallTo(() => _openApiMetadataCacheProvider.GetOpenApiContentByFeedName(A <string> ._)) .Returns(OpenApiMetadataHelper.GetIdentityContent()); var fakeopenAPIcontent = A.Fake <List <OpenApiContent> >(); A.CallTo(() => _openApiMetadataCacheProvider.GetAllSectionDocuments(A <bool> ._)).Returns(fakeopenAPIcontent); var sectiondata = _openApiMetadataCacheProvider.GetOpenApiContentByFeedName("openApiMetadata"); fakeopenAPIcontent.Add(sectiondata); _controller = new OpenApiMetadataController(_openApiMetadataCacheProvider, configValueProvider); var request = A.Fake <HttpRequest>(); request.Method = "Post"; request.Scheme = "http"; A.CallTo(() => request.Host).Returns(new HostString("localhost", 80)); request.PathBase = "/"; request.RouteValues = new RouteValueDictionary { { "controller", "Token" } }; var httpContext = A.Fake <HttpContext>(); A.CallTo(() => httpContext.Request).Returns(request); var controllerContext = new ControllerContext() { HttpContext = httpContext, }; RouteValueDictionary dictionary = new RouteValueDictionary(); dictionary.Add("controller", "Token"); controllerContext.RouteData = new RouteData(dictionary); _controller.ControllerContext = controllerContext; }
public bool TryGetSwaggerDocument(HttpRequest request, out string document) { document = null; var openApiMetadataRequest = CreateOpenApiMetadataRequest(request.Path); var openApiContent = _openApiMetadataCacheProvider.GetOpenApiContentByFeedName(openApiMetadataRequest.GetFeedName()); if (openApiContent == null) { _logger.Debug($"Unable to locate swagger document for {openApiMetadataRequest.GetFeedName()}"); return(false); } document = GetMetadataForContent(openApiContent, request, openApiMetadataRequest.SchoolYearFromRoute, openApiMetadataRequest.InstanceIdFromRoute); return(true); }
public HttpResponseMessage Get([FromUri] OpenApiMetadataRequest request) { _logger.Info($"Looking up document for feedname = {request.GetFeedName()}"); var openApiContent = _openApiMetadataCacheProvider.GetOpenApiContentByFeedName(request.GetFeedName()); if (openApiContent == null) { _logger.Warn($"Unable to load swagger document for {request.GetFeedName()}"); return(new HttpResponseMessage(HttpStatusCode.NotFound)); } var metadata = GetMetadataForContent(openApiContent, request); var etag = new EntityTagHeaderValue( HashHelper.GetSha256Hash(metadata) .ToHexString() .DoubleQuoted()); if (ActionContext.Request.Headers.IfNoneMatch.Contains(etag)) { return(new HttpResponseMessage(HttpStatusCode.NotModified)); } var result = new HttpResponseMessage(HttpStatusCode.OK) { Headers = { ETag = etag }, Content = new StringContent(metadata) }; result.Content.Headers.ContentType = new MediaTypeHeaderValue(SwaggerDocumentHelper.ContentType); return(result); }