protected override void Arrange()
            {
                _compositesMetadataProvider = Stub <ICompositesMetadataProvider>();

                var routes      = new  List <XElement>(OpenApiCompositeHelper.Routes).ToReadOnlyList();
                var definitions = new List <XElement>(OpenApiCompositeHelper.CompositeDefinitions).ToReadOnlyList();

                A.CallTo(() => _compositesMetadataProvider.TryGetRoutes(
                             A <string> ._,
                             A <string> ._,
                             out routes))
                .Returns(true);

                A.CallTo(() => _compositesMetadataProvider.TryGetCompositeDefinitions(
                             A <string> ._,
                             A <string> ._,
                             out definitions))
                .Returns(true);

                _swaggerDocumentContext = new SwaggerDocumentContext(
                    _resourceModelProvider.GetResourceModel())
                {
                    CompositeContext = new SwaggerCompositeContext
                    {
                        CategoryName = OpenApiCompositeHelper.CategoryName
                    }
                };
            }
Esempio n. 2
0
            protected override void Arrange()
            {
                AssemblyLoader.EnsureLoaded <Marker_EdFi_Ods_Composites_Test>();
                AssemblyLoader.EnsureLoaded <Marker_EdFi_Ods_Profiles_Test>();

                _compositesMetadataProvider = new CompositesMetadataProvider();

                _profileResourceNamesProvider = new ProfileResourceNamesProvider();
                _profileResourceModelProvider = new ProfileResourceModelProvider(ResourceModelProvider, new ProfileResourceNamesProvider());

                var openApiMetadataRouteProviderStub = Stub <IOpenApiMetadataRouteProvider>();

                openApiMetadataRouteProviderStub.Stub(x => x.GetAllRoutes())
                .Return(GetTestRoutes());

                _openApiMetadataCacheProvider = new LegacyOpenApiMetadataCacheProvider(
                    DomainModelProvider,
                    ResourceModelProvider,
                    _profileResourceModelProvider,
                    _profileResourceNamesProvider,
                    _compositesMetadataProvider,
                    SchemaNameMapProvider,
                    openApiMetadataRouteProviderStub,
                    TestOpenApiContentProviders);
            }
