public AtomicSparseFieldSetResourceDefinitionTests(ExampleIntegrationTestContext <TestableStartup <OperationsDbContext>, OperationsDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <OperationsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddSingleton <LyricPermissionProvider>();
                services.AddScoped <IResourceDefinition <Lyric, long>, LyricTextDefinition>();
                services.AddScoped(typeof(IResourceChangeTracker <>), typeof(NeverSameResourceChangeTracker <>));
            });
        }
Exemple #2
0
        public IncludeTests(ExampleIntegrationTestContext <TestableStartup <QueryStringDbContext>, QueryStringDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <BlogPostsController>();
            testContext.UseController <BlogsController>();
            testContext.UseController <CommentsController>();
            testContext.UseController <WebAccountsController>();

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.MaximumIncludeDepth = null;
        }
        public SparseFieldSetTests(ExampleIntegrationTestContext <TestableStartup <QueryStringDbContext>, QueryStringDbContext> testContext)
        {
            _testContext = testContext;

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddSingleton <ResourceCaptureStore>();

                services.AddResourceRepository <ResultCapturingRepository <Blog> >();
                services.AddResourceRepository <ResultCapturingRepository <BlogPost> >();
                services.AddResourceRepository <ResultCapturingRepository <WebAccount> >();
            });
        }
Exemple #4
0
        public ResponseMetaTests(ExampleIntegrationTestContext <TestableStartup <SupportDbContext>, SupportDbContext> testContext)
        {
            _testContext = testContext;

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddSingleton <IResponseMeta, SupportResponseMeta>();
            });

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.IncludeTotalResourceCount = false;
        }
        public EagerLoadingTests(ExampleIntegrationTestContext <TestableStartup <EagerLoadingDbContext>, EagerLoadingDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <StreetsController>();
            testContext.UseController <StatesController>();
            testContext.UseController <BuildingsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddResourceRepository <BuildingRepository>();
            });
        }
Exemple #6
0
        public ZeroAsKeyTests(ExampleIntegrationTestContext <TestableStartup <ZeroKeyDbContext>, ZeroKeyDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <GamesController>();
            testContext.UseController <MapsController>();
            testContext.UseController <PlayersController>();

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.UseRelativeLinks        = true;
            options.AllowClientGeneratedIds = true;
        }
Exemple #7
0
        public RelativeLinksWithNamespaceTests(ExampleIntegrationTestContext <RelativeLinksInApiNamespaceStartup <LinksDbContext>, LinksDbContext> testContext)
        {
            _testContext = testContext;

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddScoped(typeof(IResourceChangeTracker <>), typeof(NeverSameResourceChangeTracker <>));
            });

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.IncludeTotalResourceCount = true;
        }
Exemple #8
0
        public CompositeKeyTests(ExampleIntegrationTestContext <TestableStartup <CompositeDbContext>, CompositeDbContext> testContext)
        {
            _testContext = testContext;

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddResourceRepository <CarRepository>();
            });

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.AllowClientGeneratedIds = true;
        }
Exemple #9
0
        public PaginationWithoutTotalCountTests(ExampleIntegrationTestContext <TestableStartup <QueryStringDbContext>, QueryStringDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <BlogPostsController>();
            testContext.UseController <WebAccountsController>();

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.IncludeTotalResourceCount         = false;
            options.DefaultPageSize                   = new PageSize(DefaultPageSize);
            options.AllowUnknownQueryStringParameters = true;
        }
Exemple #10
0
        public TopLevelCountTests(ExampleIntegrationTestContext <TestableStartup <SupportDbContext>, SupportDbContext> testContext)
        {
            _testContext = testContext;

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddScoped(typeof(IResourceChangeTracker <>), typeof(NeverSameResourceChangeTracker <>));
            });

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.IncludeTotalResourceCount = true;
        }
        public OutboxTests(ExampleIntegrationTestContext <TestableStartup <OutboxDbContext>, OutboxDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <DomainUsersController>();
            testContext.UseController <DomainGroupsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddResourceDefinition <OutboxUserDefinition>();
                services.AddResourceDefinition <OutboxGroupDefinition>();
            });
        }
        public ArchiveTests(ExampleIntegrationTestContext <TestableStartup <TelevisionDbContext>, TelevisionDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <TelevisionNetworksController>();
            testContext.UseController <TelevisionStationsController>();
            testContext.UseController <TelevisionBroadcastsController>();
            testContext.UseController <BroadcastCommentsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddResourceDefinition <TelevisionBroadcastDefinition>();
            });
        }
        public ResourceInjectionTests(ExampleIntegrationTestContext <TestableStartup <InjectionDbContext>, InjectionDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <GiftCertificatesController>();
            testContext.UseController <PostOfficesController>();

            testContext.ConfigureServicesBeforeStartup(services =>
            {
                services.AddSingleton <ISystemClock, FrozenSystemClock>();
            });

            _fakers = new InjectionFakers(testContext.Factory.Services);
        }
        public AtomicCreateResourceWithClientGeneratedIdTests(
            ExampleIntegrationTestContext <TestableStartup <OperationsDbContext>, OperationsDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <OperationsController>();

            // These routes need to be registered in ASP.NET for rendering links to resource/relationship endpoints.
            testContext.UseController <TextLanguagesController>();

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.AllowClientGeneratedIds = true;
        }
