17
17
* limitations under the License.
18
18
*/
19
19
20
- import type { Driver , Session } from "neo4j-driver" ;
21
- import { graphql } from "graphql" ;
22
- import Neo4jHelper from "../../../neo4j" ;
23
- import { Neo4jGraphQL } from "../../../../../src/classes" ;
24
- import { UniqueType } from "../../../../utils/graphql-types" ;
25
20
import { createBearerToken } from "../../../../utils/create-bearer-token" ;
21
+ import type { UniqueType } from "../../../../utils/graphql-types" ;
22
+ import { TestHelper } from "../../../utils/tests-helper" ;
26
23
27
24
describe ( `Field Level Authorization Where Requests` , ( ) => {
28
- let neoSchema : Neo4jGraphQL ;
29
- let driver : Driver ;
30
- let neo4j : Neo4jHelper ;
31
- let session : Session ;
32
- const typeMovie = new UniqueType ( "Movie" ) ;
33
- const typeActor = new UniqueType ( "Actor" ) ;
34
- const typeDefs = `
35
- type ${ typeMovie . name } {
36
- name: String
37
- year: Int
38
- createdAt: DateTime
39
- ${ typeActor . plural } : [${ typeActor . name } !]! @relationship(type: "ACTED_IN", direction: IN)
40
- }
41
-
42
- type ${ typeActor . name } {
43
- name: String
44
- year: Int
45
- createdAt: DateTime
46
- testStr: String
47
- ${ typeMovie . plural } : [${ typeMovie . name } !]! @relationship(type: "ACTED_IN", direction: OUT)
48
- }` ;
25
+ let testHelper : TestHelper ;
26
+
27
+ let typeMovie : UniqueType ;
28
+ let typeActor : UniqueType ;
29
+ let typeDefs : string ;
49
30
const secret = "secret" ;
50
31
51
- beforeAll ( async ( ) => {
52
- neo4j = new Neo4jHelper ( ) ;
53
- driver = await neo4j . getDriver ( ) ;
54
- session = await neo4j . getSession ( ) ;
32
+ beforeEach ( async ( ) => {
33
+ testHelper = new TestHelper ( ) ;
34
+
35
+ typeMovie = testHelper . createUniqueType ( "Movie" ) ;
36
+ typeActor = testHelper . createUniqueType ( "Actor" ) ;
37
+ typeDefs = `
38
+ type ${ typeMovie . name } {
39
+ name: String
40
+ year: Int
41
+ createdAt: DateTime
42
+ ${ typeActor . plural } : [${ typeActor . name } !]! @relationship(type: "ACTED_IN", direction: IN)
43
+ }
44
+
45
+ type ${ typeActor . name } {
46
+ name: String
47
+ year: Int
48
+ createdAt: DateTime
49
+ testStr: String
50
+ ${ typeMovie . plural } : [${ typeMovie . name } !]! @relationship(type: "ACTED_IN", direction: OUT)
51
+ }` ;
55
52
56
- await session . run ( `
53
+ await testHelper . runCypher ( `
57
54
CREATE (m:${ typeMovie . name }
58
55
{name: "Terminator",year:1990,createdAt: datetime()})
59
56
<-[:ACTED_IN]-
@@ -63,7 +60,7 @@ describe(`Field Level Authorization Where Requests`, () => {
63
60
const extendedTypeDefs = `${ typeDefs }
64
61
extend type ${ typeActor . name } @authorization(filter: [{ operations: [AGGREGATE], where: { node: { testStr: "$jwt.sub" } } }])` ;
65
62
66
- neoSchema = new Neo4jGraphQL ( {
63
+ await testHelper . initNeo4jGraphQL ( {
67
64
typeDefs : extendedTypeDefs ,
68
65
features : {
69
66
authorization : {
@@ -73,9 +70,8 @@ describe(`Field Level Authorization Where Requests`, () => {
73
70
} ) ;
74
71
} ) ;
75
72
76
- afterAll ( async ( ) => {
77
- await session . close ( ) ;
78
- await driver . close ( ) ;
73
+ afterEach ( async ( ) => {
74
+ await testHelper . close ( ) ;
79
75
} ) ;
80
76
81
77
test ( "authenticated query" , async ( ) => {
@@ -88,11 +84,7 @@ describe(`Field Level Authorization Where Requests`, () => {
88
84
}` ;
89
85
90
86
const token = createBearerToken ( secret , { sub : "1234" } ) ;
91
- const gqlResult = await graphql ( {
92
- schema : await neoSchema . getSchema ( ) ,
93
- source : query ,
94
- contextValue : neo4j . getContextValues ( { token } ) ,
95
- } ) ;
87
+ const gqlResult = await testHelper . runGraphQLWithToken ( query , token ) ;
96
88
expect ( gqlResult . errors ) . toBeUndefined ( ) ;
97
89
expect ( ( gqlResult as any ) . data [ typeMovie . plural ] [ 0 ] [ `${ typeActor . plural } Aggregate` ] ) . toEqual ( {
98
90
count : 1 ,
@@ -108,11 +100,7 @@ describe(`Field Level Authorization Where Requests`, () => {
108
100
}
109
101
}` ;
110
102
111
- const gqlResult = await graphql ( {
112
- schema : await neoSchema . getSchema ( ) ,
113
- source : query ,
114
- contextValue : neo4j . getContextValues ( ) ,
115
- } ) ;
103
+ const gqlResult = await testHelper . runGraphQL ( query ) ;
116
104
117
105
expect ( gqlResult . errors ) . toBeUndefined ( ) ;
118
106
expect ( gqlResult . data as any ) . toEqual ( {
@@ -130,11 +118,7 @@ describe(`Field Level Authorization Where Requests`, () => {
130
118
}` ;
131
119
132
120
const invalidToken = createBearerToken ( secret , { sub : "2222" } ) ;
133
- const gqlResult = await graphql ( {
134
- schema : await neoSchema . getSchema ( ) ,
135
- source : query ,
136
- contextValue : neo4j . getContextValues ( { token : invalidToken } ) ,
137
- } ) ;
121
+ const gqlResult = await testHelper . runGraphQLWithToken ( query , invalidToken ) ;
138
122
expect ( gqlResult . errors ) . toBeUndefined ( ) ;
139
123
expect ( ( gqlResult as any ) . data [ typeMovie . plural ] [ 0 ] [ `${ typeActor . plural } Aggregate` ] ) . toEqual ( {
140
124
count : 0 ,
0 commit comments