Esempio n. 3
0
            protected override void Arrange()
            {
                _compositesMetadataProvider = Stub <ICompositesMetadataProvider>();

                _compositesMetadataProvider.Stub(x => x.GetAllCategories())
                .Return(new List <CompositeCategory>());

                _profileResourceModelProvider = Stub <IProfileResourceModelProvider>();

                _profileResourceNamesProvider = Stub <IProfileResourceNamesProvider>();

                _profileResourceNamesProvider.Stub(x => x.GetProfileResourceNames())
                .Return(new List <ProfileAndResourceNames>());

                var openApiMetadataRouteProviderStub = Stub <IOpenApiMetadataRouteProvider>();

                openApiMetadataRouteProviderStub.Stub(x => x.GetAllRoutes())
                .Return(
                    GetTestRoutes()
                    .Where(r => r.GetDataTokenRouteName() != MetadataRouteConstants.Profiles));

                _openApiMetadataCacheProvider = new LegacyOpenApiMetadataCacheProvider(
                    DomainModelProvider,
                    ResourceModelProvider,
                    _profileResourceModelProvider,
                    _profileResourceNamesProvider,
                    _compositesMetadataProvider,
                    SchemaNameMapProvider,
                    openApiMetadataRouteProviderStub,
                    TestOpenApiContentProviders);
            }
            protected override void Arrange()
            {
                _compositesMetadataProvider = Stub <ICompositesMetadataProvider>();

                A.CallTo(() => _compositesMetadataProvider.GetAllCategories())
                .Returns(new List <CompositeCategory>());

                _profileResourceNamesProvider = new ProfileResourceNamesProvider();

                _profileResourceModelProvider = new ProfileResourceModelProvider(
                    ResourceModelProvider, new ProfileResourceNamesProvider());

                var _openAPIMetadataRouteInformation = Stub <List <IOpenApiMetadataRouteInformation> >();
                var _openApiContentProviders         = Stub <List <IOpenApiContentProvider> >();

                var openApiMetadataRouteInformation = new List <IOpenApiMetadataRouteInformation>();

                var defaultPageSizeLimitProvider = new DefaultPageSizeLimitProvider(GetConfiguration());

                var openApiMetadataDocumentFactory = new OpenApiMetadataDocumentFactory(CreateApiSettings(), defaultPageSizeLimitProvider);

                var resourceModelProvider = Stub <IResourceModelProvider>();

                var resourceModel = ResourceModelProvider.GetResourceModel();

                A.CallTo(() => resourceModelProvider.GetResourceModel()).Returns(resourceModel);

                _openApiMetadataCacheProvider = new OpenApiMetadataCacheProvider(
                    resourceModelProvider, GetTestRouteInformation(CreateApiSettings()).ToList(), TestOpenApiContentProviders, openApiMetadataDocumentFactory);
            }
        public CompositesOpenApiContentProvider(ICompositesMetadataProvider compositesMetadataProvider,
                                                IResourceModelProvider resourceModelProvider)
        {
            _compositesMetadataProvider = Preconditions.ThrowIfNull(
                compositesMetadataProvider, nameof(compositesMetadataProvider));

            _resourceModelProvider = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));
        }
        public LegacyOpenApiMetadataCacheProvider(
            IDomainModelProvider domainModelProvider,
            IResourceModelProvider resourceModelProvider,
            IProfileResourceModelProvider profileResourceModelProvider,
            IProfileResourceNamesProvider profileResourceNamesProvider,
            ICompositesMetadataProvider compositesMetadataProvider,
            ISchemaNameMapProvider schemaNameMapProvider,
            IOpenApiMetadataRouteProvider openApiMetadataRouteProvider,
            IOpenApiContentProvider[] openApiContentProviders)
        {
            _domainModelProvider          = domainModelProvider;
            _resourceModelProvider        = resourceModelProvider;
            _compositesMetadataProvider   = compositesMetadataProvider;
            _schemaNameMapProvider        = schemaNameMapProvider;
            _openApiMetadataRouteProvider = openApiMetadataRouteProvider;
            _profileResourceModelProvider = profileResourceModelProvider;
            _profileResourceNamesProvider = profileResourceNamesProvider;

            _openApiMetadataResourceFilters =
                new Dictionary <string, IOpenApiMetadataResourceStrategy>(StringComparer.InvariantCultureIgnoreCase)
            {
                { Descriptors, new SwaggerUiDescriptorOnlyStrategy() },
                { Resources, new SwaggerUiResourceOnlyStrategy() },
                { Extensions, new SdkGenExtensionResourceStrategy() },
                { EdFi, new SdkGenAllEdFiResourceStrategy() },
                { Profiles, new OpenApiProfileStrategy() },
                { Composites, new OpenApiCompositeStrategy(_compositesMetadataProvider) },
                { All, new SdkGenAllResourceStrategy() }
            };

            _openApiMetadataSectionByRoute =
                new Dictionary <string, Func <IEnumerable <OpenApiContent> > >
            {
                { MetadataRouteConstants.Schema, CreateSchemaSpecificSections },
                { MetadataRouteConstants.All, CreateSdkGenAllSection },
                { MetadataRouteConstants.Profiles, CreateProfileSection },
                { MetadataRouteConstants.Composites, CreateCompositeSection },
                { MetadataRouteConstants.ResourceTypes, CreateSwaggerUiSection }
            };

            foreach (var openApiContentProvider in openApiContentProviders)
            {
                var routeName = openApiContentProvider.RouteName;

                if (_openApiMetadataSectionByRoute.ContainsKey(routeName))
                {
                    throw new InvalidOperationException(
                              $"Duplicate metadata route '{routeName}' encountered during initialization.  Source: {openApiContentProvider.GetType().FullName}");
                }

                _openApiMetadataSectionByRoute.Add(routeName, openApiContentProvider.GetOpenApiContent);
            }

            _swaggerMetadataCache =
                new ConcurrentDictionary <string, OpenApiContent>(StringComparer.InvariantCultureIgnoreCase);
        }
 public CompositeResourceController(
     ICompositeResourceResponseProvider compositeResourceResponseProvider,
     ICompositesMetadataProvider compositeMetadataProvider,
     IRESTErrorProvider restErrorProvider, IDefaultPageSizeLimitProvider defaultPageSizeLimitProvider)
 {
     _compositeResourceResponseProvider = compositeResourceResponseProvider;
     _compositeMetadataProvider         = compositeMetadataProvider;
     _restErrorProvider            = restErrorProvider;
     _defaultPageSizeLimitProvider = defaultPageSizeLimitProvider;
 }