Exemple #15
0
        public SerializationTests(ExampleIntegrationTestContext <TestableStartup <SerializationDbContext>, SerializationDbContext> testContext)
        {
            _testContext = testContext;

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddScoped(typeof(IResourceChangeTracker <>), typeof(NeverSameResourceChangeTracker <>));
            });

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.IncludeExceptionStackTraceInErrors = false;
            options.AllowClientGeneratedIds            = true;
        }
        public CreateResourceTests(ExampleIntegrationTestContext <TestableStartup <ReadWriteDbContext>, ReadWriteDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <WorkItemsController>();
            testContext.UseController <WorkItemGroupsController>();
            testContext.UseController <UserAccountsController>();
            testContext.UseController <RgbColorsController>();

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.UseRelativeLinks        = false;
            options.AllowClientGeneratedIds = false;
        }
        public ResourceDefinitionQueryCallbackTests(ExampleIntegrationTestContext <TestableStartup <CallableDbContext>, CallableDbContext> testContext)
        {
            _testContext = testContext;

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddScoped <IResourceDefinition <CallableResource>, CallableResourceDefinition>();
                services.AddSingleton <IUserRolesService, FakeUserRolesService>();
            });

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.IncludeTotalResourceCount = true;
        }
Exemple #18
0
        public FilterDepthTests(ExampleIntegrationTestContext <TestableStartup <QueryStringDbContext>, QueryStringDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <BlogsController>();
            testContext.UseController <BlogPostsController>();

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.EnableLegacyFilterNotation = false;

            options.DisableTopPagination      = false;
            options.DisableChildrenPagination = false;
        }
        public AtomicAbsoluteLinksTests(ExampleIntegrationTestContext <TestableStartup <OperationsDbContext>, OperationsDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <OperationsController>();

            // These routes need to be registered in ASP.NET for rendering links to resource/relationship endpoints.
            testContext.UseController <TextLanguagesController>();
            testContext.UseController <RecordCompaniesController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddScoped(typeof(IResourceChangeTracker <>), typeof(NeverSameResourceChangeTracker <>));
            });
        }
        public PaginationWithTotalCountTests(ExampleIntegrationTestContext <TestableStartup <QueryStringDbContext>, QueryStringDbContext> testContext)
        {
            _testContext = testContext;

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.IncludeTotalResourceCount         = true;
            options.DefaultPageSize                   = new PageSize(DefaultPageSize);
            options.MaximumPageSize                   = null;
            options.MaximumPageNumber                 = null;
            options.AllowUnknownQueryStringParameters = true;

            options.DisableTopPagination      = false;
            options.DisableChildrenPagination = false;
        }
Exemple #21
0
        public AbsoluteLinksWithoutNamespaceTests(ExampleIntegrationTestContext <AbsoluteLinksNoNamespaceStartup <LinksDbContext>, LinksDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <PhotoAlbumsController>();
            testContext.UseController <PhotosController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddScoped(typeof(IResourceChangeTracker <>), typeof(NeverSameResourceChangeTracker <>));
            });

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.IncludeTotalResourceCount = true;
        }
Exemple #22
0
        public ResourceMetaTests(ExampleIntegrationTestContext <TestableStartup <SupportDbContext>, SupportDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <ProductFamiliesController>();
            testContext.UseController <SupportTicketsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddResourceDefinition <SupportTicketDefinition>();
                services.AddSingleton <ResourceDefinitionHitCounter>();
            });

            var hitCounter = _testContext.Factory.Services.GetRequiredService <ResourceDefinitionHitCounter>();

            hitCounter.Reset();
        }
Exemple #23
0
        public AtomicResourceMetaTests(ExampleIntegrationTestContext <TestableStartup <OperationsDbContext>, OperationsDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <OperationsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddResourceDefinition <MusicTrackMetaDefinition>();
                services.AddResourceDefinition <TextLanguageMetaDefinition>();

                services.AddSingleton <ResourceDefinitionHitCounter>();
            });

            var hitCounter = _testContext.Factory.Services.GetRequiredService <ResourceDefinitionHitCounter>();

            hitCounter.Reset();
        }
