diff --git a/.travis.yml b/.travis.yml index ba109dd366..39b9f90737 100644 --- a/.travis.yml +++ b/.travis.yml @@ -18,6 +18,7 @@ branches: cache: directories: - "$HOME/.npm" + - ".eslintcache" stage: test env: global: diff --git a/spec/AdapterLoader.spec.js b/spec/AdapterLoader.spec.js index 4ec5494b50..9f1f526405 100644 --- a/spec/AdapterLoader.spec.js +++ b/spec/AdapterLoader.spec.js @@ -145,6 +145,7 @@ describe('AdapterLoader', () => { }); it('should load S3Adapter from direct passing', done => { + spyOn(console, 'warn').and.callFake(() => {}); const s3Adapter = new S3Adapter('key', 'secret', 'bucket'); expect(() => { const adapter = loadAdapter(s3Adapter, FilesAdapter); diff --git a/spec/CLI.spec.js b/spec/CLI.spec.js index 1c4b567512..a635d0f9b3 100644 --- a/spec/CLI.spec.js +++ b/spec/CLI.spec.js @@ -106,6 +106,7 @@ describe('commander additions', () => { }); it('should not override config.json', done => { + spyOn(console, 'log').and.callFake(() => {}); commander.loadDefinitions(testDefinitions); commander.parse( [ @@ -160,6 +161,7 @@ describe('commander additions', () => { }); it('should load config from apps', done => { + spyOn(console, 'log').and.callFake(() => {}); commander.loadDefinitions(testDefinitions); commander.parse([ 'node', diff --git a/spec/EmailVerificationToken.spec.js b/spec/EmailVerificationToken.spec.js index 28be597c1f..ccbb09d2ed 100644 --- a/spec/EmailVerificationToken.spec.js +++ b/spec/EmailVerificationToken.spec.js @@ -31,7 +31,6 @@ describe('Email Verification Token Expiration: ', () => { // wait for 1 second - simulate user behavior to some extent setTimeout(() => { expect(sendEmailOptions).not.toBeUndefined(); - console.log(sendEmailOptions.link); request({ url: sendEmailOptions.link, diff --git a/spec/MockLdapServer.js b/spec/MockLdapServer.js index aa8a7673f7..767d56fe3b 100644 --- a/spec/MockLdapServer.js +++ b/spec/MockLdapServer.js @@ -13,7 +13,7 @@ function newServer(port, dn, provokeSearchError = false) { server.search('o=example', function(req, res, next) { if (provokeSearchError) { res.end(ldapjs.LDAP_SIZE_LIMIT_EXCEEDED); - return next(new ldapjs.NoSuchObjectError('fake error')); + return next(); } const obj = { dn: req.dn.toString(), diff --git a/spec/ParseGraphQLServer.spec.js b/spec/ParseGraphQLServer.spec.js index 788127da03..f233f393df 100644 --- a/spec/ParseGraphQLServer.spec.js +++ b/spec/ParseGraphQLServer.spec.js @@ -253,9 +253,9 @@ describe('ParseGraphQLServer', () => { return { response: { result: true } }; }, }; - await expectAsync(parseGraphQLServer.setGraphQLConfig({})).toBeResolvedTo( - { response: { result: true } } - ); + await expectAsync( + parseGraphQLServer.setGraphQLConfig({}) + ).toBeResolvedTo({ response: { result: true } }); }); }); @@ -456,6 +456,11 @@ describe('ParseGraphQLServer', () => { }); }); + beforeEach(() => { + spyOn(console, 'warn').and.callFake(() => {}); + spyOn(console, 'error').and.callFake(() => {}); + }); + afterAll(async () => { await parseLiveQueryServer.server.close(); await httpServer.close(); @@ -464,13 +469,15 @@ describe('ParseGraphQLServer', () => { describe('GraphQL', () => { it('should be healthy', async () => { try { - const health = (await apolloClient.query({ - query: gql` - query Health { - health - } - `, - })).data.health; + const health = ( + await apolloClient.query({ + query: gql` + query Health { + health + } + `, + }) + ).data.health; expect(health).toBeTruthy(); } catch (e) { handleError(e); @@ -523,13 +530,15 @@ describe('ParseGraphQLServer', () => { checked = true; return await originalGetGraphQLOptions.bind(parseGraphQLServer)(req); }; - const health = (await apolloClient.query({ - query: gql` - query Health { - health - } - `, - })).data.health; + const health = ( + await apolloClient.query({ + query: gql` + query Health { + health + } + `, + }) + ).data.health; expect(health).toBeTruthy(); expect(checked).toBeTruthy(); parseGraphQLServer._getGraphQLOptions = originalGetGraphQLOptions; @@ -556,57 +565,65 @@ describe('ParseGraphQLServer', () => { describe('Default Types', () => { it('should have Object scalar type', async () => { - const objectType = (await apolloClient.query({ - query: gql` - query ObjectType { - __type(name: "Object") { - kind + const objectType = ( + await apolloClient.query({ + query: gql` + query ObjectType { + __type(name: "Object") { + kind + } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; expect(objectType.kind).toEqual('SCALAR'); }); it('should have Date scalar type', async () => { - const dateType = (await apolloClient.query({ - query: gql` - query DateType { - __type(name: "Date") { - kind + const dateType = ( + await apolloClient.query({ + query: gql` + query DateType { + __type(name: "Date") { + kind + } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; expect(dateType.kind).toEqual('SCALAR'); }); it('should have ArrayResult type', async () => { - const arrayResultType = (await apolloClient.query({ - query: gql` - query ArrayResultType { - __type(name: "ArrayResult") { - kind + const arrayResultType = ( + await apolloClient.query({ + query: gql` + query ArrayResultType { + __type(name: "ArrayResult") { + kind + } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; expect(arrayResultType.kind).toEqual('UNION'); }); it('should have File object type', async () => { - const fileType = (await apolloClient.query({ - query: gql` - query FileType { - __type(name: "FileInfo") { - kind - fields { - name + const fileType = ( + await apolloClient.query({ + query: gql` + query FileType { + __type(name: "FileInfo") { + kind + fields { + name + } } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; expect(fileType.kind).toEqual('OBJECT'); expect(fileType.fields.map(field => field.name).sort()).toEqual([ 'name', @@ -615,18 +632,20 @@ describe('ParseGraphQLServer', () => { }); it('should have Class interface type', async () => { - const classType = (await apolloClient.query({ - query: gql` - query ClassType { - __type(name: "ParseObject") { - kind - fields { - name + const classType = ( + await apolloClient.query({ + query: gql` + query ClassType { + __type(name: "ParseObject") { + kind + fields { + name + } } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; expect(classType.kind).toEqual('INTERFACE'); expect(classType.fields.map(field => field.name).sort()).toEqual([ 'ACL', @@ -637,18 +656,20 @@ describe('ParseGraphQLServer', () => { }); it('should have ReadPreference enum type', async () => { - const readPreferenceType = (await apolloClient.query({ - query: gql` - query ReadPreferenceType { - __type(name: "ReadPreference") { - kind - enumValues { - name + const readPreferenceType = ( + await apolloClient.query({ + query: gql` + query ReadPreferenceType { + __type(name: "ReadPreference") { + kind + enumValues { + name + } } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; expect(readPreferenceType.kind).toEqual('ENUM'); expect( readPreferenceType.enumValues.map(value => value.name).sort() @@ -662,33 +683,37 @@ describe('ParseGraphQLServer', () => { }); it('should have GraphQLUpload object type', async () => { - const graphQLUploadType = (await apolloClient.query({ - query: gql` - query GraphQLUploadType { - __type(name: "Upload") { - kind - fields { - name + const graphQLUploadType = ( + await apolloClient.query({ + query: gql` + query GraphQLUploadType { + __type(name: "Upload") { + kind + fields { + name + } } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; expect(graphQLUploadType.kind).toEqual('SCALAR'); }); it('should have all expected types', async () => { - const schemaTypes = (await apolloClient.query({ - query: gql` - query SchemaTypes { - __schema { - types { - name + const schemaTypes = ( + await apolloClient.query({ + query: gql` + query SchemaTypes { + __schema { + types { + name + } } } - } - `, - })).data['__schema'].types.map(type => type.name); + `, + }) + ).data['__schema'].types.map(type => type.name); const expectedTypes = [ 'ParseObject', @@ -713,66 +738,74 @@ describe('ParseGraphQLServer', () => { }); it('should have Node interface', async () => { - const schemaTypes = (await apolloClient.query({ - query: gql` - query SchemaTypes { - __schema { - types { - name + const schemaTypes = ( + await apolloClient.query({ + query: gql` + query SchemaTypes { + __schema { + types { + name + } } } - } - `, - })).data['__schema'].types.map(type => type.name); + `, + }) + ).data['__schema'].types.map(type => type.name); expect(schemaTypes).toContain('Node'); }); it('should have node query', async () => { - const queryFields = (await apolloClient.query({ - query: gql` - query UserType { - __type(name: "Query") { - fields { - name + const queryFields = ( + await apolloClient.query({ + query: gql` + query UserType { + __type(name: "Query") { + fields { + name + } } } - } - `, - })).data['__type'].fields.map(field => field.name); + `, + }) + ).data['__type'].fields.map(field => field.name); expect(queryFields).toContain('node'); }); it('should return global id', async () => { - const userFields = (await apolloClient.query({ - query: gql` - query UserType { - __type(name: "User") { - fields { - name + const userFields = ( + await apolloClient.query({ + query: gql` + query UserType { + __type(name: "User") { + fields { + name + } } } - } - `, - })).data['__type'].fields.map(field => field.name); + `, + }) + ).data['__type'].fields.map(field => field.name); expect(userFields).toContain('id'); expect(userFields).toContain('objectId'); }); it('should have clientMutationId in create file input', async () => { - const createFileInputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "CreateFileInput") { - inputFields { - name + const createFileInputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "CreateFileInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -780,17 +813,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in create file payload', async () => { - const createFilePayloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "CreateFilePayload") { - fields { - name + const createFilePayloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "CreateFilePayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -803,17 +838,19 @@ describe('ParseGraphQLServer', () => { it('should have clientMutationId in call function input', async () => { Parse.Cloud.define('hello', () => {}); - const callFunctionInputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "CallCloudCodeInput") { - inputFields { - name + const callFunctionInputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "CallCloudCodeInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -827,17 +864,19 @@ describe('ParseGraphQLServer', () => { it('should have clientMutationId in call function payload', async () => { Parse.Cloud.define('hello', () => {}); - const callFunctionPayloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "CallCloudCodePayload") { - fields { - name + const callFunctionPayloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "CallCloudCodePayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -848,17 +887,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in sign up mutation input', async () => { - const inputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "SignUpInput") { - inputFields { - name + const inputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "SignUpInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -866,17 +907,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in sign up mutation payload', async () => { - const payloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "SignUpPayload") { - fields { - name + const payloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "SignUpPayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -884,17 +927,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in log in mutation input', async () => { - const inputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "LogInInput") { - inputFields { - name + const inputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "LogInInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -906,17 +951,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in log in mutation payload', async () => { - const payloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "LogInPayload") { - fields { - name + const payloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "LogInPayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -924,17 +971,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in log out mutation input', async () => { - const inputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "LogOutInput") { - inputFields { - name + const inputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "LogOutInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -942,17 +991,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in log out mutation payload', async () => { - const payloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "LogOutPayload") { - fields { - name + const payloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "LogOutPayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -960,17 +1011,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in createClass mutation input', async () => { - const inputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "CreateClassInput") { - inputFields { - name + const inputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "CreateClassInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -982,17 +1035,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in createClass mutation payload', async () => { - const payloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "CreateClassPayload") { - fields { - name + const payloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "CreateClassPayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -1000,17 +1055,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in updateClass mutation input', async () => { - const inputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "UpdateClassInput") { - inputFields { - name + const inputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "UpdateClassInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -1022,17 +1079,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in updateClass mutation payload', async () => { - const payloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "UpdateClassPayload") { - fields { - name + const payloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "UpdateClassPayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -1040,17 +1099,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in deleteClass mutation input', async () => { - const inputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "DeleteClassInput") { - inputFields { - name + const inputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "DeleteClassInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -1058,17 +1119,19 @@ describe('ParseGraphQLServer', () => { }); it('should have clientMutationId in deleteClass mutation payload', async () => { - const payloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "UpdateClassPayload") { - fields { - name + const payloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "UpdateClassPayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -1081,17 +1144,19 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); - const createObjectInputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "CreateSomeClassInput") { - inputFields { - name + const createObjectInputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "CreateSomeClassInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -1107,17 +1172,19 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); - const createObjectPayloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "CreateSomeClassPayload") { - fields { - name + const createObjectPayloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "CreateSomeClassPayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -1133,17 +1200,19 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); - const createObjectInputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "UpdateSomeClassInput") { - inputFields { - name + const createObjectInputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "UpdateSomeClassInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -1160,17 +1229,19 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); - const createObjectPayloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "UpdateSomeClassPayload") { - fields { - name + const createObjectPayloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "UpdateSomeClassPayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -1186,17 +1257,19 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); - const createObjectInputFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "DeleteSomeClassInput") { - inputFields { - name + const createObjectInputFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "DeleteSomeClassInput") { + inputFields { + name + } } } - } - `, - })).data['__type'].inputFields + `, + }) + ).data['__type'].inputFields .map(field => field.name) .sort(); @@ -1209,17 +1282,19 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); - const createObjectPayloadFields = (await apolloClient.query({ - query: gql` - query { - __type(name: "DeleteSomeClassPayload") { - fields { - name + const createObjectPayloadFields = ( + await apolloClient.query({ + query: gql` + query { + __type(name: "DeleteSomeClassPayload") { + fields { + name + } } } - } - `, - })).data['__type'].fields + `, + }) + ).data['__type'].fields .map(field => field.name) .sort(); @@ -1234,17 +1309,19 @@ describe('ParseGraphQLServer', () => { it('should have all expected types', async () => { await parseServer.config.databaseController.loadSchema(); - const schemaTypes = (await apolloClient.query({ - query: gql` - query SchemaTypes { - __schema { - types { - name + const schemaTypes = ( + await apolloClient.query({ + query: gql` + query SchemaTypes { + __schema { + types { + name + } } } - } - `, - })).data['__schema'].types.map(type => type.name); + `, + }) + ).data['__schema'].types.map(type => type.name); const expectedTypes = [ 'Role', @@ -1264,18 +1341,20 @@ describe('ParseGraphQLServer', () => { }); it('should ArrayResult contains all types', async () => { - const objectType = (await apolloClient.query({ - query: gql` - query ObjectType { - __type(name: "ArrayResult") { - kind - possibleTypes { - name + const objectType = ( + await apolloClient.query({ + query: gql` + query ObjectType { + __type(name: "ArrayResult") { + kind + possibleTypes { + name + } } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; const possibleTypes = objectType.possibleTypes.map(o => o.name); expect(possibleTypes).toContain('User'); expect(possibleTypes).toContain('Role'); @@ -1286,34 +1365,38 @@ describe('ParseGraphQLServer', () => { const schemaController = await parseServer.config.databaseController.loadSchema(); await schemaController.updateClass('_User', { foo: { type: 'String' }, - }); - - const userFields = (await apolloClient.query({ - query: gql` - query UserType { - __type(name: "User") { - fields { - name + }); + + const userFields = ( + await apolloClient.query({ + query: gql` + query UserType { + __type(name: "User") { + fields { + name + } } } - } - `, - })).data['__type'].fields.map(field => field.name); + `, + }) + ).data['__type'].fields.map(field => field.name); expect(userFields.indexOf('foo') !== -1).toBeTruthy(); }); it('should not contain password field from _User class', async () => { - const userFields = (await apolloClient.query({ - query: gql` - query UserType { - __type(name: "User") { - fields { - name + const userFields = ( + await apolloClient.query({ + query: gql` + query UserType { + __type(name: "User") { + fields { + name + } } } - } - `, - })).data['__type'].fields.map(field => field.name); + `, + }) + ).data['__type'].fields.map(field => field.name); expect(userFields.includes('password')).toBeFalsy(); }); }); @@ -1711,21 +1794,23 @@ describe('ParseGraphQLServer', () => { `, }) ).toBeRejected(); - const { id: superCarId } = (await apolloClient.query({ - query: gql` - mutation ValidCreateSuperCar { - createSuperCar( - input: { - fields: { engine: "diesel", doors: 5, price: "£10000" } - } - ) { - superCar { - id + const { id: superCarId } = ( + await apolloClient.query({ + query: gql` + mutation ValidCreateSuperCar { + createSuperCar( + input: { + fields: { engine: "diesel", doors: 5, price: "£10000" } + } + ) { + superCar { + id + } } } - } - `, - })).data.createSuperCar.superCar; + `, + }) + ).data.createSuperCar.superCar; expect(superCarId).toBeTruthy(); @@ -1746,18 +1831,22 @@ describe('ParseGraphQLServer', () => { }) ).toBeRejected(); - const updatedSuperCar = (await apolloClient.query({ - query: gql` - mutation ValidUpdateSuperCar($id: ID!) { - updateSuperCar(input: { id: $id, fields: { mileage: 2000 } }) { - clientMutationId + const updatedSuperCar = ( + await apolloClient.query({ + query: gql` + mutation ValidUpdateSuperCar($id: ID!) { + updateSuperCar( + input: { id: $id, fields: { mileage: 2000 } } + ) { + clientMutationId + } } - } - `, - variables: { - id: superCarId, - }, - })).data.updateSuperCar; + `, + variables: { + id: superCarId, + }, + }) + ).data.updateSuperCar; expect(updatedSuperCar).toBeTruthy(); }); @@ -1813,23 +1902,25 @@ describe('ParseGraphQLServer', () => { }, }) ).toBeRejected(); - let getSuperCar = (await apolloClient.query({ - query: gql` - query GetSuperCar($id: ID!) { - superCar(id: $id) { - id - objectId - engine - doors - price - mileage + let getSuperCar = ( + await apolloClient.query({ + query: gql` + query GetSuperCar($id: ID!) { + superCar(id: $id) { + id + objectId + engine + doors + price + mileage + } } - } - `, - variables: { - id: superCar.id, - }, - })).data.superCar; + `, + variables: { + id: superCar.id, + }, + }) + ).data.superCar; expect(getSuperCar).toBeTruthy(); await parseGraphQLServer.setGraphQLConfig({ @@ -1858,19 +1949,21 @@ describe('ParseGraphQLServer', () => { }, }) ).toBeRejected(); - getSuperCar = (await apolloClient.query({ - query: gql` - query GetSuperCar($id: ID!) { - superCar(id: $id) { - id - objectId + getSuperCar = ( + await apolloClient.query({ + query: gql` + query GetSuperCar($id: ID!) { + superCar(id: $id) { + id + objectId + } } - } - `, - variables: { - id: superCar.id, - }, - })).data.superCar; + `, + variables: { + id: superCar.id, + }, + }) + ).data.superCar; expect(getSuperCar.objectId).toBe(superCar.id); }); @@ -3022,9 +3115,9 @@ describe('ParseGraphQLServer', () => { clientMutationId: result.data[fieldName].clientMutationId, class: { name: result.data[fieldName].class.name, - schemaFields: result.data[fieldName].class.schemaFields.sort( - (a, b) => (a.name > b.name ? 1 : -1) - ), + schemaFields: result.data[ + fieldName + ].class.schemaFields.sort((a, b) => (a.name > b.name ? 1 : -1)), __typename: result.data[fieldName].class.__typename, }, __typename: result.data[fieldName].__typename, @@ -4021,22 +4114,24 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); - const result = (await apolloClient.query({ - query: gql` - query GetCustomer($id: ID!) { - customer(id: $id) { - id - objectId - someField - createdAt - updatedAt + const result = ( + await apolloClient.query({ + query: gql` + query GetCustomer($id: ID!) { + customer(id: $id) { + id + objectId + someField + createdAt + updatedAt + } } - } - `, - variables: { - id: obj.id, - }, - })).data.customer; + `, + variables: { + id: obj.id, + }, + }) + ).data.customer; expect(result.objectId).toEqual(obj.id); expect(result.someField).toEqual('someValue'); @@ -4064,35 +4159,37 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); - const result = (await apolloClient.query({ - query: gql` - query GetCustomer($id: ID!) { - customer(id: $id) { - objectId - manyRelations { - ... on Customer { - objectId - someCustomerField - arrayField { - ... on Element { - value + const result = ( + await apolloClient.query({ + query: gql` + query GetCustomer($id: ID!) { + customer(id: $id) { + objectId + manyRelations { + ... on Customer { + objectId + someCustomerField + arrayField { + ... on Element { + value + } } } + ... on SomeClass { + objectId + someClassField + } } - ... on SomeClass { - objectId - someClassField - } + createdAt + updatedAt } - createdAt - updatedAt } - } - `, - variables: { - id: obj3.id, - }, - })).data.customer; + `, + variables: { + id: obj3.id, + }, + }) + ).data.customer; expect(result.objectId).toEqual(obj3.id); expect(result.manyRelations.length).toEqual(2); @@ -4148,33 +4245,35 @@ describe('ParseGraphQLServer', () => { await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear(); - const result = (await apolloClient.query({ - query: gql` - query DeepComplexGraphQLQuery($id: ID!) { - country(id: $id) { - objectId - name - companies { - ... on Company { - objectId - name - employees { - ... on Employee { - objectId - name + const result = ( + await apolloClient.query({ + query: gql` + query DeepComplexGraphQLQuery($id: ID!) { + country(id: $id) { + objectId + name + companies { + ... on Company { + objectId + name + employees { + ... on Employee { + objectId + name + } } - } - teams { - ... on Team { - objectId - name - employees { - ... on Employee { - objectId - name - country { + teams { + ... on Team { + objectId + name + employees { + ... on Employee { objectId name + country { + objectId + name + } } } } @@ -4183,12 +4282,12 @@ describe('ParseGraphQLServer', () => { } } } - } - `, - variables: { - id: obj4.id, - }, - })).data.country; + `, + variables: { + id: obj4.id, + }, + }) + ).data.country; const expectedResult = { objectId: obj4.id, @@ -4276,27 +4375,33 @@ describe('ParseGraphQLServer', () => { await Promise.all( objects.map(async obj => expect( - (await getObject(obj.className, obj.id, { - 'X-Parse-Master-Key': 'test', - })).data.get.someField + ( + await getObject(obj.className, obj.id, { + 'X-Parse-Master-Key': 'test', + }) + ).data.get.someField ).toEqual(obj.get('someField')) ) ); await Promise.all( objects.map(async obj => expect( - (await getObject(obj.className, obj.id, { - 'X-Parse-Session-Token': user1.getSessionToken(), - })).data.get.someField + ( + await getObject(obj.className, obj.id, { + 'X-Parse-Session-Token': user1.getSessionToken(), + }) + ).data.get.someField ).toEqual(obj.get('someField')) ) ); await Promise.all( objects.map(async obj => expect( - (await getObject(obj.className, obj.id, { - 'X-Parse-Session-Token': user2.getSessionToken(), - })).data.get.someField + ( + await getObject(obj.className, obj.id, { + 'X-Parse-Session-Token': user2.getSessionToken(), + }) + ).data.get.someField ).toEqual(obj.get('someField')) ) ); @@ -4308,9 +4413,11 @@ describe('ParseGraphQLServer', () => { await Promise.all( [object1, object3, object4].map(async obj => expect( - (await getObject(obj.className, obj.id, { - 'X-Parse-Session-Token': user3.getSessionToken(), - })).data.get.someField + ( + await getObject(obj.className, obj.id, { + 'X-Parse-Session-Token': user3.getSessionToken(), + }) + ).data.get.someField ).toEqual(obj.get('someField')) ) ); @@ -4324,9 +4431,11 @@ describe('ParseGraphQLServer', () => { ) ); expect( - (await getObject(object4.className, object4.id, { - 'X-Parse-Session-Token': user4.getSessionToken(), - })).data.get.someField + ( + await getObject(object4.className, object4.id, { + 'X-Parse-Session-Token': user4.getSessionToken(), + }) + ).data.get.someField ).toEqual('someValue4'); await Promise.all( objects.slice(0, 2).map(obj => @@ -4338,14 +4447,18 @@ describe('ParseGraphQLServer', () => { ) ); expect( - (await getObject(object3.className, object3.id, { - 'X-Parse-Session-Token': user5.getSessionToken(), - })).data.get.someField + ( + await getObject(object3.className, object3.id, { + 'X-Parse-Session-Token': user5.getSessionToken(), + }) + ).data.get.someField ).toEqual('someValue3'); expect( - (await getObject(object4.className, object4.id, { - 'X-Parse-Session-Token': user5.getSessionToken(), - })).data.get.someField + ( + await getObject(object4.className, object4.id, { + 'X-Parse-Session-Token': user5.getSessionToken(), + }) + ).data.get.someField ).toEqual('someValue4'); }); @@ -4712,52 +4825,68 @@ describe('ParseGraphQLServer', () => { ) ).toEqual(['someValue4']); expect( - (await findObjects('GraphQLClass', { - 'X-Parse-Master-Key': 'test', - })).data.find.edges + ( + await findObjects('GraphQLClass', { + 'X-Parse-Master-Key': 'test', + }) + ).data.find.edges .map(object => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue2', 'someValue3']); expect( - (await findObjects('PublicClass', { - 'X-Parse-Master-Key': 'test', - })).data.find.edges.map(object => object.node.someField) + ( + await findObjects('PublicClass', { + 'X-Parse-Master-Key': 'test', + }) + ).data.find.edges.map(object => object.node.someField) ).toEqual(['someValue4']); expect( - (await findObjects('GraphQLClass', { - 'X-Parse-Session-Token': user1.getSessionToken(), - })).data.find.edges + ( + await findObjects('GraphQLClass', { + 'X-Parse-Session-Token': user1.getSessionToken(), + }) + ).data.find.edges .map(object => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue2', 'someValue3']); expect( - (await findObjects('PublicClass', { - 'X-Parse-Session-Token': user1.getSessionToken(), - })).data.find.edges.map(object => object.node.someField) + ( + await findObjects('PublicClass', { + 'X-Parse-Session-Token': user1.getSessionToken(), + }) + ).data.find.edges.map(object => object.node.someField) ).toEqual(['someValue4']); expect( - (await findObjects('GraphQLClass', { - 'X-Parse-Session-Token': user2.getSessionToken(), - })).data.find.edges + ( + await findObjects('GraphQLClass', { + 'X-Parse-Session-Token': user2.getSessionToken(), + }) + ).data.find.edges .map(object => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue2', 'someValue3']); expect( - (await findObjects('GraphQLClass', { - 'X-Parse-Session-Token': user3.getSessionToken(), - })).data.find.edges + ( + await findObjects('GraphQLClass', { + 'X-Parse-Session-Token': user3.getSessionToken(), + }) + ).data.find.edges .map(object => object.node.someField) .sort() ).toEqual(['someValue1', 'someValue3']); expect( - (await findObjects('GraphQLClass', { - 'X-Parse-Session-Token': user4.getSessionToken(), - })).data.find.edges.map(object => object.node.someField) + ( + await findObjects('GraphQLClass', { + 'X-Parse-Session-Token': user4.getSessionToken(), + }) + ).data.find.edges.map(object => object.node.someField) ).toEqual([]); expect( - (await findObjects('GraphQLClass', { - 'X-Parse-Session-Token': user5.getSessionToken(), - })).data.find.edges.map(object => object.node.someField) + ( + await findObjects('GraphQLClass', { + 'X-Parse-Session-Token': user5.getSessionToken(), + }) + ).data.find.edges.map(object => object.node.someField) ).toEqual(['someValue3']); }); @@ -5928,21 +6057,25 @@ describe('ParseGraphQLServer', () => { }) ); expect( - (await updateObject(object4.className, object4.id, { - someField: 'changedValue1', - })).data.update.clientMutationId + ( + await updateObject(object4.className, object4.id, { + someField: 'changedValue1', + }) + ).data.update.clientMutationId ).toBeDefined(); await object4.fetch({ useMasterKey: true }); expect(object4.get('someField')).toEqual('changedValue1'); await Promise.all( objects.map(async obj => { expect( - (await updateObject( - obj.className, - obj.id, - { someField: 'changedValue2' }, - { 'X-Parse-Master-Key': 'test' } - )).data.update.clientMutationId + ( + await updateObject( + obj.className, + obj.id, + { someField: 'changedValue2' }, + { 'X-Parse-Master-Key': 'test' } + ) + ).data.update.clientMutationId ).toBeDefined(); await obj.fetch({ useMasterKey: true }); expect(obj.get('someField')).toEqual('changedValue2'); @@ -5951,12 +6084,14 @@ describe('ParseGraphQLServer', () => { await Promise.all( objects.map(async obj => { expect( - (await updateObject( - obj.className, - obj.id, - { someField: 'changedValue3' }, - { 'X-Parse-Session-Token': user1.getSessionToken() } - )).data.update.clientMutationId + ( + await updateObject( + obj.className, + obj.id, + { someField: 'changedValue3' }, + { 'X-Parse-Session-Token': user1.getSessionToken() } + ) + ).data.update.clientMutationId ).toBeDefined(); await obj.fetch({ useMasterKey: true }); expect(obj.get('someField')).toEqual('changedValue3'); @@ -5965,12 +6100,14 @@ describe('ParseGraphQLServer', () => { await Promise.all( objects.map(async obj => { expect( - (await updateObject( - obj.className, - obj.id, - { someField: 'changedValue4' }, - { 'X-Parse-Session-Token': user2.getSessionToken() } - )).data.update.clientMutationId + ( + await updateObject( + obj.className, + obj.id, + { someField: 'changedValue4' }, + { 'X-Parse-Session-Token': user2.getSessionToken() } + ) + ).data.update.clientMutationId ).toBeDefined(); await obj.fetch({ useMasterKey: true }); expect(obj.get('someField')).toEqual('changedValue4'); @@ -5979,12 +6116,14 @@ describe('ParseGraphQLServer', () => { await Promise.all( [object1, object3, object4].map(async obj => { expect( - (await updateObject( - obj.className, - obj.id, - { someField: 'changedValue5' }, - { 'X-Parse-Session-Token': user3.getSessionToken() } - )).data.update.clientMutationId + ( + await updateObject( + obj.className, + obj.id, + { someField: 'changedValue5' }, + { 'X-Parse-Session-Token': user3.getSessionToken() } + ) + ).data.update.clientMutationId ).toBeDefined(); await obj.fetch({ useMasterKey: true }); expect(obj.get('someField')).toEqual('changedValue5'); @@ -6017,12 +6156,14 @@ describe('ParseGraphQLServer', () => { }) ); expect( - (await updateObject( - object4.className, - object4.id, - { someField: 'changedValue6' }, - { 'X-Parse-Session-Token': user4.getSessionToken() } - )).data.update.clientMutationId + ( + await updateObject( + object4.className, + object4.id, + { someField: 'changedValue6' }, + { 'X-Parse-Session-Token': user4.getSessionToken() } + ) + ).data.update.clientMutationId ).toBeDefined(); await object4.fetch({ useMasterKey: true }); expect(object4.get('someField')).toEqual('changedValue6'); @@ -6042,22 +6183,26 @@ describe('ParseGraphQLServer', () => { }) ); expect( - (await updateObject( - object3.className, - object3.id, - { someField: 'changedValue7' }, - { 'X-Parse-Session-Token': user5.getSessionToken() } - )).data.update.clientMutationId + ( + await updateObject( + object3.className, + object3.id, + { someField: 'changedValue7' }, + { 'X-Parse-Session-Token': user5.getSessionToken() } + ) + ).data.update.clientMutationId ).toBeDefined(); await object3.fetch({ useMasterKey: true }); expect(object3.get('someField')).toEqual('changedValue7'); expect( - (await updateObject( - object4.className, - object4.id, - { someField: 'changedValue7' }, - { 'X-Parse-Session-Token': user5.getSessionToken() } - )).data.update.clientMutationId + ( + await updateObject( + object4.className, + object4.id, + { someField: 'changedValue7' }, + { 'X-Parse-Session-Token': user5.getSessionToken() } + ) + ).data.update.clientMutationId ).toBeDefined(); await object4.fetch({ useMasterKey: true }); expect(object4.get('someField')).toEqual('changedValue7'); @@ -6109,9 +6254,11 @@ describe('ParseGraphQLServer', () => { }) ); expect( - (await updateObject(object4.className, object4.id, { - someField: 'changedValue1', - })).data[`update${object4.className}`][ + ( + await updateObject(object4.className, object4.id, { + someField: 'changedValue1', + }) + ).data[`update${object4.className}`][ object4.className.charAt(0).toLowerCase() + object4.className.slice(1) ].updatedAt @@ -6121,12 +6268,14 @@ describe('ParseGraphQLServer', () => { await Promise.all( objects.map(async obj => { expect( - (await updateObject( - obj.className, - obj.id, - { someField: 'changedValue2' }, - { 'X-Parse-Master-Key': 'test' } - )).data[`update${obj.className}`][ + ( + await updateObject( + obj.className, + obj.id, + { someField: 'changedValue2' }, + { 'X-Parse-Master-Key': 'test' } + ) + ).data[`update${obj.className}`][ obj.className.charAt(0).toLowerCase() + obj.className.slice(1) ].updatedAt @@ -6138,12 +6287,14 @@ describe('ParseGraphQLServer', () => { await Promise.all( objects.map(async obj => { expect( - (await updateObject( - obj.className, - obj.id, - { someField: 'changedValue3' }, - { 'X-Parse-Session-Token': user1.getSessionToken() } - )).data[`update${obj.className}`][ + ( + await updateObject( + obj.className, + obj.id, + { someField: 'changedValue3' }, + { 'X-Parse-Session-Token': user1.getSessionToken() } + ) + ).data[`update${obj.className}`][ obj.className.charAt(0).toLowerCase() + obj.className.slice(1) ].updatedAt @@ -6155,12 +6306,14 @@ describe('ParseGraphQLServer', () => { await Promise.all( objects.map(async obj => { expect( - (await updateObject( - obj.className, - obj.id, - { someField: 'changedValue4' }, - { 'X-Parse-Session-Token': user2.getSessionToken() } - )).data[`update${obj.className}`][ + ( + await updateObject( + obj.className, + obj.id, + { someField: 'changedValue4' }, + { 'X-Parse-Session-Token': user2.getSessionToken() } + ) + ).data[`update${obj.className}`][ obj.className.charAt(0).toLowerCase() + obj.className.slice(1) ].updatedAt @@ -6172,12 +6325,14 @@ describe('ParseGraphQLServer', () => { await Promise.all( [object1, object3, object4].map(async obj => { expect( - (await updateObject( - obj.className, - obj.id, - { someField: 'changedValue5' }, - { 'X-Parse-Session-Token': user3.getSessionToken() } - )).data[`update${obj.className}`][ + ( + await updateObject( + obj.className, + obj.id, + { someField: 'changedValue5' }, + { 'X-Parse-Session-Token': user3.getSessionToken() } + ) + ).data[`update${obj.className}`][ obj.className.charAt(0).toLowerCase() + obj.className.slice(1) ].updatedAt @@ -6213,12 +6368,14 @@ describe('ParseGraphQLServer', () => { }) ); expect( - (await updateObject( - object4.className, - object4.id, - { someField: 'changedValue6' }, - { 'X-Parse-Session-Token': user4.getSessionToken() } - )).data[`update${object4.className}`][ + ( + await updateObject( + object4.className, + object4.id, + { someField: 'changedValue6' }, + { 'X-Parse-Session-Token': user4.getSessionToken() } + ) + ).data[`update${object4.className}`][ object4.className.charAt(0).toLowerCase() + object4.className.slice(1) ].updatedAt @@ -6241,12 +6398,14 @@ describe('ParseGraphQLServer', () => { }) ); expect( - (await updateObject( - object3.className, - object3.id, - { someField: 'changedValue7' }, - { 'X-Parse-Session-Token': user5.getSessionToken() } - )).data[`update${object3.className}`][ + ( + await updateObject( + object3.className, + object3.id, + { someField: 'changedValue7' }, + { 'X-Parse-Session-Token': user5.getSessionToken() } + ) + ).data[`update${object3.className}`][ object3.className.charAt(0).toLowerCase() + object3.className.slice(1) ].updatedAt @@ -6254,12 +6413,14 @@ describe('ParseGraphQLServer', () => { await object3.fetch({ useMasterKey: true }); expect(object3.get('someField')).toEqual('changedValue7'); expect( - (await updateObject( - object4.className, - object4.id, - { someField: 'changedValue7' }, - { 'X-Parse-Session-Token': user5.getSessionToken() } - )).data[`update${object4.className}`][ + ( + await updateObject( + object4.className, + object4.id, + { someField: 'changedValue7' }, + { 'X-Parse-Session-Token': user5.getSessionToken() } + ) + ).data[`update${object4.className}`][ object4.className.charAt(0).toLowerCase() + object4.className.slice(1) ].updatedAt @@ -6379,9 +6540,11 @@ describe('ParseGraphQLServer', () => { object4.fetch({ useMasterKey: true }) ).toBeRejectedWith(jasmine.stringMatching('Object not found')); expect( - (await deleteObject(object1.className, object1.id, { - 'X-Parse-Master-Key': 'test', - })).data.delete[ + ( + await deleteObject(object1.className, object1.id, { + 'X-Parse-Master-Key': 'test', + }) + ).data.delete[ object1.className.charAt(0).toLowerCase() + object1.className.slice(1) ] @@ -6390,9 +6553,11 @@ describe('ParseGraphQLServer', () => { object1.fetch({ useMasterKey: true }) ).toBeRejectedWith(jasmine.stringMatching('Object not found')); expect( - (await deleteObject(object2.className, object2.id, { - 'X-Parse-Session-Token': user2.getSessionToken(), - })).data.delete[ + ( + await deleteObject(object2.className, object2.id, { + 'X-Parse-Session-Token': user2.getSessionToken(), + }) + ).data.delete[ object2.className.charAt(0).toLowerCase() + object2.className.slice(1) ] @@ -6401,9 +6566,11 @@ describe('ParseGraphQLServer', () => { object2.fetch({ useMasterKey: true }) ).toBeRejectedWith(jasmine.stringMatching('Object not found')); expect( - (await deleteObject(object3.className, object3.id, { - 'X-Parse-Session-Token': user5.getSessionToken(), - })).data.delete[ + ( + await deleteObject(object3.className, object3.id, { + 'X-Parse-Session-Token': user5.getSessionToken(), + }) + ).data.delete[ object3.className.charAt(0).toLowerCase() + object3.className.slice(1) ] @@ -6475,9 +6642,11 @@ describe('ParseGraphQLServer', () => { object4.fetch({ useMasterKey: true }) ).toBeRejectedWith(jasmine.stringMatching('Object not found')); expect( - (await deleteObject(object1.className, object1.id, { - 'X-Parse-Master-Key': 'test', - })).data[`delete${object1.className}`][ + ( + await deleteObject(object1.className, object1.id, { + 'X-Parse-Master-Key': 'test', + }) + ).data[`delete${object1.className}`][ object1.className.charAt(0).toLowerCase() + object1.className.slice(1) ].objectId @@ -6486,9 +6655,11 @@ describe('ParseGraphQLServer', () => { object1.fetch({ useMasterKey: true }) ).toBeRejectedWith(jasmine.stringMatching('Object not found')); expect( - (await deleteObject(object2.className, object2.id, { - 'X-Parse-Session-Token': user2.getSessionToken(), - })).data[`delete${object2.className}`][ + ( + await deleteObject(object2.className, object2.id, { + 'X-Parse-Session-Token': user2.getSessionToken(), + }) + ).data[`delete${object2.className}`][ object2.className.charAt(0).toLowerCase() + object2.className.slice(1) ].objectId @@ -6497,9 +6668,11 @@ describe('ParseGraphQLServer', () => { object2.fetch({ useMasterKey: true }) ).toBeRejectedWith(jasmine.stringMatching('Object not found')); expect( - (await deleteObject(object3.className, object3.id, { - 'X-Parse-Session-Token': user5.getSessionToken(), - })).data[`delete${object3.className}`][ + ( + await deleteObject(object3.className, object3.id, { + 'X-Parse-Session-Token': user5.getSessionToken(), + }) + ).data[`delete${object3.className}`][ object3.className.charAt(0).toLowerCase() + object3.className.slice(1) ].objectId @@ -7062,7 +7235,10 @@ describe('ParseGraphQLServer', () => { url: 'https://some.url', }), array: ['a', 'b', 'c'], - arrayOfArray: [['a', 'b', 'c'], ['d', 'e', 'f']], + arrayOfArray: [ + ['a', 'b', 'c'], + ['d', 'e', 'f'], + ], }; apolloClient.mutate({ @@ -7097,18 +7273,20 @@ describe('ParseGraphQLServer', () => { return 'hello contains1Number'; }); - const functionEnum = (await apolloClient.query({ - query: gql` - query ObjectType { - __type(name: "CloudCodeFunction") { - kind - enumValues { - name + const functionEnum = ( + await apolloClient.query({ + query: gql` + query ObjectType { + __type(name: "CloudCodeFunction") { + kind + enumValues { + name + } } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; expect(functionEnum.kind).toEqual('ENUM'); expect( functionEnum.enumValues.map(value => value.name).sort() @@ -7137,18 +7315,20 @@ describe('ParseGraphQLServer', () => { return 'hello contains1Number'; }); - const functionEnum = (await apolloClient.query({ - query: gql` - query ObjectType { - __type(name: "CloudCodeFunction") { - kind - enumValues { - name + const functionEnum = ( + await apolloClient.query({ + query: gql` + query ObjectType { + __type(name: "CloudCodeFunction") { + kind + enumValues { + name + } } } - } - `, - })).data['__type']; + `, + }) + ).data['__type']; expect(functionEnum.kind).toEqual('ENUM'); expect( functionEnum.enumValues.map(value => value.name).sort() @@ -7708,9 +7888,11 @@ describe('ParseGraphQLServer', () => { public: { read: true, write: true, __typename: 'PublicACL' }, }; const query1 = new Parse.Query('SomeClass'); - const obj1 = (await query1.get(createSomeClass.someClass.objectId, { - useMasterKey: true, - })).toJSON(); + const obj1 = ( + await query1.get(createSomeClass.someClass.objectId, { + useMasterKey: true, + }) + ).toJSON(); expect(obj1.ACL[user.id]).toEqual({ read: true, write: true }); expect(obj1.ACL[user2.id]).toEqual({ read: true }); expect(obj1.ACL['role:aRole']).toEqual({ read: true }); @@ -7773,9 +7955,11 @@ describe('ParseGraphQLServer', () => { }; const query2 = new Parse.Query('SomeClass'); - const obj2 = (await query2.get(createSomeClass.someClass.objectId, { - useMasterKey: true, - })).toJSON(); + const obj2 = ( + await query2.get(createSomeClass.someClass.objectId, { + useMasterKey: true, + }) + ).toJSON(); expect(obj2.ACL['role:aRole']).toEqual({ write: true, read: true }); expect(obj2.ACL[user.id]).toBeUndefined(); diff --git a/spec/ParseObject.spec.js b/spec/ParseObject.spec.js index a2deb821be..978a304e60 100644 --- a/spec/ParseObject.spec.js +++ b/spec/ParseObject.spec.js @@ -2073,7 +2073,6 @@ describe('Parse.Object testing', () => { // Fetch object from server object = await object.fetch(); - console.log(object.id, object.get('jsonData')); equal(object.get('jsonData'), { c: 'd' }); done(); diff --git a/spec/ParseServer.spec.js b/spec/ParseServer.spec.js index bc98a4b713..ee29ca3d1b 100644 --- a/spec/ParseServer.spec.js +++ b/spec/ParseServer.spec.js @@ -36,6 +36,7 @@ describe('Server Url Checks', () => { }); it('mark bad server url', done => { + spyOn(console, 'warn').and.callFake(() => {}); Parse.serverURL = 'notavalidurl'; ParseServer.verifyServerUrl(function(result) { if (result) { diff --git a/spec/PostgresStorageAdapter.spec.js b/spec/PostgresStorageAdapter.spec.js index b6fa7e2626..e722fa4cec 100644 --- a/spec/PostgresStorageAdapter.spec.js +++ b/spec/PostgresStorageAdapter.spec.js @@ -2,6 +2,7 @@ const PostgresStorageAdapter = require('../lib/Adapters/Storage/Postgres/Postgre .default; const databaseURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database'; +const Config = require('../lib/Config'); const getColumns = (client, className) => { return client.map( @@ -16,8 +17,10 @@ const dropTable = (client, className) => { }; describe_only_db('postgres')('PostgresStorageAdapter', () => { - const adapter = new PostgresStorageAdapter({ uri: databaseURI }); + let adapter; beforeEach(() => { + const config = Config.get('test'); + adapter = config.database.adapter; return adapter.deleteAllClasses(); }); diff --git a/spec/PurchaseValidation.spec.js b/spec/PurchaseValidation.spec.js index 9f4469375d..f3cf64eb8f 100644 --- a/spec/PurchaseValidation.spec.js +++ b/spec/PurchaseValidation.spec.js @@ -54,7 +54,6 @@ describe('test validate_receipt endpoint', () => { if (typeof body != 'object') { fail('Body is not an object'); } else { - console.log(body); expect(body.__type).toEqual('File'); const url = body.url; const otherResponse = await request({ diff --git a/spec/helper.js b/spec/helper.js index 0800128ced..724751ec4a 100644 --- a/spec/helper.js +++ b/spec/helper.js @@ -18,6 +18,7 @@ if (global._babelPolyfill) { console.error('We should not use polyfilled tests'); process.exit(1); } +process.noDeprecation = true; const cache = require('../lib/cache').default; const ParseServer = require('../lib/index').ParseServer; @@ -243,7 +244,10 @@ afterEach(function(done) { }); }) .then(() => Parse.User.logOut()) - .then(() => {}, () => {}) // swallow errors + .then( + () => {}, + () => {} + ) // swallow errors .then(() => { // Connection close events are not immediate on node 10+... wait a bit return new Promise(resolve => { diff --git a/spec/index.spec.js b/spec/index.spec.js index 07fb59cf6a..ad157194d8 100644 --- a/spec/index.spec.js +++ b/spec/index.spec.js @@ -27,7 +27,7 @@ describe('server', () => { }); it('show warning if any reserved characters in appId', done => { - spyOn(console, 'warn').and.callThrough(); + spyOn(console, 'warn').and.callFake(() => {}); reconfigureServer({ appId: 'test!-^' }).then(() => { expect(console.warn).toHaveBeenCalled(); return done(); @@ -40,7 +40,7 @@ describe('server', () => { url: 'http://localhost:8378/1/classes/TestObject', headers: { Authorization: - 'Basic ' + new Buffer('test:' + 'test').toString('base64'), + 'Basic ' + Buffer.from('test:' + 'test').toString('base64'), }, }).then(response => { expect(response.status).toEqual(200); @@ -56,7 +56,7 @@ describe('server', () => { headers: { Authorization: 'Basic ' + - new Buffer('test:javascript-key=' + 'test').toString('base64'), + Buffer.from('test:javascript-key=' + 'test').toString('base64'), }, }).then(response => { expect(response.status).toEqual(200); diff --git a/src/Adapters/Auth/gcenter.js b/src/Adapters/Auth/gcenter.js index 767f302afa..20c453db9f 100644 --- a/src/Adapters/Auth/gcenter.js +++ b/src/Adapters/Auth/gcenter.js @@ -77,8 +77,7 @@ function getAppleCertificate(publicKeyUrl) { } function convertTimestampToBigEndian(timestamp) { - const buffer = new Buffer(8); - buffer.fill(0); + const buffer = Buffer.alloc(8); const high = ~~(timestamp / 0xffffffff); const low = timestamp % (0xffffffff + 0x1); diff --git a/src/Adapters/Storage/Postgres/PostgresClient.js b/src/Adapters/Storage/Postgres/PostgresClient.js index 052be57fb1..86fe178510 100644 --- a/src/Adapters/Storage/Postgres/PostgresClient.js +++ b/src/Adapters/Storage/Postgres/PostgresClient.js @@ -13,6 +13,8 @@ export function createClient(uri, databaseOptions) { } const initOptions = dbOptions.initOptions || {}; + initOptions.noWarnings = process && process.env.TESTING; + const pgp = require('pg-promise')(initOptions); const client = pgp(dbOptions); diff --git a/src/middlewares.js b/src/middlewares.js index 5374f3e899..75923e713f 100644 --- a/src/middlewares.js +++ b/src/middlewares.js @@ -343,7 +343,9 @@ export function handleParseErrors(err, req, res, next) { } else if (err.status && err.message) { res.status(err.status); res.json({ error: err.message }); - next(err); + if (!(process && process.env.TESTING)) { + next(err); + } } else { log.error('Uncaught internal server error.', err, err.stack); res.status(500); @@ -351,7 +353,9 @@ export function handleParseErrors(err, req, res, next) { code: Parse.Error.INTERNAL_SERVER_ERROR, message: 'Internal server error.', }); - next(err); + if (!(process && process.env.TESTING)) { + next(err); + } } }