strapi/packages/plugins/graphql/tests/graphqlSchema.test.e2e.js

97 lines
2.2 KiB
JavaScript
Raw Normal View History

GraphQL Plugin (bug): Content type's attributes marked as private are being exposed in the exported GraphQL schema (#9805) * Fixes #9804 * Fixes isPrivateAttribute function in strapi utils to take into account the private property within an attribute * removing comment * removing isNotPrivate function + adding call to already existing isPrivateAttribute function instead of isNotPrivate * isPrivateAttribute fixed based on coments from Alexandre and confirmed that the model does indeed contain all private fields in an array at startup time * removing isNotPrivate function and fixing generateEnumDefinitions to use the already available isPrivateAttribute function * checking if created_at and update_at are also marked as private and if this is the case then hiding them * allowIds by default when generating the input model to see if the tests will pass * moving allowIds back to false by default * adding isTypeAttributeEnabled function to check if a type attribute has been disabled and remove it from the exported graphql schema * removing unused var * only using isTypeAttributeEnabled instead of isPrivateAttribute. * adding isPrivateAttribute at association level * Adding isNotPrivate back together with isTypeAttributeEnabled * adding unit test for removing a disabled attribute from a graphql schema * renaming person to player in the test model * Deleting the file as it has been renamed in the strapi master branch * fixing lint issues * fixing some lint issues * adding isTypeAttributeEnabled support * adding enumeration field in graphql * adding use strict; to test file * fixing test checking that disabled attributes in graphql are removed from the graphql schema * adding test for buidShadowCrud * Update packages/strapi-plugin-graphql/services/type-builder.js Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu> Co-authored-by: Rmaroun <rmaroun@outlook.com> Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu>
2021-05-10 09:35:07 +02:00
'use strict';
const types = require('../services/type-builder');
const buildShadowCrud = require('../services/shadow-crud');
const playerModel = {
attributes: {
lastname: {
type: 'text',
},
firstname: {
type: 'text',
},
age: {
type: 'integer',
},
level: {
type: 'enumeration',
2021-06-23 18:23:54 +02:00
enum: ['amateur', 'intermediary', 'pro'],
GraphQL Plugin (bug): Content type's attributes marked as private are being exposed in the exported GraphQL schema (#9805) * Fixes #9804 * Fixes isPrivateAttribute function in strapi utils to take into account the private property within an attribute * removing comment * removing isNotPrivate function + adding call to already existing isPrivateAttribute function instead of isNotPrivate * isPrivateAttribute fixed based on coments from Alexandre and confirmed that the model does indeed contain all private fields in an array at startup time * removing isNotPrivate function and fixing generateEnumDefinitions to use the already available isPrivateAttribute function * checking if created_at and update_at are also marked as private and if this is the case then hiding them * allowIds by default when generating the input model to see if the tests will pass * moving allowIds back to false by default * adding isTypeAttributeEnabled function to check if a type attribute has been disabled and remove it from the exported graphql schema * removing unused var * only using isTypeAttributeEnabled instead of isPrivateAttribute. * adding isPrivateAttribute at association level * Adding isNotPrivate back together with isTypeAttributeEnabled * adding unit test for removing a disabled attribute from a graphql schema * renaming person to player in the test model * Deleting the file as it has been renamed in the strapi master branch * fixing lint issues * fixing some lint issues * adding isTypeAttributeEnabled support * adding enumeration field in graphql * adding use strict; to test file * fixing test checking that disabled attributes in graphql are removed from the graphql schema * adding test for buidShadowCrud * Update packages/strapi-plugin-graphql/services/type-builder.js Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu> Co-authored-by: Rmaroun <rmaroun@outlook.com> Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu>
2021-05-10 09:35:07 +02:00
default: 'amateur',
},
},
connection: 'default',
name: 'player',
description: '',
collectionName: '',
globalId: 'Player',
kind: 'collectionType',
2021-06-23 18:23:54 +02:00
modelName: 'player',
GraphQL Plugin (bug): Content type's attributes marked as private are being exposed in the exported GraphQL schema (#9805) * Fixes #9804 * Fixes isPrivateAttribute function in strapi utils to take into account the private property within an attribute * removing comment * removing isNotPrivate function + adding call to already existing isPrivateAttribute function instead of isNotPrivate * isPrivateAttribute fixed based on coments from Alexandre and confirmed that the model does indeed contain all private fields in an array at startup time * removing isNotPrivate function and fixing generateEnumDefinitions to use the already available isPrivateAttribute function * checking if created_at and update_at are also marked as private and if this is the case then hiding them * allowIds by default when generating the input model to see if the tests will pass * moving allowIds back to false by default * adding isTypeAttributeEnabled function to check if a type attribute has been disabled and remove it from the exported graphql schema * removing unused var * only using isTypeAttributeEnabled instead of isPrivateAttribute. * adding isPrivateAttribute at association level * Adding isNotPrivate back together with isTypeAttributeEnabled * adding unit test for removing a disabled attribute from a graphql schema * renaming person to player in the test model * Deleting the file as it has been renamed in the strapi master branch * fixing lint issues * fixing some lint issues * adding isTypeAttributeEnabled support * adding enumeration field in graphql * adding use strict; to test file * fixing test checking that disabled attributes in graphql are removed from the graphql schema * adding test for buidShadowCrud * Update packages/strapi-plugin-graphql/services/type-builder.js Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu> Co-authored-by: Rmaroun <rmaroun@outlook.com> Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu>
2021-05-10 09:35:07 +02:00
};
describe('generateInputModel', () => {
test('removes disabled attributes', () => {
global.strapi = {
plugins: {
graphql: {
config: {
_schema: {
graphql: {
type: {
Player: {
age: false,
level: false,
},
},
},
},
},
},
},
};
expect(types.generateInputModel(playerModel, 'player')).toEqual(
`
input PlayerInput {
lastname: String
firstname: String
}
input editPlayerInput {
lastname: String
firstname: String
}
`
);
});
});
describe('buildShadowCrud', () => {
test('removes disabled attributes', () => {
global.strapi = {
plugins: {
graphql: {
config: {
_schema: {
graphql: {
type: {
Player: {
age: false,
level: false,
},
},
},
},
},
},
},
};
2021-06-23 18:23:54 +02:00
global.strapi.contentTypes = [playerModel];
global.strapi.components = {};
GraphQL Plugin (bug): Content type's attributes marked as private are being exposed in the exported GraphQL schema (#9805) * Fixes #9804 * Fixes isPrivateAttribute function in strapi utils to take into account the private property within an attribute * removing comment * removing isNotPrivate function + adding call to already existing isPrivateAttribute function instead of isNotPrivate * isPrivateAttribute fixed based on coments from Alexandre and confirmed that the model does indeed contain all private fields in an array at startup time * removing isNotPrivate function and fixing generateEnumDefinitions to use the already available isPrivateAttribute function * checking if created_at and update_at are also marked as private and if this is the case then hiding them * allowIds by default when generating the input model to see if the tests will pass * moving allowIds back to false by default * adding isTypeAttributeEnabled function to check if a type attribute has been disabled and remove it from the exported graphql schema * removing unused var * only using isTypeAttributeEnabled instead of isPrivateAttribute. * adding isPrivateAttribute at association level * Adding isNotPrivate back together with isTypeAttributeEnabled * adding unit test for removing a disabled attribute from a graphql schema * renaming person to player in the test model * Deleting the file as it has been renamed in the strapi master branch * fixing lint issues * fixing some lint issues * adding isTypeAttributeEnabled support * adding enumeration field in graphql * adding use strict; to test file * fixing test checking that disabled attributes in graphql are removed from the graphql schema * adding test for buidShadowCrud * Update packages/strapi-plugin-graphql/services/type-builder.js Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu> Co-authored-by: Rmaroun <rmaroun@outlook.com> Co-authored-by: Jean-Sébastien Herbaux <jean-sebastien.herbaux@epitech.eu>
2021-05-10 09:35:07 +02:00
expect(JSON.stringify(buildShadowCrud({}))).toEqual(
'{"definition":"\\ntype Player {id: ID!\\nundefined: ID!\\nlastname: String\\nfirstname: String}\\n\\n input PlayerInput {\\n\\n lastname: String\\nfirstname: String\\n }\\n\\n input editPlayerInput {\\n \\n lastname: String\\nfirstname: String\\n }\\n ","query":{},"mutation":{},"resolvers":{"Query":{},"Mutation":{},"Player":{}}}'
);
});
2021-06-23 18:23:54 +02:00
});