transform input types also on user mutations (#6934)

This commit is contained in:
Antoine Cormouls
2020-10-09 17:40:30 +02:00
committed by GitHub
parent 84896dbeec
commit 5693470101
3 changed files with 50 additions and 3 deletions

3
package-lock.json generated
View File

@@ -5248,7 +5248,8 @@
"crypto-js": { "crypto-js": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz", "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.0.0.tgz",
"integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==" "integrity": "sha512-bzHZN8Pn+gS7DQA6n+iUmBfl0hO5DJq++QP3U6uTucDtk/0iGpXd/Gg7CGR0p8tJhofJyaKoWBuJI4eAO00BBg==",
"optional": true
}, },
"css-select": { "css-select": {
"version": "1.2.0", "version": "1.2.0",

View File

@@ -7235,7 +7235,9 @@ describe('ParseGraphQLServer', () => {
const clientMutationId = uuidv4(); const clientMutationId = uuidv4();
const userSchema = new Parse.Schema('_User'); const userSchema = new Parse.Schema('_User');
userSchema.addString('someField'); userSchema.addString('someField');
userSchema.addPointer('aPointer', '_User');
await userSchema.update(); await userSchema.update();
await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear();
const result = await apolloClient.mutate({ const result = await apolloClient.mutate({
mutation: gql` mutation: gql`
@@ -7246,6 +7248,10 @@ describe('ParseGraphQLServer', () => {
sessionToken sessionToken
user { user {
someField someField
aPointer {
id
username
}
} }
} }
} }
@@ -7257,6 +7263,13 @@ describe('ParseGraphQLServer', () => {
fields: { fields: {
username: 'user1', username: 'user1',
password: 'user1', password: 'user1',
aPointer: {
createAndLink: {
username: 'user2',
password: 'user2',
someField: 'someValue2',
},
},
someField: 'someValue', someField: 'someValue',
}, },
}, },
@@ -7266,6 +7279,10 @@ describe('ParseGraphQLServer', () => {
expect(result.data.signUp.clientMutationId).toEqual(clientMutationId); expect(result.data.signUp.clientMutationId).toEqual(clientMutationId);
expect(result.data.signUp.viewer.sessionToken).toBeDefined(); expect(result.data.signUp.viewer.sessionToken).toBeDefined();
expect(result.data.signUp.viewer.user.someField).toEqual('someValue'); expect(result.data.signUp.viewer.user.someField).toEqual('someValue');
expect(result.data.signUp.viewer.user.aPointer.id).toBeDefined();
expect(result.data.signUp.viewer.user.aPointer.username).toEqual(
'user2'
);
expect(typeof result.data.signUp.viewer.sessionToken).toBe('string'); expect(typeof result.data.signUp.viewer.sessionToken).toBe('string');
}); });
@@ -7282,6 +7299,7 @@ describe('ParseGraphQLServer', () => {
}); });
userSchema.addString('someField'); userSchema.addString('someField');
userSchema.addPointer('aPointer', '_User');
await userSchema.update(); await userSchema.update();
await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear();
const result = await apolloClient.mutate({ const result = await apolloClient.mutate({
@@ -7293,6 +7311,10 @@ describe('ParseGraphQLServer', () => {
sessionToken sessionToken
user { user {
someField someField
aPointer {
id
username
}
} }
} }
} }
@@ -7309,6 +7331,13 @@ describe('ParseGraphQLServer', () => {
}, },
fields: { fields: {
someField: 'someValue', someField: 'someValue',
aPointer: {
createAndLink: {
username: 'user2',
password: 'user2',
someField: 'someValue2',
},
},
}, },
}, },
}, },
@@ -7324,6 +7353,10 @@ describe('ParseGraphQLServer', () => {
expect(typeof result.data.logInWith.viewer.sessionToken).toBe( expect(typeof result.data.logInWith.viewer.sessionToken).toBe(
'string' 'string'
); );
expect(result.data.logInWith.viewer.user.aPointer.id).toBeDefined();
expect(result.data.logInWith.viewer.user.aPointer.username).toEqual(
'user2'
);
}); });
it('should log the user in', async () => { it('should log the user in', async () => {

View File

@@ -9,6 +9,7 @@ import UsersRouter from '../../Routers/UsersRouter';
import * as objectsMutations from '../helpers/objectsMutations'; import * as objectsMutations from '../helpers/objectsMutations';
import { OBJECT } from './defaultGraphQLTypes'; import { OBJECT } from './defaultGraphQLTypes';
import { getUserFromSessionToken } from './usersQueries'; import { getUserFromSessionToken } from './usersQueries';
import { transformTypes } from '../transformers/mutation';
const usersRouter = new UsersRouter(); const usersRouter = new UsersRouter();
@@ -41,9 +42,15 @@ const load = parseGraphQLSchema => {
const { fields } = args; const { fields } = args;
const { config, auth, info } = context; const { config, auth, info } = context;
const parseFields = await transformTypes('create', fields, {
className: '_User',
parseGraphQLSchema,
req: { config, auth, info },
});
const { sessionToken, objectId } = await objectsMutations.createObject( const { sessionToken, objectId } = await objectsMutations.createObject(
'_User', '_User',
fields, parseFields,
config, config,
auth, auth,
info info
@@ -119,9 +126,15 @@ const load = parseGraphQLSchema => {
const { fields, authData } = args; const { fields, authData } = args;
const { config, auth, info } = context; const { config, auth, info } = context;
const parseFields = await transformTypes('create', fields, {
className: '_User',
parseGraphQLSchema,
req: { config, auth, info },
});
const { sessionToken, objectId } = await objectsMutations.createObject( const { sessionToken, objectId } = await objectsMutations.createObject(
'_User', '_User',
{ ...fields, authData }, { ...parseFields, authData },
config, config,
auth, auth,
info info