From bc975c98f888ccb1d142d659775709e9d7d17f3c Mon Sep 17 00:00:00 2001 From: Jesse Rosenberger Date: Fri, 30 Nov 2018 19:10:07 +0200 Subject: [PATCH] =?UTF-8?q?(tests):=20Re-enable=20file=20upload=20tests=20?= =?UTF-8?q?for=20Node.js=2010.=20=F0=9F=8E=89=F0=9F=8E=89=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit again looks quite complicated, but's merely an over-complication inflicted by Prettification. Disabling whitespace differences when viewing this commit, the functional change here is that we no longer skip many file upload tests when the (semver) major segment of `process.version` is `10`. I couldn't be happier to get rid of this exception for file upload tests on Node.js 10, which was an unfortunate reality of the non-updated `graphql-upload` module world we previously lived in. --- .../src/__tests__/ApolloServer.test.ts | 126 ++++++++-------- .../src/__tests__/ApolloServer.test.ts | 126 ++++++++-------- .../src/__tests__/ApolloServer.test.ts | 135 +++++++++--------- 3 files changed, 194 insertions(+), 193 deletions(-) diff --git a/packages/apollo-server-express/src/__tests__/ApolloServer.test.ts b/packages/apollo-server-express/src/__tests__/ApolloServer.test.ts index aa3a39baa11..e9db26e4461 100644 --- a/packages/apollo-server-express/src/__tests__/ApolloServer.test.ts +++ b/packages/apollo-server-express/src/__tests__/ApolloServer.test.ts @@ -427,48 +427,47 @@ describe('apollo-server-express', () => { }); }); }); - // NODE: Intentionally skip file upload tests on Node.js 10. - // Also skip Node.js 6, but only because `graphql-upload` + // NODE: Skip Node.js 6, but only because `graphql-upload` // doesn't support it. - (NODE_MAJOR_VERSION === 10 || NODE_MAJOR_VERSION === 6 - ? describe.skip - : describe)('file uploads', () => { - it('enabled uploads', async () => { - const { port } = await createServer({ - typeDefs: gql` - type File { - filename: String! - mimetype: String! - encoding: String! - } + (NODE_MAJOR_VERSION === 6 ? describe.skip : describe)( + 'file uploads', + () => { + it('enabled uploads', async () => { + const { port } = await createServer({ + typeDefs: gql` + type File { + filename: String! + mimetype: String! + encoding: String! + } - type Query { - uploads: [File] - } + type Query { + uploads: [File] + } - type Mutation { - singleUpload(file: Upload!): File! - } - `, - resolvers: { - Query: { - uploads: () => {}, - }, - Mutation: { - singleUpload: async (_, args) => { - expect((await args.file).stream).toBeDefined(); - return args.file; + type Mutation { + singleUpload(file: Upload!): File! + } + `, + resolvers: { + Query: { + uploads: () => {}, + }, + Mutation: { + singleUpload: async (_, args) => { + expect((await args.file).stream).toBeDefined(); + return args.file; + }, }, }, - }, - }); + }); - const body = new FormData(); + const body = new FormData(); - body.append( - 'operations', - JSON.stringify({ - query: ` + body.append( + 'operations', + JSON.stringify({ + query: ` mutation($file: Upload!) { singleUpload(file: $file) { filename @@ -477,35 +476,36 @@ describe('apollo-server-express', () => { } } `, - variables: { - file: null, - }, - }), - ); - - body.append('map', JSON.stringify({ 1: ['variables.file'] })); - body.append('1', fs.createReadStream('package.json')); - - try { - const resolved = await fetch(`http://localhost:${port}/graphql`, { - method: 'POST', - body: body as any, - }); - const text = await resolved.text(); - const response = JSON.parse(text); + variables: { + file: null, + }, + }), + ); - expect(response.data.singleUpload).toEqual({ - filename: 'package.json', - encoding: '7bit', - mimetype: 'application/json', - }); - } catch (error) { - // This error began appearing randomly and seems to be a dev dependency bug. - // https://github.com/jaydenseric/apollo-upload-server/blob/18ecdbc7a1f8b69ad51b4affbd986400033303d4/test.js#L39-L42 - if (error.code !== 'EPIPE') throw error; - } - }); - }); + body.append('map', JSON.stringify({ 1: ['variables.file'] })); + body.append('1', fs.createReadStream('package.json')); + + try { + const resolved = await fetch(`http://localhost:${port}/graphql`, { + method: 'POST', + body: body as any, + }); + const text = await resolved.text(); + const response = JSON.parse(text); + + expect(response.data.singleUpload).toEqual({ + filename: 'package.json', + encoding: '7bit', + mimetype: 'application/json', + }); + } catch (error) { + // This error began appearing randomly and seems to be a dev dependency bug. + // https://github.com/jaydenseric/apollo-upload-server/blob/18ecdbc7a1f8b69ad51b4affbd986400033303d4/test.js#L39-L42 + if (error.code !== 'EPIPE') throw error; + } + }); + }, + ); describe('errors', () => { it('returns thrown context error as a valid graphql result', async () => { diff --git a/packages/apollo-server-koa/src/__tests__/ApolloServer.test.ts b/packages/apollo-server-koa/src/__tests__/ApolloServer.test.ts index 127a6a9f93e..9318be58c96 100644 --- a/packages/apollo-server-koa/src/__tests__/ApolloServer.test.ts +++ b/packages/apollo-server-koa/src/__tests__/ApolloServer.test.ts @@ -323,48 +323,47 @@ describe('apollo-server-koa', () => { }); }); }); - // NODE: Intentionally skip file upload tests on Node.js 10. - // Also skip Node.js 6, but only because `graphql-upload` + // NODE: Skip Node.js 6, but only because `graphql-upload` // doesn't support it anymore. - (NODE_MAJOR_VERSION === 10 || NODE_MAJOR_VERSION === 6 - ? describe.skip - : describe)('file uploads', () => { - it('enabled uploads', async () => { - const { port } = await createServer({ - typeDefs: gql` - type File { - filename: String! - mimetype: String! - encoding: String! - } + (NODE_MAJOR_VERSION === 6 ? describe.skip : describe)( + 'file uploads', + () => { + it('enabled uploads', async () => { + const { port } = await createServer({ + typeDefs: gql` + type File { + filename: String! + mimetype: String! + encoding: String! + } - type Query { - uploads: [File] - } + type Query { + uploads: [File] + } - type Mutation { - singleUpload(file: Upload!): File! - } - `, - resolvers: { - Query: { - uploads: () => {}, - }, - Mutation: { - singleUpload: async (_, args) => { - expect((await args.file).stream).toBeDefined(); - return args.file; + type Mutation { + singleUpload(file: Upload!): File! + } + `, + resolvers: { + Query: { + uploads: () => {}, + }, + Mutation: { + singleUpload: async (_, args) => { + expect((await args.file).stream).toBeDefined(); + return args.file; + }, }, }, - }, - }); + }); - const body = new FormData(); + const body = new FormData(); - body.append( - 'operations', - JSON.stringify({ - query: ` + body.append( + 'operations', + JSON.stringify({ + query: ` mutation($file: Upload!) { singleUpload(file: $file) { filename @@ -373,35 +372,36 @@ describe('apollo-server-koa', () => { } } `, - variables: { - file: null, - }, - }), - ); - - body.append('map', JSON.stringify({ 1: ['variables.file'] })); - body.append('1', fs.createReadStream('package.json')); - - try { - const resolved = await fetch(`http://localhost:${port}/graphql`, { - method: 'POST', - body: body as any, - }); - const text = await resolved.text(); - const response = JSON.parse(text); + variables: { + file: null, + }, + }), + ); - expect(response.data.singleUpload).toEqual({ - filename: 'package.json', - encoding: '7bit', - mimetype: 'application/json', - }); - } catch (error) { - // This error began appearing randomly and seems to be a dev dependency bug. - // https://github.com/jaydenseric/apollo-upload-server/blob/18ecdbc7a1f8b69ad51b4affbd986400033303d4/test.js#L39-L42 - if (error.code !== 'EPIPE') throw error; - } - }); - }); + body.append('map', JSON.stringify({ 1: ['variables.file'] })); + body.append('1', fs.createReadStream('package.json')); + + try { + const resolved = await fetch(`http://localhost:${port}/graphql`, { + method: 'POST', + body: body as any, + }); + const text = await resolved.text(); + const response = JSON.parse(text); + + expect(response.data.singleUpload).toEqual({ + filename: 'package.json', + encoding: '7bit', + mimetype: 'application/json', + }); + } catch (error) { + // This error began appearing randomly and seems to be a dev dependency bug. + // https://github.com/jaydenseric/apollo-upload-server/blob/18ecdbc7a1f8b69ad51b4affbd986400033303d4/test.js#L39-L42 + if (error.code !== 'EPIPE') throw error; + } + }); + }, + ); describe('errors', () => { it('returns thrown context error as a valid graphql result', async () => { diff --git a/packages/apollo-server-micro/src/__tests__/ApolloServer.test.ts b/packages/apollo-server-micro/src/__tests__/ApolloServer.test.ts index 941b7b25a36..89742ae4da1 100644 --- a/packages/apollo-server-micro/src/__tests__/ApolloServer.test.ts +++ b/packages/apollo-server-micro/src/__tests__/ApolloServer.test.ts @@ -149,46 +149,46 @@ describe('apollo-server-micro', function() { // NODE: Intentionally skip file upload tests on Node.js 10. // Also skip Node.js 6, but only because `graphql-upload` // doesn't support it. - (NODE_MAJOR_VERSION === 10 || NODE_MAJOR_VERSION === 6 - ? describe.skip - : describe)('file uploads', function() { - it('should handle file uploads', async function() { - const apolloServer = new ApolloServer({ - typeDefs: gql` - type File { - filename: String! - mimetype: String! - encoding: String! - } - - type Query { - uploads: [File] - } - - type Mutation { - singleUpload(file: Upload!): File! - } - `, - resolvers: { - Query: { - uploads: () => {}, - }, - Mutation: { - singleUpload: async (_, args) => { - expect((await args.file).stream).toBeDefined(); - return args.file; + (NODE_MAJOR_VERSION === 6 ? describe.skip : describe)( + 'file uploads', + function() { + it('should handle file uploads', async function() { + const apolloServer = new ApolloServer({ + typeDefs: gql` + type File { + filename: String! + mimetype: String! + encoding: String! + } + + type Query { + uploads: [File] + } + + type Mutation { + singleUpload(file: Upload!): File! + } + `, + resolvers: { + Query: { + uploads: () => {}, + }, + Mutation: { + singleUpload: async (_, args) => { + expect((await args.file).stream).toBeDefined(); + return args.file; + }, }, }, - }, - }); - const service = micro(apolloServer.createHandler()); - const url = await listen(service); - - const body = new FormData(); - body.append( - 'operations', - JSON.stringify({ - query: ` + }); + const service = micro(apolloServer.createHandler()); + const url = await listen(service); + + const body = new FormData(); + body.append( + 'operations', + JSON.stringify({ + query: ` mutation($file: Upload!) { singleUpload(file: $file) { filename @@ -197,36 +197,37 @@ describe('apollo-server-micro', function() { } } `, - variables: { - file: null, - }, - }), - ); - body.append('map', JSON.stringify({ 1: ['variables.file'] })); - body.append('1', fs.createReadStream('package.json')); - - try { - const resolved = await fetch(`${url}/graphql`, { - method: 'POST', - body: body as any, - }); - const text = await resolved.text(); - const response = JSON.parse(text); + variables: { + file: null, + }, + }), + ); + body.append('map', JSON.stringify({ 1: ['variables.file'] })); + body.append('1', fs.createReadStream('package.json')); - expect(response.data.singleUpload).toEqual({ - filename: 'package.json', - encoding: '7bit', - mimetype: 'application/json', - }); - } catch (error) { - // This error began appearing randomly and seems to be a dev - // dependency bug. - // https://github.com/jaydenseric/apollo-upload-server/blob/18ecdbc7a1f8b69ad51b4affbd986400033303d4/test.js#L39-L42 - if (error.code !== 'EPIPE') throw error; - } + try { + const resolved = await fetch(`${url}/graphql`, { + method: 'POST', + body: body as any, + }); + const text = await resolved.text(); + const response = JSON.parse(text); + + expect(response.data.singleUpload).toEqual({ + filename: 'package.json', + encoding: '7bit', + mimetype: 'application/json', + }); + } catch (error) { + // This error began appearing randomly and seems to be a dev + // dependency bug. + // https://github.com/jaydenseric/apollo-upload-server/blob/18ecdbc7a1f8b69ad51b4affbd986400033303d4/test.js#L39-L42 + if (error.code !== 'EPIPE') throw error; + } - service.close(); - }); - }); + service.close(); + }); + }, + ); }); });