Browse Source

Fix permission.

pull/636/head
Sebastian 5 years ago
parent
commit
5d24b27945
  1. 7
      backend/src/Squidex.Domain.Apps.Entities/Apps/Indexes/AppsIndex.cs
  2. 7
      backend/src/Squidex.Domain.Apps.Entities/Schemas/Indexes/SchemasIndex.cs
  3. 4
      backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
  4. 54
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Indexes/AppsIndexTests.cs
  5. 54
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Indexes/SchemasIndexTests.cs

7
backend/src/Squidex.Domain.Apps.Entities/Apps/Indexes/AppsIndex.cs

@ -223,7 +223,12 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
if (context.IsCompleted && context.Command is AppCommand appCommand)
{
var app = await GetAppCoreAsync(appCommand.AggregateId);
var app = context.PlainResult as IAppEntity;
if (app == null)
{
app = await GetAppCoreAsync(appCommand.AggregateId);
}
if (app != null)
{

7
backend/src/Squidex.Domain.Apps.Entities/Schemas/Indexes/SchemasIndex.cs

@ -155,7 +155,12 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
if (context.IsCompleted && context.Command is SchemaCommand schemaCommand)
{
var schema = await GetSchemaCoreAsync(schemaCommand.AggregateId);
var schema = context.PlainResult as ISchemaEntity;
if (schema == null)
{
schema = await GetSchemaCoreAsync(schemaCommand.AggregateId);
}
if (schema != null)
{

4
backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs

@ -86,7 +86,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
/// </remarks>
[HttpPost]
[Route("content/{app}/graphql/")]
[ApiPermissionOrAnonymous(Permissions.AppContents)]
[ApiPermissionOrAnonymous]
[ApiCosts(2)]
public async Task<IActionResult> PostGraphQL(string app, [FromBody] GraphQLPostDto query)
{
@ -118,7 +118,7 @@ namespace Squidex.Areas.Api.Controllers.Contents
/// </remarks>
[HttpPost]
[Route("content/{app}/graphql/batch")]
[ApiPermissionOrAnonymous(Permissions.AppContents)]
[ApiPermissionOrAnonymous]
[ApiCosts(2)]
public async Task<IActionResult> PostGraphQLBatch(string app, [FromBody] GraphQLPostDto[] batch)
{

54
backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Indexes/AppsIndexTests.cs

@ -53,7 +53,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
[Fact]
public async Task Should_resolve_all_apps_from_user_permissions()
{
var expected = SetupApp();
var (expected, _) = SetupApp();
A.CallTo(() => indexByName.GetIdsAsync(A<string[]>.That.IsSameSequenceAs(new[] { appId.Name })))
.Returns(new List<DomainId> { appId.Id });
@ -66,7 +66,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
[Fact]
public async Task Should_resolve_all_apps_from_user()
{
var expected = SetupApp();
var (expected, _) = SetupApp();
A.CallTo(() => indexByUser.GetIdsAsync())
.Returns(new List<DomainId> { appId.Id });
@ -79,7 +79,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
[Fact]
public async Task Should_resolve_combined_apps()
{
var expected = SetupApp();
var (expected, _) = SetupApp();
A.CallTo(() => indexByName.GetIdsAsync(A<string[]>.That.IsSameSequenceAs(new[] { appId.Name })))
.Returns(new List<DomainId> { appId.Id });
@ -96,7 +96,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
[Fact]
public async Task Should_resolve_all_apps()
{
var expected = SetupApp();
var (expected, _) = SetupApp();
A.CallTo(() => indexByName.GetIdsAsync())
.Returns(new List<DomainId> { appId.Id });
@ -109,7 +109,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
[Fact]
public async Task Should_resolve_app_by_name()
{
var expected = SetupApp();
var (expected, _) = SetupApp();
A.CallTo(() => indexByName.GetIdAsync(appId.Name))
.Returns(appId.Id);
@ -130,7 +130,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
[Fact]
public async Task Should_resolve_app_by_name_and_id_if_cached_before()
{
var expected = SetupApp();
var (expected, _) = SetupApp();
A.CallTo(() => indexByName.GetIdAsync(appId.Name))
.Returns(appId.Id);
@ -153,7 +153,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
[Fact]
public async Task Should_resolve_app_by_id()
{
var expected = SetupApp();
var (expected, _) = SetupApp();
var actual1 = await sut.GetAppAsync(appId.Id, false);
var actual2 = await sut.GetAppAsync(appId.Id, false);
@ -171,7 +171,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
[Fact]
public async Task Should_resolve_app_by_id_and_name_if_cached_before()
{
var expected = SetupApp();
var (expected, _) = SetupApp();
var actual1 = await sut.GetAppAsync(appId.Id, true);
var actual2 = await sut.GetAppAsync(appId.Id, true);
@ -327,6 +327,40 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
.MustHaveHappened();
}
[Fact]
public async Task Should_update_index_when_app_is_updated()
{
var (_, appGrain) = SetupApp();
var command = new UpdateApp { AppId = appId };
var context =
new CommandContext(command, commandBus)
.Complete();
await sut.HandleAsync(context);
A.CallTo(() => appGrain.GetStateAsync())
.MustHaveHappened();
}
[Fact]
public async Task Should_update_index_with_result_when_app_is_updated()
{
var (app, appGrain) = SetupApp();
var command = new UpdateApp { AppId = appId };
var context =
new CommandContext(command, commandBus)
.Complete(app);
await sut.HandleAsync(context);
A.CallTo(() => appGrain.GetStateAsync())
.MustNotHaveHappened();
}
[Fact]
public async Task Should_remove_from_user_index_on_remove_of_contributor()
{
@ -424,7 +458,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
.MustHaveHappened();
}
private IAppEntity SetupApp(long version = 0)
private (IAppEntity, IAppGrain) SetupApp(long version = 0)
{
var appEntity = A.Fake<IAppEntity>();
@ -445,7 +479,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Indexes
A.CallTo(() => grainFactory.GetGrain<IAppGrain>(appId.Id.ToString(), null))
.Returns(appGrain);
return appEntity;
return (appEntity, appGrain);
}
private CreateApp Create(string name)

54
backend/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/Indexes/SchemasIndexTests.cs

@ -48,7 +48,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
[Fact]
public async Task Should_resolve_schema_by_name()
{
var expected = SetupSchema();
var (expected, _) = SetupSchema();
A.CallTo(() => index.GetIdAsync(schemaId.Name))
.Returns(schemaId.Id);
@ -69,7 +69,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
[Fact]
public async Task Should_resolve_schema_by_name_and_id_if_cached_before()
{
var expected = SetupSchema();
var (expected, _) = SetupSchema();
A.CallTo(() => index.GetIdAsync(schemaId.Name))
.Returns(schemaId.Id);
@ -92,7 +92,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
[Fact]
public async Task Should_resolve_schema_by_id()
{
var expected = SetupSchema();
var (expected, _) = SetupSchema();
var actual1 = await sut.GetSchemaAsync(appId.Id, schemaId.Id, false);
var actual2 = await sut.GetSchemaAsync(appId.Id, schemaId.Id, false);
@ -110,7 +110,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
[Fact]
public async Task Should_resolve_schema_by_id_and_name_if_cached_before()
{
var expected = SetupSchema();
var (expected, _) = SetupSchema();
var actual1 = await sut.GetSchemaAsync(appId.Id, schemaId.Id, true);
var actual2 = await sut.GetSchemaAsync(appId.Id, schemaId.Id, true);
@ -130,7 +130,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
[Fact]
public async Task Should_resolve_schemas_by_id()
{
var schema = SetupSchema();
var (schema, _) = SetupSchema();
A.CallTo(() => index.GetIdsAsync())
.Returns(new List<DomainId> { schema.Id });
@ -143,7 +143,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
[Fact]
public async Task Should_return_empty_schemas_if_schema_not_created()
{
var schema = SetupSchema(EtagVersion.NotFound);
var (schema, _) = SetupSchema(EtagVersion.NotFound);
A.CallTo(() => index.GetIdsAsync())
.Returns(new List<DomainId> { schema.Id });
@ -156,7 +156,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
[Fact]
public async Task Should_return_schema_if_deleted()
{
var schema = SetupSchema(0, true);
var (schema, _) = SetupSchema(0, true);
A.CallTo(() => index.GetIdsAsync())
.Returns(new List<DomainId> { schema.Id });
@ -242,10 +242,44 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
.MustNotHaveHappened();
}
[Fact]
public async Task Should_update_index_when_schema_is_updated()
{
var (_, schemaGrain) = SetupSchema();
var command = new UpdateSchema { SchemaId = schemaId };
var context =
new CommandContext(command, commandBus)
.Complete();
await sut.HandleAsync(context);
A.CallTo(() => schemaGrain.GetStateAsync())
.MustHaveHappened();
}
[Fact]
public async Task Should_update_index_with_result_when_schema_is_updated()
{
var (_, schemaGrain) = SetupSchema();
var command = new UpdateSchema { SchemaId = schemaId };
var context =
new CommandContext(command, commandBus)
.Complete(schemaGrain);
await sut.HandleAsync(context);
A.CallTo(() => schemaGrain.GetStateAsync())
.MustNotHaveHappened();
}
[Fact]
public async Task Should_remove_schema_from_index_on_delete_when_existed_before()
{
var schema = SetupSchema();
var (schema, _) = SetupSchema();
var command = new DeleteSchema { SchemaId = schemaId, AppId = appId };
@ -275,7 +309,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
return new CreateSchema { SchemaId = schemaId.Id, Name = name, AppId = appId };
}
private ISchemaEntity SetupSchema(long version = 0, bool isDeleted = false)
private (ISchemaEntity, ISchemaGrain) SetupSchema(long version = 0, bool isDeleted = false)
{
var schemaEntity = A.Fake<ISchemaEntity>();
@ -300,7 +334,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas.Indexes
A.CallTo(() => grainFactory.GetGrain<ISchemaGrain>(key, null))
.Returns(schemaGrain);
return schemaEntity;
return (schemaEntity, schemaGrain);
}
}
}

Loading…
Cancel
Save