Exemple #24
0
        public AtomicTransactionConsistencyTests(ExampleIntegrationTestContext <TestableStartup <OperationsDbContext>, OperationsDbContext> testContext)
        {
            _testContext = testContext;

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddControllersFromExampleProject();

                services.AddResourceRepository <PerformerRepository>();
                services.AddResourceRepository <MusicTrackRepository>();
                services.AddResourceRepository <LyricRepository>();

                string postgresPassword   = Environment.GetEnvironmentVariable("PGPASSWORD") ?? "postgres";
                string dbConnectionString = $"Host=localhost;Port=5432;Database=JsonApiTest-{Guid.NewGuid():N};User ID=postgres;Password={postgresPassword}";

                services.AddDbContext <ExtraDbContext>(options => options.UseNpgsql(dbConnectionString));
            });
        }
        public SoftDeletionTests(ExampleIntegrationTestContext <TestableStartup <SoftDeletionDbContext>, SoftDeletionDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <CompaniesController>();
            testContext.UseController <DepartmentsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddSingleton <ISystemClock>(new FrozenSystemClock
                {
                    UtcNow = 1.January(2005).ToDateTimeOffset()
                });

                services.AddResourceService <SoftDeletionAwareResourceService <Company> >();
                services.AddResourceService <SoftDeletionAwareResourceService <Department> >();
            });
        }
        public AtomicSerializationResourceDefinitionTests(ExampleIntegrationTestContext <TestableStartup <OperationsDbContext>, OperationsDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <OperationsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddResourceDefinition <RecordCompanyDefinition>();

                services.AddSingleton <ResourceDefinitionHitCounter>();
                services.AddScoped(typeof(IResourceChangeTracker <>), typeof(NeverSameResourceChangeTracker <>));
            });

            var hitCounter = _testContext.Factory.Services.GetRequiredService <ResourceDefinitionHitCounter>();

            hitCounter.Reset();
        }
Exemple #27
0
        public OutboxTests(ExampleIntegrationTestContext <TestableStartup <OutboxDbContext>, OutboxDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <DomainUsersController>();
            testContext.UseController <DomainGroupsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddResourceDefinition <OutboxUserDefinition>();
                services.AddResourceDefinition <OutboxGroupDefinition>();

                services.AddSingleton <ResourceDefinitionHitCounter>();
            });

            var hitCounter = _testContext.Factory.Services.GetRequiredService <ResourceDefinitionHitCounter>();

            hitCounter.Reset();
        }
        public FireForgetTests(ExampleIntegrationTestContext <TestableStartup <FireForgetDbContext>, FireForgetDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <DomainUsersController>();
            testContext.UseController <DomainGroupsController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddResourceDefinition <FireForgetUserDefinition>();
                services.AddResourceDefinition <FireForgetGroupDefinition>();

                services.AddSingleton <MessageBroker>();
            });

            var messageBroker = _testContext.Factory.Services.GetRequiredService <MessageBroker>();

            messageBroker.Reset();
        }
        public AtomicSerializationTests(ExampleIntegrationTestContext <TestableStartup <OperationsDbContext>, OperationsDbContext> testContext)
        {
            _testContext = testContext;

            testContext.UseController <OperationsController>();

            // These routes need to be registered in ASP.NET for rendering links to resource/relationship endpoints.
            testContext.UseController <PerformersController>();

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddScoped(typeof(IResourceChangeTracker <>), typeof(NeverSameResourceChangeTracker <>));
            });

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.IncludeJsonApiVersion   = true;
            options.AllowClientGeneratedIds = true;
        }
        public AtomicQueryStringTests(ExampleIntegrationTestContext <TestableStartup <OperationsDbContext>, OperationsDbContext> testContext)
        {
            _testContext = testContext;

            testContext.ConfigureServicesAfterStartup(services =>
            {
                services.AddControllersFromExampleProject();

                services.AddSingleton <ISystemClock>(new FrozenSystemClock {
                    UtcNow = FrozenTime
                });
                services.AddScoped <IResourceDefinition <MusicTrack, Guid>, MusicTrackReleaseDefinition>();
            });

            var options = (JsonApiOptions)testContext.Factory.Services.GetRequiredService <IJsonApiOptions>();

            options.AllowQueryStringOverrideForSerializerDefaultValueHandling = true;
            options.AllowQueryStringOverrideForSerializerNullValueHandling    = true;
        }