-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Expand file tree
/
Copy pathContentItemQueryTests.cs
More file actions
77 lines (62 loc) · 2.49 KB
/
ContentItemQueryTests.cs
File metadata and controls
77 lines (62 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using OrchardCore.Apis.GraphQL;
using OrchardCore.ContentManagement;
using OrchardCore.ContentManagement.Records;
using OrchardCore.Tests.Apis.Context;
namespace OrchardCore.Tests.Apis.GraphQL;
public class ContentItemQueryTests
{
[Fact]
public async Task ShouldReturnContentItemWhenViewContentPermissionIsGranted()
{
using var context = new SiteContext()
.WithRecipe("Blog")
.WithPermissionsContext(new PermissionsContext
{
UsePermissionsContext = true,
AuthorizedPermissions =
[
GraphQLPermissions.ExecuteGraphQL,
global::OrchardCore.Contents.CommonPermissions.ViewContent,
],
});
await context.InitializeAsync();
var contentItemId = await GetPublishedContentItemIdAsync(context, "Blog");
var result = await context.GraphQLClient.Content
.Query($@"item: contentItem(contentItemId: ""{contentItemId}"") {{
contentItemId
}}");
Assert.Equal(contentItemId, result["data"]["item"]["contentItemId"].ToString());
}
[Fact]
public async Task ShouldNotReturnContentItemWithoutViewContentPermission()
{
using var context = new SiteContext()
.WithRecipe("Blog")
.WithPermissionsContext(new PermissionsContext
{
UsePermissionsContext = true,
AuthorizedPermissions =
[
GraphQLPermissions.ExecuteGraphQL,
],
});
await context.InitializeAsync();
var contentItemId = await GetPublishedContentItemIdAsync(context, "Blog");
var result = await context.GraphQLClient.Content
.Query($@"item: contentItem(contentItemId: ""{contentItemId}"") {{
contentItemId
}}");
Assert.Null(result["data"]["item"]);
}
private static async Task<string> GetPublishedContentItemIdAsync(SiteContext context, string contentType)
{
string contentItemId = null;
await context.UsingTenantScopeAsync(async scope =>
{
var session = scope.ServiceProvider.GetRequiredService<global::YesSql.ISession>();
var contentItem = await session.Query<ContentItem, ContentItemIndex>(x => x.ContentType == contentType && x.Published).FirstOrDefaultAsync();
contentItemId = contentItem.ContentItemId;
});
return contentItemId;
}
}