Exemplo n.º 1
0
        public async Task NotThrow2()
        {
            UserDto  user     = TestUsers.TestUser();
            Response response = await Send(new SampleAction2 { Message = "foo" })
                                .To("/api/actions/sample-2")
                                .As(user)
                                .ExecuteAndRead();

            response.Value.Should().Be("Hello World foo");
        }
Exemplo n.º 2
0
        public async Task NotThrow()
        {
            UserDto user = TestUsers.TestUser();

            MediatR.Unit response = await Send(new SampleAction { Foo = "foo" })
                                    .To("/api/actions/sample")
                                    .As(user)
                                    .ExecuteAndRead();

            UserDto user2 = TestUsers.NonPrivilegedUser();

            System.Net.Http.HttpResponseMessage response2 = await Send(new SampleAction { Foo = "foo" })
                                                            .To("/api/actions/sample")
                                                            .As(user2)
                                                            .Execute();

            response2.StatusCode.Should().Be(HttpStatusCode.Forbidden);
        }
Exemplo n.º 3
0
        public async Task BeUpdateable()
        {
            UserDto user = TestUsers.TestUser();

            SampleConfiguration cfg0 = await Get()
                                       .From("/api/configurations/sample-configuration")
                                       .As(user)
                                       .Read <SampleConfiguration>();

            IEnumerable <Meta> meta = await Get()
                                      .From("/api/configuration-schemas")
                                      .As(user)
                                      .Read <IEnumerable <Meta> >();

            meta.Should().NotBeEmpty();
            Meta sampleConfiguration = meta.Single(v => v.Id == "sample-configuration");

            var prop1 = Faker.Lorem.Word();
            var prop2 = Faker.Random.Number(1, 1000);

            _ = await Send(new UpdateRaw <SampleConfiguration>
            {
                ConfigurationId = "sample-configuration",
                Value           = new SampleConfiguration
                {
                    Prop1 = prop1,
                    Prop2 = prop2
                }
            })
                .As(user)
                .To("/api/configurations/sample-configuration")
                .ExecuteAndRead();

            SampleConfiguration cfg = await Get()
                                      .From("/api/configurations/sample-configuration")
                                      .As(user)
                                      .Read <SampleConfiguration>();

            cfg.Prop1.Should().Be(prop1);
            cfg.Prop2.Should().Be(prop2);
        }
Exemplo n.º 4
0
        public async Task CreateAndUpdateFiles()
        {
            UserDto           user       = TestUsers.TestUser();
            IList <Portfolio> portfolios = await Get()
                                           .From("/api/portfolios/examples")
                                           .As(user)
                                           .Read <IList <Portfolio> >();

            Portfolio portfolio = Faker.PickRandom(portfolios);

            portfolios.Remove(portfolio);

            ICollection <PortfolioFile> files = portfolio.Files;
            //files.Should().HaveCountGreaterOrEqualTo(2);

            IEnumerable <IFile> stagedFiles = await client.UploadFiles(files, "/api/portfolios/stage-files");

            stagedFiles.Should().NotBeEmpty();
            stagedFiles.Should().BeEquivalentTo(files, options => options.Excluding(v => v.Id).Excluding(v => v.Path));

            System.Guid createdPortfolioId = (await Send(new CreatePortfolio
            {
                Files = stagedFiles.Select(v => new PutPortfolioFile {
                    Id = v.Id, Name = v.Name
                })
            })
                                              .To("/api/portfolios/create")
                                              .As(user)
                                              .ExecuteAndRead()).Id;

            Portfolio createdPortfolio = await Query($"/odata/portfolios/{createdPortfolioId}?$expand=files")
                                         .As(user)
                                         .Read <Portfolio>();

            createdPortfolio.Files.Should().BeEquivalentTo(files, options => options.Excluding(v => v.Id).Excluding(v => v.Path));

            ICollection <PortfolioFile> files2 = Faker.PickRandom(portfolios).Files;

            files2.Select(v => v.Id).Should().NotBeEquivalentTo(files.Select(v => v.Id));

            IEnumerable <PortfolioFile> stagedFiles2 = await client.UploadFiles(files2, "/api/portfolios/stage-files");

            var putFiles2 = new List <PortfolioFile>();

            putFiles2.AddRange(createdPortfolio.Files);
            putFiles2[0].Name = Faker.Lorem.Word();
            putFiles2.RemoveAt(putFiles2.Count - 1);
            putFiles2.AddRange(stagedFiles2);

            Portfolio updatedPortfolio = await Send(new UpdatePortfolio
            {
                Id    = createdPortfolio.Id,
                Files = putFiles2.Select(v => new PutPortfolioFile {
                    Id = v.Id, Name = v.Name
                })
            })
                                         .To("/api/portfolios/update")
                                         .As(TestUsers.TestUser())
                                         .ExecuteAndRead();

            updatedPortfolio.Files.Should().BeEquivalentTo(putFiles2, options => options.Excluding(v => v.Id).Excluding(v => v.Path));
        }