Esempio n. 8
0
        public CompositesOpenApiContentProvider(ICompositesMetadataProvider compositesMetadataProvider,
                                                IResourceModelProvider resourceModelProvider, IOpenApiMetadataDocumentFactory openApiMetadataDocumentFactory)
        {
            _compositesMetadataProvider = Preconditions.ThrowIfNull(
                compositesMetadataProvider, nameof(compositesMetadataProvider));

            _resourceModelProvider = Preconditions.ThrowIfNull(resourceModelProvider, nameof(resourceModelProvider));

            _openApiMetadataDocumentFactory = Preconditions.ThrowIfNull(
                openApiMetadataDocumentFactory, nameof(openApiMetadataDocumentFactory));
        }
 public CompositeResourceController(
     ICompositeResourceResponseProvider compositeResourceResponseProvider,
     ICompositesMetadataProvider compositeMetadataProvider,
     IRESTErrorProvider restErrorProvider,
     ApiSettings apiSettings)
 {
     _compositeResourceResponseProvider = compositeResourceResponseProvider;
     _compositeMetadataProvider         = compositeMetadataProvider;
     _restErrorProvider = restErrorProvider;
     _isEnabled         = apiSettings.IsFeatureEnabled(ApiFeature.Composites.GetConfigKeyName());
 }
 public CompositesRouteConfiguration(ICompositesMetadataProvider compositesMetadataProvider)
 {
     _compositesMetadataProvider = Preconditions.ThrowIfNull(compositesMetadataProvider, nameof(compositesMetadataProvider));
 }
Esempio n. 11
0
            protected override void Arrange()
            {
                _compositesMetadataProvider = Stub <ICompositesMetadataProvider>();

                var definitions = new List <XElement>(OpenApiCompositeHelper.CompositeDefinitions).ToReadOnlyList();
                var routes      = new List <XElement>(OpenApiCompositeHelper.Routes).ToReadOnlyList();

                A.CallTo(
                    () => _compositesMetadataProvider.TryGetCompositeDefinitions(
                        A <string> ._,
                        A <string> ._,
                        out definitions))
                .Returns(true);

                A.CallTo(
                    () => _compositesMetadataProvider.TryGetRoutes(
                        A <string> ._,
                        A <string> ._,
                        out routes))
                .Returns(true);

                _swaggerDocumentContext = new SwaggerDocumentContext(
                    _resourceModelProvider.GetResourceModel())
                {
                    CompositeContext = new SwaggerCompositeContext
                    {
                        CategoryName =
                            OpenApiCompositeHelper
                            .CategoryName
                    }
                };

                _filteredResources =
                    new OpenApiCompositeStrategy(_compositesMetadataProvider)
                    .GetFilteredResources(_swaggerDocumentContext);

                var assessmentResource = _resourceModelProvider
                                         .GetResourceModel()
                                         .GetResourceByFullName(new FullName(EdFiConventions.PhysicalSchemaName, "Assessment"));

                _expectedStrategyAppliedResources =
                    OpenApiCompositeHelper.Routes
                    .Where(r => !IsBaseResourceRoute(r))
                    .Select(
                        r => new SwaggerPathsResource(assessmentResource)
                {
                    CompositeResourceContext =
                        new CompositeResourceContext(),
                    Path =
                        GetCompositeResourcePath(
                            assessmentResource,
                            r)
                        .ToCamelCase(),
                    OperationId =
                        GetCompositeResourceOperationId(
                            assessmentResource,
                            r),
                    Readable = true, Writable = false
                })
                    .Concat(
                        new[]
                {
                    new SwaggerPathsResource(assessmentResource)
                    {
                        CompositeResourceContext = new CompositeResourceContext(), Path =
                            $"{_swaggerDocumentContext.CompositeContext.CategoryName}/{assessmentResource.PluralName}",
                        OperationId = "getAssessments", Readable = true, Writable = false
                    }
                });
            }
Esempio n. 12
0
 public CompositesRouteConvention(ICompositesMetadataProvider compositesMetadataProvider, ApiSettings apiSettings)
 {
     _compositesMetadataProvider = compositesMetadataProvider;
     _apiSettings = apiSettings;
 }
 public OpenApiCompositeStrategy(ICompositesMetadataProvider compositesMetadataProvider)
 {
     _compositesMetadataProvider = compositesMetadataProvider;
 }