1- " use strict" ;
2- Object . defineProperty ( exports , " __esModule" , { value : true } ) ;
3- const merge_1 = require ( " ../merge" ) ;
1+ ' use strict' ;
2+ Object . defineProperty ( exports , ' __esModule' , { value : true } ) ;
3+ const merge_1 = require ( ' ../merge' ) ;
44describe ( 'mergeQueries' , ( ) => {
5- test ( 'should allow fields present in allowed queries' , ( ) => {
6- const requestQuery = `{ user { id, name, email } }` ;
7- const allowedQueries = [ `{ user { id, name } }` ] ;
8- const expected = `{
5+ test ( 'should allow fields present in allowed queries' , ( ) => {
6+ const requestQuery = `{ user { id, name, email } }` ;
7+ const allowedQueries = [ `{ user { id, name } }` ] ;
8+ const expected = `{
99 user {
1010 id
1111 name
1212 }
1313}` ;
14- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
15- } ) ;
16- test ( 'should exclude fields not present in allowed queries' , ( ) => {
17- const requestQuery = `{ user { id, name, email } }` ;
18- const allowedQueries = [ `{ user { id } }` ] ;
19- const expected = `{
14+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
15+ expected
16+ ) ;
17+ } ) ;
18+ test ( 'should exclude fields not present in allowed queries' , ( ) => {
19+ const requestQuery = `{ user { id, name, email } }` ;
20+ const allowedQueries = [ `{ user { id } }` ] ;
21+ const expected = `{
2022 user {
2123 id
2224 }
2325}` ;
24- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
25- } ) ;
26- test ( 'should handle nested queries' , ( ) => {
27- const requestQuery = `{ user { id, profile { name, age } } }` ;
28- const allowedQueries = [ `{ user { profile { name } } }` ] ;
29- const expected = `{
26+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
27+ expected
28+ ) ;
29+ } ) ;
30+ test ( 'should handle nested queries' , ( ) => {
31+ const requestQuery = `{ user { id, profile { name, age } } }` ;
32+ const allowedQueries = [ `{ user { profile { name } } }` ] ;
33+ const expected = `{
3034 user {
3135 profile {
3236 name
3337 }
3438 }
3539}` ;
36- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
37- } ) ;
38- test ( 'should handle queries with arguments' , ( ) => {
39- const requestQuery = `{ users(age: 30) { id, name } }` ;
40- const allowedQueries = [ `{ users { name } }` ] ;
41- const expected = `{
40+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
41+ expected
42+ ) ;
43+ } ) ;
44+ test ( 'should handle queries with arguments' , ( ) => {
45+ const requestQuery = `{ users(age: 30) { id, name } }` ;
46+ const allowedQueries = [ `{ users { name } }` ] ;
47+ const expected = `{
4248 users(age: 30) {
4349 name
4450 }
4551}` ;
46- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
47- } ) ;
48- test ( 'should strictly follow allowed queries with aliases' , ( ) => {
49- const requestQuery = `{ user: users { id, name } }` ;
50- const allowedQueries = [ `{ user: users { name } }` ] ;
51- const expected = `{
52+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
53+ expected
54+ ) ;
55+ } ) ;
56+ test ( 'should strictly follow allowed queries with aliases' , ( ) => {
57+ const requestQuery = `{ user: users { id, name } }` ;
58+ const allowedQueries = [ `{ user: users { name } }` ] ;
59+ const expected = `{
5260 user: users {
5361 name
5462 }
5563}` ;
56- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
57- } ) ;
58- test ( 'should strictly follow allowed queries without aliases' , ( ) => {
59- const requestQuery = `{ users { id, name } }` ;
60- const allowedQueries = [ `{ users { name } }` ] ;
61- const expected = `{
64+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
65+ expected
66+ ) ;
67+ } ) ;
68+ test ( 'should strictly follow allowed queries without aliases' , ( ) => {
69+ const requestQuery = `{ users { id, name } }` ;
70+ const allowedQueries = [ `{ users { name } }` ] ;
71+ const expected = `{
6272 users {
6373 name
6474 }
6575}` ;
66- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
67- } ) ;
68- test ( 'should handle mutations' , ( ) => {
69- const requestQuery = `mutation { updateUser(id: 1, data: { name: "New Name" }) { id, name } }` ;
70- const allowedQueries = [
71- `mutation { updateUser(id: 1, data: { name: "New Name" }) { name } }` ,
72- ] ;
73- const expected = `mutation {
76+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
77+ expected
78+ ) ;
79+ } ) ;
80+ test ( 'should handle mutations' , ( ) => {
81+ const requestQuery = `mutation { updateUser(id: 1, data: { name: "New Name" }) { id, name } }` ;
82+ const allowedQueries = [
83+ `mutation { updateUser(id: 1, data: { name: "New Name" }) { name } }` ,
84+ ] ;
85+ const expected = `mutation {
7486 updateUser(id: 1, data: {name: "New Name"}) {
7587 name
7688 }
7789}` ;
78- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
79- } ) ;
80- test ( 'should handle multiple allowed queries' , ( ) => {
81- const requestQuery = `{ user { id, name, email } }` ;
82- const allowedQueries = [ `{ user { id } }` , `{ user { name } }` ] ;
83- const expected = `{
90+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
91+ expected
92+ ) ;
93+ } ) ;
94+ test ( 'should handle multiple allowed queries' , ( ) => {
95+ const requestQuery = `{ user { id, name, email } }` ;
96+ const allowedQueries = [ `{ user { id } }` , `{ user { name } }` ] ;
97+ const expected = `{
8498 user {
8599 id
86100 name
87101 }
88102}` ;
89- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
90- } ) ;
91- test ( 'should handle empty requestQuery' , ( ) => {
92- const requestQuery = '' ;
93- const allowedQueries = [ `{ user { id, name } }` ] ;
94- const expected = '' ;
95- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
96- } ) ;
97- test ( 'should handle empty allowedQueries' , ( ) => {
98- const requestQuery = `{ user { id, name, email } }` ;
99- const allowedQueries = [ ] ;
100- const expected = '' ;
101- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
102- } ) ;
103- test ( 'should handle mutations' , ( ) => {
104- const requestQuery = `mutation { updateUser(id: 1, data: { name: "New Name" }) { id, name } }` ;
105- const allowedQueries = [
106- `mutation { updateUser(id: 1, data: { name: "New Name" }) { name } }` ,
107- ] ;
108- const expected = `mutation {
103+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
104+ expected
105+ ) ;
106+ } ) ;
107+ test ( 'should handle empty requestQuery' , ( ) => {
108+ const requestQuery = '' ;
109+ const allowedQueries = [ `{ user { id, name } }` ] ;
110+ const expected = '' ;
111+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
112+ expected
113+ ) ;
114+ } ) ;
115+ test ( 'should handle empty allowedQueries' , ( ) => {
116+ const requestQuery = `{ user { id, name, email } }` ;
117+ const allowedQueries = [ ] ;
118+ const expected = '' ;
119+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
120+ expected
121+ ) ;
122+ } ) ;
123+ test ( 'should handle mutations' , ( ) => {
124+ const requestQuery = `mutation { updateUser(id: 1, data: { name: "New Name" }) { id, name } }` ;
125+ const allowedQueries = [
126+ `mutation { updateUser(id: 1, data: { name: "New Name" }) { name } }` ,
127+ ] ;
128+ const expected = `mutation {
109129 updateUser(id: 1, data: {name: "New Name"}) {
110130 name
111131 }
112132}` ;
113- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
114- } ) ;
115- test ( 'should handle deeply nested queries' , ( ) => {
116- const requestQuery = `{ user { id, profile { name, address { street, city } } } }` ;
117- const allowedQueries = [ `{ user { profile { address { street } } } }` ] ;
118- const expected = `{
133+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
134+ expected
135+ ) ;
136+ } ) ;
137+ test ( 'should handle deeply nested queries' , ( ) => {
138+ const requestQuery = `{ user { id, profile { name, address { street, city } } } }` ;
139+ const allowedQueries = [ `{ user { profile { address { street } } } }` ] ;
140+ const expected = `{
119141 user {
120142 profile {
121143 address {
@@ -124,18 +146,53 @@ describe('mergeQueries', () => {
124146 }
125147 }
126148}` ;
127- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
128- } ) ;
129- test ( 'should handle nested mutations' , ( ) => {
130- const requestQuery = `mutation { updateUser(id: 1, data: { profile: { name: "New Name" } }) { id } }` ;
131- const allowedQueries = [
132- `mutation { updateUser(id: 1, data: { profile: { name: "New Name" } }) { id } }` ,
133- ] ;
134- const expected = `mutation {
149+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
150+ expected
151+ ) ;
152+ } ) ;
153+ test ( 'should handle nested mutations' , ( ) => {
154+ const requestQuery = `mutation { updateUser(id: 1, data: { profile: { name: "New Name" } }) { id } }` ;
155+ const allowedQueries = [
156+ `mutation { updateUser(id: 1, data: { profile: { name: "New Name" } }) { id } }` ,
157+ ] ;
158+ const expected = `mutation {
135159 updateUser(id: 1, data: {profile: {name: "New Name"}}) {
136160 id
137161 }
138162}` ;
139- expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe ( expected ) ;
140- } ) ;
163+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
164+ expected
165+ ) ;
166+ } ) ;
167+
168+ test ( 'should handle subqueries' , ( ) => {
169+ const requestQuery = `query {
170+ employees {
171+ salary {
172+ amount
173+ }
174+ name
175+ }
176+ }` ;
177+ const allowedQueries = [
178+ `query {
179+ departments {
180+ id
181+ name
182+ employees {
183+ id
184+ name
185+ }
186+ }
187+ }` ,
188+ ] ;
189+ const expected = `mutation {
190+ updateUser(id: 1, data: {profile: {name: "New Name"}}) {
191+ id
192+ }
193+ }` ;
194+ expect ( ( 0 , merge_1 . mergeQueries ) ( requestQuery , allowedQueries ) ) . toBe (
195+ expected
196+ ) ;
197+ } ) ;
141198} ) ;
0 commit comments