Exemplo n.º 5
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddGlowApplicationServices(assembliesToScan: new[]
            {
                typeof(Startup).Assembly, typeof(Clocks.Clock).Assembly
            });

            UserDto testUser = TestUsers.TestUser();

            services.AddAuthorization(options =>
            {
                options.AddPolicy(Policies.Authorized, v =>
                {
                    v.RequireAuthenticatedUser();
                });
                options.AddPolicy(Policies.Privileged, v =>
                {
                    v.RequireAuthenticatedUser();
                    v.RequireClaim(ClaimTypes.NameIdentifier, testUser.Id);
                });
            });

            services.AddTestAuthentication(testUser.Id, testUser.DisplayName, testUser.Email);

            services.Configure <SampleConfiguration>(configuration.GetSection("sample-configuration"));

            services.AddEfConfiguration(options =>
            {
                //options.SetPartialReadPolicy("sample-configuration", "test-policy");
                //options.SetPartialWritePolicy("sample-configuration", "test-policy");
            }, new[] { typeof(Startup).Assembly });

            // services.AddMediatR(typeof(Startup), typeof(Clocks.Clock));
            // services.AddAutoMapper(cfg => { cfg.AddCollectionMappers(); }, typeof(Startup));

            // services.AddDbContext<DataContext>(options =>
            // {
            //     options.UseSqlServer(
            //         "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=glow-sample;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
            //     options.EnableSensitiveDataLogging(true);
            // });
            services.AddDbContextPool <DataContext>((serviceProvider, optionsBuilder) =>
                                                    optionsBuilder
                                                    .UseSqlServer(
                                                        "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=glow-sample;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
                                                        sqlServerOptionsBuilder =>
            {
                sqlServerOptionsBuilder
                .CommandTimeout((int)TimeSpan.FromMinutes(3).TotalSeconds)
                .EnableRetryOnFailure();
            })
                                                    .AddInterceptors(serviceProvider.GetRequiredService <SecondLevelCacheInterceptor>()));
            services.AddOptions();

            // services.AddTypescriptGeneration(new[]
            // {
            //     new TsGenerationOptions
            //     {
            //         Assemblies = new[] {Assembly.GetAssembly(typeof(GlowCoreModule))},
            //         Path = "../core/web/src/ts-models-core/",
            //         GenerateApi = false
            //     },
            //     new TsGenerationOptions
            //     {
            //         Assemblies = new[] {this.GetType().Assembly},
            //         Path = "./web/src/ts-models/",
            //         GenerateApi = true
            //     }
            // });

            services.AddTypescriptGeneration(new[]
            {
                new TsGenerationOptions
                {
                    Assemblies  = new[] { this.GetType().Assembly },
                    Path        = "./web/src/ts-models/",
                    GenerateApi = true
                }
            });

            services.AddNodeJS();
            // services.Configure<NodeJSProcessOptions>(options => options.ProjectPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NodeRuntime","js")); // AppDomain.CurrentDomain.BaseDirectory is your bin/<configuration>/<targetframework> directory
            services.Configure <NodeJSProcessOptions>(options =>
                                                      options.ProjectPath =
                                                          Path.Combine(env.ContentRootPath, "MdxBundle",
                                                                       "js")); // AppDomain.CurrentDomain.BaseDirectory is your bin/<configuration>/<targetframework> directory

            services.AddEFSecondLevelCache(options =>
                                           options.UseMemoryCacheProvider().DisableLogging(false).UseCacheKeyPrefix("EF_")
                                           );
        }