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"); }
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); }
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); }
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)); }
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_") ); }